diff --git a/Assets/Proxima.meta b/Assets/Proxima.meta new file mode 100644 index 0000000..f62ed54 --- /dev/null +++ b/Assets/Proxima.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 80f0b6beae6dbe2439b32c150bb07d47 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/CHANGELOG.md b/Assets/Proxima/CHANGELOG.md new file mode 100644 index 0000000..7a4fd1e --- /dev/null +++ b/Assets/Proxima/CHANGELOG.md @@ -0,0 +1,71 @@ +# Proxima Changelog + +## Version 1.3.1 + +### Fixes + + - Fix Unity 2023.2 warnings. + - Disable start screen in batch mode. + - Fix float parsing breaking in some cultures. + - Fix serialization of some non-english characters. + - Fix serialization of non-int enum types. + +## Version 1.3.0 + +### New Features: + +- New inspector buttons to create, destroy, and duplicate GameObjects. +- New inspector field to add a component to a GameObject. + +### Fixes: + +- Fix new deprecation warnings on Unity 2023.1 +- Fix compile error on Unity 2021.1 and 2021.2 for ParticleSystemForceField +- Allow any URL to access proxima to support HTTP tunnels like ngrok +- Fix an issue where Proxima would displaya no GameObjects if the first scene has no GameObjects. +- Fix an exception if the browser provides an invalide timestamp. +- Fix sharedMaterials property sending updates continuously, even when it doesn't change. +- Fix deep link parameter parsing. + +## Version 1.2.1 + +- Added IP address to connection log. +- Improve version checking to display start screen. +- Internal changes to support packaging features separately. +- Removed stray debug log on viewing the start screen. + +## Version 1.2.0 + +### New Features: +- **WebGL Support**: You can now open Proxima Inspector from a WebGL build! From the Proxima Connect UI, click "Open in Browser" to open Proxima in a new tab. This implementation uses a BroadcastChannel in the browser to communicate with your app, so Proxima must be running in the same browser as the Unity app. +- **Serializable Structs and Classes**: You can now view any struct or class marked as [Serializable] in the Proxima Inspector! Nested objects and arrays of objects are fully supported. +- **ProximaButton Attribute**: Add the [ProximaButton("Button Name")] attribute to MonoBehaviour methods to add a buttons in the Proxima inspector. Instructions at https://www.unityproxima.com/docs/buttons. +- **Deep Links**: New query parameters can be appended to the Proxima URL: + - 'pass' - Automatically connect with the provided password. + - 'page' - Navigate to page 'inspector', 'logs', or 'console' after connecting. + - 'go' - Select a gameObject by name after connecting. + - 's' - Set the search filter on the inspector page. + - 'collapsed' - Collapse the navigation menu. + - 'run' - Immediately run console command. + - For examples, see: https://www.unityproxima.com/docs/deeplinks +- **Show Hidden Checkbox**: By default, Proxima respects hideFlags for GameObjects and Components. There is a new checkbox on the inspector page to show these hidden objects. +- **Start Screen**: Added a new start screen where you can view the latest changes, access documentation, and provide feedback. + +### Changes and Fixes + - Arrays of enums, flags, and layers can now be viewed and edited. + - Fixed flag toggling for multi-flag values (e.g., Rigid Body Constraints). + - Fixed some missing properties for built-in components. + +## Version 1.1.0 +- Added support for non-english characters in gameObject names, logs, etc. + - Right-to-left languages are forced to display left-to-right in the browser pages to match Unity's behavior. +- Add "Run Script" button to run a sequence of commands in the console. See https://www.unityproxima.com/docs/console +- Added a button to collapse the navigation panel to just icons for smaller screens. +- Added touch-drag support for modifying numbers and arrays in the proxima inspector. +- Added an option "Set Run In Background" to Proxima Inspector to have Unity continue running when not in focus while + Proxima is running. This is useful if you are connecting to Proxima from a browser on the same device, since the + browser will cause Unity to lose focus. +- Prevent messages from sending when the connection is closed to avoid logged exceptions. + +## Version 1.0.0 + - Initial Release \ No newline at end of file diff --git a/Assets/Proxima/CHANGELOG.md.meta b/Assets/Proxima/CHANGELOG.md.meta new file mode 100644 index 0000000..4719592 --- /dev/null +++ b/Assets/Proxima/CHANGELOG.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 53c7cf36ddcf17b4da75df27231f866e +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation.meta b/Assets/Proxima/Documentation.meta new file mode 100644 index 0000000..a116ed6 --- /dev/null +++ b/Assets/Proxima/Documentation.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 40d1e8117a0bdd64e8737ad5997cc26c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/_app.meta b/Assets/Proxima/Documentation/_app.meta new file mode 100644 index 0000000..3b8638b --- /dev/null +++ b/Assets/Proxima/Documentation/_app.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fc3ee7de55a7c57498409cbdb52efd97 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/_app/immutable.meta b/Assets/Proxima/Documentation/_app/immutable.meta new file mode 100644 index 0000000..f478fda --- /dev/null +++ b/Assets/Proxima/Documentation/_app/immutable.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e1d8ee7003fc63447989710f28e566f0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/_app/immutable/assets.meta b/Assets/Proxima/Documentation/_app/immutable/assets.meta new file mode 100644 index 0000000..edf21d7 --- /dev/null +++ b/Assets/Proxima/Documentation/_app/immutable/assets.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f34fe087e79999f46afaa980a2e5dbb8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/_app/immutable/assets/_layout-1f0a7e97.css b/Assets/Proxima/Documentation/_app/immutable/assets/_layout-1f0a7e97.css new file mode 100644 index 0000000..698fbe2 --- /dev/null +++ b/Assets/Proxima/Documentation/_app/immutable/assets/_layout-1f0a7e97.css @@ -0,0 +1 @@ +*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.visible{visibility:visible}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.top-0{top:0px}.right-0{right:0px}.bottom-5{bottom:1.25rem}.right-5{right:1.25rem}.z-20{z-index:20}.m-10{margin:2.5rem}.m-2{margin:.5rem}.m-5{margin:1.25rem}.mt-1{margin-top:.25rem}.mt-\[83px\]{margin-top:83px}.mt-5{margin-top:1.25rem}.mb-4{margin-bottom:1rem}.mt-2{margin-top:.5rem}.mt-16{margin-top:4rem}.mb-10{margin-bottom:2.5rem}.ml-2{margin-left:.5rem}.mt-10{margin-top:2.5rem}.mb-16{margin-bottom:4rem}.ml-5{margin-left:1.25rem}.ml-10{margin-left:2.5rem}.ml-8{margin-left:2rem}.mb-3{margin-bottom:.75rem}.mr-2{margin-right:.5rem}.inline{display:inline}.flex{display:flex}.table{display:table}.contents{display:contents}.hidden{display:none}.h-full{height:100%}.h-\[200px\]{height:200px}.h-0{height:0px}.min-h-screen{min-height:100vh}.min-h-full{min-height:100%}.min-h-0{min-height:0px}.w-full{width:100%}.w-\[150px\]{width:150px}.w-10{width:2.5rem}.w-1\/2{width:50%}.w-\[32px\]{width:32px}.w-\[450px\]{width:450px}.w-\[15px\]{width:15px}.w-\[300px\]{width:300px}.w-\[200px\]{width:200px}.w-\[25px\]{width:25px}.max-w-\[1000px\]{max-width:1000px}.max-w-\[1600px\]{max-width:1600px}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-10{gap:2.5rem}.gap-5{gap:1.25rem}.gap-8{gap:2rem}.gap-6{gap:1.5rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.self-start{align-self:flex-start}.overflow-auto{overflow:auto}.whitespace-nowrap{white-space:nowrap}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-t-md{border-top-left-radius:.375rem;border-top-right-radius:.375rem}.border-2{border-width:2px}.border{border-width:1px}.border-l-2{border-left-width:2px}.border-b-2{border-bottom-width:2px}.border-r-0{border-right-width:0px}.border-r-2{border-right-width:2px}.border-orange-400{--tw-border-opacity: 1;border-color:rgb(251 146 60 / var(--tw-border-opacity))}.border-green-500{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity))}.border-blue-500{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}.border-white{--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity))}.border-\[\#888\]{--tw-border-opacity: 1;border-color:rgb(136 136 136 / var(--tw-border-opacity))}.border-\[\#21a6f0\]{--tw-border-opacity: 1;border-color:rgb(33 166 240 / var(--tw-border-opacity))}.border-r-orange-400{--tw-border-opacity: 1;border-right-color:rgb(251 146 60 / var(--tw-border-opacity))}.bg-\[\#222\]{--tw-bg-opacity: 1;background-color:rgb(34 34 34 / var(--tw-bg-opacity))}.bg-\[\#111\]{--tw-bg-opacity: 1;background-color:rgb(17 17 17 / var(--tw-bg-opacity))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity))}.bg-\[\#1d1d1d\]{--tw-bg-opacity: 1;background-color:rgb(29 29 29 / var(--tw-bg-opacity))}.bg-blue-900{--tw-bg-opacity: 1;background-color:rgb(30 58 138 / var(--tw-bg-opacity))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity))}.bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity))}.bg-\[\#1D1D1D\]{--tw-bg-opacity: 1;background-color:rgb(29 29 29 / var(--tw-bg-opacity))}.bg-green-800{--tw-bg-opacity: 1;background-color:rgb(22 101 52 / var(--tw-bg-opacity))}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.from-green-900{--tw-gradient-from: #14532d;--tw-gradient-to: rgb(20 83 45 / 0);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-900{--tw-gradient-from: #1e3a8a;--tw-gradient-to: rgb(30 58 138 / 0);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-orange-900{--tw-gradient-from: #7c2d12;--tw-gradient-to: rgb(124 45 18 / 0);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-yellow-900{--tw-gradient-from: #713f12;--tw-gradient-to: rgb(113 63 18 / 0);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.to-\[\#00000033\]{--tw-gradient-to: #00000033}.to-blue-700{--tw-gradient-to: #1d4ed8}.to-orange-700{--tw-gradient-to: #c2410c}.to-green-700{--tw-gradient-to: #15803d}.to-yellow-700{--tw-gradient-to: #a16207}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-10{padding:2.5rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-8{padding-left:2rem;padding-right:2rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.py-7{padding-top:1.75rem;padding-bottom:1.75rem}.py-16{padding-top:4rem;padding-bottom:4rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-4{padding-left:1rem;padding-right:1rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.pb-2{padding-bottom:.5rem}.pt-\[83px\]{padding-top:83px}.pb-\[56\.25\%\]{padding-bottom:56.25%}.pt-5{padding-top:1.25rem}.pt-10{padding-top:2.5rem}.text-left{text-align:left}.text-center{text-align:center}.font-logo{font-family:Varela Round}.font-body{font-family:Lato}.font-mono{font-family:monospace}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-2xl{font-size:1.5rem;line-height:2rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.font-semibold{font-weight:600}.font-bold{font-weight:700}.leading-normal{line-height:1.5}.leading-loose{line-height:2}.leading-10{line-height:2.5rem}.leading-8{line-height:2rem}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}.text-orange-400{--tw-text-opacity: 1;color:rgb(251 146 60 / var(--tw-text-opacity))}.text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity))}.text-zinc-300{--tw-text-opacity: 1;color:rgb(212 212 216 / var(--tw-text-opacity))}.text-amber-400{--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity))}.text-green-400{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity))}.text-blue-300{--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity))}.text-yellow-200{--tw-text-opacity: 1;color:rgb(254 240 138 / var(--tw-text-opacity))}.text-zinc-100{--tw-text-opacity: 1;color:rgb(244 244 245 / var(--tw-text-opacity))}.text-yellow-600{--tw-text-opacity: 1;color:rgb(202 138 4 / var(--tw-text-opacity))}.text-pink-500{--tw-text-opacity: 1;color:rgb(236 72 153 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.placeholder-\[\#555\]::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(85 85 85 / var(--tw-placeholder-opacity))}.placeholder-\[\#555\]::placeholder{--tw-placeholder-opacity: 1;color:rgb(85 85 85 / var(--tw-placeholder-opacity))}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-black{--tw-shadow-color: #000;--tw-shadow: var(--tw-shadow-colored)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-green-700{--tw-ring-opacity: 1;--tw-ring-color: rgb(21 128 61 / var(--tw-ring-opacity))}.ring-blue-600{--tw-ring-opacity: 1;--tw-ring-color: rgb(37 99 235 / var(--tw-ring-opacity))}.ring-offset-2{--tw-ring-offset-width: 2px}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}@font-face{font-family:Lato;font-style:normal;font-weight:400;font-display:swap;src:url(../../../fonts/S6uyw4BMUTPHjxAwXjeu.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Lato;font-style:normal;font-weight:400;font-display:swap;src:url(../../../fonts/S6uyw4BMUTPHjx4wXg.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Varela Round;font-style:normal;font-weight:400;font-display:swap;src:url(../../../fonts/w8gdH283Tvk__Lua32TysjIfpcuPP9g.woff2) format("woff2");unicode-range:U+0590-05FF,U+200C-2010,U+20AA,U+25CC,U+FB1D-FB4F}@font-face{font-family:Varela Round;font-style:normal;font-weight:400;font-display:swap;src:url(../../../fonts/w8gdH283Tvk__Lua32TysjIfqMuPP9g.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Varela Round;font-style:normal;font-weight:400;font-display:swap;src:url(../../../fonts/w8gdH283Tvk__Lua32TysjIfqcuPP9g.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Varela Round;font-style:normal;font-weight:400;font-display:swap;src:url(../../../fonts/w8gdH283Tvk__Lua32TysjIfp8uP.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}html{scroll-padding-top:130px}.offline_show{display:none}.hover\:bg-green-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity))}.hover\:bg-blue-600:hover{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity))}.hover\:bg-blue-700:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity))}.hover\:underline:hover{text-decoration-line:underline}@media not all and (min-width: 1024px){.max-lg\:hidden{display:none}.max-lg\:flex-wrap{flex-wrap:wrap}.max-lg\:px-5{padding-left:1.25rem;padding-right:1.25rem}}@media not all and (min-width: 640px){.max-sm\:hidden{display:none}}@media (min-width: 640px){.sm\:px-5{padding-left:1.25rem;padding-right:1.25rem}}@media (min-width: 1024px){.lg\:mt-\[2vh\]{margin-top:2vh}.lg\:ml-\[300px\]{margin-left:300px}.lg\:hidden{display:none}.lg\:gap-\[2vh\]{gap:2vh}.lg\:pt-\[2vh\]{padding-top:2vh}.lg\:pl-10{padding-left:2.5rem}.lg\:text-5xl{font-size:3rem;line-height:1}.lg\:text-xl{font-size:1.25rem;line-height:1.75rem}} diff --git a/Assets/Proxima/Documentation/_app/immutable/assets/_layout-1f0a7e97.css.meta b/Assets/Proxima/Documentation/_app/immutable/assets/_layout-1f0a7e97.css.meta new file mode 100644 index 0000000..b4b6efe --- /dev/null +++ b/Assets/Proxima/Documentation/_app/immutable/assets/_layout-1f0a7e97.css.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a11d997695a4c49a7b11e4aac0452e57 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/_app/immutable/assets/_layout-6847360b.css b/Assets/Proxima/Documentation/_app/immutable/assets/_layout-6847360b.css new file mode 100644 index 0000000..cb0b004 --- /dev/null +++ b/Assets/Proxima/Documentation/_app/immutable/assets/_layout-6847360b.css @@ -0,0 +1 @@ +a.svelte-yue6wq{color:#c5c5cf}a.svelte-yue6wq:hover{color:#fff}.doc.svelte-yue6wq{color:#c5c5cf}.doc.svelte-yue6wq a{text-decoration:underline;color:#fb923c}.doc.svelte-yue6wq a:hover{color:#fff}.doc.svelte-yue6wq td{border:1px solid white;padding:10px;min-width:150px}.doc.svelte-yue6wq img{align-self:flex-start}.doc.svelte-yue6wq video{align-self:flex-start}.doc.svelte-yue6wq h1{color:#fff;font-size:1.875rem;line-height:2.25rem;font-weight:600}.doc.svelte-yue6wq h2{color:#fff;font-size:1.25rem;line-height:1.75rem;font-weight:600;margin-top:2rem} diff --git a/Assets/Proxima/Documentation/_app/immutable/assets/_layout-6847360b.css.meta b/Assets/Proxima/Documentation/_app/immutable/assets/_layout-6847360b.css.meta new file mode 100644 index 0000000..018713b --- /dev/null +++ b/Assets/Proxima/Documentation/_app/immutable/assets/_layout-6847360b.css.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b5e0ef40ebe73442bb08e542d48be87e +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/docs.html b/Assets/Proxima/Documentation/docs.html new file mode 100644 index 0000000..2f33fea --- /dev/null +++ b/Assets/Proxima/Documentation/docs.html @@ -0,0 +1,101 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8" /> + <title>Proxima Inspector</title> + <link rel="icon" href="./icons/favicon.ico" /> + <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1"> + <meta property="og:type" content="website"> + <meta name="description" property="og:description" content="Proxima Inspector lets you connect to your live game from a web browser to inspect and edit any property. Just like the Unity editor!"> + <meta name="image" property="og:image" content="./images/proxima-1200x630.png"> + <meta http-equiv="content-security-policy" content=""> + <link href="./_app/immutable/assets/_layout-1f0a7e97.css" rel="stylesheet"> + <link href="./_app/immutable/assets/_layout-6847360b.css" rel="stylesheet"> + + + + + + + + + + + </head> + <body> + <div> + + +<div class="flex flex-col items-center text-gray-300 w-full min-h-screen bg-[#222]"><div class="flex w-full justify-center items-start bg-[#111] text-white fixed z-20"><div class="flex grow justify-between items-center max-w-[1600px] p-4"><a href="https://www.unityproxima.com"><img src="./images/proxima_logo.png" class="w-[150px]" alt="Logo"></a> + <button class="lg:hidden"><img class="w-10" src="./icons/menu.png" alt="Menu"></button> + <div class="flex gap-10 items-center max-lg:hidden"> +<a href="https://assetstore.unity.com/publishers/72095?aid=1101lqSYn" class="text-xl font-logo" referrerpolicy="origin" target="_blank" rel="external">Store</a> + +<a href="https://app.unityproxima.com/connection" class="text-xl font-logo" referrerpolicy="origin" target="_blank" rel="external">Demo</a> + + <a class="text-xl font-logo" href="./docs.html">Docs</a> + +<a href="https://discord.gg/VM9cWJ9rjH" class="" referrerpolicy="origin" target="_blank" rel="external"><img width="100px" class="mt-1" src="./icons/discord.png" alt=""></a></div></div> + </div> + + <div class="pt-[83px] w-full h-full flex flex-col items-center"><div class="w-full flex flex-col items-start min-h-screen max-w-[1600px] px-4"><button class="text-white font-body pt-5 lg:hidden">Go to page ></button> + <div class="flex w-full min-h-full relative"><div class="h-full fixed border-r-orange-400 bg-[#222] border-r-2 max-lg:hidden"><div class="flex pt-10 flex-col w-[300px] gap-2 border-[#21a6f0] min-h-0 h-full overflow-auto"><b class="text-orange-400">Getting Started</b> + <a href="./docs.html" class="svelte-yue6wq">Installation</a> + <a href="./docs/features.html" class="svelte-yue6wq">Feature Overview</a> + + <b class="text-orange-400 mt-5">Connection</b> + <a href="./docs/supported_platforms.html" class="svelte-yue6wq">Supported Platforms</a> + <a href="./docs/connect.html" class="svelte-yue6wq">Connect to Your Game</a> + <a href="./docs/security.html" class="svelte-yue6wq">Security Considerations</a> + <a href="./docs/all_config.html" class="svelte-yue6wq">All Configuration Options</a> + + <b class="text-orange-400 mt-5">Inspector</b> + <a href="./docs/inspector.html" class="svelte-yue6wq">GameObject Inspector</a> + <a href="./docs/buttons.html" class="svelte-yue6wq">Adding Buttons</a> + <a href="./docs/faq.html" class="svelte-yue6wq">Frequently Asked Questions</a> + + <b class="text-orange-400 mt-5">Logs</b> + <a href="./docs/logs.html" class="svelte-yue6wq">Log Viewer</a> + <a href="./docs/viewing_logs_offline.html" class="svelte-yue6wq">Viewing Logs Offline</a> + + <b class="text-orange-400 mt-5">Console</b> + <a href="./docs/console.html" class="svelte-yue6wq">Console Window</a> + <a href="./docs/console_built_in.html" class="svelte-yue6wq">Built-in Commands</a> + <a href="./docs/console_custom.html" class="svelte-yue6wq">Custom Commands</a> + + <b class="text-orange-400 mt-5">Extras</b> + <a href="./docs/deeplinks.html" class="svelte-yue6wq">Deep Links</a> + + <div class="h-[200px] shrink-0"></div></div></div> + + + <div class="flex flex-col w-full lg:pl-10 py-10 lg:ml-[300px]"><div class="doc flex flex-col gap-5 svelte-yue6wq"><h1>Welcome to Proxima Inspector!</h1> + +Proxima Inspector lets you connect to your Unity game using a web browser to view game objects, logs, and more. +Proxima setup is easy, just follow these steps. + +<h2>Installation</h2> + +<ul class="list-decimal ml-10 leading-8"><li>Import the Proxima package to your project from the Unity Asset Store. + <a href="https://docs.unity3d.com/Manual/upm-ui-import.html" target="_blank" rel="noreferrer">How do I import an asset store package? + </a></li> + <li>Add an empty GameObject to your scene and add a <b>Proxima Inspector</b> component to it.</li> + <li>Enter a display name (optional).</li> + <li>Enter a super secret password (required).</li></ul> + +<p class="ml-5">Your component should now look like this:</p> +<img src="./docs/basic-config.png" alt="Proxima Component Configuration"> + +<p class="ml-5">5. Play your game in editor and navigate to http://127.0.0.1:7759. You should see Proxima Inspector pop up.</p> + +<img src="./docs/connect.png" alt="Proxima Connect Page"> + +<p class="ml-5">6. Click <b>Connect</b> and enter your password. Now you can get familiar with <a href="./docs/features.html">Proxima's features</a> while connected to the editor.<br><br>When you're ready, learn how to <a href="./docs/connect.html">connect to your built game</a>.</p></div></div></div> +</div> + <div class="h-[200px] flex flex-col"><p class="text-gray-400 m-10">© 2023 Virtual Maker Corporation</p></div></div></div> + + + + </div> + </body> +</html> diff --git a/Assets/Proxima/Documentation/docs.html.meta b/Assets/Proxima/Documentation/docs.html.meta new file mode 100644 index 0000000..645dd93 --- /dev/null +++ b/Assets/Proxima/Documentation/docs.html.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b45089c0bd97cbb40ae999c94216a444 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/docs.meta b/Assets/Proxima/Documentation/docs.meta new file mode 100644 index 0000000..20e3195 --- /dev/null +++ b/Assets/Proxima/Documentation/docs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0076d36c6476caf4181b16aaad6edbba +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/docs/all_config.html b/Assets/Proxima/Documentation/docs/all_config.html new file mode 100644 index 0000000..5e95ce3 --- /dev/null +++ b/Assets/Proxima/Documentation/docs/all_config.html @@ -0,0 +1,112 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8" /> + <title>Proxima Inspector</title> + <link rel="icon" href="../icons/favicon.ico" /> + <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1"> + <meta property="og:type" content="website"> + <meta name="description" property="og:description" content="Proxima Inspector lets you connect to your live game from a web browser to inspect and edit any property. Just like the Unity editor!"> + <meta name="image" property="og:image" content="../images/proxima-1200x630.png"> + <meta http-equiv="content-security-policy" content=""> + <link href="../_app/immutable/assets/_layout-1f0a7e97.css" rel="stylesheet"> + <link href="../_app/immutable/assets/_layout-6847360b.css" rel="stylesheet"> + + + + + + + + + + + </head> + <body> + <div> + + +<div class="flex flex-col items-center text-gray-300 w-full min-h-screen bg-[#222]"><div class="flex w-full justify-center items-start bg-[#111] text-white fixed z-20"><div class="flex grow justify-between items-center max-w-[1600px] p-4"><a href="https://www.unityproxima.com"><img src="../images/proxima_logo.png" class="w-[150px]" alt="Logo"></a> + <button class="lg:hidden"><img class="w-10" src="../icons/menu.png" alt="Menu"></button> + <div class="flex gap-10 items-center max-lg:hidden"> +<a href="https://assetstore.unity.com/publishers/72095?aid=1101lqSYn" class="text-xl font-logo" referrerpolicy="origin" target="_blank" rel="external">Store</a> + +<a href="https://app.unityproxima.com/connection" class="text-xl font-logo" referrerpolicy="origin" target="_blank" rel="external">Demo</a> + + <a class="text-xl font-logo" href="../docs.html">Docs</a> + +<a href="https://discord.gg/VM9cWJ9rjH" class="" referrerpolicy="origin" target="_blank" rel="external"><img width="100px" class="mt-1" src="../icons/discord.png" alt=""></a></div></div> + </div> + + <div class="pt-[83px] w-full h-full flex flex-col items-center"><div class="w-full flex flex-col items-start min-h-screen max-w-[1600px] px-4"><button class="text-white font-body pt-5 lg:hidden">Go to page ></button> + <div class="flex w-full min-h-full relative"><div class="h-full fixed border-r-orange-400 bg-[#222] border-r-2 max-lg:hidden"><div class="flex pt-10 flex-col w-[300px] gap-2 border-[#21a6f0] min-h-0 h-full overflow-auto"><b class="text-orange-400">Getting Started</b> + <a href="../docs.html" class="svelte-yue6wq">Installation</a> + <a href="../docs/features.html" class="svelte-yue6wq">Feature Overview</a> + + <b class="text-orange-400 mt-5">Connection</b> + <a href="../docs/supported_platforms.html" class="svelte-yue6wq">Supported Platforms</a> + <a href="../docs/connect.html" class="svelte-yue6wq">Connect to Your Game</a> + <a href="../docs/security.html" class="svelte-yue6wq">Security Considerations</a> + <a href="../docs/all_config.html" class="svelte-yue6wq">All Configuration Options</a> + + <b class="text-orange-400 mt-5">Inspector</b> + <a href="../docs/inspector.html" class="svelte-yue6wq">GameObject Inspector</a> + <a href="../docs/buttons.html" class="svelte-yue6wq">Adding Buttons</a> + <a href="../docs/faq.html" class="svelte-yue6wq">Frequently Asked Questions</a> + + <b class="text-orange-400 mt-5">Logs</b> + <a href="../docs/logs.html" class="svelte-yue6wq">Log Viewer</a> + <a href="../docs/viewing_logs_offline.html" class="svelte-yue6wq">Viewing Logs Offline</a> + + <b class="text-orange-400 mt-5">Console</b> + <a href="../docs/console.html" class="svelte-yue6wq">Console Window</a> + <a href="../docs/console_built_in.html" class="svelte-yue6wq">Built-in Commands</a> + <a href="../docs/console_custom.html" class="svelte-yue6wq">Custom Commands</a> + + <b class="text-orange-400 mt-5">Extras</b> + <a href="../docs/deeplinks.html" class="svelte-yue6wq">Deep Links</a> + + <div class="h-[200px] shrink-0"></div></div></div> + + + <div class="flex flex-col w-full lg:pl-10 py-10 lg:ml-[300px]"><div class="doc flex flex-col gap-5 svelte-yue6wq"><h1 class="mb-10">All Configuration Options</h1> + +<img src="../docs/secure-config.png" alt="Proxima Secure Configuration"> + +<table class="bg-[#1D1D1D] mt-10"><tr><td class="whitespace-nowrap text-white"><b>Property</b></td> + <td class="text-white"><b>Description</b></td></tr> + <tr><td class="whitespace-nowrap text-white">Display Name</td> + <td>The name displayed to show in the browser when connected</td></tr> + <tr><td class="whitespace-nowrap text-white">Port</td> + <td>The port number to host the embedded Proxima server. Not used in WebGL builds.</td></tr> + <tr><td class="whitespace-nowrap text-white">Password</td> + <td>The password required to connect to Proxima. See <a href="../docs/security.html">the security docs</a>.</td></tr> + <tr><td class="whitespace-nowrap text-white">Use Https</td> + <td>Enables and disables HTTPS for encryption. See <a href="../docs/security.html">the security docs</a>. Not used in WebGL builds.</td></tr> + <tr><td class="whitespace-nowrap text-white">Certificate</td> + <td>Optional TLS certificate. By default, Proxima uses Proxima/Resources/Proxima/ProximaEmbeddedCert.pfx. See <a href="../docs/security.html">the security docs</a>. Not used in WebGL builds.</td></tr> + <tr><td class="whitespace-nowrap text-white">Certificate Password</td> + <td>Password for the TLS certificate. Not used in WebGL builds.</td></tr> + <tr><td class="whitespace-nowrap text-white">Run On Enable</td> + <td>Automatically starts the Proxima server when this component is enabled.</td></tr> + <tr><td class="whitespace-nowrap text-white">Log Buffer Size</td> + <td>Maximum number of log messages to keep in memory. See <a href="../docs/logs.html">the logs docs</a>.</td></tr> + <tr><td class="whitespace-nowrap text-white">Instantiate Status UI</td> + <td>Instantiates Proxima/Resources/Proxima/ProximaStatusUI.prefab on startup. This UI lets you see the current status of Proxima at the bottom of your screen.</td></tr> + <tr><td class="whitespace-nowrap text-white">Instantiate Connect UI</td> + <td>Instantiates Proxima/Resources/Proxima/ProximaConnectUI.prefab on startup. This UI appears when the user presses F2 and allows the user to start and stop the server with a display name and password.</td></tr> + <tr><td class="whitespace-nowrap text-white">Dont Destroy On Load</td> + <td>Adds the gameObject with the Proxima Inspector to the DontDestroyOnLoad scene, which keeps connections alive when transitioning between scenes.</td></tr> + <tr><td class="whitespace-nowrap text-white">Set Run In Background</td> + <td>When Proxima starts, sets Application.runInBackground to true. When Proxima stops, + sets Application.runInBackground back to its previous value. This allows Proxima + to work when connecting from a browser on the same device, since otherwise Unity + will pause the app when focus is set to the browser.</td></tr></table></div></div></div> +</div> + <div class="h-[200px] flex flex-col"><p class="text-gray-400 m-10">© 2023 Virtual Maker Corporation</p></div></div></div> + + + + </div> + </body> +</html> diff --git a/Assets/Proxima/Documentation/docs/all_config.html.meta b/Assets/Proxima/Documentation/docs/all_config.html.meta new file mode 100644 index 0000000..ad963fa --- /dev/null +++ b/Assets/Proxima/Documentation/docs/all_config.html.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: deed7884a12e5b546acaba45aed60ea1 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/docs/basic-config.png b/Assets/Proxima/Documentation/docs/basic-config.png new file mode 100644 index 0000000..9b2cfeb Binary files /dev/null and b/Assets/Proxima/Documentation/docs/basic-config.png differ diff --git a/Assets/Proxima/Documentation/docs/basic-config.png.meta b/Assets/Proxima/Documentation/docs/basic-config.png.meta new file mode 100644 index 0000000..2ae9941 --- /dev/null +++ b/Assets/Proxima/Documentation/docs/basic-config.png.meta @@ -0,0 +1,98 @@ +fileFormatVersion: 2 +guid: b9e1c30cb177425438b06dabf64f44a7 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + 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 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/docs/browser_warning.png b/Assets/Proxima/Documentation/docs/browser_warning.png new file mode 100644 index 0000000..70b8de2 Binary files /dev/null and b/Assets/Proxima/Documentation/docs/browser_warning.png differ diff --git a/Assets/Proxima/Documentation/docs/browser_warning.png.meta b/Assets/Proxima/Documentation/docs/browser_warning.png.meta new file mode 100644 index 0000000..d8a078a --- /dev/null +++ b/Assets/Proxima/Documentation/docs/browser_warning.png.meta @@ -0,0 +1,98 @@ +fileFormatVersion: 2 +guid: 128d6655c9b7beb409e7ff62fe4617c9 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + 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 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/docs/buttons.html b/Assets/Proxima/Documentation/docs/buttons.html new file mode 100644 index 0000000..9ad1714 --- /dev/null +++ b/Assets/Proxima/Documentation/docs/buttons.html @@ -0,0 +1,97 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8" /> + <title>Proxima Inspector</title> + <link rel="icon" href="../icons/favicon.ico" /> + <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1"> + <meta property="og:type" content="website"> + <meta name="description" property="og:description" content="Proxima Inspector lets you connect to your live game from a web browser to inspect and edit any property. Just like the Unity editor!"> + <meta name="image" property="og:image" content="../images/proxima-1200x630.png"> + <meta http-equiv="content-security-policy" content=""> + <link href="../_app/immutable/assets/_layout-1f0a7e97.css" rel="stylesheet"> + <link href="../_app/immutable/assets/_layout-6847360b.css" rel="stylesheet"> + + + + + + + + + + + + </head> + <body> + <div> + + +<div class="flex flex-col items-center text-gray-300 w-full min-h-screen bg-[#222]"><div class="flex w-full justify-center items-start bg-[#111] text-white fixed z-20"><div class="flex grow justify-between items-center max-w-[1600px] p-4"><a href="https://www.unityproxima.com"><img src="../images/proxima_logo.png" class="w-[150px]" alt="Logo"></a> + <button class="lg:hidden"><img class="w-10" src="../icons/menu.png" alt="Menu"></button> + <div class="flex gap-10 items-center max-lg:hidden"> +<a href="https://assetstore.unity.com/publishers/72095?aid=1101lqSYn" class="text-xl font-logo" referrerpolicy="origin" target="_blank" rel="external">Store</a> + +<a href="https://app.unityproxima.com/connection" class="text-xl font-logo" referrerpolicy="origin" target="_blank" rel="external">Demo</a> + + <a class="text-xl font-logo" href="../docs.html">Docs</a> + +<a href="https://discord.gg/VM9cWJ9rjH" class="" referrerpolicy="origin" target="_blank" rel="external"><img width="100px" class="mt-1" src="../icons/discord.png" alt=""></a></div></div> + </div> + + <div class="pt-[83px] w-full h-full flex flex-col items-center"><div class="w-full flex flex-col items-start min-h-screen max-w-[1600px] px-4"><button class="text-white font-body pt-5 lg:hidden">Go to page ></button> + <div class="flex w-full min-h-full relative"><div class="h-full fixed border-r-orange-400 bg-[#222] border-r-2 max-lg:hidden"><div class="flex pt-10 flex-col w-[300px] gap-2 border-[#21a6f0] min-h-0 h-full overflow-auto"><b class="text-orange-400">Getting Started</b> + <a href="../docs.html" class="svelte-yue6wq">Installation</a> + <a href="../docs/features.html" class="svelte-yue6wq">Feature Overview</a> + + <b class="text-orange-400 mt-5">Connection</b> + <a href="../docs/supported_platforms.html" class="svelte-yue6wq">Supported Platforms</a> + <a href="../docs/connect.html" class="svelte-yue6wq">Connect to Your Game</a> + <a href="../docs/security.html" class="svelte-yue6wq">Security Considerations</a> + <a href="../docs/all_config.html" class="svelte-yue6wq">All Configuration Options</a> + + <b class="text-orange-400 mt-5">Inspector</b> + <a href="../docs/inspector.html" class="svelte-yue6wq">GameObject Inspector</a> + <a href="../docs/buttons.html" class="svelte-yue6wq">Adding Buttons</a> + <a href="../docs/faq.html" class="svelte-yue6wq">Frequently Asked Questions</a> + + <b class="text-orange-400 mt-5">Logs</b> + <a href="../docs/logs.html" class="svelte-yue6wq">Log Viewer</a> + <a href="../docs/viewing_logs_offline.html" class="svelte-yue6wq">Viewing Logs Offline</a> + + <b class="text-orange-400 mt-5">Console</b> + <a href="../docs/console.html" class="svelte-yue6wq">Console Window</a> + <a href="../docs/console_built_in.html" class="svelte-yue6wq">Built-in Commands</a> + <a href="../docs/console_custom.html" class="svelte-yue6wq">Custom Commands</a> + + <b class="text-orange-400 mt-5">Extras</b> + <a href="../docs/deeplinks.html" class="svelte-yue6wq">Deep Links</a> + + <div class="h-[200px] shrink-0"></div></div></div> + + + <div class="flex flex-col w-full lg:pl-10 py-10 lg:ml-[300px]"><div class="doc flex flex-col gap-5 svelte-yue6wq"><h1>Inspector Buttons</h1> + +<p>You can add buttons to your components that appear in the inspector and perform some action.</p> + +<video muted autoplay loop playsinline><source src="https://www.unityproxima.com/docs/buttons.mp4"></video> + +<h2>How to add a button</h2> + +<ul class="list-disc ml-8"><li>Create a method in your MonoBehaviour. It cannot be static.</li> + <li>Add the ProximaButton attribute, with the text that you want to appear.</li> + <li>Buttons will appear in order at the top of the component in the inspector.</li></ul> + +<div class="bg-[#1d1d1d] p-3 text-zinc-300 font-mono">[<span class="text-green-400">ProximaButton</span>(<span class="text-orange-400">"Toggle Spin"</span>)]<br> + <span class="text-blue-300">void</span> <span class="text-yellow-200">Toggle</span>()<br> + {<br> + <span class="text-blue-300"> _spin</span> = !<span class="text-blue-300">_spin</span>;<br> + }<br></div></div></div></div> +</div> + <div class="h-[200px] flex flex-col"><p class="text-gray-400 m-10">© 2023 Virtual Maker Corporation</p></div></div></div> + + + + </div> + </body> +</html> diff --git a/Assets/Proxima/Documentation/docs/buttons.html.meta b/Assets/Proxima/Documentation/docs/buttons.html.meta new file mode 100644 index 0000000..84cafa1 --- /dev/null +++ b/Assets/Proxima/Documentation/docs/buttons.html.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0ed34a30d500b449bb09bf8c165734d0 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/docs/connect-ui.png b/Assets/Proxima/Documentation/docs/connect-ui.png new file mode 100644 index 0000000..2918c58 Binary files /dev/null and b/Assets/Proxima/Documentation/docs/connect-ui.png differ diff --git a/Assets/Proxima/Documentation/docs/connect-ui.png.meta b/Assets/Proxima/Documentation/docs/connect-ui.png.meta new file mode 100644 index 0000000..958a393 --- /dev/null +++ b/Assets/Proxima/Documentation/docs/connect-ui.png.meta @@ -0,0 +1,98 @@ +fileFormatVersion: 2 +guid: ff21eba6381d51342b8e45ea028b8561 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + 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 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/docs/connect.html b/Assets/Proxima/Documentation/docs/connect.html new file mode 100644 index 0000000..51fc374 --- /dev/null +++ b/Assets/Proxima/Documentation/docs/connect.html @@ -0,0 +1,125 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8" /> + <title>Proxima Inspector</title> + <link rel="icon" href="../icons/favicon.ico" /> + <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1"> + <meta property="og:type" content="website"> + <meta name="description" property="og:description" content="Proxima Inspector lets you connect to your live game from a web browser to inspect and edit any property. Just like the Unity editor!"> + <meta name="image" property="og:image" content="../images/proxima-1200x630.png"> + <meta http-equiv="content-security-policy" content=""> + <link href="../_app/immutable/assets/_layout-1f0a7e97.css" rel="stylesheet"> + <link href="../_app/immutable/assets/_layout-6847360b.css" rel="stylesheet"> + + + + + + + + + + + + </head> + <body> + <div> + + +<div class="flex flex-col items-center text-gray-300 w-full min-h-screen bg-[#222]"><div class="flex w-full justify-center items-start bg-[#111] text-white fixed z-20"><div class="flex grow justify-between items-center max-w-[1600px] p-4"><a href="https://www.unityproxima.com"><img src="../images/proxima_logo.png" class="w-[150px]" alt="Logo"></a> + <button class="lg:hidden"><img class="w-10" src="../icons/menu.png" alt="Menu"></button> + <div class="flex gap-10 items-center max-lg:hidden"> +<a href="https://assetstore.unity.com/publishers/72095?aid=1101lqSYn" class="text-xl font-logo" referrerpolicy="origin" target="_blank" rel="external">Store</a> + +<a href="https://app.unityproxima.com/connection" class="text-xl font-logo" referrerpolicy="origin" target="_blank" rel="external">Demo</a> + + <a class="text-xl font-logo" href="../docs.html">Docs</a> + +<a href="https://discord.gg/VM9cWJ9rjH" class="" referrerpolicy="origin" target="_blank" rel="external"><img width="100px" class="mt-1" src="../icons/discord.png" alt=""></a></div></div> + </div> + + <div class="pt-[83px] w-full h-full flex flex-col items-center"><div class="w-full flex flex-col items-start min-h-screen max-w-[1600px] px-4"><button class="text-white font-body pt-5 lg:hidden">Go to page ></button> + <div class="flex w-full min-h-full relative"><div class="h-full fixed border-r-orange-400 bg-[#222] border-r-2 max-lg:hidden"><div class="flex pt-10 flex-col w-[300px] gap-2 border-[#21a6f0] min-h-0 h-full overflow-auto"><b class="text-orange-400">Getting Started</b> + <a href="../docs.html" class="svelte-yue6wq">Installation</a> + <a href="../docs/features.html" class="svelte-yue6wq">Feature Overview</a> + + <b class="text-orange-400 mt-5">Connection</b> + <a href="../docs/supported_platforms.html" class="svelte-yue6wq">Supported Platforms</a> + <a href="../docs/connect.html" class="svelte-yue6wq">Connect to Your Game</a> + <a href="../docs/security.html" class="svelte-yue6wq">Security Considerations</a> + <a href="../docs/all_config.html" class="svelte-yue6wq">All Configuration Options</a> + + <b class="text-orange-400 mt-5">Inspector</b> + <a href="../docs/inspector.html" class="svelte-yue6wq">GameObject Inspector</a> + <a href="../docs/buttons.html" class="svelte-yue6wq">Adding Buttons</a> + <a href="../docs/faq.html" class="svelte-yue6wq">Frequently Asked Questions</a> + + <b class="text-orange-400 mt-5">Logs</b> + <a href="../docs/logs.html" class="svelte-yue6wq">Log Viewer</a> + <a href="../docs/viewing_logs_offline.html" class="svelte-yue6wq">Viewing Logs Offline</a> + + <b class="text-orange-400 mt-5">Console</b> + <a href="../docs/console.html" class="svelte-yue6wq">Console Window</a> + <a href="../docs/console_built_in.html" class="svelte-yue6wq">Built-in Commands</a> + <a href="../docs/console_custom.html" class="svelte-yue6wq">Custom Commands</a> + + <b class="text-orange-400 mt-5">Extras</b> + <a href="../docs/deeplinks.html" class="svelte-yue6wq">Deep Links</a> + + <div class="h-[200px] shrink-0"></div></div></div> + + + <div class="flex flex-col w-full lg:pl-10 py-10 lg:ml-[300px]"><div class="doc flex flex-col gap-5 svelte-yue6wq"><h1>Connect to Your Game</h1> + +<h2>Building your Game with Proxima (non-WebGL)</h2> + +<ul class="list-decimal ml-5 leading-8"><li>Add an empty GameObject to your scene and add a Proxima Inspector component.</li> + <li>Assign a 4 or 5 digit port number that is not already in use on your target device.</li> + <li>If you want your connection to be encrypted, <a href="../docs/security.html">enable HTTPS</a>. <b>This is required for Android and iOS.</b></li> + <li>Your Proxima Inspector component should look something like this: + <img class="p-5" src="../docs/device-config.png" alt="Proxima Component Configuration"></li> + <li>Build, deploy, and run your game.</li></ul> + +<h2 class="text-zinc-100 text-xl mt-5">Connecting to Your Game (non-WebGL)</h2> +<ul class="list-decimal ml-5 leading-8"><li>Ensure that both the device running your game and the device running your browser are connected to the same local network.</li> + <li>If you've enabled the "Instantiate Connect UI", you can click the Proxima icon and click "Open in Browser". Otherwise:</li> + <li>Navigate to <b>http://[your-ip-address]:[port]</b>. <a href="#ipaddress">How do I find my device's IP address?</a></li></ul> + +<div class="bg-gray-800 p-5 text-zinc-300">If you've enabled HTTPS, your browser may warn you that Proxima's certificate is not trusted. It is ok to bypass this warning if you're connecting to your device's IP directly on your local network. + See the <a href="../docs/security.html">Security Considerations</a> page for more information. +</div> + +<h2 class="text-zinc-100 text-xl mt-5">Building and Connecting to Your Game (WebGL)</h2> +<ul class="list-decimal ml-5 leading-8"><li><b>WebGL</b> builds connect directly through a BroadcastChannel in the browser. The port and HTTPS options are not used.</li> + <li>This also means you cannot connect to WebGL builds remotely. You must connect in the same browser that is running the game, + and you must use the same URL origin. + </li> + <li>If you've enabled the "Instantiate Connect UI", you can click the Proxima icon and click "Open in Browser". Otherwise:</li> + <li>Navigate to <b>http://your-game-address/path/to/game/<span class="text-yellow-600">StreamingAssets/Proxima/index.html</span></b></li></ul> + +<h2 id="ipaddress" class="text-zinc-100 text-xl mt-5">How do I find my device's IP address?</h2> +<p>If you checked <b>Instantiate Status UI</b> on the Proxima Inspector component, your device IP will be displayed at the bottom of your game.</p> +<img src="../docs/status-ui.png" alt="Proxima Status UI"> +<p>Alternatively, you can also find your device's IP address by:</p> +<ul class="list-disc ml-10"><li>Windows: In the command line type: <div class="ml-5 text-orange-400 font-mono">ipconfig | findstr /C:"IPv4 Address"</div></li> + <li>macOS: In the terminal type: <div class="ml-5 text-orange-400 font-mono">ifconfig getifaddr en0</div></li> + <li>Android: Go to "Settings > Wi-Fi Settings > ... > Advanced" and scroll to the bottom.</li> + <li>iOS: Go to "Settings > Wi-Fi > Your Wi-Fi" and scroll down.</li></ul> + +<h2 class="text-zinc-100 text-xl mt-5">Troubleshooting</h2> +<p>If you're unable to connect to Proxima, check the following:</p> +<ul class="list-disc ml-10"><li>Your game is running (not paused or in the background).</li> + <li>Both devices are on the same network.</li> + <li>The chosen port is open on the device.</li> + <li>Your device's firewall is not blocking the chosen port.</li> + <li>Your router's firewall is not blocking the chosen port.</li> + <li>For WebGL builds, you are using the same browser as the game and the same URL origin.</li></ul></div></div></div> +</div> + <div class="h-[200px] flex flex-col"><p class="text-gray-400 m-10">© 2023 Virtual Maker Corporation</p></div></div></div> + + + + </div> + </body> +</html> diff --git a/Assets/Proxima/Documentation/docs/connect.html.meta b/Assets/Proxima/Documentation/docs/connect.html.meta new file mode 100644 index 0000000..715dec5 --- /dev/null +++ b/Assets/Proxima/Documentation/docs/connect.html.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e02f0695fb5372343898f4bd4e0bf979 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/docs/connect.png b/Assets/Proxima/Documentation/docs/connect.png new file mode 100644 index 0000000..dbcbc1e Binary files /dev/null and b/Assets/Proxima/Documentation/docs/connect.png differ diff --git a/Assets/Proxima/Documentation/docs/connect.png.meta b/Assets/Proxima/Documentation/docs/connect.png.meta new file mode 100644 index 0000000..30a9576 --- /dev/null +++ b/Assets/Proxima/Documentation/docs/connect.png.meta @@ -0,0 +1,98 @@ +fileFormatVersion: 2 +guid: d770431d82d1df24c8c236c81ad3d451 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + 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 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/docs/console.html b/Assets/Proxima/Documentation/docs/console.html new file mode 100644 index 0000000..313b180 --- /dev/null +++ b/Assets/Proxima/Documentation/docs/console.html @@ -0,0 +1,163 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8" /> + <title>Proxima Inspector</title> + <link rel="icon" href="../icons/favicon.ico" /> + <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1"> + <meta property="og:type" content="website"> + <meta name="description" property="og:description" content="Proxima Inspector lets you connect to your live game from a web browser to inspect and edit any property. Just like the Unity editor!"> + <meta name="image" property="og:image" content="../images/proxima-1200x630.png"> + <meta http-equiv="content-security-policy" content=""> + <link href="../_app/immutable/assets/_layout-1f0a7e97.css" rel="stylesheet"> + <link href="../_app/immutable/assets/_layout-6847360b.css" rel="stylesheet"> + + + + + + + + + + + + </head> + <body> + <div> + + +<div class="flex flex-col items-center text-gray-300 w-full min-h-screen bg-[#222]"><div class="flex w-full justify-center items-start bg-[#111] text-white fixed z-20"><div class="flex grow justify-between items-center max-w-[1600px] p-4"><a href="https://www.unityproxima.com"><img src="../images/proxima_logo.png" class="w-[150px]" alt="Logo"></a> + <button class="lg:hidden"><img class="w-10" src="../icons/menu.png" alt="Menu"></button> + <div class="flex gap-10 items-center max-lg:hidden"> +<a href="https://assetstore.unity.com/publishers/72095?aid=1101lqSYn" class="text-xl font-logo" referrerpolicy="origin" target="_blank" rel="external">Store</a> + +<a href="https://app.unityproxima.com/connection" class="text-xl font-logo" referrerpolicy="origin" target="_blank" rel="external">Demo</a> + + <a class="text-xl font-logo" href="../docs.html">Docs</a> + +<a href="https://discord.gg/VM9cWJ9rjH" class="" referrerpolicy="origin" target="_blank" rel="external"><img width="100px" class="mt-1" src="../icons/discord.png" alt=""></a></div></div> + </div> + + <div class="pt-[83px] w-full h-full flex flex-col items-center"><div class="w-full flex flex-col items-start min-h-screen max-w-[1600px] px-4"><button class="text-white font-body pt-5 lg:hidden">Go to page ></button> + <div class="flex w-full min-h-full relative"><div class="h-full fixed border-r-orange-400 bg-[#222] border-r-2 max-lg:hidden"><div class="flex pt-10 flex-col w-[300px] gap-2 border-[#21a6f0] min-h-0 h-full overflow-auto"><b class="text-orange-400">Getting Started</b> + <a href="../docs.html" class="svelte-yue6wq">Installation</a> + <a href="../docs/features.html" class="svelte-yue6wq">Feature Overview</a> + + <b class="text-orange-400 mt-5">Connection</b> + <a href="../docs/supported_platforms.html" class="svelte-yue6wq">Supported Platforms</a> + <a href="../docs/connect.html" class="svelte-yue6wq">Connect to Your Game</a> + <a href="../docs/security.html" class="svelte-yue6wq">Security Considerations</a> + <a href="../docs/all_config.html" class="svelte-yue6wq">All Configuration Options</a> + + <b class="text-orange-400 mt-5">Inspector</b> + <a href="../docs/inspector.html" class="svelte-yue6wq">GameObject Inspector</a> + <a href="../docs/buttons.html" class="svelte-yue6wq">Adding Buttons</a> + <a href="../docs/faq.html" class="svelte-yue6wq">Frequently Asked Questions</a> + + <b class="text-orange-400 mt-5">Logs</b> + <a href="../docs/logs.html" class="svelte-yue6wq">Log Viewer</a> + <a href="../docs/viewing_logs_offline.html" class="svelte-yue6wq">Viewing Logs Offline</a> + + <b class="text-orange-400 mt-5">Console</b> + <a href="../docs/console.html" class="svelte-yue6wq">Console Window</a> + <a href="../docs/console_built_in.html" class="svelte-yue6wq">Built-in Commands</a> + <a href="../docs/console_custom.html" class="svelte-yue6wq">Custom Commands</a> + + <b class="text-orange-400 mt-5">Extras</b> + <a href="../docs/deeplinks.html" class="svelte-yue6wq">Deep Links</a> + + <div class="h-[200px] shrink-0"></div></div></div> + + + <div class="flex flex-col w-full lg:pl-10 py-10 lg:ml-[300px]"><div class="doc flex flex-col gap-5 svelte-yue6wq"><h1>Console</h1> + +<h2>Basic Usages</h2> +<p>The Proxima Console gives you a powerful command line utility to remotely inspect and control your game. + The Console comes with several built-in commands, and you can + write your own commands with unlimited potential.</p> + +<img src="../docs/console.png" alt="Proxima Console"> + +<h2 class="text-zing-100 text-xl mt-5">Using the Console</h2> +<ul class="list-disc ml-5"><li>Type <b>'?'</b> to see a list of all commands.</li> + <li>Type <b>'? <command>'</b> to see more information about a command.</li> + <li>Type <b>'h'</b> to see your history of commands.</li> + <li>Press the <b>Up</b> and <b>Down</b> arrows to cycle through your history of commands.</li> + <li>Type some characters and press <b>Tab</b> to cycle through auto-completion options.</li></ul> + +<h2 class="text-zing-100 text-xl mt-5">Examples</h2> +<div class="bg-[#1d1d1d] p-3 text-zinc-300 font-mono"><span class="text-gray-400">// List all gameObjects starting with cube</span><br> + > list cube*<br> + Cube (1) [25654]<br> + Cube (2) [25664]<br> + Cube (3) [25634]<br> + <br> + <span class="text-gray-400">// Get the position of a specific cube</span><br> + > get [25654].transform.position<br> + Cube (1) [25654] [1, 2, 3]<br> + <br> + <span class="text-gray-400">// Move the cube</span><br> + > move [25654] [0, 3, 0]<br> + Moved Cube (1) [25654] to [0, 3, 0]<br> + <br> + <span class="text-gray-400">// Rotate the camera to look at the cube</span><br> + > lookat "Main Camera" [25654].transform.position<br> + Rotated Main Camera [23438] to [0, 3, 0]<br> + <br> + <span class="text-gray-400">// Add a RigidBody component to the cube</span><br> + > addcomponent [25654] rigidbody<br> + Added Rigidbody to Cube (1) [25654]<br> + <br> + <span class="text-gray-400">// Destroy all the cubes</span><br> + > destroy cube*<br> + Destroyed Cube (1) [25654]<br> + Destroyed Cube (2) [25664]<br> + Destroyed Cube (3) [25634]<br> + <br> + <span class="text-gray-400">// Enter fullscreen</span><br> + > set screen.fullscreen true<br> + Set Screen.fullScreen to true<br> + <br> + <span class="text-gray-400">// Slow down time by half</span><br> + > set time.timescale 0.5<br> + Set Time.timeScale to 0.5<br> + <br> + <span class="text-gray-400">// Change TextMeshPro text</span><br> + > set text1.textmeshpro.text "banana phone"<br> + Set Text1.TextMeshPro.Text to banana phone<br></div> + +<h2 class="text-zing-100 text-xl mt-5">Pattern Matching</h2> +<p>Several built-in commands support pattern matching for gameObjects and properties:</p> +<ul class="ml-5 list-disc"><li>Use asterisk (*) to as a wildcard to when specifying gameObjects. For example: cube* will match cube1 and cube23</li> + <li>Use dot notation to reference properties. For example: cube1.transform.position</li> + <li>Many commands print the gameObject's ID. You can use this ID instead of the name. For example: [25654].transform.position</li></ul> + +<h2 class="text-zing-100 text-xl mt-5">Types</h2> +<p>Proxima Commands can process these types: bool, int, uint, float, string, Vector2, Vector2Int, Vector3, Vector3Int, Quaternion, Vector4, Rect, RectInt, Bounds, BoundsInt, Color, Enum, Array.</p> +<ul class="list-disc ml-5"><li>To pass bool use <b>true</b> or <b>false</b></li> + <li>To pass string use quotes: <b>"The quick brown fox"</b>.</li> + <li>To pass Vector2, Vector3, or Vector4: <b>[1.1, 2.2, 3.3]</b> means <b>new Vector3(1.1, 2.2, 3.3)</b>.</li> + <li>To pass Quaternion: <b>[10, 20, 30]</b> means <b>Quaternion.Euler(10, 20, 30)</b>.</li> + <li>To pass Rect: <b>[1, 2, 3, 4]</b> means <b>new Rect(1, 2, 3, 4)</b>.</li> + <li>To pass Bounds: <b>[1, 2, 3, 4, 5, 6]</b> means <b>new Bounds(new Vector3(1, 2, 3), new Vector3(4, 5, 6))</b>.</li> + <li>To pass Color use hexidecimal format: <b>#FF0000</b> means red.</li> + <li>You can also pass an array of the same type to a List or Array C# parameter, for example, <b>[1, 2, 3, 4, 5]</b>.</li></ul> + +<h2 class="bg-gray-800 p-5 text-zing-100 text-xl mt-5">Learn more about the powerful <a href="../docs/console_built_in.html">built-in commands</a>.</h2> +<h2 class="bg-gray-800 p-5 text-zing-100 text-zing-100 text-xl">Learn how to write your own <a href="../docs/console_custom.html">custom commands</a>.</h2> + +<h2 class="text-zing-100 text-xl mt-5">Running Scripts</h2> +<p>You can automate the Proxima Console to run commands in sequence. This might be helpful if you need to read many values repeatedly or setup a scene in a predefined way.</p> +<ul class="list-disc ml-5"><li>Create a text file with a list of commands, one per line. Blank lines are ignored.</li> + <li>Click "Run Script" in the console and select your file. The console will run each command in sequence.</li></ul> + +<img class="self-start" src="../docs/run-script.png" alt="Run Script button"></div></div></div> +</div> + <div class="h-[200px] flex flex-col"><p class="text-gray-400 m-10">© 2023 Virtual Maker Corporation</p></div></div></div> + + + + </div> + </body> +</html> diff --git a/Assets/Proxima/Documentation/docs/console.html.meta b/Assets/Proxima/Documentation/docs/console.html.meta new file mode 100644 index 0000000..fa9d975 --- /dev/null +++ b/Assets/Proxima/Documentation/docs/console.html.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8fcdf6627a00623469e8bbe57390f5fe +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/docs/console.png b/Assets/Proxima/Documentation/docs/console.png new file mode 100644 index 0000000..0bc4024 Binary files /dev/null and b/Assets/Proxima/Documentation/docs/console.png differ diff --git a/Assets/Proxima/Documentation/docs/console.png.meta b/Assets/Proxima/Documentation/docs/console.png.meta new file mode 100644 index 0000000..f4547af --- /dev/null +++ b/Assets/Proxima/Documentation/docs/console.png.meta @@ -0,0 +1,98 @@ +fileFormatVersion: 2 +guid: 42a62eedd641c3e43af5e0d39886bc22 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + 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 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/docs/console_built_in.html b/Assets/Proxima/Documentation/docs/console_built_in.html new file mode 100644 index 0000000..fd7cc21 --- /dev/null +++ b/Assets/Proxima/Documentation/docs/console_built_in.html @@ -0,0 +1,272 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8" /> + <title>Proxima Inspector</title> + <link rel="icon" href="../icons/favicon.ico" /> + <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1"> + <meta property="og:type" content="website"> + <meta name="description" property="og:description" content="Proxima Inspector lets you connect to your live game from a web browser to inspect and edit any property. Just like the Unity editor!"> + <meta name="image" property="og:image" content="../images/proxima-1200x630.png"> + <meta http-equiv="content-security-policy" content=""> + <link href="../_app/immutable/assets/_layout-1f0a7e97.css" rel="stylesheet"> + <link href="../_app/immutable/assets/_layout-6847360b.css" rel="stylesheet"> + + + + + + + + + + + </head> + <body> + <div> + + +<div class="flex flex-col items-center text-gray-300 w-full min-h-screen bg-[#222]"><div class="flex w-full justify-center items-start bg-[#111] text-white fixed z-20"><div class="flex grow justify-between items-center max-w-[1600px] p-4"><a href="https://www.unityproxima.com"><img src="../images/proxima_logo.png" class="w-[150px]" alt="Logo"></a> + <button class="lg:hidden"><img class="w-10" src="../icons/menu.png" alt="Menu"></button> + <div class="flex gap-10 items-center max-lg:hidden"> +<a href="https://assetstore.unity.com/publishers/72095?aid=1101lqSYn" class="text-xl font-logo" referrerpolicy="origin" target="_blank" rel="external">Store</a> + +<a href="https://app.unityproxima.com/connection" class="text-xl font-logo" referrerpolicy="origin" target="_blank" rel="external">Demo</a> + + <a class="text-xl font-logo" href="../docs.html">Docs</a> + +<a href="https://discord.gg/VM9cWJ9rjH" class="" referrerpolicy="origin" target="_blank" rel="external"><img width="100px" class="mt-1" src="../icons/discord.png" alt=""></a></div></div> + </div> + + <div class="pt-[83px] w-full h-full flex flex-col items-center"><div class="w-full flex flex-col items-start min-h-screen max-w-[1600px] px-4"><button class="text-white font-body pt-5 lg:hidden">Go to page ></button> + <div class="flex w-full min-h-full relative"><div class="h-full fixed border-r-orange-400 bg-[#222] border-r-2 max-lg:hidden"><div class="flex pt-10 flex-col w-[300px] gap-2 border-[#21a6f0] min-h-0 h-full overflow-auto"><b class="text-orange-400">Getting Started</b> + <a href="../docs.html" class="svelte-yue6wq">Installation</a> + <a href="../docs/features.html" class="svelte-yue6wq">Feature Overview</a> + + <b class="text-orange-400 mt-5">Connection</b> + <a href="../docs/supported_platforms.html" class="svelte-yue6wq">Supported Platforms</a> + <a href="../docs/connect.html" class="svelte-yue6wq">Connect to Your Game</a> + <a href="../docs/security.html" class="svelte-yue6wq">Security Considerations</a> + <a href="../docs/all_config.html" class="svelte-yue6wq">All Configuration Options</a> + + <b class="text-orange-400 mt-5">Inspector</b> + <a href="../docs/inspector.html" class="svelte-yue6wq">GameObject Inspector</a> + <a href="../docs/buttons.html" class="svelte-yue6wq">Adding Buttons</a> + <a href="../docs/faq.html" class="svelte-yue6wq">Frequently Asked Questions</a> + + <b class="text-orange-400 mt-5">Logs</b> + <a href="../docs/logs.html" class="svelte-yue6wq">Log Viewer</a> + <a href="../docs/viewing_logs_offline.html" class="svelte-yue6wq">Viewing Logs Offline</a> + + <b class="text-orange-400 mt-5">Console</b> + <a href="../docs/console.html" class="svelte-yue6wq">Console Window</a> + <a href="../docs/console_built_in.html" class="svelte-yue6wq">Built-in Commands</a> + <a href="../docs/console_custom.html" class="svelte-yue6wq">Custom Commands</a> + + <b class="text-orange-400 mt-5">Extras</b> + <a href="../docs/deeplinks.html" class="svelte-yue6wq">Deep Links</a> + + <div class="h-[200px] shrink-0"></div></div></div> + + + <div class="flex flex-col w-full lg:pl-10 py-10 lg:ml-[300px]"><div class="doc flex flex-col gap-5 svelte-yue6wq"><h1>Built-in Commands</h1> + +<h2 class="text-2xl text-orange-400 font-bold">General Commands</h2> + <div class="bg-[#1d1d1d] p-3 shadow-lg flex flex-col gap-3 w-full text-left"><div class="flex gap-2 items-center font-mono text-lg"><button><img class="w-[15px]" src="../icons/arrow.png" alt=""></button> + <p class="">Get</p> + <div>(g)</div> + <div>pattern</div></div> + <div class="flex flex-col gap-2 "><p class="font-mono">Alias: g</p> + <p>Get the value of the given property. Can be used with most gameObject properties, component properties, and some statics including: Application, Time, Physics, Screen, AudioSettings, QualitySettings, Input, Physics2D.</p> + <p>Parameters:</p> + <div class="ml-5 font-mono"><p>pattern: String </p></div> + <p class="font-mono bg-[#222] p-3 mt-2 w-full">> g cube*.transform.position + <br>Cube1 [123] [1, 2, 3]<br>Cube2 [456] [1, 2, 3]<br>Cube3 [789] [1, 2, 3]</p> + <p></p> + <p></p></div></div><div class="bg-[#1d1d1d] p-3 shadow-lg flex flex-col gap-3 w-full text-left"><div class="flex gap-2 items-center font-mono text-lg"><button><img class="w-[15px]" src="../icons/arrow.png" alt=""></button> + <p class="">Set</p> + <div>(s)</div> + <div>property</div><div>value</div></div> + <div class="flex flex-col gap-2 "><p class="font-mono">Alias: s</p> + <p>Set the value of the given property. Can be used with most gameObject properties, component properties, and some statics including: Application, Time, Physics, Screen, AudioSettings, QualitySettings, Input, Physics2D.</p> + <p>Parameters:</p> + <div class="ml-5 font-mono"><p>property: String </p><p>value: Object </p></div> + <p class="font-mono bg-[#222] p-3 mt-2 w-full">> s cube*.transform.position [1, 2, 3] + <br>Set Cube1 [123] to [1, 2, 3]<br>Set Cube2 [456] to [1, 2, 3]<br>Set Cube3 [789] to [1, 2, 3]</p> + <p></p> + <p></p></div></div><h2 class="text-2xl text-orange-400 font-bold">Scene Commands</h2> + <div class="bg-[#1d1d1d] p-3 shadow-lg flex flex-col gap-3 w-full text-left"><div class="flex gap-2 items-center font-mono text-lg"><button><img class="w-[15px]" src="../icons/arrow.png" alt=""></button> + <p class="">Load</p> + <div>(ld)</div> + <div>sceneOrIndex</div><div>(additive)</div></div> + <div class="flex flex-col gap-2 "><p class="font-mono">Alias: ld</p> + <p>Load scene by name or build index. If additive is true, the scene is added to the current scene.</p> + <p>Parameters:</p> + <div class="ml-5 font-mono"><p>sceneOrIndex: String </p><p>additive: Boolean (Default: false)</p></div> + <p class="font-mono bg-[#222] p-3 mt-2 w-full">> ld SampleScene + <br>Loading scene SampleScene.</p> + <p></p> + <p></p></div></div><div class="bg-[#1d1d1d] p-3 shadow-lg flex flex-col gap-3 w-full text-left"><div class="flex gap-2 items-center font-mono text-lg"><button><img class="w-[15px]" src="../icons/arrow.png" alt=""></button> + <p class="">Unload</p> + <div>(ul)</div> + <div>sceneOrIndex</div></div> + <div class="flex flex-col gap-2 "><p class="font-mono">Alias: ul</p> + <p>Unload scene by name or build index.</p> + <p>Parameters:</p> + <div class="ml-5 font-mono"><p>sceneOrIndex: String </p></div> + <p class="font-mono bg-[#222] p-3 mt-2 w-full">> ul SampleScene + <br>Unloading scene SampleScene.</p> + <p></p> + <p></p></div></div><h2 class="text-2xl text-orange-400 font-bold">GameObject Commands</h2> + <div class="bg-[#1d1d1d] p-3 shadow-lg flex flex-col gap-3 w-full text-left"><div class="flex gap-2 items-center font-mono text-lg"><button><img class="w-[15px]" src="../icons/arrow.png" alt=""></button> + <p class="">AddComponent</p> + <div>(ac)</div> + <div>name</div><div>component</div></div> + <div class="flex flex-col gap-2 "><p class="font-mono">Alias: ac</p> + <p>Add the component to all gameObjects with the given name.</p> + <p>Parameters:</p> + <div class="ml-5 font-mono"><p>name: String </p><p>component: String </p></div> + <p class="font-mono bg-[#222] p-3 mt-2 w-full">> ac cube* Rigidbody + <br>Added Rigidbody to Cube1 [123]<br>Added Rigidbody to Cube2 [456]<br>Added Rigidbody to Cube3 [789]</p> + <p></p> + <p></p></div></div><div class="bg-[#1d1d1d] p-3 shadow-lg flex flex-col gap-3 w-full text-left"><div class="flex gap-2 items-center font-mono text-lg"><button><img class="w-[15px]" src="../icons/arrow.png" alt=""></button> + <p class="">Destroy</p> + <div>(x)</div> + <div>name</div></div> + <div class="flex flex-col gap-2 "><p class="font-mono">Alias: x</p> + <p>Destroy all game objects with the given name.</p> + <p>Parameters:</p> + <div class="ml-5 font-mono"><p>name: String </p></div> + <p class="font-mono bg-[#222] p-3 mt-2 w-full">> x cube* + <br>Destroyed Cube1 [123]<br>Destroyed Cube2 [456]<br>Destroyed Cube3 [789]</p> + <p></p> + <p></p></div></div><div class="bg-[#1d1d1d] p-3 shadow-lg flex flex-col gap-3 w-full text-left"><div class="flex gap-2 items-center font-mono text-lg"><button><img class="w-[15px]" src="../icons/arrow.png" alt=""></button> + <p class="">Disable</p> + <div>(d)</div> + <div>name</div></div> + <div class="flex flex-col gap-2 "><p class="font-mono">Alias: d</p> + <p>Disable the given gameObjects.</p> + <p>Parameters:</p> + <div class="ml-5 font-mono"><p>name: String </p></div> + <p class="font-mono bg-[#222] p-3 mt-2 w-full">> d cube* + <br>Disabled Cube1 [123]<br>Disabled Cube2 [456]<br>Disabled Cube3 [789]</p> + <p></p> + <p></p></div></div><div class="bg-[#1d1d1d] p-3 shadow-lg flex flex-col gap-3 w-full text-left"><div class="flex gap-2 items-center font-mono text-lg"><button><img class="w-[15px]" src="../icons/arrow.png" alt=""></button> + <p class="">Enable</p> + <div>(e)</div> + <div>name</div></div> + <div class="flex flex-col gap-2 "><p class="font-mono">Alias: e</p> + <p>Enable the given gameObjects.</p> + <p>Parameters:</p> + <div class="ml-5 font-mono"><p>name: String </p></div> + <p class="font-mono bg-[#222] p-3 mt-2 w-full">> e cube* + <br>Enabled Cube1 [123]<br>Enabled Cube2 [456]<br>Enabled Cube3 [789]</p> + <p></p> + <p></p></div></div><div class="bg-[#1d1d1d] p-3 shadow-lg flex flex-col gap-3 w-full text-left"><div class="flex gap-2 items-center font-mono text-lg"><button><img class="w-[15px]" src="../icons/arrow.png" alt=""></button> + <p class="">GetComponents</p> + <div>(comp)</div> + <div>name</div></div> + <div class="flex flex-col gap-2 "><p class="font-mono">Alias: comp</p> + <p>Get the components of the given gameObjects.</p> + <p>Parameters:</p> + <div class="ml-5 font-mono"><p>name: String </p></div> + <p class="font-mono bg-[#222] p-3 mt-2 w-full">> comp cube1 + <br>Cube1 [123] Components:<br> Transform<br> MeshFilter<br> MeshRenderer</p> + <p></p> + <p></p></div></div><div class="bg-[#1d1d1d] p-3 shadow-lg flex flex-col gap-3 w-full text-left"><div class="flex gap-2 items-center font-mono text-lg"><button><img class="w-[15px]" src="../icons/arrow.png" alt=""></button> + <p class="">Instantiate</p> + <div>(i)</div> + <div>prefabName</div><div>(position)</div><div>(rotation)</div><div>(parent)</div></div> + <div class="flex flex-col gap-2 "><p class="font-mono">Alias: i</p> + <p>Instantiate a prefab by name with optional position, rotation, and parent transform.</p> + <p>Parameters:</p> + <div class="ml-5 font-mono"><p>prefabName: String </p><p>position: Vector3 (Default: [0,0,0])</p><p>rotation: Quaternion (Default: [0,0,0])</p><p>parent: Transform (Default: null)</p></div> + <p class="font-mono bg-[#222] p-3 mt-2 w-full">> i SamplePrefab [0, 1, 0] [0, 45, 0] cube.transform + <br>Instantiated SamplePrefab(Clone) [123].</p> + <p></p> + <p></p></div></div><div class="bg-[#1d1d1d] p-3 shadow-lg flex flex-col gap-3 w-full text-left"><div class="flex gap-2 items-center font-mono text-lg"><button><img class="w-[15px]" src="../icons/arrow.png" alt=""></button> + <p class="">List</p> + <div>(ls)</div> + <div>(name)</div></div> + <div class="flex flex-col gap-2 "><p class="font-mono">Alias: ls</p> + <p>List all game objects with the given name.</p> + <p>Parameters:</p> + <div class="ml-5 font-mono"><p>name: String (Default: *)</p></div> + <p class="font-mono bg-[#222] p-3 mt-2 w-full">> ls cube* + <br>Cube1 [123]<br>Cube2 [456]<br>Cube3 [789]</p> + <p></p> + <p></p></div></div><div class="bg-[#1d1d1d] p-3 shadow-lg flex flex-col gap-3 w-full text-left"><div class="flex gap-2 items-center font-mono text-lg"><button><img class="w-[15px]" src="../icons/arrow.png" alt=""></button> + <p class="">LookAt</p> + <div>(lk)</div> + <div>name</div><div>(target)</div><div>(worldUp)</div></div> + <div class="flex flex-col gap-2 "><p class="font-mono">Alias: lk</p> + <p>Look at the given target.</p> + <p>Parameters:</p> + <div class="ml-5 font-mono"><p>name: String </p><p>target: Vector3 (Default: [0,0,0])</p><p>worldUp: Vector3 (Default: [0,0,0])</p></div> + <p class="font-mono bg-[#222] p-3 mt-2 w-full">> lk cube* player1.transform.position + <br>Rotated Cube1 [123] to [0, 1, 0]<br>Rotated Cube2 [456] to [0, 1, 0]<br>Rotated Cube3 [789] to [0, 1, 0]</p> + <p></p> + <p></p></div></div><div class="bg-[#1d1d1d] p-3 shadow-lg flex flex-col gap-3 w-full text-left"><div class="flex gap-2 items-center font-mono text-lg"><button><img class="w-[15px]" src="../icons/arrow.png" alt=""></button> + <p class="">Move</p> + <div>(mv)</div> + <div>name</div><div>(position)</div><div>(local)</div></div> + <div class="flex flex-col gap-2 "><p class="font-mono">Alias: mv</p> + <p>Move all game objects with the given name to the given position.</p> + <p>Parameters:</p> + <div class="ml-5 font-mono"><p>name: String </p><p>position: Vector3 (Default: [0,0,0])</p><p>local: Boolean (Default: false)</p></div> + <p class="font-mono bg-[#222] p-3 mt-2 w-full">> mv cube* [0, 1, 0] + <br>Moved Cube1 [123] to [0, 1, 0]<br>Moved Cube2 [456] to [0, 1, 0]<br>Moved Cube3 [789] to [0, 1, 0]</p> + <p></p> + <p></p></div></div><div class="bg-[#1d1d1d] p-3 shadow-lg flex flex-col gap-3 w-full text-left"><div class="flex gap-2 items-center font-mono text-lg"><button><img class="w-[15px]" src="../icons/arrow.png" alt=""></button> + <p class="">RemoveComponent</p> + <div>(rc)</div> + <div>name</div><div>component</div></div> + <div class="flex flex-col gap-2 "><p class="font-mono">Alias: rc</p> + <p>Remove the component from all gameObjects with the given name.</p> + <p>Parameters:</p> + <div class="ml-5 font-mono"><p>name: String </p><p>component: String </p></div> + <p class="font-mono bg-[#222] p-3 mt-2 w-full">> rc cube* Rigidbody + <br>Removed Rigidbody from Cube1 [123]<br>Removed Rigidbody from Cube2 [456]<br>Removed Rigidbody from Cube3 [789]</p> + <p></p> + <p></p></div></div><div class="bg-[#1d1d1d] p-3 shadow-lg flex flex-col gap-3 w-full text-left"><div class="flex gap-2 items-center font-mono text-lg"><button><img class="w-[15px]" src="../icons/arrow.png" alt=""></button> + <p class="">Rotate</p> + <div>(rt)</div> + <div>name</div><div>(rotation)</div><div>(local)</div></div> + <div class="flex flex-col gap-2 "><p class="font-mono">Alias: rt</p> + <p>Rotate all game objects with the given name to the given rotation.</p> + <p>Parameters:</p> + <div class="ml-5 font-mono"><p>name: String </p><p>rotation: Quaternion (Default: [0,0,0])</p><p>local: Boolean (Default: false)</p></div> + <p class="font-mono bg-[#222] p-3 mt-2 w-full">> rt cube* [0, 45, 0] + <br>Rotated Cube1 [123] to [0, 45, 0]<br>Rotated Cube2 [456] to [0, 45, 0]<br>Rotated Cube3 [789] to [0, 45, 0]</p> + <p></p> + <p></p></div></div><div class="bg-[#1d1d1d] p-3 shadow-lg flex flex-col gap-3 w-full text-left"><div class="flex gap-2 items-center font-mono text-lg"><button><img class="w-[15px]" src="../icons/arrow.png" alt=""></button> + <p class="">Scale</p> + <div>(sc)</div> + <div>name</div><div>(scale)</div></div> + <div class="flex flex-col gap-2 "><p class="font-mono">Alias: sc</p> + <p>Scale all game objects with the given name to the given scale.</p> + <p>Parameters:</p> + <div class="ml-5 font-mono"><p>name: String </p><p>scale: Vector3 (Default: [0,0,0])</p></div> + <p class="font-mono bg-[#222] p-3 mt-2 w-full">> sc cube* [2, 2, 2] + <br>Scaled Cube1 [123] to [2, 2, 2]<br>Scaled Cube2 [456] to [2, 2, 2]<br>Scaled Cube3 [789] to [2, 2, 2]</p> + <p></p> + <p></p></div></div><div class="bg-[#1d1d1d] p-3 shadow-lg flex flex-col gap-3 w-full text-left"><div class="flex gap-2 items-center font-mono text-lg"><button><img class="w-[15px]" src="../icons/arrow.png" alt=""></button> + <p class="">SendMessage</p> + <div>(sm)</div> + <div>name</div><div>method</div></div> + <div class="flex flex-col gap-2 "><p class="font-mono">Alias: sm</p> + <p>Call a method on all gameObjects with the given name using SendMessage.</p> + <p>Parameters:</p> + <div class="ml-5 font-mono"><p>name: String </p><p>method: String </p></div> + <p class="font-mono bg-[#222] p-3 mt-2 w-full">> sm cube* OnHit + <br>Sent message OnHit to Cube1 [123]<br>Sent message OnHit to Cube2 [456]<br>Sent message OnHit to Cube3 [789]</p> + <p></p> + <p></p></div></div></div></div></div> +</div> + <div class="h-[200px] flex flex-col"><p class="text-gray-400 m-10">© 2023 Virtual Maker Corporation</p></div></div></div> + + + + </div> + </body> +</html> diff --git a/Assets/Proxima/Documentation/docs/console_built_in.html.meta b/Assets/Proxima/Documentation/docs/console_built_in.html.meta new file mode 100644 index 0000000..07d365b --- /dev/null +++ b/Assets/Proxima/Documentation/docs/console_built_in.html.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d956d92be1b02d44c8d87fa255b3e689 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/docs/console_custom.html b/Assets/Proxima/Documentation/docs/console_custom.html new file mode 100644 index 0000000..006979d --- /dev/null +++ b/Assets/Proxima/Documentation/docs/console_custom.html @@ -0,0 +1,169 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8" /> + <title>Proxima Inspector</title> + <link rel="icon" href="../icons/favicon.ico" /> + <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1"> + <meta property="og:type" content="website"> + <meta name="description" property="og:description" content="Proxima Inspector lets you connect to your live game from a web browser to inspect and edit any property. Just like the Unity editor!"> + <meta name="image" property="og:image" content="../images/proxima-1200x630.png"> + <meta http-equiv="content-security-policy" content=""> + <link href="../_app/immutable/assets/_layout-1f0a7e97.css" rel="stylesheet"> + <link href="../_app/immutable/assets/_layout-6847360b.css" rel="stylesheet"> + + + + + + + + + + + + </head> + <body> + <div> + + +<div class="flex flex-col items-center text-gray-300 w-full min-h-screen bg-[#222]"><div class="flex w-full justify-center items-start bg-[#111] text-white fixed z-20"><div class="flex grow justify-between items-center max-w-[1600px] p-4"><a href="https://www.unityproxima.com"><img src="../images/proxima_logo.png" class="w-[150px]" alt="Logo"></a> + <button class="lg:hidden"><img class="w-10" src="../icons/menu.png" alt="Menu"></button> + <div class="flex gap-10 items-center max-lg:hidden"> +<a href="https://assetstore.unity.com/publishers/72095?aid=1101lqSYn" class="text-xl font-logo" referrerpolicy="origin" target="_blank" rel="external">Store</a> + +<a href="https://app.unityproxima.com/connection" class="text-xl font-logo" referrerpolicy="origin" target="_blank" rel="external">Demo</a> + + <a class="text-xl font-logo" href="../docs.html">Docs</a> + +<a href="https://discord.gg/VM9cWJ9rjH" class="" referrerpolicy="origin" target="_blank" rel="external"><img width="100px" class="mt-1" src="../icons/discord.png" alt=""></a></div></div> + </div> + + <div class="pt-[83px] w-full h-full flex flex-col items-center"><div class="w-full flex flex-col items-start min-h-screen max-w-[1600px] px-4"><button class="text-white font-body pt-5 lg:hidden">Go to page ></button> + <div class="flex w-full min-h-full relative"><div class="h-full fixed border-r-orange-400 bg-[#222] border-r-2 max-lg:hidden"><div class="flex pt-10 flex-col w-[300px] gap-2 border-[#21a6f0] min-h-0 h-full overflow-auto"><b class="text-orange-400">Getting Started</b> + <a href="../docs.html" class="svelte-yue6wq">Installation</a> + <a href="../docs/features.html" class="svelte-yue6wq">Feature Overview</a> + + <b class="text-orange-400 mt-5">Connection</b> + <a href="../docs/supported_platforms.html" class="svelte-yue6wq">Supported Platforms</a> + <a href="../docs/connect.html" class="svelte-yue6wq">Connect to Your Game</a> + <a href="../docs/security.html" class="svelte-yue6wq">Security Considerations</a> + <a href="../docs/all_config.html" class="svelte-yue6wq">All Configuration Options</a> + + <b class="text-orange-400 mt-5">Inspector</b> + <a href="../docs/inspector.html" class="svelte-yue6wq">GameObject Inspector</a> + <a href="../docs/buttons.html" class="svelte-yue6wq">Adding Buttons</a> + <a href="../docs/faq.html" class="svelte-yue6wq">Frequently Asked Questions</a> + + <b class="text-orange-400 mt-5">Logs</b> + <a href="../docs/logs.html" class="svelte-yue6wq">Log Viewer</a> + <a href="../docs/viewing_logs_offline.html" class="svelte-yue6wq">Viewing Logs Offline</a> + + <b class="text-orange-400 mt-5">Console</b> + <a href="../docs/console.html" class="svelte-yue6wq">Console Window</a> + <a href="../docs/console_built_in.html" class="svelte-yue6wq">Built-in Commands</a> + <a href="../docs/console_custom.html" class="svelte-yue6wq">Custom Commands</a> + + <b class="text-orange-400 mt-5">Extras</b> + <a href="../docs/deeplinks.html" class="svelte-yue6wq">Deep Links</a> + + <div class="h-[200px] shrink-0"></div></div></div> + + + <div class="flex flex-col w-full lg:pl-10 py-10 lg:ml-[300px]"><div class="doc flex flex-col gap-5 svelte-yue6wq"><h1>Custom Commands</h1> + +<h2 class="text-zing-100 text-xl mt-5">Simple Example: Get the position of a gameObject by name.</h2> + +<p>Define a new command GetPosition to take the name of the gameObject as an argument and return its position.</p> + +<div class="bg-[#1d1d1d] p-3 text-zinc-300 font-mono"><span class="text-blue-300">public static class</span> <span class="text-green-400">MyCommands</span><br> + {<br> + [<span class="text-green-400">ProximaCommand</span>(<span class="text-orange-400">"My"</span>, <span class="text-orange-400">"gp"</span>)]<br> + <span class="text-blue-300"> public static</span> <span class="text-green-400">Vector3</span> <span class="text-yellow-200">GetPosition</span>(<span class="text-blue-300">string</span> name)<br> + {<br> + <span class="text-blue-300"> var</span> go = <span class="text-green-400">GameObject</span>.<span class="text-yellow-200">Find</span>(name);<br> + <span class="text-pink-500"> if</span> (go == null) <span class="text-pink-500">throw new</span> <span class="text-green-400">Exception</span>(<span class="text-orange-400">"GameObject not found."</span>);<br> + <span class="text-pink-500"> return</span> go.transform.position;<br> + }<br> + }<br></div> + +<p>The first argument to ProximaCommand is the category which will appear when the user types "?". + The second argument is an alias, or shortcut you can use instead of the full command name.</p> + +<p>In order for Proxima to find your command, you need to register its class. For example, you can do this in Awake() of one of your components:</p> + +<div class="bg-[#1d1d1d] p-3 text-zinc-300 font-mono"><span class="text-blue-300">void</span> <span class="text-yellow-200">Awake</span>()<br> + {<br> + <span class="text-green-400"> ProximaInspector</span>.<span class="text-yellow-200">RegisterCommands</span><<span class="text-green-400">MyComands</span>>();<br> + }<br></div> + +<p>Now you can invoke your command in the Console by typing:</p> + +<div class="bg-[#1d1d1d] p-3 text-zinc-300 font-mono">> GetPosition "Main Camera"<br> + [0,1,-10] +</div> +<p>or</p> +<div class="bg-[#1d1d1d] p-3 text-zinc-300 font-mono">> gp "Main Camera"<br> + [0,1,-10] +</div> + +<h2 class="text-zinc-100 text-xl mt-5">Pattern matching gameObjects</h2> +<p>Often, scenes have multiple gameObjects with the same name. Sometimes, the user doesn't know or doesn't want to type the full name. + Instead of <b>GameObject.Find</b>, you can use <b>ProximaCommandHelpers.FindGameObject</b> to pattern match the user input. +</p> +<div class="bg-[#1d1d1d] p-3 text-zinc-300 font-mono">[<span class="text-green-400">ProximaCommand</span>(<span class="text-orange-400">"My"</span>, <span class="text-orange-400">"gp"</span>)]<br> + <span class="text-blue-300">public static string </span><span class="text-yellow-200">GetPosition</span>(<span class="text-blue-300">string</span> name)<br> + {<br> + <span class="text-blue-300"> var</span> gameObjects = <span class="text-green-400">ProximaCommandHelpers</span>.<span class="text-yellow-200">FindGameObjects</span>(name);<br> + <span class="text-pink-500"> if</span> (gameObjects.Count == 0)<br> + <span> {</span><br> + <span class="text-pink-500"> throw new Exception</span>(<span class="text-orange-400">$"No game object found with name '{<span class="text-white">name</span>}'"</span>);<br> + <span> }</span><br> + <br> + <span class="text-blue-300"> var </span>sb = <span class="text-blue-300">new</span> <span class="text-green-400">StringBuilder</span>();<br> + <span class="text-pink-500"> foreach</span> (<span class="text-blue-300">var</span> go <span class="text-blue-300">in</span> gameObjects)<br> + <span> {</span><br> + <span> </span>sb.<span class="text-yellow-200">AppendLine</span>(go.name + <span class="text-orange-400">" ["</span> + go.<span class="text-yellow-200">GetInstanceID</span>() + <span class="text-orange-400">"] "</span> +<br> + <span class="text-green-400"> ProximaSerialization</span>.<span class="text-yellow-200">Serialize</span>(go.transform.position, true));<br> + <span> }</span><br><br> + <span class="text-pink-500"> return </span>sb.<span class="text-yellow-200">ToString</span>();<br> + }<br></div> + +<div class="bg-[#1d1d1d] p-3 text-zinc-300 font-mono">> gp *camera<br> + Main Camera [23162] [0, 1, -10] +</div> + + +<h2 class="text-zinc-100 text-xl mt-5">Command Parameters</h2> +<p>Add parameters to your command by adding arguments to your method.</p> + +<div class="bg-[#1d1d1d] p-3 text-zinc-300 font-mono">[<span class="text-green-400">ProximaCommand</span>(<span class="text-orange-400">"My"</span>, <span class="text-orange-400">"addv"</span>)]<br> + <span class="text-blue-300">public static</span> <span class="text-green-400">Vector3</span> <span class="text-yellow-200">AddVectors</span>(<span class="text-green-400">Vector3</span> lhs, <span class="text-green-400">Vector3</span> rhs)<br> + {<br> + <span class="text-pink-500"> return</span> lhs + rhs;<br> + }<br></div> + +<div class="bg-[#1d1d1d] p-3 text-zinc-300 font-mono">> addv [1, 2, 3] [4, 5, 6]<br> + [5,7,9] +</div> + +<h2 class="text-zinc-100 text-xl mt-5">Pattern matching parameters</h2> +<p>Instead of explicitly taking a <b>Vector3</b> as an argument, you can use the <b>PropertyOrValue</b> wrapper to accept either a Vector3 or a property.</p> + +<div class="bg-[#1d1d1d] p-3 text-zinc-300 font-mono">[<span class="text-green-400">ProximaCommand</span>(<span class="text-orange-400">"My"</span>, <span class="text-orange-400">"addv"</span>)]<br> + <span class="text-blue-300">public static</span> <span class="text-green-400">Vector3</span> <span class="text-yellow-200">AddVectors</span>(<span class="text-green-400">PropertyOrValue</span><<span class="text-green-400">Vector3</span>> lhs, <span class="text-green-400">PropertyOrValue</span><<span class="text-green-400">Vector3</span>> rhs)<br> + {<br> + <span class="text-pink-500"> return</span> lhs.Get() + rhs.Get();<br> + }<br></div> + +<div class="bg-[#1d1d1d] p-3 text-zinc-300 font-mono">> addv *camera.transform.position panel.transform.position<br> + [474.5,1,-10] +</div></div></div></div> +</div> + <div class="h-[200px] flex flex-col"><p class="text-gray-400 m-10">© 2023 Virtual Maker Corporation</p></div></div></div> + + + + </div> + </body> +</html> diff --git a/Assets/Proxima/Documentation/docs/console_custom.html.meta b/Assets/Proxima/Documentation/docs/console_custom.html.meta new file mode 100644 index 0000000..b2b356d --- /dev/null +++ b/Assets/Proxima/Documentation/docs/console_custom.html.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 83c38fc2f0b168e489bb5118333ee97c +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/docs/deeplinks.html b/Assets/Proxima/Documentation/docs/deeplinks.html new file mode 100644 index 0000000..a2e44c9 --- /dev/null +++ b/Assets/Proxima/Documentation/docs/deeplinks.html @@ -0,0 +1,116 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8" /> + <title>Proxima Inspector</title> + <link rel="icon" href="../icons/favicon.ico" /> + <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1"> + <meta property="og:type" content="website"> + <meta name="description" property="og:description" content="Proxima Inspector lets you connect to your live game from a web browser to inspect and edit any property. Just like the Unity editor!"> + <meta name="image" property="og:image" content="../images/proxima-1200x630.png"> + <meta http-equiv="content-security-policy" content=""> + <link href="../_app/immutable/assets/_layout-1f0a7e97.css" rel="stylesheet"> + <link href="../_app/immutable/assets/_layout-6847360b.css" rel="stylesheet"> + + + + + + + + + + + + </head> + <body> + <div> + + +<div class="flex flex-col items-center text-gray-300 w-full min-h-screen bg-[#222]"><div class="flex w-full justify-center items-start bg-[#111] text-white fixed z-20"><div class="flex grow justify-between items-center max-w-[1600px] p-4"><a href="https://www.unityproxima.com"><img src="../images/proxima_logo.png" class="w-[150px]" alt="Logo"></a> + <button class="lg:hidden"><img class="w-10" src="../icons/menu.png" alt="Menu"></button> + <div class="flex gap-10 items-center max-lg:hidden"> +<a href="https://assetstore.unity.com/publishers/72095?aid=1101lqSYn" class="text-xl font-logo" referrerpolicy="origin" target="_blank" rel="external">Store</a> + +<a href="https://app.unityproxima.com/connection" class="text-xl font-logo" referrerpolicy="origin" target="_blank" rel="external">Demo</a> + + <a class="text-xl font-logo" href="../docs.html">Docs</a> + +<a href="https://discord.gg/VM9cWJ9rjH" class="" referrerpolicy="origin" target="_blank" rel="external"><img width="100px" class="mt-1" src="../icons/discord.png" alt=""></a></div></div> + </div> + + <div class="pt-[83px] w-full h-full flex flex-col items-center"><div class="w-full flex flex-col items-start min-h-screen max-w-[1600px] px-4"><button class="text-white font-body pt-5 lg:hidden">Go to page ></button> + <div class="flex w-full min-h-full relative"><div class="h-full fixed border-r-orange-400 bg-[#222] border-r-2 max-lg:hidden"><div class="flex pt-10 flex-col w-[300px] gap-2 border-[#21a6f0] min-h-0 h-full overflow-auto"><b class="text-orange-400">Getting Started</b> + <a href="../docs.html" class="svelte-yue6wq">Installation</a> + <a href="../docs/features.html" class="svelte-yue6wq">Feature Overview</a> + + <b class="text-orange-400 mt-5">Connection</b> + <a href="../docs/supported_platforms.html" class="svelte-yue6wq">Supported Platforms</a> + <a href="../docs/connect.html" class="svelte-yue6wq">Connect to Your Game</a> + <a href="../docs/security.html" class="svelte-yue6wq">Security Considerations</a> + <a href="../docs/all_config.html" class="svelte-yue6wq">All Configuration Options</a> + + <b class="text-orange-400 mt-5">Inspector</b> + <a href="../docs/inspector.html" class="svelte-yue6wq">GameObject Inspector</a> + <a href="../docs/buttons.html" class="svelte-yue6wq">Adding Buttons</a> + <a href="../docs/faq.html" class="svelte-yue6wq">Frequently Asked Questions</a> + + <b class="text-orange-400 mt-5">Logs</b> + <a href="../docs/logs.html" class="svelte-yue6wq">Log Viewer</a> + <a href="../docs/viewing_logs_offline.html" class="svelte-yue6wq">Viewing Logs Offline</a> + + <b class="text-orange-400 mt-5">Console</b> + <a href="../docs/console.html" class="svelte-yue6wq">Console Window</a> + <a href="../docs/console_built_in.html" class="svelte-yue6wq">Built-in Commands</a> + <a href="../docs/console_custom.html" class="svelte-yue6wq">Custom Commands</a> + + <b class="text-orange-400 mt-5">Extras</b> + <a href="../docs/deeplinks.html" class="svelte-yue6wq">Deep Links</a> + + <div class="h-[200px] shrink-0"></div></div></div> + + + <div class="flex flex-col w-full lg:pl-10 py-10 lg:ml-[300px]"><div class="doc flex flex-col gap-5 svelte-yue6wq"><h1>Deep Links</h1> + +<p>You can use URL query parameters to automatically log in, navigate to a page, search for gameObject, and even run console commands.</p> + +<h2>Examples</h2> +<div class="bg-[#1d1d1d] p-3 text-zinc-300 font-mono"><span class="text-gray-400">// Automatically log in, navigate to the inspector page, and search for "player"</span><br> + > http://127.0.0.1:7759?pass=1234&page=inspector&s=player + <br><br> + <span class="text-gray-400">// Automatically log in, navigate to the inspector page, and select the gameObject with the name "player"</span><br> + > http://127.0.0.1:7759?pass=1234&page=inspector&go=player + <br><br> + <span class="text-gray-400">// Automatically log in, navigate to the console page, and run "ls player"</span><br> + > http://127.0.0.1:7759?pass=1234&page=console&run=ls%20player +</div> + +<h2>General Parameters</h2> +<table><tr><td class="w-[200px]"><b>Parameter</b></td> + <td><b>Description</b></td></tr> + <tr><td class="w-[200px]">pass</td> + <td>Automatically connects with the given password.</td></tr> + <tr><td class="w-[200px]">page</td> + <td>Navigates to the given page. Options are "inspector", "logs", and "console"</td></tr></table> + +<h2>Inspector Parameters</h2> +<table><tr><td class="w-[200px]"><b>Parameter</b></td> + <td><b>Description</b></td></tr> + <tr><td class="w-[200px]">s</td> + <td>Sets the gameObject search filter</td></tr> + <tr><td class="w-[200px]">go</td> + <td>Automatically selects the gameObject with the given name</td></tr></table> + +<h2>Console Parameters</h2> +<table><tr><td class="w-[200px]"><b>Parameter</b></td> + <td><b>Description</b></td></tr> + <tr><td class="w-[200px]">run</td> + <td>Runs the given console command</td></tr></table></div></div></div> +</div> + <div class="h-[200px] flex flex-col"><p class="text-gray-400 m-10">© 2023 Virtual Maker Corporation</p></div></div></div> + + + + </div> + </body> +</html> diff --git a/Assets/Proxima/Documentation/docs/deeplinks.html.meta b/Assets/Proxima/Documentation/docs/deeplinks.html.meta new file mode 100644 index 0000000..6c4a313 --- /dev/null +++ b/Assets/Proxima/Documentation/docs/deeplinks.html.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 844576d597f144ae0a2184f9ef68b223 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/docs/device-config.png b/Assets/Proxima/Documentation/docs/device-config.png new file mode 100644 index 0000000..eedf961 Binary files /dev/null and b/Assets/Proxima/Documentation/docs/device-config.png differ diff --git a/Assets/Proxima/Documentation/docs/device-config.png.meta b/Assets/Proxima/Documentation/docs/device-config.png.meta new file mode 100644 index 0000000..0174d94 --- /dev/null +++ b/Assets/Proxima/Documentation/docs/device-config.png.meta @@ -0,0 +1,98 @@ +fileFormatVersion: 2 +guid: 3bdee37772784b44798feaccd4e13fcd +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + 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 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/docs/faq.html b/Assets/Proxima/Documentation/docs/faq.html new file mode 100644 index 0000000..908021d --- /dev/null +++ b/Assets/Proxima/Documentation/docs/faq.html @@ -0,0 +1,134 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8" /> + <title>Proxima Inspector</title> + <link rel="icon" href="../icons/favicon.ico" /> + <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1"> + <meta property="og:type" content="website"> + <meta name="description" property="og:description" content="Proxima Inspector lets you connect to your live game from a web browser to inspect and edit any property. Just like the Unity editor!"> + <meta name="image" property="og:image" content="../images/proxima-1200x630.png"> + <meta http-equiv="content-security-policy" content=""> + <link href="../_app/immutable/assets/_layout-1f0a7e97.css" rel="stylesheet"> + <link href="../_app/immutable/assets/_layout-6847360b.css" rel="stylesheet"> + + + + + + + + + + + + </head> + <body> + <div> + + +<div class="flex flex-col items-center text-gray-300 w-full min-h-screen bg-[#222]"><div class="flex w-full justify-center items-start bg-[#111] text-white fixed z-20"><div class="flex grow justify-between items-center max-w-[1600px] p-4"><a href="https://www.unityproxima.com"><img src="../images/proxima_logo.png" class="w-[150px]" alt="Logo"></a> + <button class="lg:hidden"><img class="w-10" src="../icons/menu.png" alt="Menu"></button> + <div class="flex gap-10 items-center max-lg:hidden"> +<a href="https://assetstore.unity.com/publishers/72095?aid=1101lqSYn" class="text-xl font-logo" referrerpolicy="origin" target="_blank" rel="external">Store</a> + +<a href="https://app.unityproxima.com/connection" class="text-xl font-logo" referrerpolicy="origin" target="_blank" rel="external">Demo</a> + + <a class="text-xl font-logo" href="../docs.html">Docs</a> + +<a href="https://discord.gg/VM9cWJ9rjH" class="" referrerpolicy="origin" target="_blank" rel="external"><img width="100px" class="mt-1" src="../icons/discord.png" alt=""></a></div></div> + </div> + + <div class="pt-[83px] w-full h-full flex flex-col items-center"><div class="w-full flex flex-col items-start min-h-screen max-w-[1600px] px-4"><button class="text-white font-body pt-5 lg:hidden">Go to page ></button> + <div class="flex w-full min-h-full relative"><div class="h-full fixed border-r-orange-400 bg-[#222] border-r-2 max-lg:hidden"><div class="flex pt-10 flex-col w-[300px] gap-2 border-[#21a6f0] min-h-0 h-full overflow-auto"><b class="text-orange-400">Getting Started</b> + <a href="../docs.html" class="svelte-yue6wq">Installation</a> + <a href="../docs/features.html" class="svelte-yue6wq">Feature Overview</a> + + <b class="text-orange-400 mt-5">Connection</b> + <a href="../docs/supported_platforms.html" class="svelte-yue6wq">Supported Platforms</a> + <a href="../docs/connect.html" class="svelte-yue6wq">Connect to Your Game</a> + <a href="../docs/security.html" class="svelte-yue6wq">Security Considerations</a> + <a href="../docs/all_config.html" class="svelte-yue6wq">All Configuration Options</a> + + <b class="text-orange-400 mt-5">Inspector</b> + <a href="../docs/inspector.html" class="svelte-yue6wq">GameObject Inspector</a> + <a href="../docs/buttons.html" class="svelte-yue6wq">Adding Buttons</a> + <a href="../docs/faq.html" class="svelte-yue6wq">Frequently Asked Questions</a> + + <b class="text-orange-400 mt-5">Logs</b> + <a href="../docs/logs.html" class="svelte-yue6wq">Log Viewer</a> + <a href="../docs/viewing_logs_offline.html" class="svelte-yue6wq">Viewing Logs Offline</a> + + <b class="text-orange-400 mt-5">Console</b> + <a href="../docs/console.html" class="svelte-yue6wq">Console Window</a> + <a href="../docs/console_built_in.html" class="svelte-yue6wq">Built-in Commands</a> + <a href="../docs/console_custom.html" class="svelte-yue6wq">Custom Commands</a> + + <b class="text-orange-400 mt-5">Extras</b> + <a href="../docs/deeplinks.html" class="svelte-yue6wq">Deep Links</a> + + <div class="h-[200px] shrink-0"></div></div></div> + + + <div class="flex flex-col w-full lg:pl-10 py-10 lg:ml-[300px]"><div class="doc flex flex-col gap-5 svelte-yue6wq"><h1>Proxima Inspector FAQ</h1> + +<div class="bg-[#1d1d1d] p-3 shadow-lg flex gap-2 flex-col text-left"><button><div class="flex gap-2 items-center font-bold"><img class="w-[15px] mt-1" src="../icons/arrow.png" alt=""> + <div>Which property types does Proxima support?</div></div></button> + <div class=""><div slot="answer"><p>Proxima supports editing most types of properties:</p> + <div class="m-5"><div class="bg-gray-800 p-5 text-zinc-300"><div class="font-bold mb-3">Supported Property Types:</div> + <ul class="ml-5 list-disc"><li>All <a href="https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/built-in-types" target="_blank" rel="noreferrer">C# built-in value types</a>, except decimal.</li> + <li>string, Vector2, Vector2Int, Vector3, Vector3Int, Quaternion, Vector4, Rect, RectInt, Bounds, BoundsInt, Color, LayerMask</li> + <li>All enums and flags.</li> + <li>Any struct or class marked as [Serializable] (since Update 1.2).</li> + <li>View, but not edit, all Unity object references (GameObjects, Components, Assets, etc.)</li> + <li>Arrays and Lists of any of the above.</li></ul></div></div> + <p>If you think Proxima is missing an important type, please post your suggestion on the Discord Server.</p></div></div></div> + +<div class="bg-[#1d1d1d] p-3 shadow-lg flex gap-2 flex-col text-left"><button><div class="flex gap-2 items-center font-bold"><img class="w-[15px] mt-1" src="../icons/arrow.png" alt=""> + <div>Will Proxima Inspector affect my game performance?</div></div></button> + <div class=""><div class="flex flex-col gap-2" slot="answer"><p>Proxima Inspector is designed to have minimal impact on your game performance. It uses a WebSocket connection to send minimal changes to the browser, and will only performs work when the relevant browser page is open:</p> + <ul class="list-disc ml-5 flex flex-col gap-2"><li><b>Hierarchy Page</b>: To detect these updates, Proxima will scan up to 10 gameObjects per frame for changes. You can modify this number by changing "ProximaInspector.MaxGameObjectUpdatesPerFrame".</li> + <li><b>Inspector Page</b>: Proxima will scan one component on the selected gameObject per frame for property changes. You can adjust the frequency each component is scanned by adjusting ProximaInspector.MaxComponentUpdateFrequency.</li> + <li><b>Logs Page</b>: Proxima records log messages in a circular list so that you can see what happened in the recent past when you visit the Logs page. You can change the size of this list by editing the <b>Log Buffer Size</b> property on the inspector component.</li> + <li><b>Console Page</b>: No performance impact until a command is issued.</li></ul></div></div></div> + +<div class="bg-[#1d1d1d] p-3 shadow-lg flex gap-2 flex-col text-left"><button><div class="flex gap-2 items-center font-bold"><img class="w-[15px] mt-1" src="../icons/arrow.png" alt=""> + <div>Why are my root gameObjects out of order?</div></div></button> + <div class=""><p slot="answer">Unity does not preserve the order of gameObjects in the scene of a built game. Even assigning a sibling index to the transform component will have no effect. This is why you can't reorder root gameObjects. + </p></div></div> + +<div class="bg-[#1d1d1d] p-3 shadow-lg flex gap-2 flex-col text-left"><button><div class="flex gap-2 items-center font-bold"><img class="w-[15px] mt-1" src="../icons/arrow.png" alt=""> + <div>Why do some component properties appear differently than in the Editor?</div></div></button> + <div class=""><p slot="answer">Proxima searches for serialized fields on components to display them in the inspector. This is the same as Unity's default behavior for MonoBehaviours. + However, some components have custom editors which control their appearance in the Unity inspector. + All custom editor code is stripped out of a built game, and so Proxima cannot access this information. + </p></div></div> + +<div class="bg-[#1d1d1d] p-3 shadow-lg flex gap-2 flex-col text-left"><button><div class="flex gap-2 items-center font-bold"><img class="w-[15px] mt-1" src="../icons/arrow.png" alt=""> + <div>Why are some components missing properties?</div></div></button> + <div class=""><div slot="answer"><a target="_blank" href="https://docs.unity3d.com/Manual/ManagedCodeStripping.html" rel="noreferrer">Managed Code Stripping</a> + may be removing some fields or properties from a built game if they are not used by your game code. By default, this happens for built-in Unity component properties which are + configured in the editor, but not referenced in your code. You can control this setting under <div>"Project Settings > Player > Optimization > Managed Stripping Level"</div><br> + + <p>Proxima prevents code stripping for many Unity component properties like Transform's localPosition by explicitly referencing them + in <b>Proxima/Runtime/Generated/ProximaReflection.Generated.cs</b>. You can use one of the techniques described in the link above to prevent your components from being stripped.</p></div></div></div> + +<div class="bg-[#1d1d1d] p-3 shadow-lg flex gap-2 flex-col text-left"><button><div class="flex gap-2 items-center font-bold"><img class="w-[15px] mt-1" src="../icons/arrow.png" alt=""> + <div>Why are tags not a dropdown list?</div></div></button> + <div class=""><p slot="answer">Unity does not preserve the list of tags in a built game. You can assign a tag to any string. + </p></div></div> + +<div class="bg-[#1d1d1d] p-3 shadow-lg flex gap-2 flex-col text-left"><button><div class="flex gap-2 items-center font-bold"><img class="w-[15px] mt-1" src="../icons/arrow.png" alt=""> + <div>Why does Proxima stop updating when my game is not selected?</div></div></button> + <div class=""><p slot="answer">Proxima depends on Unity's update loop to detect gameObject and component updates. + When your game is not in focus, the update loop may be paused. You can configure this setting in Unity under: + "Project Settings > Player > Resolution and Presentation > Run In Background" + </p></div></div></div></div></div> +</div> + <div class="h-[200px] flex flex-col"><p class="text-gray-400 m-10">© 2023 Virtual Maker Corporation</p></div></div></div> + + + + </div> + </body> +</html> diff --git a/Assets/Proxima/Documentation/docs/faq.html.meta b/Assets/Proxima/Documentation/docs/faq.html.meta new file mode 100644 index 0000000..c0cbc90 --- /dev/null +++ b/Assets/Proxima/Documentation/docs/faq.html.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a357ca48b25c5744f8a3e484b2d8cf16 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/docs/features.html b/Assets/Proxima/Documentation/docs/features.html new file mode 100644 index 0000000..cc03dae --- /dev/null +++ b/Assets/Proxima/Documentation/docs/features.html @@ -0,0 +1,92 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8" /> + <title>Proxima Inspector</title> + <link rel="icon" href="../icons/favicon.ico" /> + <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1"> + <meta property="og:type" content="website"> + <meta name="description" property="og:description" content="Proxima Inspector lets you connect to your live game from a web browser to inspect and edit any property. Just like the Unity editor!"> + <meta name="image" property="og:image" content="../images/proxima-1200x630.png"> + <meta http-equiv="content-security-policy" content=""> + <link href="../_app/immutable/assets/_layout-1f0a7e97.css" rel="stylesheet"> + <link href="../_app/immutable/assets/_layout-6847360b.css" rel="stylesheet"> + + + + + + + + + + + </head> + <body> + <div> + + +<div class="flex flex-col items-center text-gray-300 w-full min-h-screen bg-[#222]"><div class="flex w-full justify-center items-start bg-[#111] text-white fixed z-20"><div class="flex grow justify-between items-center max-w-[1600px] p-4"><a href="https://www.unityproxima.com"><img src="../images/proxima_logo.png" class="w-[150px]" alt="Logo"></a> + <button class="lg:hidden"><img class="w-10" src="../icons/menu.png" alt="Menu"></button> + <div class="flex gap-10 items-center max-lg:hidden"> +<a href="https://assetstore.unity.com/publishers/72095?aid=1101lqSYn" class="text-xl font-logo" referrerpolicy="origin" target="_blank" rel="external">Store</a> + +<a href="https://app.unityproxima.com/connection" class="text-xl font-logo" referrerpolicy="origin" target="_blank" rel="external">Demo</a> + + <a class="text-xl font-logo" href="../docs.html">Docs</a> + +<a href="https://discord.gg/VM9cWJ9rjH" class="" referrerpolicy="origin" target="_blank" rel="external"><img width="100px" class="mt-1" src="../icons/discord.png" alt=""></a></div></div> + </div> + + <div class="pt-[83px] w-full h-full flex flex-col items-center"><div class="w-full flex flex-col items-start min-h-screen max-w-[1600px] px-4"><button class="text-white font-body pt-5 lg:hidden">Go to page ></button> + <div class="flex w-full min-h-full relative"><div class="h-full fixed border-r-orange-400 bg-[#222] border-r-2 max-lg:hidden"><div class="flex pt-10 flex-col w-[300px] gap-2 border-[#21a6f0] min-h-0 h-full overflow-auto"><b class="text-orange-400">Getting Started</b> + <a href="../docs.html" class="svelte-yue6wq">Installation</a> + <a href="../docs/features.html" class="svelte-yue6wq">Feature Overview</a> + + <b class="text-orange-400 mt-5">Connection</b> + <a href="../docs/supported_platforms.html" class="svelte-yue6wq">Supported Platforms</a> + <a href="../docs/connect.html" class="svelte-yue6wq">Connect to Your Game</a> + <a href="../docs/security.html" class="svelte-yue6wq">Security Considerations</a> + <a href="../docs/all_config.html" class="svelte-yue6wq">All Configuration Options</a> + + <b class="text-orange-400 mt-5">Inspector</b> + <a href="../docs/inspector.html" class="svelte-yue6wq">GameObject Inspector</a> + <a href="../docs/buttons.html" class="svelte-yue6wq">Adding Buttons</a> + <a href="../docs/faq.html" class="svelte-yue6wq">Frequently Asked Questions</a> + + <b class="text-orange-400 mt-5">Logs</b> + <a href="../docs/logs.html" class="svelte-yue6wq">Log Viewer</a> + <a href="../docs/viewing_logs_offline.html" class="svelte-yue6wq">Viewing Logs Offline</a> + + <b class="text-orange-400 mt-5">Console</b> + <a href="../docs/console.html" class="svelte-yue6wq">Console Window</a> + <a href="../docs/console_built_in.html" class="svelte-yue6wq">Built-in Commands</a> + <a href="../docs/console_custom.html" class="svelte-yue6wq">Custom Commands</a> + + <b class="text-orange-400 mt-5">Extras</b> + <a href="../docs/deeplinks.html" class="svelte-yue6wq">Deep Links</a> + + <div class="h-[200px] shrink-0"></div></div></div> + + + <div class="flex flex-col w-full lg:pl-10 py-10 lg:ml-[300px]"><div class="doc flex flex-col gap-5 svelte-yue6wq"><h1>Feature Overview</h1> + +<h2>GameObject Inspector</h2> +<p>The <a href="../docs/inspector.html">GameObject Inspector</a> lets you view and edit any gameObject and component in your scene, just like the Unity inspector.</p> +<a href="../docs/inspector.html"><img src="../docs/inspector.png" class="w-full" alt="Proxima Inspector Page"></a> + +<h2>Logs</h2> +<p>The <a href="../docs/logs.html">Log Viewer</a> lets you see logs in real time or save logs for offline viewing.</p> +<a href="../docs/logs.html"><img src="../docs/logs.png" class="w-full" alt="Proxima Inspector Page"></a> + +<h2>Console</h2> +<p>The <a href="../docs/console.html">Console</a> is a powerful command line utility to remotely inspect and control your game.</p> +<a href="../docs/console.html"><img src="../docs/console.png" class="w-full" alt="Proxima Inspector Page"></a></div></div></div> +</div> + <div class="h-[200px] flex flex-col"><p class="text-gray-400 m-10">© 2023 Virtual Maker Corporation</p></div></div></div> + + + + </div> + </body> +</html> diff --git a/Assets/Proxima/Documentation/docs/features.html.meta b/Assets/Proxima/Documentation/docs/features.html.meta new file mode 100644 index 0000000..b473f3d --- /dev/null +++ b/Assets/Proxima/Documentation/docs/features.html.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d129a0acfa95e2a468333fb7f3138c50 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/docs/gameobjectsearch.png b/Assets/Proxima/Documentation/docs/gameobjectsearch.png new file mode 100644 index 0000000..52f37c3 Binary files /dev/null and b/Assets/Proxima/Documentation/docs/gameobjectsearch.png differ diff --git a/Assets/Proxima/Documentation/docs/gameobjectsearch.png.meta b/Assets/Proxima/Documentation/docs/gameobjectsearch.png.meta new file mode 100644 index 0000000..92f8a20 --- /dev/null +++ b/Assets/Proxima/Documentation/docs/gameobjectsearch.png.meta @@ -0,0 +1,98 @@ +fileFormatVersion: 2 +guid: 3fafd92a98320374ba634c32bcd3df2b +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + 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 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/docs/inspector.html b/Assets/Proxima/Documentation/docs/inspector.html new file mode 100644 index 0000000..627142f --- /dev/null +++ b/Assets/Proxima/Documentation/docs/inspector.html @@ -0,0 +1,126 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8" /> + <title>Proxima Inspector</title> + <link rel="icon" href="../icons/favicon.ico" /> + <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1"> + <meta property="og:type" content="website"> + <meta name="description" property="og:description" content="Proxima Inspector lets you connect to your live game from a web browser to inspect and edit any property. Just like the Unity editor!"> + <meta name="image" property="og:image" content="../images/proxima-1200x630.png"> + <meta http-equiv="content-security-policy" content=""> + <link href="../_app/immutable/assets/_layout-1f0a7e97.css" rel="stylesheet"> + <link href="../_app/immutable/assets/_layout-6847360b.css" rel="stylesheet"> + + + + + + + + + + + + </head> + <body> + <div> + + +<div class="flex flex-col items-center text-gray-300 w-full min-h-screen bg-[#222]"><div class="flex w-full justify-center items-start bg-[#111] text-white fixed z-20"><div class="flex grow justify-between items-center max-w-[1600px] p-4"><a href="https://www.unityproxima.com"><img src="../images/proxima_logo.png" class="w-[150px]" alt="Logo"></a> + <button class="lg:hidden"><img class="w-10" src="../icons/menu.png" alt="Menu"></button> + <div class="flex gap-10 items-center max-lg:hidden"> +<a href="https://assetstore.unity.com/publishers/72095?aid=1101lqSYn" class="text-xl font-logo" referrerpolicy="origin" target="_blank" rel="external">Store</a> + +<a href="https://app.unityproxima.com/connection" class="text-xl font-logo" referrerpolicy="origin" target="_blank" rel="external">Demo</a> + + <a class="text-xl font-logo" href="../docs.html">Docs</a> + +<a href="https://discord.gg/VM9cWJ9rjH" class="" referrerpolicy="origin" target="_blank" rel="external"><img width="100px" class="mt-1" src="../icons/discord.png" alt=""></a></div></div> + </div> + + <div class="pt-[83px] w-full h-full flex flex-col items-center"><div class="w-full flex flex-col items-start min-h-screen max-w-[1600px] px-4"><button class="text-white font-body pt-5 lg:hidden">Go to page ></button> + <div class="flex w-full min-h-full relative"><div class="h-full fixed border-r-orange-400 bg-[#222] border-r-2 max-lg:hidden"><div class="flex pt-10 flex-col w-[300px] gap-2 border-[#21a6f0] min-h-0 h-full overflow-auto"><b class="text-orange-400">Getting Started</b> + <a href="../docs.html" class="svelte-yue6wq">Installation</a> + <a href="../docs/features.html" class="svelte-yue6wq">Feature Overview</a> + + <b class="text-orange-400 mt-5">Connection</b> + <a href="../docs/supported_platforms.html" class="svelte-yue6wq">Supported Platforms</a> + <a href="../docs/connect.html" class="svelte-yue6wq">Connect to Your Game</a> + <a href="../docs/security.html" class="svelte-yue6wq">Security Considerations</a> + <a href="../docs/all_config.html" class="svelte-yue6wq">All Configuration Options</a> + + <b class="text-orange-400 mt-5">Inspector</b> + <a href="../docs/inspector.html" class="svelte-yue6wq">GameObject Inspector</a> + <a href="../docs/buttons.html" class="svelte-yue6wq">Adding Buttons</a> + <a href="../docs/faq.html" class="svelte-yue6wq">Frequently Asked Questions</a> + + <b class="text-orange-400 mt-5">Logs</b> + <a href="../docs/logs.html" class="svelte-yue6wq">Log Viewer</a> + <a href="../docs/viewing_logs_offline.html" class="svelte-yue6wq">Viewing Logs Offline</a> + + <b class="text-orange-400 mt-5">Console</b> + <a href="../docs/console.html" class="svelte-yue6wq">Console Window</a> + <a href="../docs/console_built_in.html" class="svelte-yue6wq">Built-in Commands</a> + <a href="../docs/console_custom.html" class="svelte-yue6wq">Custom Commands</a> + + <b class="text-orange-400 mt-5">Extras</b> + <a href="../docs/deeplinks.html" class="svelte-yue6wq">Deep Links</a> + + <div class="h-[200px] shrink-0"></div></div></div> + + + <div class="flex flex-col w-full lg:pl-10 py-10 lg:ml-[300px]"><div class="doc flex flex-col gap-5 svelte-yue6wq"><h1>GameObject Inspector</h1> + +<h2>Basic Usage</h2> +<p>The GameObject Inspector lets you view and edit any gameObject and component in your scene, just like the Unity inspector.</p> + +<img src="../docs/inspector.png" alt="Proxima Inspector Page"> + +<p>The left side displays the gameObject hierarchy. Select a gameObject to view its properties and components in the inspector on the right side.</p> +<div class="bg-gray-800 p-5 text-zinc-300">The inspector works just like the Unity inspector, but some properties may appear differently (see the <a href="../docs/faq.html">FAQ</a>). +</div> + +<h2>Reordering and Reparenting GameObjects</h2> +<p>You can reorder or reparent gameObjects by dragging them in the hierarchy.</p> +<video muted autoplay loop playsinline><source src="https://www.unityproxima.com/docs/hierarchy-reorder.mp4"></video> + +<h2>Finding GameObjects</h2> +<p>You can search for a gameObject by name in the <b>Search Box</b>.</p> +<img src="../docs/gameobjectsearch.png" alt="GameObject Search"> + +<h2>Showing Hidden GameObjects and Components</h2> +<p>GameObjects and Components which are hidden with hideFlags can be made visible in Proxima by clicking the <b>Show Hidden</b> toggle.</p> + +<h2>Creating New GameObjects</h2> +<p>You can create an empty gameObject and its children by pressing the "New" button.</p> + +<h2>Duplicating GameObjects</h2> +<p>You can duplicate a gameObject and its children by pressing the "Duplicate" button or <b>Ctrl-D</b> key while the gameObject is selected.</p> + +<h2>Destroying GameObjects</h2> +<p>You can destroy a gameObject and its children by pressing the "Destroy" button or the <b>delete</b> key while the gameObject is selected.</p> + +<h2>Changing Properties</h2> +<p>Change a property value by entering a value or dragging left-right on its name.</p> + +<video muted autoplay loop playsinline><source src="https://www.unityproxima.com/docs/property-edit.mp4"></video> + +<div class="mt-5"></div> +<div class="bg-gray-800 p-5 text-zinc-300">Proxima supports many different types of properties, including most primitives, structs, and arrays. For the full list of supported properties, see the <a href="../docs/faq.html">FAQ</a>.</div> + +<h2>Destroying Components</h2> +<p>You can destroy a component the "Destroy" button next to the component name.</p> + +<h2>Adding Components</h2> +<p>You can add a component by typing its class name without spaces in the input field at the bottom of the inspector. </p> + +<video muted autoplay loop playsinline><source src="https://www.unityproxima.com/docs/add-component.mp4"></video></div></div></div> +</div> + <div class="h-[200px] flex flex-col"><p class="text-gray-400 m-10">© 2023 Virtual Maker Corporation</p></div></div></div> + + + + </div> + </body> +</html> diff --git a/Assets/Proxima/Documentation/docs/inspector.html.meta b/Assets/Proxima/Documentation/docs/inspector.html.meta new file mode 100644 index 0000000..771f168 --- /dev/null +++ b/Assets/Proxima/Documentation/docs/inspector.html.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d0ff2e8c5fe0494438e152f3b3e2eda6 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/docs/inspector.png b/Assets/Proxima/Documentation/docs/inspector.png new file mode 100644 index 0000000..c3f426f Binary files /dev/null and b/Assets/Proxima/Documentation/docs/inspector.png differ diff --git a/Assets/Proxima/Documentation/docs/inspector.png.meta b/Assets/Proxima/Documentation/docs/inspector.png.meta new file mode 100644 index 0000000..ff256a3 --- /dev/null +++ b/Assets/Proxima/Documentation/docs/inspector.png.meta @@ -0,0 +1,98 @@ +fileFormatVersion: 2 +guid: 5a5da6e76a3e76245b1a980870652617 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + 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 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/docs/log-controls.png b/Assets/Proxima/Documentation/docs/log-controls.png new file mode 100644 index 0000000..57ecebd Binary files /dev/null and b/Assets/Proxima/Documentation/docs/log-controls.png differ diff --git a/Assets/Proxima/Documentation/docs/log-controls.png.meta b/Assets/Proxima/Documentation/docs/log-controls.png.meta new file mode 100644 index 0000000..2d7d238 --- /dev/null +++ b/Assets/Proxima/Documentation/docs/log-controls.png.meta @@ -0,0 +1,98 @@ +fileFormatVersion: 2 +guid: d47e5a200492f814289d5c7666c7c966 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + 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 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/docs/logs.html b/Assets/Proxima/Documentation/docs/logs.html new file mode 100644 index 0000000..f60da2a --- /dev/null +++ b/Assets/Proxima/Documentation/docs/logs.html @@ -0,0 +1,105 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8" /> + <title>Proxima Inspector</title> + <link rel="icon" href="../icons/favicon.ico" /> + <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1"> + <meta property="og:type" content="website"> + <meta name="description" property="og:description" content="Proxima Inspector lets you connect to your live game from a web browser to inspect and edit any property. Just like the Unity editor!"> + <meta name="image" property="og:image" content="../images/proxima-1200x630.png"> + <meta http-equiv="content-security-policy" content=""> + <link href="../_app/immutable/assets/_layout-1f0a7e97.css" rel="stylesheet"> + <link href="../_app/immutable/assets/_layout-6847360b.css" rel="stylesheet"> + + + + + + + + + + + + </head> + <body> + <div> + + +<div class="flex flex-col items-center text-gray-300 w-full min-h-screen bg-[#222]"><div class="flex w-full justify-center items-start bg-[#111] text-white fixed z-20"><div class="flex grow justify-between items-center max-w-[1600px] p-4"><a href="https://www.unityproxima.com"><img src="../images/proxima_logo.png" class="w-[150px]" alt="Logo"></a> + <button class="lg:hidden"><img class="w-10" src="../icons/menu.png" alt="Menu"></button> + <div class="flex gap-10 items-center max-lg:hidden"> +<a href="https://assetstore.unity.com/publishers/72095?aid=1101lqSYn" class="text-xl font-logo" referrerpolicy="origin" target="_blank" rel="external">Store</a> + +<a href="https://app.unityproxima.com/connection" class="text-xl font-logo" referrerpolicy="origin" target="_blank" rel="external">Demo</a> + + <a class="text-xl font-logo" href="../docs.html">Docs</a> + +<a href="https://discord.gg/VM9cWJ9rjH" class="" referrerpolicy="origin" target="_blank" rel="external"><img width="100px" class="mt-1" src="../icons/discord.png" alt=""></a></div></div> + </div> + + <div class="pt-[83px] w-full h-full flex flex-col items-center"><div class="w-full flex flex-col items-start min-h-screen max-w-[1600px] px-4"><button class="text-white font-body pt-5 lg:hidden">Go to page ></button> + <div class="flex w-full min-h-full relative"><div class="h-full fixed border-r-orange-400 bg-[#222] border-r-2 max-lg:hidden"><div class="flex pt-10 flex-col w-[300px] gap-2 border-[#21a6f0] min-h-0 h-full overflow-auto"><b class="text-orange-400">Getting Started</b> + <a href="../docs.html" class="svelte-yue6wq">Installation</a> + <a href="../docs/features.html" class="svelte-yue6wq">Feature Overview</a> + + <b class="text-orange-400 mt-5">Connection</b> + <a href="../docs/supported_platforms.html" class="svelte-yue6wq">Supported Platforms</a> + <a href="../docs/connect.html" class="svelte-yue6wq">Connect to Your Game</a> + <a href="../docs/security.html" class="svelte-yue6wq">Security Considerations</a> + <a href="../docs/all_config.html" class="svelte-yue6wq">All Configuration Options</a> + + <b class="text-orange-400 mt-5">Inspector</b> + <a href="../docs/inspector.html" class="svelte-yue6wq">GameObject Inspector</a> + <a href="../docs/buttons.html" class="svelte-yue6wq">Adding Buttons</a> + <a href="../docs/faq.html" class="svelte-yue6wq">Frequently Asked Questions</a> + + <b class="text-orange-400 mt-5">Logs</b> + <a href="../docs/logs.html" class="svelte-yue6wq">Log Viewer</a> + <a href="../docs/viewing_logs_offline.html" class="svelte-yue6wq">Viewing Logs Offline</a> + + <b class="text-orange-400 mt-5">Console</b> + <a href="../docs/console.html" class="svelte-yue6wq">Console Window</a> + <a href="../docs/console_built_in.html" class="svelte-yue6wq">Built-in Commands</a> + <a href="../docs/console_custom.html" class="svelte-yue6wq">Custom Commands</a> + + <b class="text-orange-400 mt-5">Extras</b> + <a href="../docs/deeplinks.html" class="svelte-yue6wq">Deep Links</a> + + <div class="h-[200px] shrink-0"></div></div></div> + + + <div class="flex flex-col w-full lg:pl-10 py-10 lg:ml-[300px]"><div class="doc flex flex-col gap-5 svelte-yue6wq"><h1>Logs Viewer</h1> + +<h2>Basic Usage</h2> +<p>Proxima lets you view logs from your game similarly to the Unity console.</p> +<img src="../docs/logs.png" alt="Proxima Log Viewer"> + +<h2>Options</h2> +<p>Let's look at some of the options.</p> + +<img src="../docs/log-controls.png" alt="Log Controls"> + +<ul class="ml-5 list-disc leading-8"><li><b>Clear</b>: clear the log window.</li> + <li><b>Collapse</b>: collapse similar logs together to a single line.</li> + <li><b>Pause</b>: temporarily stop receiving logs from the game.</li> + <li><b>Save</b>: options to save the log file for offline viewing. See <a href="../docs/viewing_logs_offline.html">Viewing Logs Offline</a>.</li> + <li><b>Load</b>: load a previously saved log file. See <a href="../docs/viewing_logs_offline.html">Viewing Logs Offline</a>.</li> + <li><b>Search</b>: Filter logs by a search term.</li> + <li><b>Info / Warning / Error Toggles</b>: Filter logs by info, warning, or error.</li></ul> + +<h2>Stack Traces</h2> +<p>When a log is selected, you can see the full log message and stack trace at the bottom of the window.</p> + +<div class="bg-gray-800 p-5 text-zinc-300">Hint: You can enable or disable stack traces for different log types in Unity's project settings: + "Project Settings > Player > Stack Trace" +</div></div></div></div> +</div> + <div class="h-[200px] flex flex-col"><p class="text-gray-400 m-10">© 2023 Virtual Maker Corporation</p></div></div></div> + + + + </div> + </body> +</html> diff --git a/Assets/Proxima/Documentation/docs/logs.html.meta b/Assets/Proxima/Documentation/docs/logs.html.meta new file mode 100644 index 0000000..5070c56 --- /dev/null +++ b/Assets/Proxima/Documentation/docs/logs.html.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 87ce81e82190821459e35627e688930f +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/docs/logs.png b/Assets/Proxima/Documentation/docs/logs.png new file mode 100644 index 0000000..90ad0ff Binary files /dev/null and b/Assets/Proxima/Documentation/docs/logs.png differ diff --git a/Assets/Proxima/Documentation/docs/logs.png.meta b/Assets/Proxima/Documentation/docs/logs.png.meta new file mode 100644 index 0000000..df747b2 --- /dev/null +++ b/Assets/Proxima/Documentation/docs/logs.png.meta @@ -0,0 +1,98 @@ +fileFormatVersion: 2 +guid: e782a82ba05af5a478d3072d84772ee5 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + 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 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/docs/password-warning.png b/Assets/Proxima/Documentation/docs/password-warning.png new file mode 100644 index 0000000..f90405b Binary files /dev/null and b/Assets/Proxima/Documentation/docs/password-warning.png differ diff --git a/Assets/Proxima/Documentation/docs/password-warning.png.meta b/Assets/Proxima/Documentation/docs/password-warning.png.meta new file mode 100644 index 0000000..9772571 --- /dev/null +++ b/Assets/Proxima/Documentation/docs/password-warning.png.meta @@ -0,0 +1,98 @@ +fileFormatVersion: 2 +guid: 8f9e2bbb4b83ffa4eb19aba1ee22bf34 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + 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 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/docs/run-script.png b/Assets/Proxima/Documentation/docs/run-script.png new file mode 100644 index 0000000..3df5f00 Binary files /dev/null and b/Assets/Proxima/Documentation/docs/run-script.png differ diff --git a/Assets/Proxima/Documentation/docs/run-script.png.meta b/Assets/Proxima/Documentation/docs/run-script.png.meta new file mode 100644 index 0000000..58a544b --- /dev/null +++ b/Assets/Proxima/Documentation/docs/run-script.png.meta @@ -0,0 +1,148 @@ +fileFormatVersion: 2 +guid: 060e78b3f414d2c499a081ebeddc8fbf +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + 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 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + 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 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Windows Store Apps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/docs/secure-config.png b/Assets/Proxima/Documentation/docs/secure-config.png new file mode 100644 index 0000000..e78929d Binary files /dev/null and b/Assets/Proxima/Documentation/docs/secure-config.png differ diff --git a/Assets/Proxima/Documentation/docs/secure-config.png.meta b/Assets/Proxima/Documentation/docs/secure-config.png.meta new file mode 100644 index 0000000..115c361 --- /dev/null +++ b/Assets/Proxima/Documentation/docs/secure-config.png.meta @@ -0,0 +1,98 @@ +fileFormatVersion: 2 +guid: 1f819dedfa86808429961506ceca924b +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + 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 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/docs/security.html b/Assets/Proxima/Documentation/docs/security.html new file mode 100644 index 0000000..652339f --- /dev/null +++ b/Assets/Proxima/Documentation/docs/security.html @@ -0,0 +1,137 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8" /> + <title>Proxima Inspector</title> + <link rel="icon" href="../icons/favicon.ico" /> + <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1"> + <meta property="og:type" content="website"> + <meta name="description" property="og:description" content="Proxima Inspector lets you connect to your live game from a web browser to inspect and edit any property. Just like the Unity editor!"> + <meta name="image" property="og:image" content="../images/proxima-1200x630.png"> + <meta http-equiv="content-security-policy" content=""> + <link href="../_app/immutable/assets/_layout-1f0a7e97.css" rel="stylesheet"> + <link href="../_app/immutable/assets/_layout-6847360b.css" rel="stylesheet"> + + + + + + + + + + + + </head> + <body> + <div> + + +<div class="flex flex-col items-center text-gray-300 w-full min-h-screen bg-[#222]"><div class="flex w-full justify-center items-start bg-[#111] text-white fixed z-20"><div class="flex grow justify-between items-center max-w-[1600px] p-4"><a href="https://www.unityproxima.com"><img src="../images/proxima_logo.png" class="w-[150px]" alt="Logo"></a> + <button class="lg:hidden"><img class="w-10" src="../icons/menu.png" alt="Menu"></button> + <div class="flex gap-10 items-center max-lg:hidden"> +<a href="https://assetstore.unity.com/publishers/72095?aid=1101lqSYn" class="text-xl font-logo" referrerpolicy="origin" target="_blank" rel="external">Store</a> + +<a href="https://app.unityproxima.com/connection" class="text-xl font-logo" referrerpolicy="origin" target="_blank" rel="external">Demo</a> + + <a class="text-xl font-logo" href="../docs.html">Docs</a> + +<a href="https://discord.gg/VM9cWJ9rjH" class="" referrerpolicy="origin" target="_blank" rel="external"><img width="100px" class="mt-1" src="../icons/discord.png" alt=""></a></div></div> + </div> + + <div class="pt-[83px] w-full h-full flex flex-col items-center"><div class="w-full flex flex-col items-start min-h-screen max-w-[1600px] px-4"><button class="text-white font-body pt-5 lg:hidden">Go to page ></button> + <div class="flex w-full min-h-full relative"><div class="h-full fixed border-r-orange-400 bg-[#222] border-r-2 max-lg:hidden"><div class="flex pt-10 flex-col w-[300px] gap-2 border-[#21a6f0] min-h-0 h-full overflow-auto"><b class="text-orange-400">Getting Started</b> + <a href="../docs.html" class="svelte-yue6wq">Installation</a> + <a href="../docs/features.html" class="svelte-yue6wq">Feature Overview</a> + + <b class="text-orange-400 mt-5">Connection</b> + <a href="../docs/supported_platforms.html" class="svelte-yue6wq">Supported Platforms</a> + <a href="../docs/connect.html" class="svelte-yue6wq">Connect to Your Game</a> + <a href="../docs/security.html" class="svelte-yue6wq">Security Considerations</a> + <a href="../docs/all_config.html" class="svelte-yue6wq">All Configuration Options</a> + + <b class="text-orange-400 mt-5">Inspector</b> + <a href="../docs/inspector.html" class="svelte-yue6wq">GameObject Inspector</a> + <a href="../docs/buttons.html" class="svelte-yue6wq">Adding Buttons</a> + <a href="../docs/faq.html" class="svelte-yue6wq">Frequently Asked Questions</a> + + <b class="text-orange-400 mt-5">Logs</b> + <a href="../docs/logs.html" class="svelte-yue6wq">Log Viewer</a> + <a href="../docs/viewing_logs_offline.html" class="svelte-yue6wq">Viewing Logs Offline</a> + + <b class="text-orange-400 mt-5">Console</b> + <a href="../docs/console.html" class="svelte-yue6wq">Console Window</a> + <a href="../docs/console_built_in.html" class="svelte-yue6wq">Built-in Commands</a> + <a href="../docs/console_custom.html" class="svelte-yue6wq">Custom Commands</a> + + <b class="text-orange-400 mt-5">Extras</b> + <a href="../docs/deeplinks.html" class="svelte-yue6wq">Deep Links</a> + + <div class="h-[200px] shrink-0"></div></div></div> + + + <div class="flex flex-col w-full lg:pl-10 py-10 lg:ml-[300px]"><div class="doc flex flex-col gap-5 svelte-yue6wq"><h1>Security Considerations</h1> + +<p>Proxima Inspector is a powerful tool that can be used to control and debug your game. It is important to understand the security implications when using Proxima Inspector. + Potentially any information in your game can be read with Proxima, or by anyone eavesdropping on your connection if encryption is not enabled.</p> +<p>To protect your game from unwanted access, follow the guidelines on this page.</p> + +<h2 class="text-zinc-100 text-xl mt-5">Secure Configuration</h2> +<p>At a glance, this is what the most secure configuration of Proxima looks like:</p> + +<img src="../docs/secure-config.png" alt="Secure Proxima Component Configuration"> + +<div class="bg-gray-800 p-5 text-zinc-300"><p class="font-bold">Notice that:</p> + <ul class="list-decimal ml-5 leading-8"><li>Use Https is checked.</li> + <li>No password is specified.</li> + <li>Run On Enable is disabled.</li> + <li>Instantiate Connect UI is enabled.</li></ul></div> + +<p>The rest of this page will go over each of these options.</p> + +<h2 class="text-zinc-100 text-xl mt-5">Use Https</h2> + +<p>HTTPS is a protocol for secure communication over a network. It is used to encrypt data sent between your game and Proxima Inspector.</p> + +<p>Enabling HTTPS is easy. Simply check the <b>Use HTTPS</b> box on the Proxima Inspector component. + You may also need to add a new rule to your firewall to allow HTTPS traffic on your configured port.</p> + +<h2 class="text-zinc-100 text-xl mt-5">(Optional) TLS Certificate</h2> + +<p>HTTPS requires a TLS certificate to encrypt data. Proxima Inspector uses a self-signed certificate by default, which is not trusted by most browsers. + The first time you try to access Proxima Inspector, you may see a warning like this that the certificate is not trusted.</p> + +<img src="../docs/browser_warning.png" alt="Chrome certificate warning"> + +<p>This is normal, and you can safely bypass the warning by clicking "Advanced -> Proceed". Your browser is warning you that it cannot validate the identity of the server, + but if you are connecting directly to your device by IP address, then you can be sure that you are connecting to the correct server. +</p> + +<p>If you want to use your own certificate, import the PFX file and assign it to the <b>Certificate</b> property of the Proxima Inspector component. +</p> + +<h2 class="text-zinc-100 text-xl mt-5">Password Security</h2> + +<p>Proxima Inspector uses a password to authenticate your connection. If you type a password into the Proxima Inspector component, you will see this warning:</p> + +<img src="../docs/password-warning.png" alt="Password warning"> + +<p>Unity assets, including your Proxima Inspector configuration <b>are not secured</b> and can be data mined by players easily. Instead of entering a password, + it is recommended to have a user interface in which the player can create a password for Proxima to use at runtime. Alternatively, you can + design an interface to display a random password on the screen.</p> + +<p>The Proxima package includes a Connect UI prefab that you can use. To use it: +</p><ul class="list-decimal ml-5 leading-8"><li>Check <b>Instantiate Connect UI</b>.</li> + <li>Clear the <b>Password</b> field.</li> + <li>Uncheck <b>Run on Enable</b>. This will prevent Proxima from trying to start automatically.</li> + <li>Run the game and press Proxima logo <img class="w-[25px] ml-2 mr-2 inline" src="../icons/proxima_icon_32x32.png" alt=""> on the bottom-right to show and hide the Connect UI.</li></ul> + +<img src="../docs/connect-ui.png" alt="Proxima Connect UI"></div></div></div> +</div> + <div class="h-[200px] flex flex-col"><p class="text-gray-400 m-10">© 2023 Virtual Maker Corporation</p></div></div></div> + + + + </div> + </body> +</html> diff --git a/Assets/Proxima/Documentation/docs/security.html.meta b/Assets/Proxima/Documentation/docs/security.html.meta new file mode 100644 index 0000000..9a2665a --- /dev/null +++ b/Assets/Proxima/Documentation/docs/security.html.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ff14e6eadcc72a9489ff77cdf43539c5 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/docs/status-ui.png b/Assets/Proxima/Documentation/docs/status-ui.png new file mode 100644 index 0000000..1144f24 Binary files /dev/null and b/Assets/Proxima/Documentation/docs/status-ui.png differ diff --git a/Assets/Proxima/Documentation/docs/status-ui.png.meta b/Assets/Proxima/Documentation/docs/status-ui.png.meta new file mode 100644 index 0000000..e2b4722 --- /dev/null +++ b/Assets/Proxima/Documentation/docs/status-ui.png.meta @@ -0,0 +1,98 @@ +fileFormatVersion: 2 +guid: a43070c5d120db04db1131b43874a843 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + 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 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/docs/supported_platforms.html b/Assets/Proxima/Documentation/docs/supported_platforms.html new file mode 100644 index 0000000..936e056 --- /dev/null +++ b/Assets/Proxima/Documentation/docs/supported_platforms.html @@ -0,0 +1,244 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8" /> + <title>Proxima Inspector</title> + <link rel="icon" href="../icons/favicon.ico" /> + <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1"> + <meta property="og:type" content="website"> + <meta name="description" property="og:description" content="Proxima Inspector lets you connect to your live game from a web browser to inspect and edit any property. Just like the Unity editor!"> + <meta name="image" property="og:image" content="../images/proxima-1200x630.png"> + <meta http-equiv="content-security-policy" content=""> + <link href="../_app/immutable/assets/_layout-1f0a7e97.css" rel="stylesheet"> + <link href="../_app/immutable/assets/_layout-6847360b.css" rel="stylesheet"> + + + + + + + + + + + + </head> + <body> + <div> + + +<div class="flex flex-col items-center text-gray-300 w-full min-h-screen bg-[#222]"><div class="flex w-full justify-center items-start bg-[#111] text-white fixed z-20"><div class="flex grow justify-between items-center max-w-[1600px] p-4"><a href="https://www.unityproxima.com"><img src="../images/proxima_logo.png" class="w-[150px]" alt="Logo"></a> + <button class="lg:hidden"><img class="w-10" src="../icons/menu.png" alt="Menu"></button> + <div class="flex gap-10 items-center max-lg:hidden"> +<a href="https://assetstore.unity.com/publishers/72095?aid=1101lqSYn" class="text-xl font-logo" referrerpolicy="origin" target="_blank" rel="external">Store</a> + +<a href="https://app.unityproxima.com/connection" class="text-xl font-logo" referrerpolicy="origin" target="_blank" rel="external">Demo</a> + + <a class="text-xl font-logo" href="../docs.html">Docs</a> + +<a href="https://discord.gg/VM9cWJ9rjH" class="" referrerpolicy="origin" target="_blank" rel="external"><img width="100px" class="mt-1" src="../icons/discord.png" alt=""></a></div></div> + </div> + + <div class="pt-[83px] w-full h-full flex flex-col items-center"><div class="w-full flex flex-col items-start min-h-screen max-w-[1600px] px-4"><button class="text-white font-body pt-5 lg:hidden">Go to page ></button> + <div class="flex w-full min-h-full relative"><div class="h-full fixed border-r-orange-400 bg-[#222] border-r-2 max-lg:hidden"><div class="flex pt-10 flex-col w-[300px] gap-2 border-[#21a6f0] min-h-0 h-full overflow-auto"><b class="text-orange-400">Getting Started</b> + <a href="../docs.html" class="svelte-yue6wq">Installation</a> + <a href="../docs/features.html" class="svelte-yue6wq">Feature Overview</a> + + <b class="text-orange-400 mt-5">Connection</b> + <a href="../docs/supported_platforms.html" class="svelte-yue6wq">Supported Platforms</a> + <a href="../docs/connect.html" class="svelte-yue6wq">Connect to Your Game</a> + <a href="../docs/security.html" class="svelte-yue6wq">Security Considerations</a> + <a href="../docs/all_config.html" class="svelte-yue6wq">All Configuration Options</a> + + <b class="text-orange-400 mt-5">Inspector</b> + <a href="../docs/inspector.html" class="svelte-yue6wq">GameObject Inspector</a> + <a href="../docs/buttons.html" class="svelte-yue6wq">Adding Buttons</a> + <a href="../docs/faq.html" class="svelte-yue6wq">Frequently Asked Questions</a> + + <b class="text-orange-400 mt-5">Logs</b> + <a href="../docs/logs.html" class="svelte-yue6wq">Log Viewer</a> + <a href="../docs/viewing_logs_offline.html" class="svelte-yue6wq">Viewing Logs Offline</a> + + <b class="text-orange-400 mt-5">Console</b> + <a href="../docs/console.html" class="svelte-yue6wq">Console Window</a> + <a href="../docs/console_built_in.html" class="svelte-yue6wq">Built-in Commands</a> + <a href="../docs/console_custom.html" class="svelte-yue6wq">Custom Commands</a> + + <b class="text-orange-400 mt-5">Extras</b> + <a href="../docs/deeplinks.html" class="svelte-yue6wq">Deep Links</a> + + <div class="h-[200px] shrink-0"></div></div></div> + + + <div class="flex flex-col w-full lg:pl-10 py-10 lg:ml-[300px]"><div class="doc flex flex-col gap-5 svelte-yue6wq"><h1>Supported Platforms</h1> + +<p>Proxima Inspector works by running an HTTP and WebSocket server in your game, which you can connect to from a web browser.</p> + +<p>Proxima has been tested with different Unity versions on the following platforms. See the test matrix below.</p> + +<ul class="list-disc ml-10 flex flex-col gap-2"><li>Windows (Win32 and UWP)</li> + <li>OSX</li> + <li>Android (+Meta Quest)</li> + <li>iOS</li> + <li>WebGL</li></ul> + +<h2>Platform to Unity Version Test Results</h2> + +<div><table><tr class="font-bold"><th class="pb-2">Platform</th> + <th class="pb-2">API Compatibility</th> + <th class="pb-2">Scripting Backend</th> + <th class="pb-2">2019.4.13</th> + <th class="pb-2">2021.3.5</th> + <th class="pb-2">2022.2.3</th></tr> + <tr><td>Windows Editor</td> + <td>.NET Standard</td> + <td>N/A</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td></tr> + <tr><td>Windows Editor</td> + <td>.NET Framework</td> + <td>N/A</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td></tr> + <tr><td>Windows</td> + <td>.NET Standard</td> + <td>Mono</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td></tr> + <tr><td>Windows</td> + <td>.NET Standard</td> + <td>IL2CPP</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td></tr> + <tr><td>Windows</td> + <td>.NET Framework</td> + <td>Mono</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td></tr> + <tr><td>Windows</td> + <td>.NET Framework</td> + <td>IL2CPP</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td></tr> + <tr><td>OSX Editor</td> + <td>.NET Standard</td> + <td>N/A</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td></tr> + <tr><td>OSX Editor</td> + <td>.NET Framework</td> + <td>N/A</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td></tr> + <tr><td>OSX</td> + <td>.NET Standard</td> + <td>Mono</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td></tr> + <tr><td>OSX</td> + <td>.NET Standard</td> + <td>IL2CPP</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td></tr> + <tr><td>OSX</td> + <td>.NET Framework</td> + <td>Mono</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td></tr> + <tr><td>OSX</td> + <td>.NET Framework</td> + <td>IL2CPP</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td></tr> + <tr><td>Android [1]</td> + <td>.NET Standard</td> + <td>Mono</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td></tr> + <tr><td>Android [1]</td> + <td>.NET Standard</td> + <td>IL2CPP</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td></tr> + <tr><td>Android [1]</td> + <td>.NET Framework</td> + <td>Mono</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td></tr> + <tr><td>Android [1]</td> + <td>.NET Framework</td> + <td>IL2CPP</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td></tr> + <tr><td>iOS [1]</td> + <td>.NET Standard</td> + <td>IL2CPP</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td></tr> + <tr><td>iOS [1]</td> + <td>.NET Framework</td> + <td>IL2CPP</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td></tr> + <tr><td>UWP [2]</td> + <td>.NET Standard</td> + <td>IL2CPP</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td></tr> + <tr><td>UWP [2]</td> + <td>.NET Framework</td> + <td>IL2CPP</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td></tr> + <tr><td>WebGL [3]</td> + <td>.NET Standard</td> + <td>IL2CPP</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td></tr> + <tr><td>WebGL [3]</td> + <td>.NET Framework</td> + <td>IL2CPP</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td> + <td class="bg-green-800 text-white">Pass</td></tr></table></div> + +<div class="bg-gray-800 p-5 text-zinc-300">[1] <b>Android</b> and <b>iOS</b> builds may require HTTPS to be enabled. Learn how to enable HTTPS on the <a href="../docs/security.html">Security Considerations</a> page.</div> + +<div class="bg-gray-800 p-5 text-zinc-300">[2] <b>UWP</b> apps need to enable InternetClientServer and PrivateNetworkClientServer capabilities in Player Settings > Publish Settings<br> + Loopback is disabled by default for UWP applications. See <a href="https://learn.microsoft.com/en-us/windows/uwp/communication/interprocess-communication#loopback" target="_blank" rel="noreferrer">https://learn.microsoft.com/en-us/windows/uwp/communication/interprocess-communication#loopback</a></div> + +<div class="bg-gray-800 p-5 text-zinc-300">[3] <b>WebGL</b> is supported as of version 1.2, but works differently than other platforms. Since a web browser cannot host a server. + Your app will communicate with Proxima using a <a href="https://developer.mozilla.org/en-US/docs/Web/API/BroadcastChannel" target="_blank" rel="noreferrer">BroadcastChannel</a> between windows in the browser. At the moment, it is not possible to connect to WebGL builds remotely. + <br><br>Ensure you deploy the StreamingAssets/Proxima directory with your WebGL build, which contains the Proxima inspector web app. +</div> + +<div class="bg-gray-800 p-5 text-zinc-300">If you're having issues with your platform, please report issues on the <a href="https://discord.gg/VM9cWJ9rjH">Discord Server</a>.</div></div></div></div> +</div> + <div class="h-[200px] flex flex-col"><p class="text-gray-400 m-10">© 2023 Virtual Maker Corporation</p></div></div></div> + + + + </div> + </body> +</html> diff --git a/Assets/Proxima/Documentation/docs/supported_platforms.html.meta b/Assets/Proxima/Documentation/docs/supported_platforms.html.meta new file mode 100644 index 0000000..cfe6e58 --- /dev/null +++ b/Assets/Proxima/Documentation/docs/supported_platforms.html.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8be6fd4993b157444994cf1a979a101c +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/docs/viewing_logs_offline.html b/Assets/Proxima/Documentation/docs/viewing_logs_offline.html new file mode 100644 index 0000000..1be9a81 --- /dev/null +++ b/Assets/Proxima/Documentation/docs/viewing_logs_offline.html @@ -0,0 +1,107 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8" /> + <title>Proxima Inspector</title> + <link rel="icon" href="../icons/favicon.ico" /> + <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1"> + <meta property="og:type" content="website"> + <meta name="description" property="og:description" content="Proxima Inspector lets you connect to your live game from a web browser to inspect and edit any property. Just like the Unity editor!"> + <meta name="image" property="og:image" content="../images/proxima-1200x630.png"> + <meta http-equiv="content-security-policy" content=""> + <link href="../_app/immutable/assets/_layout-1f0a7e97.css" rel="stylesheet"> + <link href="../_app/immutable/assets/_layout-6847360b.css" rel="stylesheet"> + + + + + + + + + + + + </head> + <body> + <div> + + +<div class="flex flex-col items-center text-gray-300 w-full min-h-screen bg-[#222]"><div class="flex w-full justify-center items-start bg-[#111] text-white fixed z-20"><div class="flex grow justify-between items-center max-w-[1600px] p-4"><a href="https://www.unityproxima.com"><img src="../images/proxima_logo.png" class="w-[150px]" alt="Logo"></a> + <button class="lg:hidden"><img class="w-10" src="../icons/menu.png" alt="Menu"></button> + <div class="flex gap-10 items-center max-lg:hidden"> +<a href="https://assetstore.unity.com/publishers/72095?aid=1101lqSYn" class="text-xl font-logo" referrerpolicy="origin" target="_blank" rel="external">Store</a> + +<a href="https://app.unityproxima.com/connection" class="text-xl font-logo" referrerpolicy="origin" target="_blank" rel="external">Demo</a> + + <a class="text-xl font-logo" href="../docs.html">Docs</a> + +<a href="https://discord.gg/VM9cWJ9rjH" class="" referrerpolicy="origin" target="_blank" rel="external"><img width="100px" class="mt-1" src="../icons/discord.png" alt=""></a></div></div> + </div> + + <div class="pt-[83px] w-full h-full flex flex-col items-center"><div class="w-full flex flex-col items-start min-h-screen max-w-[1600px] px-4"><button class="text-white font-body pt-5 lg:hidden">Go to page ></button> + <div class="flex w-full min-h-full relative"><div class="h-full fixed border-r-orange-400 bg-[#222] border-r-2 max-lg:hidden"><div class="flex pt-10 flex-col w-[300px] gap-2 border-[#21a6f0] min-h-0 h-full overflow-auto"><b class="text-orange-400">Getting Started</b> + <a href="../docs.html" class="svelte-yue6wq">Installation</a> + <a href="../docs/features.html" class="svelte-yue6wq">Feature Overview</a> + + <b class="text-orange-400 mt-5">Connection</b> + <a href="../docs/supported_platforms.html" class="svelte-yue6wq">Supported Platforms</a> + <a href="../docs/connect.html" class="svelte-yue6wq">Connect to Your Game</a> + <a href="../docs/security.html" class="svelte-yue6wq">Security Considerations</a> + <a href="../docs/all_config.html" class="svelte-yue6wq">All Configuration Options</a> + + <b class="text-orange-400 mt-5">Inspector</b> + <a href="../docs/inspector.html" class="svelte-yue6wq">GameObject Inspector</a> + <a href="../docs/buttons.html" class="svelte-yue6wq">Adding Buttons</a> + <a href="../docs/faq.html" class="svelte-yue6wq">Frequently Asked Questions</a> + + <b class="text-orange-400 mt-5">Logs</b> + <a href="../docs/logs.html" class="svelte-yue6wq">Log Viewer</a> + <a href="../docs/viewing_logs_offline.html" class="svelte-yue6wq">Viewing Logs Offline</a> + + <b class="text-orange-400 mt-5">Console</b> + <a href="../docs/console.html" class="svelte-yue6wq">Console Window</a> + <a href="../docs/console_built_in.html" class="svelte-yue6wq">Built-in Commands</a> + <a href="../docs/console_custom.html" class="svelte-yue6wq">Custom Commands</a> + + <b class="text-orange-400 mt-5">Extras</b> + <a href="../docs/deeplinks.html" class="svelte-yue6wq">Deep Links</a> + + <div class="h-[200px] shrink-0"></div></div></div> + + + <div class="flex flex-col w-full lg:pl-10 py-10 lg:ml-[300px]"><div class="doc flex flex-col gap-5 svelte-yue6wq"><h1 class="mb-10">Viewing Logs Offline</h1> + +<p>Sometimes, it is impractical to debug issues live. Fortunately, Proxima provies a way to download your logs and view them later in your browser.</p> + +<h2 class="text-zinc-100 text-xl mt-5">Saving Logs</h2> + +<img src="../docs/log-controls.png" alt="Log Controls"> + +<p>Clicking the <b>Save</b> dropdown reveals the following options:</p> + +<ul class="ml-5 list-disc leading-8"><li><b>Save Proxima Log</b>: saves the current log window contents.</li> + <li><b>Download Unity Log</b>: Downloads the standard Unity log file (if enabled).</li> + <li><b>Download Previous Unity Log</b>: Downloads the standard Unity log file (if enabled).</li></ul> + +<h2 class="text-zinc-100 text-xl mt-5">Viewing Log Files</h2> +<p>If you have a Proxima connection open, you can easily view any log file by Proxima by clicking the <b>Load</b> button and selecting the file. +</p> +<div class="bg-gray-800 p-5 text-zinc-300">If you do not have access to a device running Proxima, there's a no-cost online version of the Log Viewer at <a href="https://www.unityproxima.com">unityproxima.com/log</a>.<br><br> + <b>You do not need Proxima to use this viewer</b>, since it can parse any Unity log file. Support the project by sharing the availability of this complimentary tool with your network! +</div> + +<h2 class="text-zinc-100 text-xl mt-5">Unity Log Files</h2> +<p>If enabled, Unity saves two log files (a current and previous) to your device from the previous two runs that you can download by clicking "Download Unity Log" or "Download Previous Unity Log". Learn how to configure +these logs files on <a target="_blank" rel="noreferrer" href="https://docs.unity3d.com/Manual/LogFiles.html">Unity's Documentation</a>.</p> +<p>Proxima can load these files, but they are missing the following information:</p> +<ul class="ml-5 list-disc leading-8"><li>Unity's log files do not include the timestamp.</li> + <li>Unity's log files do not include the log type (info, warning, error). Proxima Log Viewer will do its best to detect the type of log from the stack trace, if enabled.</li></ul></div></div></div> +</div> + <div class="h-[200px] flex flex-col"><p class="text-gray-400 m-10">© 2023 Virtual Maker Corporation</p></div></div></div> + + + + </div> + </body> +</html> diff --git a/Assets/Proxima/Documentation/docs/viewing_logs_offline.html.meta b/Assets/Proxima/Documentation/docs/viewing_logs_offline.html.meta new file mode 100644 index 0000000..dcde51b --- /dev/null +++ b/Assets/Proxima/Documentation/docs/viewing_logs_offline.html.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5c9b2406965117149b215540242658d0 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/fonts.meta b/Assets/Proxima/Documentation/fonts.meta new file mode 100644 index 0000000..eb7a2f1 --- /dev/null +++ b/Assets/Proxima/Documentation/fonts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a20257740c4edae4e8f041fab6eda45d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/fonts/S6uyw4BMUTPHjx4wXg.woff2 b/Assets/Proxima/Documentation/fonts/S6uyw4BMUTPHjx4wXg.woff2 new file mode 100644 index 0000000..ff60934 Binary files /dev/null and b/Assets/Proxima/Documentation/fonts/S6uyw4BMUTPHjx4wXg.woff2 differ diff --git a/Assets/Proxima/Documentation/fonts/S6uyw4BMUTPHjx4wXg.woff2.meta b/Assets/Proxima/Documentation/fonts/S6uyw4BMUTPHjx4wXg.woff2.meta new file mode 100644 index 0000000..d151e43 --- /dev/null +++ b/Assets/Proxima/Documentation/fonts/S6uyw4BMUTPHjx4wXg.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a065057dd605d614eabc28778c7351d1 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/fonts/S6uyw4BMUTPHjxAwXjeu.woff2 b/Assets/Proxima/Documentation/fonts/S6uyw4BMUTPHjxAwXjeu.woff2 new file mode 100644 index 0000000..edb9fa6 Binary files /dev/null and b/Assets/Proxima/Documentation/fonts/S6uyw4BMUTPHjxAwXjeu.woff2 differ diff --git a/Assets/Proxima/Documentation/fonts/S6uyw4BMUTPHjxAwXjeu.woff2.meta b/Assets/Proxima/Documentation/fonts/S6uyw4BMUTPHjxAwXjeu.woff2.meta new file mode 100644 index 0000000..adfd7bb --- /dev/null +++ b/Assets/Proxima/Documentation/fonts/S6uyw4BMUTPHjxAwXjeu.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1679bafd2fb413a4da1ade76c5ee003c +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/fonts/w8gdH283Tvk__Lua32TysjIfp8uP.woff2 b/Assets/Proxima/Documentation/fonts/w8gdH283Tvk__Lua32TysjIfp8uP.woff2 new file mode 100644 index 0000000..06fe19f Binary files /dev/null and b/Assets/Proxima/Documentation/fonts/w8gdH283Tvk__Lua32TysjIfp8uP.woff2 differ diff --git a/Assets/Proxima/Documentation/fonts/w8gdH283Tvk__Lua32TysjIfp8uP.woff2.meta b/Assets/Proxima/Documentation/fonts/w8gdH283Tvk__Lua32TysjIfp8uP.woff2.meta new file mode 100644 index 0000000..a4b86ce --- /dev/null +++ b/Assets/Proxima/Documentation/fonts/w8gdH283Tvk__Lua32TysjIfp8uP.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 60d0f14b7864c484f9c636bae1cb0f4f +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/fonts/w8gdH283Tvk__Lua32TysjIfpcuPP9g.woff2 b/Assets/Proxima/Documentation/fonts/w8gdH283Tvk__Lua32TysjIfpcuPP9g.woff2 new file mode 100644 index 0000000..ea62ab0 Binary files /dev/null and b/Assets/Proxima/Documentation/fonts/w8gdH283Tvk__Lua32TysjIfpcuPP9g.woff2 differ diff --git a/Assets/Proxima/Documentation/fonts/w8gdH283Tvk__Lua32TysjIfpcuPP9g.woff2.meta b/Assets/Proxima/Documentation/fonts/w8gdH283Tvk__Lua32TysjIfpcuPP9g.woff2.meta new file mode 100644 index 0000000..11ee076 --- /dev/null +++ b/Assets/Proxima/Documentation/fonts/w8gdH283Tvk__Lua32TysjIfpcuPP9g.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: be3ef2326fe5c4c4a903f31b5a74ec40 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/fonts/w8gdH283Tvk__Lua32TysjIfqMuPP9g.woff2 b/Assets/Proxima/Documentation/fonts/w8gdH283Tvk__Lua32TysjIfqMuPP9g.woff2 new file mode 100644 index 0000000..31fe955 Binary files /dev/null and b/Assets/Proxima/Documentation/fonts/w8gdH283Tvk__Lua32TysjIfqMuPP9g.woff2 differ diff --git a/Assets/Proxima/Documentation/fonts/w8gdH283Tvk__Lua32TysjIfqMuPP9g.woff2.meta b/Assets/Proxima/Documentation/fonts/w8gdH283Tvk__Lua32TysjIfqMuPP9g.woff2.meta new file mode 100644 index 0000000..b4064a4 --- /dev/null +++ b/Assets/Proxima/Documentation/fonts/w8gdH283Tvk__Lua32TysjIfqMuPP9g.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 41318e31369d9f04ea6fcca337249fa9 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/fonts/w8gdH283Tvk__Lua32TysjIfqcuPP9g.woff2 b/Assets/Proxima/Documentation/fonts/w8gdH283Tvk__Lua32TysjIfqcuPP9g.woff2 new file mode 100644 index 0000000..fa30e0b Binary files /dev/null and b/Assets/Proxima/Documentation/fonts/w8gdH283Tvk__Lua32TysjIfqcuPP9g.woff2 differ diff --git a/Assets/Proxima/Documentation/fonts/w8gdH283Tvk__Lua32TysjIfqcuPP9g.woff2.meta b/Assets/Proxima/Documentation/fonts/w8gdH283Tvk__Lua32TysjIfqcuPP9g.woff2.meta new file mode 100644 index 0000000..14384cd --- /dev/null +++ b/Assets/Proxima/Documentation/fonts/w8gdH283Tvk__Lua32TysjIfqcuPP9g.woff2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a386a394812e3684d8b2b85e0f5bf43f +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/icons.meta b/Assets/Proxima/Documentation/icons.meta new file mode 100644 index 0000000..6f7dc0f --- /dev/null +++ b/Assets/Proxima/Documentation/icons.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 295ce92b450e92e449db68e7d41ba181 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/icons/arrow.png b/Assets/Proxima/Documentation/icons/arrow.png new file mode 100644 index 0000000..e4f0f6f Binary files /dev/null and b/Assets/Proxima/Documentation/icons/arrow.png differ diff --git a/Assets/Proxima/Documentation/icons/arrow.png.meta b/Assets/Proxima/Documentation/icons/arrow.png.meta new file mode 100644 index 0000000..4ab33e5 --- /dev/null +++ b/Assets/Proxima/Documentation/icons/arrow.png.meta @@ -0,0 +1,98 @@ +fileFormatVersion: 2 +guid: 658f8cd9194dcdc418a571e983734c99 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + 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 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/icons/discord.png b/Assets/Proxima/Documentation/icons/discord.png new file mode 100644 index 0000000..3518047 Binary files /dev/null and b/Assets/Proxima/Documentation/icons/discord.png differ diff --git a/Assets/Proxima/Documentation/icons/discord.png.meta b/Assets/Proxima/Documentation/icons/discord.png.meta new file mode 100644 index 0000000..8cec63d --- /dev/null +++ b/Assets/Proxima/Documentation/icons/discord.png.meta @@ -0,0 +1,98 @@ +fileFormatVersion: 2 +guid: ef8987d79a1a57c49810904c1334a1c2 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + 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 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/icons/menu.png b/Assets/Proxima/Documentation/icons/menu.png new file mode 100644 index 0000000..6c35db3 Binary files /dev/null and b/Assets/Proxima/Documentation/icons/menu.png differ diff --git a/Assets/Proxima/Documentation/icons/menu.png.meta b/Assets/Proxima/Documentation/icons/menu.png.meta new file mode 100644 index 0000000..0fc5142 --- /dev/null +++ b/Assets/Proxima/Documentation/icons/menu.png.meta @@ -0,0 +1,98 @@ +fileFormatVersion: 2 +guid: 0f3bffd932a3e1b4e875fa0bdbe4dd3f +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + 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 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/icons/proxima_icon_32x32.png b/Assets/Proxima/Documentation/icons/proxima_icon_32x32.png new file mode 100644 index 0000000..0e274fe Binary files /dev/null and b/Assets/Proxima/Documentation/icons/proxima_icon_32x32.png differ diff --git a/Assets/Proxima/Documentation/icons/proxima_icon_32x32.png.meta b/Assets/Proxima/Documentation/icons/proxima_icon_32x32.png.meta new file mode 100644 index 0000000..9bd11da --- /dev/null +++ b/Assets/Proxima/Documentation/icons/proxima_icon_32x32.png.meta @@ -0,0 +1,98 @@ +fileFormatVersion: 2 +guid: dc7068221cf34f149ab30e7b4e3f7566 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + 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 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/images.meta b/Assets/Proxima/Documentation/images.meta new file mode 100644 index 0000000..7181190 --- /dev/null +++ b/Assets/Proxima/Documentation/images.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9c4da0d5e73af204382380f900628c56 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/images/proxima-1200x630.png b/Assets/Proxima/Documentation/images/proxima-1200x630.png new file mode 100644 index 0000000..a3d07e4 Binary files /dev/null and b/Assets/Proxima/Documentation/images/proxima-1200x630.png differ diff --git a/Assets/Proxima/Documentation/images/proxima-1200x630.png.meta b/Assets/Proxima/Documentation/images/proxima-1200x630.png.meta new file mode 100644 index 0000000..1451894 --- /dev/null +++ b/Assets/Proxima/Documentation/images/proxima-1200x630.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 4375202eac2734388b077d0bd92995d4 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Documentation/images/proxima_logo.png b/Assets/Proxima/Documentation/images/proxima_logo.png new file mode 100644 index 0000000..ec7e00e Binary files /dev/null and b/Assets/Proxima/Documentation/images/proxima_logo.png differ diff --git a/Assets/Proxima/Documentation/images/proxima_logo.png.meta b/Assets/Proxima/Documentation/images/proxima_logo.png.meta new file mode 100644 index 0000000..9cdd6f4 --- /dev/null +++ b/Assets/Proxima/Documentation/images/proxima_logo.png.meta @@ -0,0 +1,98 @@ +fileFormatVersion: 2 +guid: 189924640337d194095f06e2a09525ec +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + 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 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Editor.meta b/Assets/Proxima/Editor.meta new file mode 100644 index 0000000..06b004c --- /dev/null +++ b/Assets/Proxima/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 59a29e6d999c4bc4e8b634d54ba0e792 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Editor/PfxImporter.cs b/Assets/Proxima/Editor/PfxImporter.cs new file mode 100644 index 0000000..139749d --- /dev/null +++ b/Assets/Proxima/Editor/PfxImporter.cs @@ -0,0 +1,22 @@ +using UnityEngine; +using UnityEditor.AssetImporters; +using System.IO; + +#if !UNITY_2022_1_OR_NEWER + using UnityEditor.Experimental.AssetImporters; +#endif + +namespace Proxima.Editor +{ + [ScriptedImporter(1, "pfx")] + internal class PfxImporter : ScriptedImporter + { + public override void OnImportAsset(AssetImportContext ctx) + { + var asset = ScriptableObject.CreateInstance<PfxAsset>(); + asset.Bytes = File.ReadAllBytes(ctx.assetPath); + ctx.AddObjectToAsset("main obj", asset); + ctx.SetMainObject(asset); + } + } +} \ No newline at end of file diff --git a/Assets/Proxima/Editor/PfxImporter.cs.meta b/Assets/Proxima/Editor/PfxImporter.cs.meta new file mode 100644 index 0000000..8ea2590 --- /dev/null +++ b/Assets/Proxima/Editor/PfxImporter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1f0da27eff826494b99f5e680d9acda9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Editor/ProxiaWebGLBuildStep.cs b/Assets/Proxima/Editor/ProxiaWebGLBuildStep.cs new file mode 100644 index 0000000..e27abef --- /dev/null +++ b/Assets/Proxima/Editor/ProxiaWebGLBuildStep.cs @@ -0,0 +1,36 @@ +using System.IO; +using UnityEditor; +using UnityEditor.Build; +using UnityEditor.Build.Reporting; +using UnityEngine; + +namespace Proxima +{ + public class ProxiaWebGLBuildStep : IPostprocessBuildWithReport + { + public int callbackOrder { get { return 0; } } + + public void OnPostprocessBuild(BuildReport report) + { + if (report.summary.platform == BuildTarget.WebGL) + { + var staticFiles = Resources.Load<ProximaStatic>("Proxima/web"); + string destinationPath = Path.Combine(report.summary.outputPath, "StreamingAssets", "proxima"); + + if (Directory.Exists(destinationPath)) + { + Directory.Delete(destinationPath, true); + } + + foreach (var file in staticFiles.Files) + { + if (file.Path.EndsWith("/")) continue; + var filePath = Path.Combine(destinationPath, file.Path); + var dirPath = Path.GetDirectoryName(filePath); + Directory.CreateDirectory(dirPath); + File.WriteAllBytes(filePath, file.Bytes); + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Proxima/Editor/ProxiaWebGLBuildStep.cs.meta b/Assets/Proxima/Editor/ProxiaWebGLBuildStep.cs.meta new file mode 100644 index 0000000..c29c782 --- /dev/null +++ b/Assets/Proxima/Editor/ProxiaWebGLBuildStep.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 010050a2d18c3794e8e2eecb897114c0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Editor/Proxima.Editor.asmdef b/Assets/Proxima/Editor/Proxima.Editor.asmdef new file mode 100644 index 0000000..33655fa --- /dev/null +++ b/Assets/Proxima/Editor/Proxima.Editor.asmdef @@ -0,0 +1,29 @@ +{ + "name": "Proxima.Editor", + "rootNamespace": "", + "references": [ + "Proxima" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": true, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [ + { + "name": "com.unity.modules.unitywebrequest", + "expression": "", + "define": "UNITY_WEB_REQUEST" + }, + { + "name": "com.unity.xr.management", + "expression": "", + "define": "UNITY_XR_MANAGEMENT" + } + ], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/Proxima/Editor/Proxima.Editor.asmdef.meta b/Assets/Proxima/Editor/Proxima.Editor.asmdef.meta new file mode 100644 index 0000000..7b40f2b --- /dev/null +++ b/Assets/Proxima/Editor/Proxima.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d9a53cfb75d04be4bba086eb50ffed06 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Editor/ProximaCodeGen.cs b/Assets/Proxima/Editor/ProximaCodeGen.cs new file mode 100644 index 0000000..f08aec5 --- /dev/null +++ b/Assets/Proxima/Editor/ProximaCodeGen.cs @@ -0,0 +1,171 @@ +// Enable this to add editor menu items that can generate +// ProximaReflection.Generated.cs based on the contents of UnityComponents.json. +#if false + +using System; +using System.Linq; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; +using System.Reflection; + +namespace Proxima +{ + internal static class ProximaCodeGen + { + private static Dictionary<string, string[]> GetUnityComponents() + { + var components = new Dictionary<string, string[]>(); + var json = AssetDatabase.LoadAssetAtPath<TextAsset>("Assets/Proxima/Runtime/UnityComponents.json"); + var jsonText = json.text.Replace(" ", "").Replace("\r", "").Replace("\t", "").Replace("\n", ""); + var index = 0; + while (true) + { + var q1 = jsonText.IndexOf('"', index); + var q2 = jsonText.IndexOf('"', q1 + 1); + var a1 = jsonText.IndexOf('[', q2 + 1); + var a2 = jsonText.IndexOf(']', a1 + 1); + + if (q1 == -1 || q2 == -1 || a1 == -1 || a2 == -1) + { + break; + } + + var name = jsonText.Substring(q1 + 1, q2 - q1 - 1); + var properties = jsonText.Substring(a1 + 1, a2 - a1 - 1).Split(',').Select(x => x.Trim('"')).ToArray(); + components.Add(name, properties); + index = a2 + 1; + } + + return components; + } + + private static Type GetType(string name) + { + foreach (Assembly a in AppDomain.CurrentDomain.GetAssemblies()) + { + foreach (var type in a.GetTypes()) + { + if (type.IsSubclassOf(typeof(UnityEngine.Component)) && + (type.FullName == name || type.FullName.EndsWith("." + name))) + { + return type; + } + } + } + + throw new Exception("Unknown Type: " + name); + } + + private static string GeneratePropertyInfo(Type componentType, string prop, string name) + { + string define = null; + var split = prop.Split(':'); + if (split.Length > 1) + { + define = split[0]; + prop = split[1]; + } + + var s = ""; + if (define != null) + { + s += $" #if {define}" + System.Environment.NewLine; + } + + Debug.Log($"Generating {prop} for {name}"); + var propertyInfo = componentType.GetProperty(prop); + var fieldInfo = componentType.GetField(prop); + var propertyType = propertyInfo?.PropertyType ?? fieldInfo.FieldType; + var propertyTypeName = propertyType.FullName; + if (propertyType.IsGenericType) + { + Type genericType = propertyType.GetGenericTypeDefinition(); + string typeArgument = propertyType.GetGenericArguments()[0].FullName; + propertyTypeName = genericType.FullName.Split('`')[0] + "<" + typeArgument + ">"; + } + + propertyTypeName = propertyTypeName.Replace("+", "."); + + s += $" new UnityProperty {{ Name = \"{prop}\", PropertyType = typeof({propertyTypeName}), Setter = (o, v) => (({name})o).{prop} = ({propertyTypeName})v, Getter = (o) => (({name})o).{prop}, "; + + if (propertyType.IsEnum) + { + s += $"Updater = (object o, ref object v) => {{ var x = (int)(({name})o).{prop}; if (!x.Equals((int)v)) {{ v = x; return true; }} return false; }} "; + } + else if (propertyType.IsValueType) + { + s += $"Updater = (object o, ref object v) => {{ var x = (({name})o).{prop}; if (!x.Equals(({propertyTypeName})v)) {{ v = x; return true; }} return false; }} "; + } + else if (prop == "sharedMaterials") // Unity always returns a copy, so we only care if the size changes. + { + s += $"Updater = (object o, ref object v) => {{ var x = (({name})o).{prop}; if (x.Length != (({propertyTypeName})v).Length) {{ v = x; return true; }} else {{ v = x; return false; }}}} "; + } + + s += "}," + System.Environment.NewLine; + + if (define != null) + { + s += $" #endif" + System.Environment.NewLine; + } + return s; + } + + [MenuItem("Proxima/Generate Reflection File")] + private static void GenerateReflectionFile() + { + var preserveTemplate = AssetDatabase.LoadAssetAtPath<TextAsset>("Assets/Proxima/Runtime/Generated/ProximaReflection.Template.cs"); + var text = preserveTemplate.text; + var components = GetUnityComponents(); + + var code = string.Join(System.Environment.NewLine + System.Environment.NewLine, + components.Select(kv => { + var name = kv.Key; + var split = name.Split(':'); + string define = null; + if (split.Length > 1) + { + define = split[0]; + name = split[1]; + } + + var s = ""; + if (define != null) + { + s += $" #if {define}" + System.Environment.NewLine; + } + + var componentType = GetType(name); + s += $" {{ \"{componentType.FullName}\", new UnityProperty[] {{" + System.Environment.NewLine; + var enabled = componentType.GetProperty("enabled"); + foreach (var prop in kv.Value) + { + if (prop.EndsWith(":enabled")) enabled = null; // Enabled added in some version + s += GeneratePropertyInfo(componentType, prop, name); + } + + if (enabled != null) + { + s += GeneratePropertyInfo(componentType, "enabled", name); + } + + s += " }}," + System.Environment.NewLine; + + if (define != null) + { + s += $" #endif" + System.Environment.NewLine; + } + + return s; + })); + + text = text.Replace("_Template", "_Generated"); + text = text.Replace(" // <Auto-generated>" + System.Environment.NewLine, code); + var preservePath = "Assets/Proxima/Runtime/Generated/ProximaReflection.Generated.cs"; + System.IO.File.WriteAllText(preservePath, text); + AssetDatabase.Refresh(); + } + } +} + +#endif \ No newline at end of file diff --git a/Assets/Proxima/Editor/ProximaCodeGen.cs.meta b/Assets/Proxima/Editor/ProximaCodeGen.cs.meta new file mode 100644 index 0000000..0366ce5 --- /dev/null +++ b/Assets/Proxima/Editor/ProximaCodeGen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 39ebdb5539d4c48449766b47ac62b913 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Editor/ProximaInspectorEditor.cs b/Assets/Proxima/Editor/ProximaInspectorEditor.cs new file mode 100644 index 0000000..f78e663 --- /dev/null +++ b/Assets/Proxima/Editor/ProximaInspectorEditor.cs @@ -0,0 +1,105 @@ +// #define DISABLE_REMOTE + +using System; +using System.Linq; +using UnityEngine; +using UnityEditor; + +namespace Proxima.Editor +{ + [CustomEditor(typeof(ProximaInspector))] + internal class ProximaInspectorEditor : UnityEditor.Editor + { + private SerializedProperty _serverType; + private SerializedProperty _serverUrl; + private SerializedProperty _port; + private SerializedProperty _password; + private SerializedProperty _displayName; + private SerializedProperty _useHttps; + private SerializedProperty _certificate; + private SerializedProperty _certificatePassword; + private SerializedProperty _runOnEnable; + private SerializedProperty _logBufferSize; + private SerializedProperty _instantiateStatusUI; + private SerializedProperty _instantiateConnectUI; + private SerializedProperty _dontDestroyOnLoad; + private SerializedProperty _setRunInBackground; + private bool _remoteAvailable; + + void OnEnable() + { + _serverType = serializedObject.FindProperty("_serverType"); + _serverUrl = serializedObject.FindProperty("_serverUrl"); + _port = serializedObject.FindProperty("_port"); + _displayName = serializedObject.FindProperty("_displayName"); + _password = serializedObject.FindProperty("_password"); + _useHttps = serializedObject.FindProperty("_useHttps"); + _certificate = serializedObject.FindProperty("_certificate"); + _certificatePassword = serializedObject.FindProperty("_certificatePassword"); + _runOnEnable = serializedObject.FindProperty("_runOnEnable"); + _logBufferSize = serializedObject.FindProperty("_logBufferSize"); + _instantiateStatusUI = serializedObject.FindProperty("_instantiateStatusUI"); + _instantiateConnectUI = serializedObject.FindProperty("_instantiateConnectUI"); + _dontDestroyOnLoad = serializedObject.FindProperty("_dontDestroyOnLoad"); + _setRunInBackground = serializedObject.FindProperty("_setRunInBackground"); + + #if !DISABLE_REMOTE + _remoteAvailable = AppDomain.CurrentDomain.GetAssemblies().First( + assembly => assembly.GetName().Name == "Proxima").GetType("Proxima.ProximaRemoteServer") != null; + #endif + } + + public override void OnInspectorGUI() + { + serializedObject.Update(); + + EditorGUILayout.PropertyField(_displayName); + + if (_remoteAvailable) + { + EditorGUILayout.PropertyField(_serverType); + if (_serverType.enumValueIndex == (int)ProximaInspector.ServerTypes.Remote) + { + EditorGUILayout.PropertyField(_serverUrl); + } + } + + if (!_remoteAvailable || _serverType.enumValueIndex == (int)ProximaInspector.ServerTypes.Embedded) + { + EditorGUILayout.PropertyField(_port); + EditorGUILayout.PropertyField(_useHttps); + if (_useHttps.boolValue) + { + EditorGUILayout.PropertyField(_certificate, new GUIContent(" Certificate")); + if (_certificate.objectReferenceValue != null) + { + EditorGUILayout.PropertyField(_certificatePassword, new GUIContent(" Certificate Password")); + if (!string.IsNullOrWhiteSpace(_certificatePassword.stringValue)) + { + EditorGUILayout.HelpBox("Setting a password here is not recommended. " + + "Create UI for the player to set the password, and then call ProximaInspector.Run(). See the ProximaConnectUI prefab.", + MessageType.Warning); + } + } + } + } + + EditorGUILayout.PropertyField(_password); + if (!Application.isPlaying && !string.IsNullOrWhiteSpace(_password.stringValue)) + { + EditorGUILayout.HelpBox("Setting a password here is not recommended. " + + "Create UI for the player to set the password, and then call ProximaInspector.Run(). See the ProximaConnectUI prefab.", + MessageType.Warning); + } + + EditorGUILayout.PropertyField(_runOnEnable); + EditorGUILayout.PropertyField(_logBufferSize); + EditorGUILayout.PropertyField(_instantiateStatusUI); + EditorGUILayout.PropertyField(_instantiateConnectUI); + EditorGUILayout.PropertyField(_dontDestroyOnLoad); + EditorGUILayout.PropertyField(_setRunInBackground); + + serializedObject.ApplyModifiedProperties(); + } + } +} \ No newline at end of file diff --git a/Assets/Proxima/Editor/ProximaInspectorEditor.cs.meta b/Assets/Proxima/Editor/ProximaInspectorEditor.cs.meta new file mode 100644 index 0000000..3153e3f --- /dev/null +++ b/Assets/Proxima/Editor/ProximaInspectorEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 67056c62379d7d2459900cf537f23666 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Editor/ProximaMenu.cs b/Assets/Proxima/Editor/ProximaMenu.cs new file mode 100644 index 0000000..a70d961 --- /dev/null +++ b/Assets/Proxima/Editor/ProximaMenu.cs @@ -0,0 +1,359 @@ +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +using UnityEditor; +using System.Text.RegularExpressions; + +namespace Proxima.Editor +{ + [InitializeOnLoad] + internal class ProximaMenu : EditorWindow + { + private static readonly string _website = "https://www.unityproxima.com?utm_source=pxmenu"; + public static readonly string StoreLink = "https://assetstore.unity.com/packages/tools/utilities/proxima-inspector-244788?aid=1101lqSYn"; + private static readonly string _review = "https://assetstore.unity.com/packages/tools/utilities/proxima-inspector-244788#reviews"; + private static readonly string _discord = "https://discord.gg/VM9cWJ9rjH"; + private static readonly string _docs = "https://www.unityproxima.com/docs?utm_source=pxmenu"; + private static readonly string _flexalon = "https://www.flexalon.com?utm_source=pxmenu"; + + private static readonly string _showOnStartKey = "ProximaMenu_ShowOnStart"; + private static readonly string _versionKey = "ProximaMenu_Version"; + + private bool _allFeaturesInstalled = false; + + private GUIStyle _errorStyle; + private GUIStyle _buttonStyle; + private GUIStyle _bodyStyle; + private GUIStyle _versionStyle; + private GUIStyle _boldStyle; + private GUIStyle _semiboldStyle; + private GUIStyle _flexalonButtonStyle; + private GUIStyle _proStyle; + + private static ShowOnStart _showOnStart; + private static readonly string[] _showOnStartOptions = { + "Always", "On Update", "Never" + }; + + private Vector2 _scrollPosition; + + private List<string> _changelog = new List<string>(); + + private enum ShowOnStart + { + Always, + OnUpdate, + Never + } + + static ProximaMenu() + { + EditorApplication.update += OnEditorUpdate; + } + + private static void OnEditorUpdate() + { + EditorApplication.update -= OnEditorUpdate; + Initialize(); + } + + internal static void Initialize() + { + var shownKey = "ProximaMenuShown"; + bool alreadyShown = SessionState.GetBool(shownKey, false); + SessionState.SetBool(shownKey, true); + + var version = WindowUtil.GetVersion(); + var lastVersion = EditorPrefs.GetString(_versionKey, "0.0.0"); + var newVersion = version.CompareTo(lastVersion) > 0; + if (newVersion) + { + EditorPrefs.SetString(_versionKey, version); + alreadyShown = false; + } + + _showOnStart = (ShowOnStart)EditorPrefs.GetInt(_showOnStartKey, 0); + bool showPref = _showOnStart == ShowOnStart.Always || + (_showOnStart == ShowOnStart.OnUpdate && newVersion); + if (!EditorApplication.isPlayingOrWillChangePlaymode && !alreadyShown && showPref && !Application.isBatchMode) + { + StartScreen(); + } + + if (!EditorApplication.isPlayingOrWillChangePlaymode && ProximaSurvey.ShouldAsk()) + { + ProximaSurvey.ShowSurvey(); + } + } + + [MenuItem("Tools/Proxima/Start Screen")] + public static void StartScreen() + { + ProximaMenu window = GetWindow<ProximaMenu>(true, "Proxima Start Screen", true); + window.minSize = new Vector2(800, 600); + window.maxSize = window.minSize; + window.Show(); + } + + [MenuItem("Tools/Proxima/Website")] + public static void OpenStore() + { + Application.OpenURL(_website); + } + + [MenuItem("Tools/Proxima/Write a Review")] + public static void OpenReview() + { + Application.OpenURL(_review); + } + + [MenuItem("Tools/Proxima/Support (Discord)")] + public static void OpenSupport() + { + Application.OpenURL(_discord); + } + + private void InitStyles() + { + if (_bodyStyle != null) return; + + _bodyStyle = new GUIStyle(EditorStyles.label); + _bodyStyle.wordWrap = true; + _bodyStyle.fontSize = 14; + _bodyStyle.margin.left = 10; + _bodyStyle.margin.top = 10; + _bodyStyle.stretchWidth = false; + _bodyStyle.richText = true; + + _boldStyle = new GUIStyle(_bodyStyle); + _boldStyle.fontStyle = FontStyle.Bold; + _boldStyle.fontSize = 16; + + _semiboldStyle = new GUIStyle(_bodyStyle); + _semiboldStyle.fontStyle = FontStyle.Bold; + + _errorStyle = new GUIStyle(_bodyStyle); + _errorStyle.fontStyle = FontStyle.Bold; + _errorStyle.margin.top = 10; + _errorStyle.normal.textColor = new Color(1, 0.2f, 0); + + _buttonStyle = new GUIStyle(_bodyStyle); + _buttonStyle.fontSize = 14; + _buttonStyle.margin.bottom = 5; + _buttonStyle.padding.top = 5; + _buttonStyle.padding.left = 10; + _buttonStyle.padding.right = 10; + _buttonStyle.padding.bottom = 5; + _buttonStyle.hover.background = Texture2D.grayTexture; + _buttonStyle.hover.textColor = Color.white; + _buttonStyle.active.background = Texture2D.grayTexture; + _buttonStyle.active.textColor = Color.white; + _buttonStyle.focused.background = Texture2D.grayTexture; + _buttonStyle.focused.textColor = Color.white; + _buttonStyle.normal.background = Texture2D.grayTexture; + _buttonStyle.normal.textColor = Color.white; + _buttonStyle.wordWrap = false; + _buttonStyle.stretchWidth = false; + + _versionStyle = new GUIStyle(EditorStyles.label); + _versionStyle.padding.right = 10; + + _flexalonButtonStyle = new GUIStyle(_buttonStyle); + _flexalonButtonStyle.normal.background = Texture2D.blackTexture; + _flexalonButtonStyle.hover.background = Texture2D.blackTexture; + _flexalonButtonStyle.focused.background = Texture2D.blackTexture; + _flexalonButtonStyle.active.background = Texture2D.blackTexture; + _flexalonButtonStyle.padding.left = 0; + _flexalonButtonStyle.padding.right = 0; + _flexalonButtonStyle.padding.bottom = 0; + _flexalonButtonStyle.padding.top = 0; + _flexalonButtonStyle.margin.bottom = 10; + + _proStyle = new GUIStyle(_buttonStyle); + _proStyle.normal.background = new Texture2D(1, 1); + _proStyle.normal.background.SetPixel(0, 0, new Color(.94f, .42f, .13f)); + _proStyle.normal.background.Apply(); + _proStyle.hover.background = _proStyle.normal.background; + _proStyle.focused.background = _proStyle.normal.background; + _proStyle.active.background = _proStyle.normal.background; + _proStyle.normal.textColor = Color.white; + _proStyle.fontStyle = FontStyle.Bold; + + WindowUtil.CenterOnEditor(this); + + ReadChangeLog(); + + _allFeaturesInstalled = ProximaFeatures.AllFeaturesInstalled(); + } + + private void ReadChangeLog() + { + _changelog.Clear(); + var changelogPath = AssetDatabase.GUIDToAssetPath("53c7cf36ddcf17b4da75df27231f866e"); + var changelogAsset = AssetDatabase.LoadAssetAtPath<TextAsset>(changelogPath); + _changelog = changelogAsset.text.Split('\n') + .Select(x => Regex.Replace(x.TrimEnd(), @"\*\*(.*?)\*\*", "<b>$1</b>")) + .Where(x => !string.IsNullOrEmpty(x)) + .ToList(); + var start = _changelog.FindIndex(l => l.StartsWith("## ")); + _changelog = _changelog.GetRange(start, _changelog.Count - start); + } + + private void LinkButton(string label, string url, GUIStyle style = null, int width = 170) + { + if (style == null) style = _buttonStyle; + var labelContent = new GUIContent(label); + var position = GUILayoutUtility.GetRect(width, 35, style); + EditorGUIUtility.AddCursorRect(position, MouseCursor.Link); + if (GUI.Button(position, labelContent, style)) + { + Application.OpenURL(url); + } + } + + private bool Button(string label, GUIStyle style = null, int width = 170) + { + if (style == null) style = _buttonStyle; + var labelContent = new GUIContent(label); + var position = GUILayoutUtility.GetRect(width, 35, style); + EditorGUIUtility.AddCursorRect(position, MouseCursor.Link); + return GUI.Button(position, labelContent, style); + } + + private void Bullet(string text) + { + var ws = 1 + text.IndexOf('-'); + EditorGUILayout.BeginHorizontal(); + for (int i = 0; i < ws; i++) + { + GUILayout.Space(10); + } + GUILayout.Label("•", _bodyStyle); + + GUILayout.Label(text.Substring(ws + 1), _bodyStyle, GUILayout.ExpandWidth(true)); + + EditorGUILayout.EndHorizontal(); + } + + private void WhatsNew() + { + EditorGUILayout.Space(); + EditorGUILayout.Space(); + GUILayout.Label("What's New in Proxima", _boldStyle); + EditorGUILayout.Space(); + + for (int i = 0; i < _changelog.Count; i++) + { + var line = _changelog[i]; + if (line.StartsWith("###")) + { + EditorGUILayout.Space(); + GUILayout.Label(line.Substring(4), _semiboldStyle); + EditorGUILayout.Space(); + } + else if (line.StartsWith("##")) + { + EditorGUILayout.Space(); + GUILayout.Label(line.Substring(3), _boldStyle); + EditorGUILayout.Space(); + } + else + { + Bullet(line); + EditorGUILayout.Space(); + } + } + + EditorGUILayout.Space(); + } + + private void OnGUI() + { + InitStyles(); + + GUILayout.BeginHorizontal("In BigTitle", GUILayout.ExpandWidth(true)); + { + WindowUtil.DrawProximaIcon(128); + GUILayout.FlexibleSpace(); + GUILayout.Label("Version: " + WindowUtil.GetVersion(), _versionStyle, GUILayout.ExpandHeight(true)); + } + GUILayout.EndHorizontal(); + + GUILayout.BeginHorizontal(GUILayout.ExpandHeight(true)); + { + GUILayout.BeginVertical(); + { + GUILayout.Label("Resources", _boldStyle); + LinkButton("Discord Invite", _discord); + LinkButton("Documentation", _docs); + LinkButton("Write a Review", _review); + if (!_allFeaturesInstalled) + { + LinkButton("Upgrade to Pro", _website, _proStyle); + } + + if (!ProximaSurvey.Completed) + { + if (Button("Feedback")) + { + ProximaSurvey.ShowSurvey(); + } + } + + GUILayout.FlexibleSpace(); + GUILayout.Label("More Tools", _boldStyle); + if (WindowUtil.DrawFlexalonButton(128, _flexalonButtonStyle)) + { + Application.OpenURL(_flexalon); + } + + EditorGUIUtility.AddCursorRect(GUILayoutUtility.GetLastRect(), MouseCursor.Link); + } + GUILayout.EndVertical(); + + EditorGUILayout.Separator(); + + GUILayout.BeginVertical(); + { + _scrollPosition = GUILayout.BeginScrollView(_scrollPosition); + + GUILayout.Label("Thank you for using Proxima Inspector!", _boldStyle); + + EditorGUILayout.Space(); + + GUILayout.Label("You're invited to join the Discord community for support and feedback. Let me know how to make Proxima better for you!", _bodyStyle); + + EditorGUILayout.Space(); + EditorGUILayout.Space(); + GUILayout.BeginVertical(EditorStyles.helpBox); + { + GUILayout.Label("If you enjoy Proxima, please consider writing a review. It helps a ton!", _bodyStyle); + EditorGUILayout.Space(); + } + GUILayout.EndVertical(); + + WhatsNew(); + + EditorGUILayout.EndScrollView(); + } + GUILayout.EndVertical(); + EditorGUILayout.Space(); + } + GUILayout.EndHorizontal(); + + GUILayout.BeginHorizontal("In BigTitle", GUILayout.ExpandHeight(true)); + { + GUILayout.Label("Tools/Proxima/Start Screen"); + GUILayout.FlexibleSpace(); + GUILayout.Label("Show On Start: "); + var newShowOnStart = (ShowOnStart)EditorGUILayout.Popup((int)_showOnStart, _showOnStartOptions); + if (_showOnStart != newShowOnStart) + { + _showOnStart = newShowOnStart; + EditorPrefs.SetInt(_showOnStartKey, (int)_showOnStart); + } + } + GUILayout.EndHorizontal(); + } + } +} \ No newline at end of file diff --git a/Assets/Proxima/Editor/ProximaMenu.cs.meta b/Assets/Proxima/Editor/ProximaMenu.cs.meta new file mode 100644 index 0000000..b3efcba --- /dev/null +++ b/Assets/Proxima/Editor/ProximaMenu.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0adebfc0bc2e0894cb1c428bc9e0901b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Editor/ProximaStaticImporter.cs b/Assets/Proxima/Editor/ProximaStaticImporter.cs new file mode 100644 index 0000000..cc03d7e --- /dev/null +++ b/Assets/Proxima/Editor/ProximaStaticImporter.cs @@ -0,0 +1,77 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Compression; +using UnityEngine; +using UnityEditor.AssetImporters; + +#if !UNITY_2022_1_OR_NEWER + using UnityEditor.Experimental.AssetImporters; +#endif + +namespace Proxima.Editor +{ + [ScriptedImporter(1, "proximastatic")] + internal class ProximaStaticImporter : ScriptedImporter + { + // Custom ZIP file importer because ZipFile isn't supported on older Unity versions. + public override void OnImportAsset(AssetImportContext ctx) + { + var asset = ScriptableObject.CreateInstance<ProximaStatic>(); + asset.Files = new List<ProximaStatic.StaticFile>(); + var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); + + var data = File.ReadAllBytes(ctx.assetPath); + var br = new BinaryReader(new MemoryStream(data)); + br.ReadByte(); // extra byte + + while (true) + { + var sig = br.ReadInt32(); // signature + if (sig != 0x04034b50) + { + break; + } + + br.ReadInt16(); // version + br.ReadInt16(); // flags + br.ReadInt16(); // compression + var lastModifiedTime = br.ReadUInt16(); // last modified time + var lastModifiedDate = br.ReadUInt16(); // last modified date + br.ReadInt32(); // crc32 + var compressedSize = br.ReadInt32(); // compressed size + var uncompressedSize = br.ReadInt32(); // uncompressed size + var nameLength = br.ReadUInt16(); + var extraLength = br.ReadUInt16(); + var name = new string(br.ReadChars(nameLength)); + var extra = br.ReadBytes(extraLength); + + var compressedData = br.ReadBytes(compressedSize); + var uncompressedData = new byte[uncompressedSize]; + using (var deflateStream = new DeflateStream(new MemoryStream(compressedData), CompressionMode.Decompress)) + { + deflateStream.Read(uncompressedData, 0, uncompressedSize); + } + + var entry = new ProximaStatic.StaticFile(); + entry.Path = name.Replace('\\', '/'); + entry.Bytes = uncompressedData; + + var lastModified = new DateTime( + 1980 + (lastModifiedDate >> 9), + (lastModifiedDate >> 5) & 0xF, + lastModifiedDate & 0x1F, + lastModifiedTime >> 11, + (lastModifiedTime >> 5) & 0x3F, + (lastModifiedTime & 0x1F) << 1); + + entry.LastModified = (long)(lastModified - epoch).TotalMilliseconds; + + asset.Files.Add(entry); + } + + ctx.AddObjectToAsset("main obj", asset); + ctx.SetMainObject(asset); + } + } +} \ No newline at end of file diff --git a/Assets/Proxima/Editor/ProximaStaticImporter.cs.meta b/Assets/Proxima/Editor/ProximaStaticImporter.cs.meta new file mode 100644 index 0000000..142e168 --- /dev/null +++ b/Assets/Proxima/Editor/ProximaStaticImporter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6516416497f676b4aba8328116af0c65 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Editor/ProximaSurvey.cs b/Assets/Proxima/Editor/ProximaSurvey.cs new file mode 100644 index 0000000..4251133 --- /dev/null +++ b/Assets/Proxima/Editor/ProximaSurvey.cs @@ -0,0 +1,291 @@ +using System; +using System.Linq; +using UnityEditor; +using UnityEngine; +using UnityEngine.Networking; + +namespace Proxima.Editor +{ + internal class ProximaSurvey : EditorWindow + { + private struct SurveyData + { + public string version; + public string unityVersion; + public string buildTarget; + public string xr; + public int experience; + public string benefits; + public string improvements; + public string features; + } + + private enum SurveyState + { + Ask, + DontAsk, + Completed + } + + private enum XRType + { + None, + XRI, + Oculus + } + + private static readonly string[] _options = new string[] { "Very Disappointed", "Somewhat Disappointed", "Not Disappointed" }; + private static readonly Vector2 _initialSize = new Vector2(580, 220); + private static readonly Vector2 _expandedSize = new Vector2(580, 540); + private static readonly string _stateKey = "ProximaSurveyState"; + private static readonly string _dateKey = "ProximaSurveyDate"; + private static readonly string _attemptKey = "ProximaSurveyAttempt"; + private static readonly TimeSpan _askFrequency = new TimeSpan(3, 0, 0, 0); + + private GUIStyle _bodyStyle; + private GUIStyle _boldStyle; + private GUIStyle _toggleStyle; + private GUIStyle _buttonStyle; + private GUIStyle _dontAskButtonStyle; + private GUIStyle _textAreaStyle; + private SurveyData _surveyData; + + public static bool Completed => EditorPrefs.GetInt(_stateKey, 0) == (int)SurveyState.Completed; + + public static bool ShouldAsk() + { + if (SessionState.GetBool(_attemptKey, false)) + { + return false; + } + + SessionState.SetBool(_attemptKey, true); + + if (EditorPrefs.GetInt(_stateKey, 0) != (int)SurveyState.Ask) + { + return false; + } + + if (!EditorPrefs.HasKey(_dateKey)) + { + EditorPrefs.SetString(_dateKey, DateTime.Now.ToBinary().ToString()); + return false; + } + + var lastAsked = DateTime.FromBinary(Convert.ToInt64(EditorPrefs.GetString(_dateKey, "0"))); + if (DateTime.Now - lastAsked < _askFrequency) + { + return false; + } + + return true; + } + + public static void ShowSurvey() + { + var window = GetWindow<ProximaSurvey>(true, "Proxima Feedback", true); + window.Show(); + } + + private static string GetXRSettings() + { + #if UNITY_XR_MANAGEMENT + return "XR"; + #else + return "none"; + #endif + } + + private void Init() + { + if (_surveyData.version != null) return; + + _bodyStyle = new GUIStyle(EditorStyles.label); + _bodyStyle.wordWrap = true; + _bodyStyle.fontSize = 14; + _bodyStyle.margin.left = 10; + _bodyStyle.margin.bottom = 10; + _bodyStyle.stretchWidth = false; + _bodyStyle.alignment = TextAnchor.MiddleCenter; + + _boldStyle = new GUIStyle(_bodyStyle); + _boldStyle.fontStyle = FontStyle.Bold; + + _toggleStyle = new GUIStyle(EditorStyles.miniButton); + _toggleStyle.margin = new RectOffset(10, 10, 10, 10); + _toggleStyle.fixedHeight = 45; + _toggleStyle.fixedWidth = 180; + _toggleStyle.fontSize = 14; + _toggleStyle.alignment = TextAnchor.MiddleCenter; + + _buttonStyle = new GUIStyle(EditorStyles.miniButton); + _buttonStyle.margin = new RectOffset(10, 10, 10, 10); + _buttonStyle.fixedHeight = 35; + _buttonStyle.fixedWidth = 170; + _buttonStyle.fontSize = 14; + _buttonStyle.alignment = TextAnchor.MiddleCenter; + + _dontAskButtonStyle = new GUIStyle(EditorStyles.miniButton); + _dontAskButtonStyle.normal.background = null; + _dontAskButtonStyle.margin = new RectOffset(10, 10, 10, 10); + _dontAskButtonStyle.fixedWidth = 110; + + _textAreaStyle = new GUIStyle(EditorStyles.textArea); + _textAreaStyle.margin.left = 10; + _textAreaStyle.margin.right = 10; + + this.titleContent = new GUIContent("Proxima Feedback"); + + this.minSize = this.maxSize = _expandedSize; + WindowUtil.CenterOnEditor(this); + + _surveyData = new SurveyData + { + version = WindowUtil.GetVersion(), + unityVersion = Application.unityVersion, + buildTarget = EditorUserBuildSettings.activeBuildTarget.ToString(), + xr = GetXRSettings(), + experience = -1, + benefits = "", + improvements = "", + features = string.Join(",", ProximaFeatures.GetInstalledFeatures()) + }; + + EditorPrefs.SetString(_dateKey, DateTime.Now.ToBinary().ToString()); + } + + private int ToggleGroup(int selected, string[] options) + { + int newSelected = selected; + EditorGUILayout.BeginHorizontal(); + + for (int i = 0; i < options.Length; i++) + { + var option = options[i]; + if (GUILayout.Toggle(selected == i, option, _toggleStyle)) + { + newSelected = i; + } + + if (i < options.Length - 1) + { + GUILayout.FlexibleSpace(); + } + } + + EditorGUILayout.EndHorizontal(); + return newSelected; + } + + private void OnGUI() + { + Init(); + + EditorGUILayout.BeginVertical(); + + GUILayout.FlexibleSpace(); + + EditorGUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + WindowUtil.DrawProximaIcon(128); + GUILayout.FlexibleSpace(); + EditorGUILayout.EndHorizontal(); + + GUILayout.FlexibleSpace(); + + GUILayout.Label("Please help improve Proxima by answering 3 quick questions.", _boldStyle); + + GUILayout.Label("How would you feel if you could no longer use Proxima Inspector?", _bodyStyle); + + _surveyData.experience = ToggleGroup(_surveyData.experience, _options); + + if (_surveyData.experience == -1) + { + this.minSize = this.maxSize = _initialSize; + + GUILayout.FlexibleSpace(); + EditorGUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + if (GUILayout.Button("Ask me later", _dontAskButtonStyle)) + { + Close(); + } + if (GUILayout.Button("Don't ask again", _dontAskButtonStyle)) + { + EditorPrefs.SetInt(_stateKey, (int)SurveyState.DontAsk); + Close(); + } + EditorGUILayout.EndHorizontal(); + } + else if (_surveyData.experience == 0 || _surveyData.experience == 1) + { + this.minSize = this.maxSize = _expandedSize; + + GUILayout.FlexibleSpace(); + + GUILayout.Label("What is the main benefit you get from Proxima?", _bodyStyle); + _surveyData.benefits = GUILayout.TextArea(_surveyData.benefits, _textAreaStyle, GUILayout.Height(100)); + + GUILayout.FlexibleSpace(); + + GUILayout.Label("How can Proxima be improved for you?", _bodyStyle); + _surveyData.improvements = GUILayout.TextArea(_surveyData.improvements, _textAreaStyle, GUILayout.Height(100)); + + GUILayout.FlexibleSpace(); + + EditorGUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + if (GUILayout.Button("Send Feedback", _buttonStyle)) + { + SendSurvey(); + Close(); + } + GUILayout.FlexibleSpace(); + EditorGUILayout.EndHorizontal(); + GUILayout.FlexibleSpace(); + } + else + { + SendSurvey(); + Close(); + } + + EditorGUILayout.EndVertical(); + } + + private void SendSurvey() + { + #if UNITY_WEB_REQUEST + var request = new UnityWebRequest("https://www.unityproxima.com/api/survey", UnityWebRequest.kHttpVerbPOST); + request.SetRequestHeader("Content-Type", "application/json"); + request.SetRequestHeader("Accept", "application/json"); + + var json = JsonUtility.ToJson(_surveyData); + var jsonData = System.Text.Encoding.UTF8.GetBytes(json); + request.uploadHandler = new UploadHandlerRaw(jsonData); + request.downloadHandler = new DownloadHandlerBuffer(); + + request.SendWebRequest().completed += op => { + if (request.responseCode == 200) + { + Debug.Log("Proxima feedback sent successfully."); + EditorPrefs.SetInt(_stateKey, (int)SurveyState.Completed); + } + else if (request.responseCode == 400) + { + Debug.LogError("Failed to send Proxima feedback: " + request.downloadHandler.text); + } + else + { + Debug.LogError("Failed to send Proxima feedback: " + request.error); + + } + + request.Dispose(); + }; + #else + EditorPrefs.SetInt(_stateKey, (int)SurveyState.Completed); + #endif + } + } +} \ No newline at end of file diff --git a/Assets/Proxima/Editor/ProximaSurvey.cs.meta b/Assets/Proxima/Editor/ProximaSurvey.cs.meta new file mode 100644 index 0000000..b23669b --- /dev/null +++ b/Assets/Proxima/Editor/ProximaSurvey.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a4f11a266676b874baaa1a04f3d9b57d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Editor/WindowUtil.cs b/Assets/Proxima/Editor/WindowUtil.cs new file mode 100644 index 0000000..0f6dc5d --- /dev/null +++ b/Assets/Proxima/Editor/WindowUtil.cs @@ -0,0 +1,65 @@ +using System.IO; +using System.Text.RegularExpressions; +using UnityEditor; +using UnityEngine; + +namespace Proxima.Editor +{ + internal static class WindowUtil + { + private static readonly string _projectMeta = "55a7fa332ffadb5489464312015b3ea8"; + + private static string _version; + + private static Texture2D _flexalonIcon; + private static Texture2D _proximaIcon; + + public static void CenterOnEditor(EditorWindow window) + { +#if UNITY_2020_1_OR_NEWER + var main = EditorGUIUtility.GetMainWindowPosition(); + var pos = window.position; + float w = (main.width - pos.width) * 0.5f; + float h = (main.height - pos.height) * 0.5f; + pos.x = main.x + w; + pos.y = main.y + h; + window.position = pos; +#endif + } + + public static string GetVersion() + { + if (_version == null) + { + var version = AssetDatabase.GUIDToAssetPath(_projectMeta); + var lines = File.ReadAllText(version); + var rx = new Regex("\"version\": \"(.*?)\""); + _version = rx.Match(lines).Groups[1].Value; + } + + return _version; + } + + public static void DrawProximaIcon(float width) + { + if (!_proximaIcon) + { + var proximaIconPath = AssetDatabase.GUIDToAssetPath("834e6e3f5b2f6fd479051cdddf01f4b1"); + _proximaIcon = AssetDatabase.LoadAssetAtPath<Texture2D>(proximaIconPath); + } + + GUILayout.Label(_proximaIcon, GUILayout.Width(width), GUILayout.Height(width * 0.361f)); + } + + public static bool DrawFlexalonButton(float width, GUIStyle style) + { + if (!_flexalonIcon) + { + var flexalonIconPath = AssetDatabase.GUIDToAssetPath("9c4086f38f8e37949978f4861eee5e47"); + _flexalonIcon = AssetDatabase.LoadAssetAtPath<Texture2D>(flexalonIconPath); + } + + return GUILayout.Button(_flexalonIcon, style, GUILayout.Width(width), GUILayout.Height(width * 0.337f)); + } + } +} \ No newline at end of file diff --git a/Assets/Proxima/Editor/WindowUtil.cs.meta b/Assets/Proxima/Editor/WindowUtil.cs.meta new file mode 100644 index 0000000..d85babf --- /dev/null +++ b/Assets/Proxima/Editor/WindowUtil.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: defbb05a48417014db7a3b648301589f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Resources.meta b/Assets/Proxima/Resources.meta new file mode 100644 index 0000000..d3a5bc0 --- /dev/null +++ b/Assets/Proxima/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 491cf33b47555d146a06fb469fa04ec4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Resources/Proxima.meta b/Assets/Proxima/Resources/Proxima.meta new file mode 100644 index 0000000..4b57e14 --- /dev/null +++ b/Assets/Proxima/Resources/Proxima.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3670bf5fdf86dbd478e07e686609a9bb +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Resources/Proxima/ProximaConnectUI.prefab b/Assets/Proxima/Resources/Proxima/ProximaConnectUI.prefab new file mode 100644 index 0000000..11a8f90 --- /dev/null +++ b/Assets/Proxima/Resources/Proxima/ProximaConnectUI.prefab @@ -0,0 +1,3652 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &569804905908000276 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5458769199638732725} + - component: {fileID: 735882090013019384} + - component: {fileID: 7728234179712220192} + m_Layer: 5 + m_Name: ErrorLabel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &5458769199638732725 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 569804905908000276} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5730519545173937017} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 50, y: -197.8} + m_SizeDelta: {x: 200, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &735882090013019384 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 569804905908000276} + m_CullTransparentMesh: 1 +--- !u!114 &7728234179712220192 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 569804905908000276} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: ' This is an error message' + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4280463343 + m_fontColor: {r: 1, g: 0.06321794, b: 0, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 16 + m_fontSizeBase: 16 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 20, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &1156726917020561994 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2134962388910284285} + - component: {fileID: 6019263774383728219} + - component: {fileID: 8356759652832176599} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2134962388910284285 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1156726917020561994} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8796051085852281885} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6019263774383728219 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1156726917020561994} + m_CullTransparentMesh: 0 +--- !u!114 &8356759652832176599 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1156726917020561994} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "http://127.0.0.1:1234\u200B" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281833205 + m_fontColor: {r: 0.9607844, g: 0.5882353, b: 0.21568629, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 16 + m_fontSizeBase: 16 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 1 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 1 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &1331971439159929485 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3932976921392369732} + - component: {fileID: 7462444496516620357} + - component: {fileID: 5267961878509552381} + - component: {fileID: 8225341106628767009} + m_Layer: 5 + m_Name: ConnectInfo + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3932976921392369732 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1331971439159929485} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8796051085852281885} + m_Father: {fileID: 5730519545150539365} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 50, y: -175} + m_SizeDelta: {x: 1000, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7462444496516620357 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1331971439159929485} + m_CullTransparentMesh: 0 +--- !u!114 &5267961878509552381 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1331971439159929485} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.21960786, g: 0.21960786, b: 0.21960786, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &8225341106628767009 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1331971439159929485} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2da0c512f12947e489f739169773d7ca, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 5267961878509552381} + m_TextViewport: {fileID: 8796051085852281885} + m_TextComponent: {fileID: 8356759652832176599} + m_Placeholder: {fileID: 5967697969203925976} + m_VerticalScrollbar: {fileID: 0} + m_VerticalScrollbarEventHandler: {fileID: 0} + m_LayoutGroup: {fileID: 0} + m_ScrollSensitivity: 1 + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_HideSoftKeyboard: 0 + m_CharacterValidation: 0 + m_RegexValue: + m_GlobalPointSize: 16 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnSubmit: + m_PersistentCalls: + m_Calls: [] + m_OnSelect: + m_PersistentCalls: + m_Calls: [] + m_OnDeselect: + m_PersistentCalls: + m_Calls: [] + m_OnTextSelection: + m_PersistentCalls: + m_Calls: [] + m_OnEndTextSelection: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_OnTouchScreenKeyboardStatusChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0, g: 0, b: 0, a: 0.7529412} + m_Text: http://127.0.0.1:1234 + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 1 + m_RichText: 1 + m_GlobalFontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_OnFocusSelectAll: 1 + m_ResetOnDeActivation: 1 + m_RestoreOriginalTextOnEscape: 1 + m_isRichTextEditingAllowed: 0 + m_LineLimit: 0 + m_InputValidator: {fileID: 0} +--- !u!1 &3779389475628954029 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8796051085852281885} + - component: {fileID: 4755908764525431782} + m_Layer: 5 + m_Name: Text Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8796051085852281885 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3779389475628954029} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5108289817526276615} + - {fileID: 2134962388910284285} + m_Father: {fileID: 3932976921392369732} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &4755908764525431782 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3779389475628954029} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3312d7739989d2b4e91e6319e9a96d76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: {x: 0, y: 0, z: 0, w: 0} + m_Softness: {x: 0, y: 0} +--- !u!1 &4116092740157814096 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5108289817526276615} + - component: {fileID: 7808802486986557843} + - component: {fileID: 5967697969203925976} + - component: {fileID: 5943097408013442455} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5108289817526276615 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4116092740157814096} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8796051085852281885} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7808802486986557843 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4116092740157814096} + m_CullTransparentMesh: 0 +--- !u!114 &5967697969203925976 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4116092740157814096} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Enter text... + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 2150773298 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 16 + m_fontSizeBase: 16 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 2 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 1 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 1 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!114 &5943097408013442455 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4116092740157814096} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &4257329452941458363 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7320836924272747997} + m_Layer: 5 + m_Name: Spacer (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7320836924272747997 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4257329452941458363} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5730519545150539365} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 50, y: -250} + m_SizeDelta: {x: 100, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4311849153598347656 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7988148174635410369} + - component: {fileID: 1661971290014550374} + - component: {fileID: 147797468522509480} + - component: {fileID: 3093772455502354858} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7988148174635410369 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4311849153598347656} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5730519545217509605} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: -30, y: 60} + m_SizeDelta: {x: 32, y: 32} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1661971290014550374 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4311849153598347656} + m_CullTransparentMesh: 1 +--- !u!114 &147797468522509480 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4311849153598347656} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 84dd31c6b1180460789ddc5fc0620856, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &3093772455502354858 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4311849153598347656} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 147797468522509480} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &5730519544506166042 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5730519544506166041} + - component: {fileID: 5730519544506166047} + - component: {fileID: 5730519544506166040} + m_Layer: 5 + m_Name: StatusLabel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5730519544506166041 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519544506166042} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5730519545150539365} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 50, y: -125} + m_SizeDelta: {x: 280, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5730519544506166047 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519544506166042} + m_CullTransparentMesh: 1 +--- !u!114 &5730519544506166040 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519544506166042} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Proxima is Running + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 16 + m_fontSizeBase: 16 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 20, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &5730519544691981042 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5730519544691981041} + - component: {fileID: 5730519544691981047} + - component: {fileID: 5730519544691981040} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &5730519544691981041 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519544691981042} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5730519545173937017} + - {fileID: 5730519545150539365} + m_Father: {fileID: 5730519545217509605} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5730519544691981047 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519544691981042} + m_CullTransparentMesh: 1 +--- !u!114 &5730519544691981040 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519544691981042} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.21698111, g: 0.21698111, b: 0.21698111, a: 0.9137255} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &5730519544763499743 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5730519544763499742} + - component: {fileID: 5730519544763499731} + - component: {fileID: 5730519544763499740} + - component: {fileID: 5730519544763499741} + m_Layer: 5 + m_Name: DisplayNameInput + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5730519544763499742 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519544763499743} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5730519544969120614} + m_Father: {fileID: 5730519545173937017} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 50, y: -157.8} + m_SizeDelta: {x: 280, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5730519544763499731 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519544763499743} + m_CullTransparentMesh: 1 +--- !u!114 &5730519544763499740 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519544763499743} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.8584906, g: 0.8584906, b: 0.8584906, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &5730519544763499741 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519544763499743} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2da0c512f12947e489f739169773d7ca, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 5730519544763499740} + m_TextViewport: {fileID: 5730519544969120614} + m_TextComponent: {fileID: 5730519545569659411} + m_Placeholder: {fileID: 5730519545977023131} + m_VerticalScrollbar: {fileID: 0} + m_VerticalScrollbarEventHandler: {fileID: 0} + m_LayoutGroup: {fileID: 0} + m_ScrollSensitivity: 1 + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_HideSoftKeyboard: 0 + m_CharacterValidation: 0 + m_RegexValue: + m_GlobalPointSize: 14 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnSubmit: + m_PersistentCalls: + m_Calls: [] + m_OnSelect: + m_PersistentCalls: + m_Calls: [] + m_OnDeselect: + m_PersistentCalls: + m_Calls: [] + m_OnTextSelection: + m_PersistentCalls: + m_Calls: [] + m_OnEndTextSelection: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_OnTouchScreenKeyboardStatusChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: MyTestApp + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_RichText: 1 + m_GlobalFontAsset: {fileID: 0} + m_OnFocusSelectAll: 1 + m_ResetOnDeActivation: 1 + m_RestoreOriginalTextOnEscape: 1 + m_isRichTextEditingAllowed: 0 + m_LineLimit: 0 + m_InputValidator: {fileID: 0} +--- !u!1 &5730519544782553062 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5730519544782553061} + m_Layer: 5 + m_Name: Spacer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5730519544782553061 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519544782553062} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5730519545150539365} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 50, y: -200} + m_SizeDelta: {x: 100, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &5730519544870041898 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5730519544870041897} + - component: {fileID: 5730519544870041896} + m_Layer: 5 + m_Name: Text Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5730519544870041897 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519544870041898} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5730519545248126254} + - {fileID: 5730519546101261994} + m_Father: {fileID: 5730519546039280235} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &5730519544870041896 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519544870041898} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3312d7739989d2b4e91e6319e9a96d76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: {x: -8, y: -5, z: -8, w: -5} + m_Softness: {x: 0, y: 0} +--- !u!1 &5730519544870476725 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5730519544870476724} + - component: {fileID: 5730519544870476714} + - component: {fileID: 5730519544870476715} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5730519544870476724 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519544870476725} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5730519546215868953} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5730519544870476714 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519544870476725} + m_CullTransparentMesh: 1 +--- !u!114 &5730519544870476715 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519544870476725} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Start + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281479730 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 16 + m_fontSizeBase: 16 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &5730519544880200502 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5730519544880200501} + - component: {fileID: 5730519544880200490} + - component: {fileID: 5730519544880200491} + - component: {fileID: 5730519544880200500} + m_Layer: 5 + m_Name: StopButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5730519544880200501 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519544880200502} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5730519545508721172} + m_Father: {fileID: 5730519545150539365} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 50, y: -275} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5730519544880200490 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519544880200502} + m_CullTransparentMesh: 1 +--- !u!114 &5730519544880200491 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519544880200502} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0.6107548, b: 0.2216981, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &5730519544880200500 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519544880200502} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 5730519544880200491} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &5730519544969120615 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5730519544969120614} + - component: {fileID: 5730519544969120613} + m_Layer: 5 + m_Name: Text Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5730519544969120614 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519544969120615} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5730519545977023077} + - {fileID: 5730519545569659420} + m_Father: {fileID: 5730519544763499742} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &5730519544969120613 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519544969120615} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3312d7739989d2b4e91e6319e9a96d76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: {x: -8, y: -5, z: -8, w: -5} + m_Softness: {x: 0, y: 0} +--- !u!1 &5730519545130162201 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5730519545130162200} + - component: {fileID: 5730519545130162206} + - component: {fileID: 5730519545130162207} + m_Layer: 5 + m_Name: PasswordLabel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5730519545130162200 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519545130162201} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5730519545173937017} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 50, y: -197.8} + m_SizeDelta: {x: 200, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5730519545130162206 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519545130162201} + m_CullTransparentMesh: 1 +--- !u!114 &5730519545130162207 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519545130162201} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Password + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4280463343 + m_fontColor: {r: 0.9372549, g: 0.6862745, b: 0.13333334, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 16 + m_fontSizeBase: 16 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 20, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &5730519545150539366 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5730519545150539365} + - component: {fileID: 5730519545150539364} + m_Layer: 5 + m_Name: StartedUI + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &5730519545150539365 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519545150539366} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5730519545950333496} + - {fileID: 5730519544506166041} + - {fileID: 129232744442488311} + - {fileID: 3932976921392369732} + - {fileID: 5730519544782553061} + - {fileID: 6598228770620100968} + - {fileID: 7320836924272747997} + - {fileID: 5730519544880200501} + m_Father: {fileID: 5730519544691981041} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 85.5} + m_SizeDelta: {x: 100, y: 150} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &5730519545150539364 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519545150539366} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 1 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1 &5730519545173937018 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5730519545173937017} + - component: {fileID: 5730519545173937016} + m_Layer: 5 + m_Name: ConnectUI + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &5730519545173937017 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519545173937018} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5730519545763793511} + - {fileID: 5730519546572851609} + - {fileID: 5730519544763499742} + - {fileID: 5730519545130162200} + - {fileID: 5730519546039280235} + - {fileID: 5458769199638732725} + - {fileID: 611689114822603911} + - {fileID: 5730519546215868953} + m_Father: {fileID: 5730519544691981041} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 85.5} + m_SizeDelta: {x: 100, y: 150} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &5730519545173937016 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519545173937018} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 1 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1 &5730519545217509601 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5730519545217509605} + - component: {fileID: 5730519545217509606} + - component: {fileID: 5730519545217509607} + - component: {fileID: 5730519545217509600} + - component: {fileID: 5730519545217509604} + - component: {fileID: 3808588107770984390} + m_Layer: 5 + m_Name: ProximaConnectUI + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5730519545217509605 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519545217509601} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5730519544691981041} + - {fileID: 7988148174635410369} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!223 &5730519545217509606 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519545217509601} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 100 + m_TargetDisplay: 0 +--- !u!114 &5730519545217509607 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519545217509601} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 1000, y: 600} + m_ScreenMatchMode: 2 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!114 &5730519545217509600 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519545217509601} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &5730519545217509604 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519545217509601} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d20fb960dcd6aee4c91d76796c4e489a, type: 3} + m_Name: + m_EditorClassIdentifier: + _proximaInspector: {fileID: 0} + _displayNameInputField: {fileID: 5730519544763499741} + _passwordInputField: {fileID: 5730519546039280234} + _errorLabel: {fileID: 7728234179712220192} + _startButton: {fileID: 5730519546215868952} + _openButton: {fileID: 1242765748099048972} + _stopButton: {fileID: 5730519544880200500} + _connectUIRoot: {fileID: 5730519545173937018} + _startedUIRoot: {fileID: 5730519545150539366} + _showHideButton: {fileID: 3093772455502354858} +--- !u!114 &3808588107770984390 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519545217509601} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f8a779904589bf645b974624adf18491, type: 3} + m_Name: + m_EditorClassIdentifier: + _proximaInspector: {fileID: 0} + _uiRoot: {fileID: 0} + _connectInfoLabel: {fileID: 8225341106628767009} + _statusLabel: {fileID: 5730519544506166040} +--- !u!1 &5730519545248126255 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5730519545248126254} + - component: {fileID: 5730519545248126243} + - component: {fileID: 5730519545248126252} + - component: {fileID: 5730519545248126253} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5730519545248126254 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519545248126255} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5730519544870041897} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5730519545248126243 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519545248126255} + m_CullTransparentMesh: 1 +--- !u!114 &5730519545248126252 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519545248126255} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 2150773298 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 14 + m_fontSizeBase: 14 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 0 + m_fontSizeMax: 0 + m_fontStyle: 2 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_enableExtraPadding: 1 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!114 &5730519545248126253 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519545248126255} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &5730519545508721173 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5730519545508721172} + - component: {fileID: 5730519545508721162} + - component: {fileID: 5730519545508721163} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5730519545508721172 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519545508721173} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5730519544880200501} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5730519545508721162 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519545508721173} + m_CullTransparentMesh: 1 +--- !u!114 &5730519545508721163 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519545508721173} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Stop + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281479730 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 16 + m_fontSizeBase: 16 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &5730519545569659421 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5730519545569659420} + - component: {fileID: 5730519545569659410} + - component: {fileID: 5730519545569659411} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5730519545569659420 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519545569659421} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5730519544969120614} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5730519545569659410 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519545569659421} + m_CullTransparentMesh: 1 +--- !u!114 &5730519545569659411 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519545569659421} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "MyTestApp\u200B" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281479730 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 14 + m_fontSizeBase: 14 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 0 + m_fontSizeMax: 0 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_enableExtraPadding: 1 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &5730519545763793504 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5730519545763793511} + - component: {fileID: 5730519545763793509} + - component: {fileID: 5730519545763793510} + m_Layer: 5 + m_Name: Logo + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5730519545763793511 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519545763793504} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5730519545173937017} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 50, y: -50} + m_SizeDelta: {x: 200, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5730519545763793509 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519545763793504} + m_CullTransparentMesh: 1 +--- !u!114 &5730519545763793510 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519545763793504} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 834e6e3f5b2f6fd479051cdddf01f4b1, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &5730519545950333497 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5730519545950333496} + - component: {fileID: 5730519545950333502} + - component: {fileID: 5730519545950333503} + m_Layer: 5 + m_Name: Logo + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5730519545950333496 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519545950333497} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5730519545150539365} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 50, y: -50} + m_SizeDelta: {x: 200, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5730519545950333502 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519545950333497} + m_CullTransparentMesh: 1 +--- !u!114 &5730519545950333503 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519545950333497} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 834e6e3f5b2f6fd479051cdddf01f4b1, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &5730519545977023078 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5730519545977023077} + - component: {fileID: 5730519545977023130} + - component: {fileID: 5730519545977023131} + - component: {fileID: 5730519545977023076} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5730519545977023077 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519545977023078} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5730519544969120614} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5730519545977023130 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519545977023078} + m_CullTransparentMesh: 1 +--- !u!114 &5730519545977023131 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519545977023078} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: ']' + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 14 + m_fontSizeBase: 14 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 0 + m_fontSizeMax: 0 + m_fontStyle: 2 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_enableExtraPadding: 1 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!114 &5730519545977023076 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519545977023078} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &5730519546039280244 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5730519546039280235} + - component: {fileID: 5730519546039280232} + - component: {fileID: 5730519546039280233} + - component: {fileID: 5730519546039280234} + m_Layer: 5 + m_Name: PasswordInput + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5730519546039280235 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519546039280244} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5730519544870041897} + m_Father: {fileID: 5730519545173937017} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 50, y: -237.8} + m_SizeDelta: {x: 280, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5730519546039280232 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519546039280244} + m_CullTransparentMesh: 1 +--- !u!114 &5730519546039280233 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519546039280244} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.85882354, g: 0.85882354, b: 0.85882354, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &5730519546039280234 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519546039280244} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2da0c512f12947e489f739169773d7ca, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 5730519546039280233} + m_TextViewport: {fileID: 5730519544870041897} + m_TextComponent: {fileID: 5730519546101261993} + m_Placeholder: {fileID: 5730519545248126252} + m_VerticalScrollbar: {fileID: 0} + m_VerticalScrollbarEventHandler: {fileID: 0} + m_LayoutGroup: {fileID: 0} + m_ScrollSensitivity: 1 + m_ContentType: 7 + m_InputType: 2 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_HideSoftKeyboard: 0 + m_CharacterValidation: 0 + m_RegexValue: + m_GlobalPointSize: 14 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnSubmit: + m_PersistentCalls: + m_Calls: [] + m_OnSelect: + m_PersistentCalls: + m_Calls: [] + m_OnDeselect: + m_PersistentCalls: + m_Calls: [] + m_OnTextSelection: + m_PersistentCalls: + m_Calls: [] + m_OnEndTextSelection: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_OnTouchScreenKeyboardStatusChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_RichText: 1 + m_GlobalFontAsset: {fileID: 0} + m_OnFocusSelectAll: 1 + m_ResetOnDeActivation: 1 + m_RestoreOriginalTextOnEscape: 1 + m_isRichTextEditingAllowed: 0 + m_LineLimit: 0 + m_InputValidator: {fileID: 0} +--- !u!1 &5730519546101261995 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5730519546101261994} + - component: {fileID: 5730519546101261992} + - component: {fileID: 5730519546101261993} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5730519546101261994 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519546101261995} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5730519544870041897} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5730519546101261992 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519546101261995} + m_CullTransparentMesh: 1 +--- !u!114 &5730519546101261993 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519546101261995} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "\u200B" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281479730 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 14 + m_fontSizeBase: 14 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 0 + m_fontSizeMax: 0 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_enableExtraPadding: 1 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &5730519546215868954 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5730519546215868953} + - component: {fileID: 5730519546215868958} + - component: {fileID: 5730519546215868959} + - component: {fileID: 5730519546215868952} + m_Layer: 5 + m_Name: StartButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5730519546215868953 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519546215868954} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5730519544870476724} + m_Father: {fileID: 5730519545173937017} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 50, y: -287.8} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5730519546215868958 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519546215868954} + m_CullTransparentMesh: 1 +--- !u!114 &5730519546215868959 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519546215868954} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0.6107548, b: 0.2216981, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &5730519546215868952 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519546215868954} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 5730519546215868959} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &5730519546572851610 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5730519546572851609} + - component: {fileID: 5730519546572851615} + - component: {fileID: 5730519546572851608} + m_Layer: 5 + m_Name: DisplayNameLabel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5730519546572851609 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519546572851610} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5730519545173937017} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 50, y: -121.4} + m_SizeDelta: {x: 200, y: 42.8} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5730519546572851615 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519546572851610} + m_CullTransparentMesh: 1 +--- !u!114 &5730519546572851608 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5730519546572851610} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Display Name + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4280463343 + m_fontColor: {r: 0.9372549, g: 0.68481076, b: 0.13333334, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 16 + m_fontSizeBase: 16 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 10, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &7947035745347171387 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 611689114822603911} + m_Layer: 5 + m_Name: Spacer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &611689114822603911 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7947035745347171387} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5730519545173937017} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 50, y: -262.8} + m_SizeDelta: {x: 100, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &8577682666751902480 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3680753083280977413} + - component: {fileID: 2713453022754674115} + - component: {fileID: 5100627224966352245} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3680753083280977413 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8577682666751902480} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6598228770620100968} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2713453022754674115 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8577682666751902480} + m_CullTransparentMesh: 1 +--- !u!114 &5100627224966352245 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8577682666751902480} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Open in Browser + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281479730 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 16 + m_fontSizeBase: 16 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &8723873089060226843 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 129232744442488311} + m_Layer: 5 + m_Name: Spacer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &129232744442488311 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8723873089060226843} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5730519545150539365} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 50, y: -155} + m_SizeDelta: {x: 100, y: 10} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &9042197160478706960 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6598228770620100968} + - component: {fileID: 4378093007323832161} + - component: {fileID: 585085157182159395} + - component: {fileID: 1242765748099048972} + m_Layer: 5 + m_Name: OpenButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6598228770620100968 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9042197160478706960} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3680753083280977413} + m_Father: {fileID: 5730519545150539365} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 50, y: -225} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4378093007323832161 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9042197160478706960} + m_CullTransparentMesh: 1 +--- !u!114 &585085157182159395 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9042197160478706960} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0.6107548, b: 0.2216981, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &1242765748099048972 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9042197160478706960} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 585085157182159395} + m_OnClick: + m_PersistentCalls: + m_Calls: [] diff --git a/Assets/Proxima/Resources/Proxima/ProximaConnectUI.prefab.meta b/Assets/Proxima/Resources/Proxima/ProximaConnectUI.prefab.meta new file mode 100644 index 0000000..72c1284 --- /dev/null +++ b/Assets/Proxima/Resources/Proxima/ProximaConnectUI.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9beaa43c2246f3c429af1bd9e5657284 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Resources/Proxima/ProximaEmbeddedCert.pfx b/Assets/Proxima/Resources/Proxima/ProximaEmbeddedCert.pfx new file mode 100644 index 0000000..d4a54e0 Binary files /dev/null and b/Assets/Proxima/Resources/Proxima/ProximaEmbeddedCert.pfx differ diff --git a/Assets/Proxima/Resources/Proxima/ProximaEmbeddedCert.pfx.meta b/Assets/Proxima/Resources/Proxima/ProximaEmbeddedCert.pfx.meta new file mode 100644 index 0000000..9050b3f --- /dev/null +++ b/Assets/Proxima/Resources/Proxima/ProximaEmbeddedCert.pfx.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 6e3c283c1c02ed346bf0d4d327715b4b +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 1f0da27eff826494b99f5e680d9acda9, type: 3} diff --git a/Assets/Proxima/Resources/Proxima/ProximaStatusUI.prefab b/Assets/Proxima/Resources/Proxima/ProximaStatusUI.prefab new file mode 100644 index 0000000..a67c358 --- /dev/null +++ b/Assets/Proxima/Resources/Proxima/ProximaStatusUI.prefab @@ -0,0 +1,865 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &384890343868295694 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8145749882119039238} + - component: {fileID: 2789547962602981077} + - component: {fileID: 1142189955481533906} + - component: {fileID: 1721831108900875074} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8145749882119039238 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 384890343868295694} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 6186048065140066065} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2789547962602981077 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 384890343868295694} + m_CullTransparentMesh: 0 +--- !u!114 &1142189955481533906 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 384890343868295694} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Enter text... + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 2150773298 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 13 + m_fontSizeBase: 13 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 2 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 1 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 1 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!114 &1721831108900875074 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 384890343868295694} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &1739985618177381640 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6015080605685723175} + - component: {fileID: 4066884605401563155} + - component: {fileID: 5353934841296736825} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6015080605685723175 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1739985618177381640} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 6186048065140066065} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4066884605401563155 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1739985618177381640} + m_CullTransparentMesh: 0 +--- !u!114 &5353934841296736825 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1739985618177381640} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "http://127.0.0.1:1234\u200B" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281833205 + m_fontColor: {r: 0.9607844, g: 0.5882353, b: 0.21568629, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 13 + m_fontSizeBase: 13 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 4 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 1 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 1 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &3597693078874631350 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3597693078874631351} + - component: {fileID: 3597693078874631349} + - component: {fileID: 3597693078874631348} + - component: {fileID: 1114040584} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &3597693078874631351 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3597693078874631350} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 3597693079650643246} + - {fileID: 8671961242263405349} + m_Father: {fileID: 3597693079969461663} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 2} + m_SizeDelta: {x: 20, y: 60} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3597693078874631349 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3597693078874631350} + m_CullTransparentMesh: 1 +--- !u!114 &3597693078874631348 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3597693078874631350} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.20392159, g: 0.20392159, b: 0.20392159, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &1114040584 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3597693078874631350} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 25 + m_Right: 25 + m_Top: 6 + m_Bottom: 0 + m_ChildAlignment: 4 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 +--- !u!1 &3597693079650643241 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3597693079650643246} + - component: {fileID: 3597693079650643244} + - component: {fileID: 3597693079650643247} + m_Layer: 5 + m_Name: StatusInfoLabel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3597693079650643246 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3597693079650643241} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 3597693078874631351} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 91.585846, y: -33} + m_SizeDelta: {x: 133.17169, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3597693079650643244 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3597693079650643241} + m_CullTransparentMesh: 1 +--- !u!114 &3597693079650643247 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3597693079650643241} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Proxima Status Information + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 13 + m_fontSizeBase: 13 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 1 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &3597693079969461659 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3597693079969461663} + - component: {fileID: 3597693079969461662} + - component: {fileID: 3597693079969461657} + - component: {fileID: 3597693079969461656} + - component: {fileID: 3597693079969461660} + m_Layer: 5 + m_Name: ProximaStatusUI + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3597693079969461663 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3597693079969461659} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 3597693078874631351} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!223 &3597693079969461662 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3597693079969461659} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 101 + m_TargetDisplay: 0 +--- !u!114 &3597693079969461657 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3597693079969461659} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 1000, y: 600} + m_ScreenMatchMode: 2 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!114 &3597693079969461656 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3597693079969461659} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &3597693079969461660 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3597693079969461659} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f8a779904589bf645b974624adf18491, type: 3} + m_Name: + m_EditorClassIdentifier: + _proximaInspector: {fileID: 0} + _uiRoot: {fileID: 3597693078874631350} + _connectInfoLabel: {fileID: 8953921706836632590} + _statusLabel: {fileID: 3597693079650643247} +--- !u!1 &5393328084012281428 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6186048065140066065} + - component: {fileID: 2586662670998332376} + m_Layer: 5 + m_Name: Text Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6186048065140066065 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5393328084012281428} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 8145749882119039238} + - {fileID: 6015080605685723175} + m_Father: {fileID: 8671961242263405349} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2586662670998332376 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5393328084012281428} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3312d7739989d2b4e91e6319e9a96d76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: {x: 0, y: 0, z: 0, w: 0} + m_Softness: {x: 0, y: 0} +--- !u!1 &8157973729697292968 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8671961242263405349} + - component: {fileID: 139474993449219955} + - component: {fileID: 4613375804612471316} + - component: {fileID: 8953921706836632590} + m_Layer: 5 + m_Name: ConnectInfo + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8671961242263405349 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8157973729697292968} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 6186048065140066065} + m_Father: {fileID: 3597693078874631351} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 215.2019, y: -33} + m_SizeDelta: {x: 200, y: 63} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &139474993449219955 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8157973729697292968} + m_CullTransparentMesh: 0 +--- !u!114 &4613375804612471316 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8157973729697292968} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.21960786, g: 0.21960786, b: 0.21960786, a: 0} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &8953921706836632590 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8157973729697292968} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2da0c512f12947e489f739169773d7ca, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 4613375804612471316} + m_TextViewport: {fileID: 6186048065140066065} + m_TextComponent: {fileID: 5353934841296736825} + m_Placeholder: {fileID: 1142189955481533906} + m_VerticalScrollbar: {fileID: 0} + m_VerticalScrollbarEventHandler: {fileID: 0} + m_LayoutGroup: {fileID: 0} + m_ScrollSensitivity: 1 + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_HideSoftKeyboard: 0 + m_CharacterValidation: 0 + m_RegexValue: + m_GlobalPointSize: 13 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnSubmit: + m_PersistentCalls: + m_Calls: [] + m_OnSelect: + m_PersistentCalls: + m_Calls: [] + m_OnDeselect: + m_PersistentCalls: + m_Calls: [] + m_OnTextSelection: + m_PersistentCalls: + m_Calls: [] + m_OnEndTextSelection: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_OnTouchScreenKeyboardStatusChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0, g: 0, b: 0, a: 0.7529412} + m_Text: http://127.0.0.1:1234 + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 1 + m_RichText: 1 + m_GlobalFontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_OnFocusSelectAll: 1 + m_ResetOnDeActivation: 1 + m_RestoreOriginalTextOnEscape: 1 + m_isRichTextEditingAllowed: 0 + m_LineLimit: 0 + m_InputValidator: {fileID: 0} diff --git a/Assets/Proxima/Resources/Proxima/ProximaStatusUI.prefab.meta b/Assets/Proxima/Resources/Proxima/ProximaStatusUI.prefab.meta new file mode 100644 index 0000000..d092e51 --- /dev/null +++ b/Assets/Proxima/Resources/Proxima/ProximaStatusUI.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 936ae2105fa77a7448151fea10fa110f +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Resources/Proxima/web.proximastatic b/Assets/Proxima/Resources/Proxima/web.proximastatic new file mode 100644 index 0000000..a6726ad Binary files /dev/null and b/Assets/Proxima/Resources/Proxima/web.proximastatic differ diff --git a/Assets/Proxima/Resources/Proxima/web.proximastatic.meta b/Assets/Proxima/Resources/Proxima/web.proximastatic.meta new file mode 100644 index 0000000..72f691a --- /dev/null +++ b/Assets/Proxima/Resources/Proxima/web.proximastatic.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: c93ac46350ab2f14ba1ea87cd2d9e3ba +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 6516416497f676b4aba8328116af0c65, type: 3} diff --git a/Assets/Proxima/Runtime.meta b/Assets/Proxima/Runtime.meta new file mode 100644 index 0000000..f084e53 --- /dev/null +++ b/Assets/Proxima/Runtime.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b11e3ec679925cc4fa85e9ffaf6e66b7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/ArrayOrList.cs b/Assets/Proxima/Runtime/ArrayOrList.cs new file mode 100644 index 0000000..47d77e4 --- /dev/null +++ b/Assets/Proxima/Runtime/ArrayOrList.cs @@ -0,0 +1,249 @@ +using System; +using System.Collections; +using UnityEngine; + +namespace Proxima +{ + internal class ArrayOrList + { + public static bool IsArrayOrList(Type arrayOrList) + { + return IsArray(arrayOrList) || IsList(arrayOrList); + } + + public static bool IsList(Type arrayOrList) + { + return typeof(IList).IsAssignableFrom(arrayOrList) && arrayOrList.IsGenericType; + } + + public static bool IsArray(Type arrayOrList) + { + return arrayOrList.IsArray; + } + + public static bool IsArrayOrList(object arrayOrList) + { + return IsArray(arrayOrList) || IsList(arrayOrList); + } + + public static bool IsList(object arrayOrList) + { + return IsList(arrayOrList.GetType()); + } + + public static bool IsArray(object arrayOrList) + { + return IsArray(arrayOrList.GetType()); + } + + public static int Count(object arrayOrList) + { + if (IsArray(arrayOrList)) + { + return ((Array)arrayOrList).Length; + } + else if (IsList(arrayOrList)) + { + return ((IList)arrayOrList).Count; + } + + throw new ArgumentException("Type is not an array or list"); + } + + public static object Get(object arrayOrList, int index) + { + if (IsArray(arrayOrList)) + { + return ((Array)arrayOrList).GetValue(index); + } + else if (IsList(arrayOrList)) + { + return ((IList)arrayOrList)[index]; + } + + throw new ArgumentException("Type is not an array or list"); + } + + public static void Set(object arrayOrList, int index, object value) + { + if (IsArray(arrayOrList)) + { + ((Array)arrayOrList).SetValue(value, index); + } + else if (IsList(arrayOrList)) + { + ((IList)arrayOrList)[index] = value; + } + else + { + throw new ArgumentException("Type is not an array or list"); + } + } + + public static Type GetElementType(Type arrayOrList) + { + if (IsArray(arrayOrList)) + { + return arrayOrList.GetElementType(); + } + else if (IsList(arrayOrList)) + { + return arrayOrList.GetGenericArguments()[0]; + } + + throw new ArgumentException("Type is not an array or list"); + } + + private static object CreateDefault(Type type) + { + if (type.IsPrimitive) + { + return Activator.CreateInstance(type); + } + + if (type == typeof(string)) + { + return ""; + } + + if (type.GetConstructor(Type.EmptyTypes) != null) + { + return Activator.CreateInstance(type); + } + + return null; + } + + private static object Duplicate(object value) + { + if (value == null) + { + return null; + } + + var type = value.GetType(); + if (type.IsValueType || type == typeof(string)) + { + return value; + } + + if (IsArray(type)) + { + var array = (Array)value; + var newArray = Array.CreateInstance(type.GetElementType(), array.Length); + for (var i = 0; i < array.Length; i++) + { + newArray.SetValue(Duplicate(array.GetValue(i)), i); + } + } + + if (IsList(type)) + { + var list = (IList)value; + var newList = (IList)Activator.CreateInstance(type); + foreach (var item in list) + { + newList.Add(Duplicate(item)); + } + + return newList; + } + + if (type.IsSubclassOf(typeof(UnityEngine.Object))) + { + return value; + } + + return null; + } + + public static object Resize(object arrayOrList, int size) + { + var oldSize = Count(arrayOrList); + if (oldSize == size) + { + return arrayOrList; + } + + var type = arrayOrList.GetType(); + var elementType = GetElementType(type); + + if (IsArray(type)) + { + var newArray = Array.CreateInstance(elementType, size); + Array.Copy((Array)arrayOrList, newArray, Math.Min(oldSize, size)); + for (var i = oldSize; i < size; i++) + { + newArray.SetValue(CreateDefault(elementType), i); + } + + arrayOrList = newArray; + } + else if (IsList(type)) + { + var list = ((IList)arrayOrList); + while (list.Count > size) + { + list.RemoveAt(list.Count - 1); + } + + while (list.Count < size) + { + list.Add(CreateDefault(elementType)); + } + + arrayOrList = list; + } + else + { + throw new ArgumentException("Type is not an array or list"); + } + + // If we're adding elements, and we already have at least one, + // mimic the Unity behavior of duplicating the last element. + if (size > oldSize && oldSize > 0) + { + var lastElement = Get(arrayOrList, oldSize - 1); + for (var i = oldSize; i < size; i++) + { + Set(arrayOrList, i, Duplicate(lastElement)); + } + } + + return arrayOrList; + } + + public static void MoveElement(object arrayOrList, int from, int to) + { + var temp = Get(arrayOrList, from); + + if (from < to) + { + for (int i = from; i < to; i++) + { + Set(arrayOrList, i, Get(arrayOrList, i + 1)); + } + } + else + { + for (int i = from; i > to; i--) + { + Set(arrayOrList, i, Get(arrayOrList, i - 1)); + } + } + + Set(arrayOrList, to, temp); + } + + public static object RemoveElement(object arrayOrList, int index) + { + var size = Count(arrayOrList); + for (int i = index; i < size - 1; i++) + { + Set(arrayOrList, i, Get(arrayOrList, i + 1)); + } + + return Resize(arrayOrList, size - 1); + } + } +} \ No newline at end of file diff --git a/Assets/Proxima/Runtime/ArrayOrList.cs.meta b/Assets/Proxima/Runtime/ArrayOrList.cs.meta new file mode 100644 index 0000000..a6e338b --- /dev/null +++ b/Assets/Proxima/Runtime/ArrayOrList.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b3a424b5724df2440982f5f059d8ab12 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/AssemblyInfo.cs b/Assets/Proxima/Runtime/AssemblyInfo.cs new file mode 100644 index 0000000..ff5132c --- /dev/null +++ b/Assets/Proxima/Runtime/AssemblyInfo.cs @@ -0,0 +1,5 @@ +using System.Runtime.CompilerServices; + +[assembly:InternalsVisibleTo("Proxima.Tests")] +[assembly:InternalsVisibleTo("Proxima.Editor.Tests")] +[assembly:InternalsVisibleTo("Proxima.Editor")] \ No newline at end of file diff --git a/Assets/Proxima/Runtime/AssemblyInfo.cs.meta b/Assets/Proxima/Runtime/AssemblyInfo.cs.meta new file mode 100644 index 0000000..0d508ec --- /dev/null +++ b/Assets/Proxima/Runtime/AssemblyInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1433e3911ce61f54783a44faae88c010 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/CircularList.cs b/Assets/Proxima/Runtime/CircularList.cs new file mode 100644 index 0000000..1e26a8c --- /dev/null +++ b/Assets/Proxima/Runtime/CircularList.cs @@ -0,0 +1,46 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Proxima +{ + internal class CircularList<T> : IEnumerable<T> + { + private T[] _array; + private int _itemsAdded = 0; + public int ItemsAdded => _itemsAdded; + + public CircularList(int capacity) + { + _array = new T[capacity]; + } + + public void Add(T t) + { + var index = _itemsAdded % _array.Length; + _array[index] = t; + _itemsAdded++; + } + + public IEnumerable<T> GetRange(int index) + { + index = Mathf.Max(_itemsAdded - _array.Length, index); + var count = _itemsAdded - index; + var start = index % _array.Length; + for (int i = 0; i < count; i++) + { + yield return _array[(i + start) % _array.Length]; + } + } + + public IEnumerator<T> GetEnumerator() + { + return GetRange(0).GetEnumerator(); + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + } +} \ No newline at end of file diff --git a/Assets/Proxima/Runtime/CircularList.cs.meta b/Assets/Proxima/Runtime/CircularList.cs.meta new file mode 100644 index 0000000..e313b0a --- /dev/null +++ b/Assets/Proxima/Runtime/CircularList.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2cc8e31c1a399ed4e8c4cf72c2abfc5e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/Embedded.meta b/Assets/Proxima/Runtime/Embedded.meta new file mode 100644 index 0000000..e8fc3dd --- /dev/null +++ b/Assets/Proxima/Runtime/Embedded.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8c7b2482015820b45af101602f4bad9a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/Embedded/HttpDateParse.cs b/Assets/Proxima/Runtime/Embedded/HttpDateParse.cs new file mode 100644 index 0000000..8557180 --- /dev/null +++ b/Assets/Proxima/Runtime/Embedded/HttpDateParse.cs @@ -0,0 +1,487 @@ +// 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. + +// Slightly modified from: +// https://github.com/dotnet/runtime/blob/main/src/libraries/Common/src/System/Net/HttpDateParser.cs + +using System; +using System.Globalization; + +namespace Proxima +{ + internal static class HttpDateParse { + private const int BASE_DEC = 10; // base 10 + + // + // Date indicies used to figure out what each entry is. + // + + + private const int DATE_INDEX_DAY_OF_WEEK = 0; + + private const int DATE_1123_INDEX_DAY = 1; + private const int DATE_1123_INDEX_MONTH = 2; + private const int DATE_1123_INDEX_YEAR = 3; + private const int DATE_1123_INDEX_HRS = 4; + private const int DATE_1123_INDEX_MINS = 5; + private const int DATE_1123_INDEX_SECS = 6; + + private const int DATE_ANSI_INDEX_MONTH = 1; + private const int DATE_ANSI_INDEX_DAY = 2; + private const int DATE_ANSI_INDEX_HRS = 3; + private const int DATE_ANSI_INDEX_MINS = 4; + private const int DATE_ANSI_INDEX_SECS = 5; + private const int DATE_ANSI_INDEX_YEAR = 6; + + private const int DATE_INDEX_TZ = 7; + + private const int DATE_INDEX_LAST = DATE_INDEX_TZ; + private const int MAX_FIELD_DATE_ENTRIES = (DATE_INDEX_LAST+1); + + // + // DATE_TOKEN's DWORD values used to determine what day/month we're on + // + + private const int DATE_TOKEN_JANUARY = 1; + private const int DATE_TOKEN_FEBRUARY = 2; + private const int DATE_TOKEN_Microsoft = 3; + private const int DATE_TOKEN_APRIL = 4; + private const int DATE_TOKEN_MAY = 5; + private const int DATE_TOKEN_JUNE = 6; + private const int DATE_TOKEN_JULY = 7; + private const int DATE_TOKEN_AUGUST = 8; + private const int DATE_TOKEN_SEPTEMBER = 9; + private const int DATE_TOKEN_OCTOBER = 10; + private const int DATE_TOKEN_NOVEMBER = 11; + private const int DATE_TOKEN_DECEMBER = 12; + + private const int DATE_TOKEN_LAST_MONTH = (DATE_TOKEN_DECEMBER+1); + + private const int DATE_TOKEN_SUNDAY = 0; + private const int DATE_TOKEN_MONDAY = 1; + private const int DATE_TOKEN_TUESDAY = 2; + private const int DATE_TOKEN_WEDNESDAY = 3; + private const int DATE_TOKEN_THURSDAY = 4; + private const int DATE_TOKEN_FRIDAY = 5; + private const int DATE_TOKEN_SATURDAY = 6; + + private const int DATE_TOKEN_LAST_DAY = (DATE_TOKEN_SATURDAY+1); + + private const int DATE_TOKEN_GMT = -1000; + + private const int DATE_TOKEN_LAST = DATE_TOKEN_GMT; + + private const int DATE_TOKEN_ERROR = (DATE_TOKEN_LAST+1); + + + // + // MAKE_UPPER - takes an assumed lower character and bit manipulates into a upper. + // (make sure the character is Lower case alpha char to begin, + // otherwise it corrupts) + // + + private + static + char + MAKE_UPPER(char c) { + return(Char.ToUpper(c, CultureInfo.InvariantCulture)); + } + + /*++ + + Routine Description: + + Looks at the first three bytes of string to determine if we're looking + at a Day of the Week, or Month, or "GMT" string. Is inlined so that + the compiler can optimize this code into the caller FInternalParseHttpDate. + + Arguments: + + lpszDay - a string ptr to the first byte of the string in question. + + Return Value: + + DWORD + Success - The Correct date token, 0-6 for day of the week, 1-14 for month, etc + + Failure - DATE_TOKEN_ERROR + + --*/ + + private + static + int + MapDayMonthToDword( + char [] lpszDay, + int index + ) { + switch (MAKE_UPPER(lpszDay[index])) { // make uppercase + case 'A': + switch (MAKE_UPPER(lpszDay[index+1])) { + case 'P': + return DATE_TOKEN_APRIL; + case 'U': + return DATE_TOKEN_AUGUST; + + } + return DATE_TOKEN_ERROR; + + case 'D': + return DATE_TOKEN_DECEMBER; + + case 'F': + switch (MAKE_UPPER(lpszDay[index+1])) { + case 'R': + return DATE_TOKEN_FRIDAY; + case 'E': + return DATE_TOKEN_FEBRUARY; + } + + return DATE_TOKEN_ERROR; + + case 'G': + return DATE_TOKEN_GMT; + + case 'M': + + switch (MAKE_UPPER(lpszDay[index+1])) { + case 'O': + return DATE_TOKEN_MONDAY; + case 'A': + switch (MAKE_UPPER(lpszDay[index+2])) { + case 'R': + return DATE_TOKEN_Microsoft; + case 'Y': + return DATE_TOKEN_MAY; + } + + // fall through to error + break; + } + + return DATE_TOKEN_ERROR; + + case 'N': + return DATE_TOKEN_NOVEMBER; + + case 'J': + + switch (MAKE_UPPER(lpszDay[index+1])) { + case 'A': + return DATE_TOKEN_JANUARY; + + case 'U': + switch (MAKE_UPPER(lpszDay[index+2])) { + case 'N': + return DATE_TOKEN_JUNE; + case 'L': + return DATE_TOKEN_JULY; + } + + // fall through to error + break; + } + + return DATE_TOKEN_ERROR; + + case 'O': + return DATE_TOKEN_OCTOBER; + + case 'S': + + switch (MAKE_UPPER(lpszDay[index+1])) { + case 'A': + return DATE_TOKEN_SATURDAY; + case 'U': + return DATE_TOKEN_SUNDAY; + case 'E': + return DATE_TOKEN_SEPTEMBER; + } + + return DATE_TOKEN_ERROR; + + + case 'T': + switch (MAKE_UPPER(lpszDay[index+1])) { + case 'U': + return DATE_TOKEN_TUESDAY; + case 'H': + return DATE_TOKEN_THURSDAY; + } + + return DATE_TOKEN_ERROR; + + case 'U': + return DATE_TOKEN_GMT; + + case 'W': + return DATE_TOKEN_WEDNESDAY; + + } + + return DATE_TOKEN_ERROR; + } + + /*++ + + Routine Description: + + Parses through a ANSI, RFC850, or RFC1123 date format and covents it into + a FILETIME/SYSTEMTIME time format. + + Important this a time-critical function and should only be changed + with the intention of optimizing or a critical need work item. + + Arguments: + + lpft - Ptr to FILETIME structure. Used to store converted result. + Must be NULL if not intended to be used !!! + + lpSysTime - Ptr to SYSTEMTIME struture. Used to return Systime if needed. + + lpcszDateStr - Const Date string to parse. + + Return Value: + + BOOL + Success - TRUE + + Failure - FALSE + + --*/ + public + static + bool + ParseHttpDate( + String DateString, + out DateTime dtOut + ) { + int index = 0; + int i = 0, iLastLettered = -1; + bool fIsANSIDateFormat = false; + int [] rgdwDateParseResults = new int[MAX_FIELD_DATE_ENTRIES]; + bool fRet = true; + char [] lpInputBuffer = DateString.ToCharArray(); + + dtOut = new DateTime(); + + // + // Date Parsing v2 (1 more to go), and here is how it works... + // We take a date string and churn through it once, converting + // integers to integers, Month,Day, and GMT strings into integers, + // and all is then placed IN order in a temp array. + // + // At the completetion of the parse stage, we simple look at + // the data, and then map the results into the correct + // places in the SYSTIME structure. Simple, No allocations, and + // No dirting the data. + // + // The end of the function does something munging and pretting + // up of the results to handle the year 2000, and TZ offsets + // Note: do we need to fully handle TZs anymore? + // + + while (index < DateString.Length && i < MAX_FIELD_DATE_ENTRIES) { + if (lpInputBuffer[index] >= '0' && lpInputBuffer[index] <= '9') { + // + // we have a numerical entry, scan through it and convent to DWORD + // + + rgdwDateParseResults[i] = 0; + + do { + rgdwDateParseResults[i] *= BASE_DEC; + rgdwDateParseResults[i] += (lpInputBuffer[index] - '0'); + index++; + } while (index < DateString.Length && + lpInputBuffer[index] >= '0' && + lpInputBuffer[index] <= '9'); + + i++; // next token + } + else if ((lpInputBuffer[index] >= 'A' && lpInputBuffer[index] <= 'Z') || + (lpInputBuffer[index] >= 'a' && lpInputBuffer[index] <= 'z')) { + // + // we have a string, should be a day, month, or GMT + // lets skim to the end of the string + // + + rgdwDateParseResults[i] = + MapDayMonthToDword(lpInputBuffer, index); + + iLastLettered = i; + + // We want to ignore the possibility of a time zone such as PST or EST in a non-standard + // date format such as "Thu Dec 17 16:01:28 PST 1998" (Notice that the year is _after_ the time zone + if ((rgdwDateParseResults[i] == DATE_TOKEN_ERROR) + && + !(fIsANSIDateFormat && (i==DATE_ANSI_INDEX_YEAR))) { + fRet = false; + goto quit; + } + + // + // At this point if we have a vaild string + // at this index, we know for sure that we're + // looking at a ANSI type DATE format. + // + + if (i == DATE_ANSI_INDEX_MONTH) { + fIsANSIDateFormat = true; + } + + // + // Read past the end of the current set of alpha characters, + // as MapDayMonthToDword only peeks at a few characters + // + + do { + index++; + } while (index < DateString.Length && + ( (lpInputBuffer[index] >= 'A' && lpInputBuffer[index] <= 'Z') || + (lpInputBuffer[index] >= 'a' && lpInputBuffer[index] <= 'z') )); + + i++; // next token + } + else { + // + // For the generic case its either a space, comma, semi-colon, etc. + // the point is we really don't care, nor do we need to waste time + // worring about it (the orginal code did). The point is we + // care about the actual date information, So we just advance to the + // next lexume. + // + + index++; + } + } + + // + // We're finished parsing the string, now take the parsed tokens + // and turn them to the actual structured information we care about. + // So we build lpSysTime from the Array, using a local if none is passed in. + // + + int year; + int month; + int day; + int hour; + int minute; + int second; + int millisecond; + + millisecond = 0; + + if (fIsANSIDateFormat) { + day = rgdwDateParseResults[DATE_ANSI_INDEX_DAY]; + month = rgdwDateParseResults[DATE_ANSI_INDEX_MONTH]; + hour = rgdwDateParseResults[DATE_ANSI_INDEX_HRS]; + minute = rgdwDateParseResults[DATE_ANSI_INDEX_MINS]; + second = rgdwDateParseResults[DATE_ANSI_INDEX_SECS]; + if (iLastLettered != DATE_ANSI_INDEX_YEAR) { + year = rgdwDateParseResults[DATE_ANSI_INDEX_YEAR]; + } + else { + // This is a fix to get around toString/toGMTstring (where the timezone is + // appended at the end. (See above) + year = rgdwDateParseResults[DATE_INDEX_TZ]; + } + } + else { + day = rgdwDateParseResults[DATE_1123_INDEX_DAY]; + month = rgdwDateParseResults[DATE_1123_INDEX_MONTH]; + year = rgdwDateParseResults[DATE_1123_INDEX_YEAR]; + hour = rgdwDateParseResults[DATE_1123_INDEX_HRS]; + minute = rgdwDateParseResults[DATE_1123_INDEX_MINS]; + second = rgdwDateParseResults[DATE_1123_INDEX_SECS]; + } + + // + // Normalize the year, 90 == 1990, handle the year 2000, 02 == 2002 + // This is Year 2000 handling folks!!! We get this wrong and + // we all look bad. + // + + if (year < 100) { + year += ((year < 80) ? 2000 : 1900); + } + + // + // if we got misformed time, then plug in the current time + // !lpszHrs || !lpszMins || !lpszSec + // + + if ((i < 4) + || (day > 31) + || (hour > 23) + || (minute > 59) + || (second > 59)) { + fRet = false; + goto quit; + } + + // + // Now do the DateTime conversion + // + + dtOut = new DateTime (year, month, day, hour, minute, second, millisecond); + + // + // we want the system time to be accurate. This is _suhlow_ + // The time passed in is in the local time zone; we have to convert this into GMT. + // + + if (iLastLettered==DATE_ANSI_INDEX_YEAR) { + // this should be an unusual case. + dtOut = dtOut.ToUniversalTime(); + } + + // + // If we have an Offset to another Time Zone + // then convert to appropriate GMT time + // + + if ((i > DATE_INDEX_TZ && + rgdwDateParseResults[DATE_INDEX_TZ] != DATE_TOKEN_GMT)) { + + // + // if we received +/-nnnn as offset (hhmm), modify the output FILETIME + // + + double offset; + + offset = (double) rgdwDateParseResults[DATE_INDEX_TZ]; + dtOut.AddHours(offset); + } + + // In the end, we leave it all in LocalTime + + dtOut = dtOut.ToLocalTime(); + + quit: + + return fRet; + } + } +} \ No newline at end of file diff --git a/Assets/Proxima/Runtime/Embedded/HttpDateParse.cs.meta b/Assets/Proxima/Runtime/Embedded/HttpDateParse.cs.meta new file mode 100644 index 0000000..e92a197 --- /dev/null +++ b/Assets/Proxima/Runtime/Embedded/HttpDateParse.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ec8f0b0fcb7462a43a5b930004717228 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/Embedded/PfxAsset.cs b/Assets/Proxima/Runtime/Embedded/PfxAsset.cs new file mode 100644 index 0000000..1188d37 --- /dev/null +++ b/Assets/Proxima/Runtime/Embedded/PfxAsset.cs @@ -0,0 +1,9 @@ +using UnityEngine; + +namespace Proxima +{ + public class PfxAsset : ScriptableObject + { + public byte[] Bytes; + } +} \ No newline at end of file diff --git a/Assets/Proxima/Runtime/Embedded/PfxAsset.cs.meta b/Assets/Proxima/Runtime/Embedded/PfxAsset.cs.meta new file mode 100644 index 0000000..7a8e345 --- /dev/null +++ b/Assets/Proxima/Runtime/Embedded/PfxAsset.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3d9389e3e4f6e9c42b5b1a635c8eb849 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/Embedded/ProximaEmbeddedConnection.cs b/Assets/Proxima/Runtime/Embedded/ProximaEmbeddedConnection.cs new file mode 100644 index 0000000..dfb8aab --- /dev/null +++ b/Assets/Proxima/Runtime/Embedded/ProximaEmbeddedConnection.cs @@ -0,0 +1,127 @@ +using System; +using System.Collections.Concurrent; +using System.IO; +using ProximaWebSocketSharp; +using ProximaWebSocketSharp.Server; +using UnityEngine; + +namespace Proxima +{ + internal class ProximaEmbeddedConnection : WebSocketBehavior, ProximaConnection + { + public bool Open => ReadyState == WebSocketState.Open; + + private ConcurrentQueue<(ProximaConnection, string)> _receiveQueue; + + private string _password; + private bool _passwordProvided = false; + private string _displayName; + private ProximaInstanceHello _hello; + private DateTime _lastListTime; + private DateTime _lastSelectTime; + private ProximaStatus _status; + private ProximaDispatcher _dispatcher; + + public void Initialize(string displayName, string password, ProximaDispatcher dispatcher, ProximaStatus status, ConcurrentQueue<(ProximaConnection, string)> queue) + { + _displayName = displayName; + _receiveQueue = queue; + _dispatcher = dispatcher; + _status = status; + + _dispatcher.Dispatch(() => { + _hello = ProximaSerialization.CreateHello(_displayName); + _password = ProximaSerialization.HashPassword(password, _hello.ConnectionId); + }); + } + + protected override void OnClose(CloseEventArgs e) + { + _dispatcher.Dispatch(() => { + if (_passwordProvided) + { + _status.DecrementConnections(); + } + }); + } + + public void SendMessage(MemoryStream data) + { + if (Open) + { + Log.Verbose("Sending: " + System.Text.Encoding.UTF8.GetString(data.GetBuffer(), 0, (int)data.Length)); + SendAsTextAsync(data, (b) => {}); + } + } + + protected override void OnMessage(MessageEventArgs e) + { + Log.Verbose("Received: " + e.Data); + + if (_passwordProvided) + { + _receiveQueue.Enqueue((this, e.Data)); + } + else + { + ProximaRequest request; + + try + { + request = JsonUtility.FromJson<ProximaRequest>(e.Data); + } + catch (Exception ex) + { + Log.Error("Failed to parse request: " + ex.Message); + return; + } + + if (request.Type == ProximaRequestType.List) + { + if (_lastListTime != null && DateTime.Now - _lastListTime < TimeSpan.FromSeconds(1)) + { + SendMessage(ProximaSerialization.ErrorResponse(request, "Too many requests.")); + return; + } + + _dispatcher.Dispatch(() =>{ + SendMessage(ProximaSerialization.DataResponse(request, new ProximaInstanceHello[] { _hello })); + }); + + _lastListTime = DateTime.Now; + } + else if (request.Type == ProximaRequestType.Select) + { + if (_lastSelectTime != null && DateTime.Now - _lastSelectTime < TimeSpan.FromSeconds(1)) + { + SendMessage(ProximaSerialization.ErrorResponse(request, "Too many requests.")); + return; + } + + MemoryStream response; + if (request.Cmd != _hello.InstanceId) + { + response = ProximaSerialization.ErrorResponse(request, "Invalid selection."); + } + else if (request.Args.Length != 1 || request.Args[0] != _password) + { + response = ProximaSerialization.ErrorResponse(request, "Invalid password."); + } + else + { + response = ProximaSerialization.DataResponse(request, "OK"); + _passwordProvided = true; + _dispatcher.Dispatch(() => _status.IncrementConnections()); + } + + SendMessage(response); + _lastSelectTime = DateTime.Now; + } + else + { + Log.Info("Unknown request: " + request.Type); + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Proxima/Runtime/Embedded/ProximaEmbeddedConnection.cs.meta b/Assets/Proxima/Runtime/Embedded/ProximaEmbeddedConnection.cs.meta new file mode 100644 index 0000000..9f6c86d --- /dev/null +++ b/Assets/Proxima/Runtime/Embedded/ProximaEmbeddedConnection.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2bd3c2ee267f5b04fb056dceb506920a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/Embedded/ProximaEmbeddedServer.cs b/Assets/Proxima/Runtime/Embedded/ProximaEmbeddedServer.cs new file mode 100644 index 0000000..ff890f7 --- /dev/null +++ b/Assets/Proxima/Runtime/Embedded/ProximaEmbeddedServer.cs @@ -0,0 +1,171 @@ +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Security.Cryptography.X509Certificates; +using UnityEngine; +using ProximaWebSocketSharp.Server; +using System.Net; +using System.Net.Sockets; +using System.Threading.Tasks; + +namespace Proxima +{ + internal class ProximaEmbeddedServer : ProximaServer + { + private ConcurrentQueue<(ProximaConnection, string)> _receiveQueue; + private HttpServer _server; + private ProximaDispatcher _dispatcher; + private int _port; + private bool _useHttps; + private PfxAsset _cert; + private string _certPass; + private Dictionary<string, ProximaStatic.StaticFile> _pathToFile; + private ProximaStatus _status; + + public ProximaEmbeddedServer(ProximaDispatcher dispatcher, ProximaStatus status, int port, bool useHttps, PfxAsset cert, string certPass) + { + _dispatcher = dispatcher; + _port = port; + _useHttps = useHttps; + _cert = cert; + _certPass = certPass; + _status = status; + + if (_useHttps && _cert == null) + { + _cert = Resources.Load<PfxAsset>("Proxima/ProximaEmbeddedCert"); + _certPass = "proximapass"; + } + + var staticFiles = Resources.Load<ProximaStatic>("Proxima/web"); + _pathToFile = new Dictionary<string, ProximaStatic.StaticFile>(); + foreach (var file in staticFiles.Files) + { + _pathToFile.Add(file.Path, file); + } + } + + public void Start(string displayName, string password) + { + _server = new HttpServer(System.Net.IPAddress.Any, _port, _useHttps); + _server.Log.Level = ProximaWebSocketSharp.LogLevel.Trace; + + if (_useHttps) + { + _server.SslConfiguration.ServerCertificate = new X509Certificate2(_cert.Bytes, _certPass); + _server.SslConfiguration.EnabledSslProtocols = System.Security.Authentication.SslProtocols.Tls12; + } + + var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); + + _server.OnGet += (sender, e) => + { + var req = e.Request; + var res = e.Response; + var path = req.RawUrl.Split('?')[0]; + + path = path == "/" ? "index.html" : path.Substring(1); + + if (_pathToFile.TryGetValue(path, out var file) || _pathToFile.TryGetValue(path + ".html", out file)) + { + var lastModifiedDt = epoch.AddMilliseconds(file.LastModified); + if (req.Headers.AllKeys.Contains("If-Modified-Since")) + { + var ifModifiedSince = req.Headers["If-Modified-Since"]; + + try + { + if (HttpDateParse.ParseHttpDate(ifModifiedSince, out var ifModifiedSinceDt)) + { + ifModifiedSinceDt = ifModifiedSinceDt.ToUniversalTime(); + if (lastModifiedDt <= ifModifiedSinceDt) + { + res.StatusCode = 304; + res.Close(); + return; + } + } + } catch (Exception) {} + } + + var lastModified = string.Format("{0:ddd, dd MMM yyyy HH:mm:ss} GMT", lastModifiedDt); + res.AppendHeader("Last-Modified", lastModified); + res.ContentEncoding = System.Text.Encoding.UTF8; + res.ContentType = ProximaMimeTypes.Get(Path.GetExtension(file.Path)); + res.ContentLength64 = file.Bytes.Length; + res.OutputStream.Write(file.Bytes, 0, file.Bytes.Length); + res.Close(); + } + else + { + res.StatusCode = (int)System.Net.HttpStatusCode.NotFound; + res.Close(); + } + }; + + _receiveQueue = new ConcurrentQueue<(ProximaConnection, string)>(); + _server.AddWebSocketService<ProximaEmbeddedConnection>("/api", (api) => api.Initialize(displayName, password, _dispatcher, _status, _receiveQueue)); + + + _server.Start(); + UpdateConnectionInfo(); + } + + public async void UpdateConnectionInfo() + { + var ip = await GetIpAddress(); + var connectionInfo = (_useHttps ? "https" : "http") + "://" + ip + ":" + _port; + Log.Info("Proxima Inspector started on " + connectionInfo); + _status.SetConnectInfo(connectionInfo); + } + + private async Task<string> GetIpAddress() + { + try + { + using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) + { + // Try to connect to Google DNS servers. This is a more reliable way to get the local IP address. + var task = socket.ConnectAsync("8.8.8.8", 53); + await Task.WhenAny(task, Task.Delay(100)); + if (task.Status == TaskStatus.RanToCompletion) + { + return socket.LocalEndPoint.ToString().Split(':')[0]; + } + } + } + catch (Exception e) + { + Log.Exception(e); + } + + // If not connected to the internet, or this is taking too long, fallback to the first IPv4 address. + return Dns.GetHostEntry(Dns.GetHostName()) + .AddressList.First( + f => f.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) + .ToString(); + } + + public void Stop() + { + _server?.Stop(); + _server = null; + _receiveQueue = null; + } + + public bool TryGetMessage(out (ProximaConnection, string) message) + { + if (_receiveQueue != null) + { + return _receiveQueue.TryDequeue(out message); + } + else + { + message = (null, ""); + return false; + } + } + } +} \ No newline at end of file diff --git a/Assets/Proxima/Runtime/Embedded/ProximaEmbeddedServer.cs.meta b/Assets/Proxima/Runtime/Embedded/ProximaEmbeddedServer.cs.meta new file mode 100644 index 0000000..2c93a30 --- /dev/null +++ b/Assets/Proxima/Runtime/Embedded/ProximaEmbeddedServer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 886fa013fd1b21f4d9e70f837e19dd45 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/Embedded/ProximaStatic.cs b/Assets/Proxima/Runtime/Embedded/ProximaStatic.cs new file mode 100644 index 0000000..c78e6e4 --- /dev/null +++ b/Assets/Proxima/Runtime/Embedded/ProximaStatic.cs @@ -0,0 +1,19 @@ +using System.Collections.Generic; +using System; +using UnityEngine; + +namespace Proxima +{ + public class ProximaStatic : ScriptableObject + { + [Serializable] + public struct StaticFile + { + public string Path; + public byte[] Bytes; + public long LastModified; + } + + public List<StaticFile> Files; + } +} \ No newline at end of file diff --git a/Assets/Proxima/Runtime/Embedded/ProximaStatic.cs.meta b/Assets/Proxima/Runtime/Embedded/ProximaStatic.cs.meta new file mode 100644 index 0000000..259460a --- /dev/null +++ b/Assets/Proxima/Runtime/Embedded/ProximaStatic.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 43c0651e2177f7b42846248f4ee5d1b6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/FastJson.cs b/Assets/Proxima/Runtime/FastJson.cs new file mode 100644 index 0000000..49d46f0 --- /dev/null +++ b/Assets/Proxima/Runtime/FastJson.cs @@ -0,0 +1,641 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Reflection; +using UnityEngine; + +namespace Proxima +{ + [AttributeUsage(AttributeTargets.Field)] + internal class SerializeIfAttribute : Attribute + { + public string Method; + + public SerializeIfAttribute(string method) + { + Method = method; + } + } + + internal class FastJson + { + private static bool _pretty = false; + private static MemoryStream _stream; + public static Dictionary<Type, List<FieldInfo>> _typeToObjectFields = new Dictionary<Type, List<FieldInfo>>(100); + + public static MemoryStream Serialize(object data, bool pretty = false) + { + if (data == null) + { + return null; + } + + _pretty = pretty; + _stream = new MemoryStream(1024); + + try + { + SerializeRecursively(data.GetType(), data, false); + _stream.Position = 0; + return _stream; + } + catch (Exception e) + { + Debug.LogException(e); + return null; + } + } + + private static void SerializeRecursively(Type type, object data, bool quote) + { + if (TrySerializeValue(type, data, quote)) + { + return; + } + + if (typeof(IList).IsAssignableFrom(type)) + { + SerializeList(data); + return; + } + + if (type.IsArray) + { + SerializeArray(data); + return; + } + + if (type.IsSerializable) + { + SerializeObject(data); + return; + } + + if (typeof(IEnumerable).IsAssignableFrom(type)) + { + SerializeEnumerable(data); + return; + } + + throw new Exception($"Unsupported type {type}"); + } + + private static bool TrySerializeValue(Type type, object data, bool quote) + { + switch (type) + { + case Type t when t == typeof(bool): SerializeBool(data); break; + case Type t when t == typeof(byte): WriteUInt64((ulong)(byte)data); break; + case Type t when t == typeof(sbyte): WriteInt64((long)(sbyte)data); break; + case Type t when t == typeof(short): WriteInt64((long)(short)data); break; + case Type t when t == typeof(ushort): WriteUInt64((ulong)(ushort)data); break; + case Type t when t == typeof(int): WriteInt64((long)(int)data); break; + case Type t when t == typeof(uint): WriteUInt64((ulong)(uint)data); break; + case Type t when t == typeof(long): WriteInt64((long)data); break; + case Type t when t == typeof(ulong): WriteUInt64((ulong)data); break; + case Type t when t == typeof(float): SerializeFloat(data); break; + case Type t when t == typeof(double): SerializeDouble(data); break; + case Type t when t == typeof(string): SerializeString(data, quote); break; + case Type t when t == typeof(Vector2): SerializeVector2(data); break; + case Type t when t == typeof(Vector3): SerializeVector3(data); break; + case Type t when t == typeof(Vector4): SerializeVector4(data); break; + case Type t when t == typeof(Vector2Int): SerializeVector2Int(data); break; + case Type t when t == typeof(Vector3Int): SerializeVector3Int(data); break; + case Type t when t == typeof(Quaternion): SerializeQuaternion(data); break; + case Type t when t == typeof(Rect): SerializeRect(data); break; + case Type t when t == typeof(RectInt): SerializeRectInt(data); break; + case Type t when t == typeof(Bounds): SerializeBounds(data); break; + case Type t when t == typeof(BoundsInt): SerializeBoundsInt(data); break; + case Type t when t == typeof(Color): SerializeColor(data, quote); break; + case Type t when t == typeof(LayerMask): SerializeLayerMask(data); break; + case Type t when t.IsEnum: SerializeEnum(data); break; + case Type t when t.IsSubclassOf(typeof(UnityEngine.Object)): SerializeUnityObject(type, data, quote); break; + default: return false; + } + + return true; + } + + private static void Write(char value) + { + _stream.WriteByte((byte)value); + } + + private static void Write(string value, int offset, int count) + { + var encoding = System.Text.Encoding.UTF8; + var startLength = (int)_stream.Length; + _stream.SetLength(_stream.Length + encoding.GetMaxByteCount(count)); + var written = encoding.GetBytes(value, offset, count, _stream.GetBuffer(), startLength); + _stream.SetLength(startLength + written); + _stream.Seek(0, SeekOrigin.End); + } + + private static void Write(string value) + { + Write(value, 0, value.Length); + } + + private static void SerializeBool(object data) + { + SerializeBool(data != null ? (bool)data : false); + } + + private static void SerializeBool(bool data) + { + if (data) + { + Write("true"); + } + else + { + Write("false"); + } + } + + private static void SerializeFloat(object data) + { + SerializeFloat(data != null ? (float)data : 0f); + } + + private static void SerializeFloat(float data) + { + if (float.IsNaN(data)) + { + Write('0'); + return; + } + + if (float.IsInfinity(data)) + { + Write("\"Infinity\""); + return; + } + + if (float.IsNegativeInfinity(data)) + { + Write("\"-Infinity\""); + return; + } + + var value = data; + Write(value.ToString(CultureInfo.InvariantCulture)); + } + + private static void SerializeDouble(object data) + { + SerializeDouble(data != null ? (double)data : 0d); + } + + private static void SerializeDouble(double data) + { + if (double.IsNaN(data)) + { + Write('0'); + return; + } + + if (double.IsInfinity(data)) + { + Write("\"Infinity\""); + return; + } + + if (double.IsNegativeInfinity(data)) + { + Write("\"-Infinity\""); + return; + } + + var value = data; + Write(value.ToString(CultureInfo.InvariantCulture)); + } + + private static void SerializeString(object data, bool quote) + { + var value = (string)data; + if (quote) + { + Write('"'); + } + + if (String.IsNullOrEmpty(value)) + { + if (quote) + { + Write('"'); + } + + return; + } + + int len = value.Length; + bool needEncode = false; + char c; + for (int i = 0; i < len; i++) + { + c = value[i]; + + if (c >= 0 && c <= 31 || c == 34 || c == 39 || c == 60 || c == 62 || c == 92) + { + needEncode = true; + break; + } + } + + if (!needEncode) + { + Write(value); + if (quote) + { + Write('"'); + } + + return; + } + + int start = 0; + for (int i = 0; i < len; i++) + { + c = value[i]; + string escaped = null; + if (c >= 0 && c <= 7 || c == 11 || c >= 14 && c <= 31 || c == 39 || c == 60 || c == 62) + { + escaped = string.Format("\\u{0:x4}", (int)c); + } + else switch ((int)c) + { + case 8: + escaped = "\\b"; + break; + case 9: + escaped = "\\t"; + break; + case 10: + escaped = "\\n"; + break; + case 12: + escaped = "\\f"; + break; + case 13: + escaped = "\\r"; + break; + case 34: + escaped = "\\\""; + break; + case 92: + escaped = "\\\\"; + break; + } + + if (escaped != null) + { + if (start < i) + { + Write(value.Substring(start, i - start)); + } + + Write(escaped); + start = i + 1; + } + } + + if (start < len) + { + Write(value.Substring(start)); + } + + if (quote) + { + Write('"'); + } + } + + private static void SerializeParams<T>(params T[] values) + { + SerializeList(values); + } + + private static void SerializeVector2(object data) + { + var v = (data != null) ? (Vector2)data : Vector2.zero; + SerializeParams(v.x, v.y); + } + + private static void SerializeVector3(object data) + { + var v = (data != null) ? (Vector3)data : Vector3.zero; + SerializeParams(v.x, v.y, v.z); + } + + private static void SerializeVector4(object data) + { + var v = (data != null) ? (Vector4)data : Vector4.zero; + SerializeParams(v.x, v.y, v.z, v.w); + } + + private static void SerializeVector2Int(object data) + { + var v = (data != null) ? (Vector2Int)data : Vector2Int.zero; + SerializeParams(v.x, v.y); + } + + private static void SerializeVector3Int(object data) + { + var v = (data != null) ? (Vector3Int)data : Vector3Int.zero; + SerializeParams(v.x, v.y, v.z); + } + + private static void SerializeQuaternion(object data) + { + var euler = (data != null) ? ((Quaternion)data).eulerAngles : Vector3.zero; + SerializeVector3(euler); + } + + private static void SerializeRect(object data) + { + var r = (data != null) ? (Rect)data : Rect.zero; + SerializeParams(r.x, r.y, r.width, r.height); + } + + private static void SerializeRectInt(object data) + { + var r = (data != null) ? (RectInt)data : new RectInt(0, 0, 0, 0); + SerializeParams(r.x, r.y, r.width, r.height); + } + + private static void SerializeBounds(object data) + { + var b = (data != null) ? (Bounds)data : new Bounds(Vector3.zero, Vector3.zero); + SerializeParams(b.center.x, b.center.y, b.center.z, b.size.x, b.size.y, b.size.z); + } + + private static void SerializeBoundsInt(object data) + { + var b = (data != null) ? (BoundsInt)data : new BoundsInt(Vector3Int.zero, Vector3Int.zero); + SerializeParams(b.position.x, b.position.y, b.position.z, b.size.x, b.size.y, b.size.z); + } + + private static void WriteHex(byte value) + { + byte high = (byte)(value >> 4); + byte low = (byte)(value & 15); + Write((char)(high < 10 ? high + 48 : high + 55)); + Write((char)(low < 10 ? low + 48 : low + 55)); + } + + private static void SerializeColor(object data, bool quote) + { + var color = data != null ? (Color)data : Color.black; + if (quote) + { + Write('"'); + } + + Write('#'); + WriteHex((byte)(color.r * 255)); + WriteHex((byte)(color.g * 255)); + WriteHex((byte)(color.b * 255)); + WriteHex((byte)(color.a * 255)); + + if (quote) + { + Write('"'); + } + } + + private static void SerializeLayerMask(object data) + { + var value = (LayerMask)data; + WriteInt64(value.value); + } + + private static void SerializeEnum(object data) + { + if (data == null) + { + Write('0'); + return; + } + + var underlyingType = Enum.GetUnderlyingType(data.GetType()); + switch (underlyingType) + { + case Type t when t == typeof(byte): WriteUInt64((byte)data); break; + case Type t when t == typeof(sbyte): WriteInt64((sbyte)data); break; + case Type t when t == typeof(short): WriteInt64((short)data); break; + case Type t when t == typeof(ushort): WriteUInt64((ushort)data); break; + case Type t when t == typeof(int): WriteInt64((int)data); break; + case Type t when t == typeof(uint): WriteUInt64((uint)data); break; + case Type t when t == typeof(long): WriteInt64((long)data); break; + case Type t when t == typeof(ulong): WriteUInt64((ulong)data); break; + default: throw new Exception($"Unsupported enum type {underlyingType}"); + } + } + + private static void SerializeUnityObject(Type type, object data, bool quote) + { + var value = (UnityEngine.Object)data; + if (value == null) + { + Write("null"); + return; + } + + SerializeString(value.name, quote); + } + + private static void SerializeList(object data) + { + var list = (IList)data; + Write('['); + var first = true; + var elementType = list.GetType().GetElementType(); + for (int i = 0; i < list.Count; i++) + { + var item = list[i]; + if (!first) + { + if (_pretty) + { + Write(", "); + } + else + { + Write(','); + } + } + + SerializeRecursively(item != null ? item.GetType() : elementType, item, true); + first = false; + } + + Write(']'); + } + + private static void SerializeArray(object data) + { + var array = (Array)data; + Write('['); + var first = true; + var elementType = array.GetType().GetElementType(); + for (int i = 0; i < array.Length; i++) + { + var item = array.GetValue(i); + if (!first) + { + if (_pretty) + { + Write(", "); + } + else + { + Write(','); + } + } + + SerializeRecursively(item != null ? item.GetType() : elementType, item, true); + first = false; + } + + Write(']'); + } + + private static void SerializeEnumerable(object data) + { + var enumerable = (IEnumerable)data; + Write('['); + var first = true; + var genericType = data.GetType().GetGenericArguments()[0]; + foreach (var item in enumerable) + { + if (!first) + { + if (_pretty) + { + Write(", "); + } + else + { + Write(','); + } + } + + SerializeRecursively(item != null ? item.GetType() : genericType, item, true); + first = false; + } + + Write(']'); + } + + private static void SerializeObject(object data) + { + if (data == null) + { + Write("null"); + } + + var type = data.GetType(); + var json = JsonUtility.ToJson(data); + + if (!_typeToObjectFields.TryGetValue(type, out var objectFields)) + { + objectFields = new List<FieldInfo>(); + foreach (var field in type.GetFields(BindingFlags.Public | BindingFlags.Instance)) + { + if ((field.FieldType == typeof(object) || field.FieldType == typeof(object[])) + && !Attribute.IsDefined(field, typeof(NonSerializedAttribute))) + { + objectFields.Add(field); + } + } + + _typeToObjectFields.Add(type, objectFields); + } + + if (objectFields.Count > 0) + { + Write(json, 0, json.Length - 1); + foreach (var field in objectFields) + { + var value = field.GetValue(data); + if (value != null) + { + var serializeIf = field.GetCustomAttribute<SerializeIfAttribute>(); + if (serializeIf != null) + { + var conditionMethod = data.GetType().GetMethod(serializeIf.Method, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance); + if (conditionMethod == null) + { + throw new Exception($"Method {serializeIf.Method} not found in {data.GetType()}"); + } + + var shouldSerialize = (bool)conditionMethod.Invoke(data, null); + if (!shouldSerialize) + { + continue; + } + } + + if (json.Length > 2) + { + Write(','); + } + + Write('"'); + Write(field.Name); + Write("\":"); + SerializeRecursively(value.GetType(), value, true); + } + } + Write('}'); + } + else + { + Write(json); + } + } + + private static void WriteInt64(long data) + { + var value = (long)data; + if (value < 0) + { + if (value == long.MinValue) // -9223372036854775808 + { + Write("-9223372036854775808"); + return; + } + + Write('-'); + value = unchecked(-value); + } + + WriteUInt64((ulong)value); + } + + private static void WriteUInt64(ulong value) + { + var start = _stream.Length; + var buf = _stream.GetBuffer(); + + while (value > 9) + { + var digit = value % 10; + value /= 10; + _stream.WriteByte((byte)('0' + digit)); + } + + _stream.WriteByte((byte)('0' + value)); + var newLength = _stream.Length; + for (int i = 0; i < (newLength - start) / 2; i++) + { + var tmp = buf[start + i]; + buf[start + i] = buf[newLength - i - 1]; + buf[newLength - i - 1] = tmp; + } + } + } +} \ No newline at end of file diff --git a/Assets/Proxima/Runtime/FastJson.cs.meta b/Assets/Proxima/Runtime/FastJson.cs.meta new file mode 100644 index 0000000..c364e6e --- /dev/null +++ b/Assets/Proxima/Runtime/FastJson.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ea1dc8830e236d145a577c7f26fd36d4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/Generated.meta b/Assets/Proxima/Runtime/Generated.meta new file mode 100644 index 0000000..927a963 --- /dev/null +++ b/Assets/Proxima/Runtime/Generated.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d48c9afd792220c4da8fadca29a741db +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/Generated/ProximaReflection.Generated.cs b/Assets/Proxima/Runtime/Generated/ProximaReflection.Generated.cs new file mode 100644 index 0000000..6eab793 --- /dev/null +++ b/Assets/Proxima/Runtime/Generated/ProximaReflection.Generated.cs @@ -0,0 +1,1939 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace Proxima +{ + using UnityProperty = ProximaComponentCommands.PropertyInfo; + + internal static class ProximaReflection_Generated + { + public static Dictionary<string, UnityProperty[]> Properties = new Dictionary<string, UnityProperty[]> + { + #if UNITY_ANIMATION + { "UnityEngine.Animations.AimConstraint", new UnityProperty[] { + new UnityProperty { Name = "constraintActive", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.Animations.AimConstraint)o).constraintActive = (System.Boolean)v, Getter = (o) => ((UnityEngine.Animations.AimConstraint)o).constraintActive, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.AimConstraint)o).constraintActive; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "weight", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.Animations.AimConstraint)o).weight = (System.Single)v, Getter = (o) => ((UnityEngine.Animations.AimConstraint)o).weight, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.AimConstraint)o).weight; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "aimVector", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((UnityEngine.Animations.AimConstraint)o).aimVector = (UnityEngine.Vector3)v, Getter = (o) => ((UnityEngine.Animations.AimConstraint)o).aimVector, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.AimConstraint)o).aimVector; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "upVector", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((UnityEngine.Animations.AimConstraint)o).upVector = (UnityEngine.Vector3)v, Getter = (o) => ((UnityEngine.Animations.AimConstraint)o).upVector, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.AimConstraint)o).upVector; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "worldUpType", PropertyType = typeof(UnityEngine.Animations.AimConstraint.WorldUpType), Setter = (o, v) => ((UnityEngine.Animations.AimConstraint)o).worldUpType = (UnityEngine.Animations.AimConstraint.WorldUpType)v, Getter = (o) => ((UnityEngine.Animations.AimConstraint)o).worldUpType, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.Animations.AimConstraint)o).worldUpType; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "worldUpVector", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((UnityEngine.Animations.AimConstraint)o).worldUpVector = (UnityEngine.Vector3)v, Getter = (o) => ((UnityEngine.Animations.AimConstraint)o).worldUpVector, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.AimConstraint)o).worldUpVector; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "worldUpObject", PropertyType = typeof(UnityEngine.Transform), Setter = (o, v) => ((UnityEngine.Animations.AimConstraint)o).worldUpObject = (UnityEngine.Transform)v, Getter = (o) => ((UnityEngine.Animations.AimConstraint)o).worldUpObject, }, + new UnityProperty { Name = "locked", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.Animations.AimConstraint)o).locked = (System.Boolean)v, Getter = (o) => ((UnityEngine.Animations.AimConstraint)o).locked, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.AimConstraint)o).locked; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "rotationAtRest", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((UnityEngine.Animations.AimConstraint)o).rotationAtRest = (UnityEngine.Vector3)v, Getter = (o) => ((UnityEngine.Animations.AimConstraint)o).rotationAtRest, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.AimConstraint)o).rotationAtRest; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "rotationOffset", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((UnityEngine.Animations.AimConstraint)o).rotationOffset = (UnityEngine.Vector3)v, Getter = (o) => ((UnityEngine.Animations.AimConstraint)o).rotationOffset, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.AimConstraint)o).rotationOffset; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "rotationAxis", PropertyType = typeof(UnityEngine.Animations.Axis), Setter = (o, v) => ((UnityEngine.Animations.AimConstraint)o).rotationAxis = (UnityEngine.Animations.Axis)v, Getter = (o) => ((UnityEngine.Animations.AimConstraint)o).rotationAxis, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.Animations.AimConstraint)o).rotationAxis; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.Animations.AimConstraint)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.Animations.AimConstraint)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.AimConstraint)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_ANIMATION + { "UnityEngine.Animation", new UnityProperty[] { + new UnityProperty { Name = "clip", PropertyType = typeof(UnityEngine.AnimationClip), Setter = (o, v) => ((Animation)o).clip = (UnityEngine.AnimationClip)v, Getter = (o) => ((Animation)o).clip, }, + new UnityProperty { Name = "playAutomatically", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((Animation)o).playAutomatically = (System.Boolean)v, Getter = (o) => ((Animation)o).playAutomatically, Updater = (object o, ref object v) => { var x = ((Animation)o).playAutomatically; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "animatePhysics", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((Animation)o).animatePhysics = (System.Boolean)v, Getter = (o) => ((Animation)o).animatePhysics, Updater = (object o, ref object v) => { var x = ((Animation)o).animatePhysics; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "cullingType", PropertyType = typeof(UnityEngine.AnimationCullingType), Setter = (o, v) => ((Animation)o).cullingType = (UnityEngine.AnimationCullingType)v, Getter = (o) => ((Animation)o).cullingType, Updater = (object o, ref object v) => { var x = (int)((Animation)o).cullingType; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((Animation)o).enabled = (System.Boolean)v, Getter = (o) => ((Animation)o).enabled, Updater = (object o, ref object v) => { var x = ((Animation)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_ANIMATION + { "UnityEngine.Animator", new UnityProperty[] { + new UnityProperty { Name = "runtimeAnimatorController", PropertyType = typeof(UnityEngine.RuntimeAnimatorController), Setter = (o, v) => ((Animator)o).runtimeAnimatorController = (UnityEngine.RuntimeAnimatorController)v, Getter = (o) => ((Animator)o).runtimeAnimatorController, }, + new UnityProperty { Name = "avatar", PropertyType = typeof(UnityEngine.Avatar), Setter = (o, v) => ((Animator)o).avatar = (UnityEngine.Avatar)v, Getter = (o) => ((Animator)o).avatar, }, + new UnityProperty { Name = "applyRootMotion", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((Animator)o).applyRootMotion = (System.Boolean)v, Getter = (o) => ((Animator)o).applyRootMotion, Updater = (object o, ref object v) => { var x = ((Animator)o).applyRootMotion; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "updateMode", PropertyType = typeof(UnityEngine.AnimatorUpdateMode), Setter = (o, v) => ((Animator)o).updateMode = (UnityEngine.AnimatorUpdateMode)v, Getter = (o) => ((Animator)o).updateMode, Updater = (object o, ref object v) => { var x = (int)((Animator)o).updateMode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "cullingMode", PropertyType = typeof(UnityEngine.AnimatorCullingMode), Setter = (o, v) => ((Animator)o).cullingMode = (UnityEngine.AnimatorCullingMode)v, Getter = (o) => ((Animator)o).cullingMode, Updater = (object o, ref object v) => { var x = (int)((Animator)o).cullingMode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((Animator)o).enabled = (System.Boolean)v, Getter = (o) => ((Animator)o).enabled, Updater = (object o, ref object v) => { var x = ((Animator)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_PHYSICS_2D + { "UnityEngine.AreaEffector2D", new UnityProperty[] { + new UnityProperty { Name = "useColliderMask", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((AreaEffector2D)o).useColliderMask = (System.Boolean)v, Getter = (o) => ((AreaEffector2D)o).useColliderMask, Updater = (object o, ref object v) => { var x = ((AreaEffector2D)o).useColliderMask; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "colliderMask", PropertyType = typeof(System.Int32), Setter = (o, v) => ((AreaEffector2D)o).colliderMask = (System.Int32)v, Getter = (o) => ((AreaEffector2D)o).colliderMask, Updater = (object o, ref object v) => { var x = ((AreaEffector2D)o).colliderMask; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "useGlobalAngle", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((AreaEffector2D)o).useGlobalAngle = (System.Boolean)v, Getter = (o) => ((AreaEffector2D)o).useGlobalAngle, Updater = (object o, ref object v) => { var x = ((AreaEffector2D)o).useGlobalAngle; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "forceAngle", PropertyType = typeof(System.Single), Setter = (o, v) => ((AreaEffector2D)o).forceAngle = (System.Single)v, Getter = (o) => ((AreaEffector2D)o).forceAngle, Updater = (object o, ref object v) => { var x = ((AreaEffector2D)o).forceAngle; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "forceMagnitude", PropertyType = typeof(System.Single), Setter = (o, v) => ((AreaEffector2D)o).forceMagnitude = (System.Single)v, Getter = (o) => ((AreaEffector2D)o).forceMagnitude, Updater = (object o, ref object v) => { var x = ((AreaEffector2D)o).forceMagnitude; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "forceVariation", PropertyType = typeof(System.Single), Setter = (o, v) => ((AreaEffector2D)o).forceVariation = (System.Single)v, Getter = (o) => ((AreaEffector2D)o).forceVariation, Updater = (object o, ref object v) => { var x = ((AreaEffector2D)o).forceVariation; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "forceTarget", PropertyType = typeof(UnityEngine.EffectorSelection2D), Setter = (o, v) => ((AreaEffector2D)o).forceTarget = (UnityEngine.EffectorSelection2D)v, Getter = (o) => ((AreaEffector2D)o).forceTarget, Updater = (object o, ref object v) => { var x = (int)((AreaEffector2D)o).forceTarget; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "drag", PropertyType = typeof(System.Single), Setter = (o, v) => ((AreaEffector2D)o).drag = (System.Single)v, Getter = (o) => ((AreaEffector2D)o).drag, Updater = (object o, ref object v) => { var x = ((AreaEffector2D)o).drag; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "angularDrag", PropertyType = typeof(System.Single), Setter = (o, v) => ((AreaEffector2D)o).angularDrag = (System.Single)v, Getter = (o) => ((AreaEffector2D)o).angularDrag, Updater = (object o, ref object v) => { var x = ((AreaEffector2D)o).angularDrag; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((AreaEffector2D)o).enabled = (System.Boolean)v, Getter = (o) => ((AreaEffector2D)o).enabled, Updater = (object o, ref object v) => { var x = ((AreaEffector2D)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_2020_3_OR_NEWER&&UNITY_PHYSICS + { "UnityEngine.ArticulationBody", new UnityProperty[] { + new UnityProperty { Name = "mass", PropertyType = typeof(System.Single), Setter = (o, v) => ((ArticulationBody)o).mass = (System.Single)v, Getter = (o) => ((ArticulationBody)o).mass, Updater = (object o, ref object v) => { var x = ((ArticulationBody)o).mass; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "useGravity", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((ArticulationBody)o).useGravity = (System.Boolean)v, Getter = (o) => ((ArticulationBody)o).useGravity, Updater = (object o, ref object v) => { var x = ((ArticulationBody)o).useGravity; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "immovable", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((ArticulationBody)o).immovable = (System.Boolean)v, Getter = (o) => ((ArticulationBody)o).immovable, Updater = (object o, ref object v) => { var x = ((ArticulationBody)o).immovable; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "linearDamping", PropertyType = typeof(System.Single), Setter = (o, v) => ((ArticulationBody)o).linearDamping = (System.Single)v, Getter = (o) => ((ArticulationBody)o).linearDamping, Updater = (object o, ref object v) => { var x = ((ArticulationBody)o).linearDamping; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "angularDamping", PropertyType = typeof(System.Single), Setter = (o, v) => ((ArticulationBody)o).angularDamping = (System.Single)v, Getter = (o) => ((ArticulationBody)o).angularDamping, Updater = (object o, ref object v) => { var x = ((ArticulationBody)o).angularDamping; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "collisionDetectionMode", PropertyType = typeof(UnityEngine.CollisionDetectionMode), Setter = (o, v) => ((ArticulationBody)o).collisionDetectionMode = (UnityEngine.CollisionDetectionMode)v, Getter = (o) => ((ArticulationBody)o).collisionDetectionMode, Updater = (object o, ref object v) => { var x = (int)((ArticulationBody)o).collisionDetectionMode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((ArticulationBody)o).enabled = (System.Boolean)v, Getter = (o) => ((ArticulationBody)o).enabled, Updater = (object o, ref object v) => { var x = ((ArticulationBody)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_AUDIO + { "UnityEngine.AudioChorusFilter", new UnityProperty[] { + new UnityProperty { Name = "dryMix", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioChorusFilter)o).dryMix = (System.Single)v, Getter = (o) => ((AudioChorusFilter)o).dryMix, Updater = (object o, ref object v) => { var x = ((AudioChorusFilter)o).dryMix; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "wetMix1", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioChorusFilter)o).wetMix1 = (System.Single)v, Getter = (o) => ((AudioChorusFilter)o).wetMix1, Updater = (object o, ref object v) => { var x = ((AudioChorusFilter)o).wetMix1; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "wetMix2", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioChorusFilter)o).wetMix2 = (System.Single)v, Getter = (o) => ((AudioChorusFilter)o).wetMix2, Updater = (object o, ref object v) => { var x = ((AudioChorusFilter)o).wetMix2; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "wetMix3", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioChorusFilter)o).wetMix3 = (System.Single)v, Getter = (o) => ((AudioChorusFilter)o).wetMix3, Updater = (object o, ref object v) => { var x = ((AudioChorusFilter)o).wetMix3; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "delay", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioChorusFilter)o).delay = (System.Single)v, Getter = (o) => ((AudioChorusFilter)o).delay, Updater = (object o, ref object v) => { var x = ((AudioChorusFilter)o).delay; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "rate", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioChorusFilter)o).rate = (System.Single)v, Getter = (o) => ((AudioChorusFilter)o).rate, Updater = (object o, ref object v) => { var x = ((AudioChorusFilter)o).rate; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "depth", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioChorusFilter)o).depth = (System.Single)v, Getter = (o) => ((AudioChorusFilter)o).depth, Updater = (object o, ref object v) => { var x = ((AudioChorusFilter)o).depth; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((AudioChorusFilter)o).enabled = (System.Boolean)v, Getter = (o) => ((AudioChorusFilter)o).enabled, Updater = (object o, ref object v) => { var x = ((AudioChorusFilter)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_AUDIO + { "UnityEngine.AudioDistortionFilter", new UnityProperty[] { + new UnityProperty { Name = "distortionLevel", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioDistortionFilter)o).distortionLevel = (System.Single)v, Getter = (o) => ((AudioDistortionFilter)o).distortionLevel, Updater = (object o, ref object v) => { var x = ((AudioDistortionFilter)o).distortionLevel; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((AudioDistortionFilter)o).enabled = (System.Boolean)v, Getter = (o) => ((AudioDistortionFilter)o).enabled, Updater = (object o, ref object v) => { var x = ((AudioDistortionFilter)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_AUDIO + { "UnityEngine.AudioEchoFilter", new UnityProperty[] { + new UnityProperty { Name = "delay", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioEchoFilter)o).delay = (System.Single)v, Getter = (o) => ((AudioEchoFilter)o).delay, Updater = (object o, ref object v) => { var x = ((AudioEchoFilter)o).delay; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "decayRatio", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioEchoFilter)o).decayRatio = (System.Single)v, Getter = (o) => ((AudioEchoFilter)o).decayRatio, Updater = (object o, ref object v) => { var x = ((AudioEchoFilter)o).decayRatio; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "dryMix", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioEchoFilter)o).dryMix = (System.Single)v, Getter = (o) => ((AudioEchoFilter)o).dryMix, Updater = (object o, ref object v) => { var x = ((AudioEchoFilter)o).dryMix; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "wetMix", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioEchoFilter)o).wetMix = (System.Single)v, Getter = (o) => ((AudioEchoFilter)o).wetMix, Updater = (object o, ref object v) => { var x = ((AudioEchoFilter)o).wetMix; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((AudioEchoFilter)o).enabled = (System.Boolean)v, Getter = (o) => ((AudioEchoFilter)o).enabled, Updater = (object o, ref object v) => { var x = ((AudioEchoFilter)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_AUDIO + { "UnityEngine.AudioHighPassFilter", new UnityProperty[] { + new UnityProperty { Name = "cutoffFrequency", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioHighPassFilter)o).cutoffFrequency = (System.Single)v, Getter = (o) => ((AudioHighPassFilter)o).cutoffFrequency, Updater = (object o, ref object v) => { var x = ((AudioHighPassFilter)o).cutoffFrequency; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "highpassResonanceQ", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioHighPassFilter)o).highpassResonanceQ = (System.Single)v, Getter = (o) => ((AudioHighPassFilter)o).highpassResonanceQ, Updater = (object o, ref object v) => { var x = ((AudioHighPassFilter)o).highpassResonanceQ; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((AudioHighPassFilter)o).enabled = (System.Boolean)v, Getter = (o) => ((AudioHighPassFilter)o).enabled, Updater = (object o, ref object v) => { var x = ((AudioHighPassFilter)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_AUDIO + { "UnityEngine.AudioLowPassFilter", new UnityProperty[] { + new UnityProperty { Name = "cutoffFrequency", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioLowPassFilter)o).cutoffFrequency = (System.Single)v, Getter = (o) => ((AudioLowPassFilter)o).cutoffFrequency, Updater = (object o, ref object v) => { var x = ((AudioLowPassFilter)o).cutoffFrequency; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "lowpassResonanceQ", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioLowPassFilter)o).lowpassResonanceQ = (System.Single)v, Getter = (o) => ((AudioLowPassFilter)o).lowpassResonanceQ, Updater = (object o, ref object v) => { var x = ((AudioLowPassFilter)o).lowpassResonanceQ; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((AudioLowPassFilter)o).enabled = (System.Boolean)v, Getter = (o) => ((AudioLowPassFilter)o).enabled, Updater = (object o, ref object v) => { var x = ((AudioLowPassFilter)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_AUDIO + { "UnityEngine.AudioReverbFilter", new UnityProperty[] { + new UnityProperty { Name = "reverbPreset", PropertyType = typeof(UnityEngine.AudioReverbPreset), Setter = (o, v) => ((AudioReverbFilter)o).reverbPreset = (UnityEngine.AudioReverbPreset)v, Getter = (o) => ((AudioReverbFilter)o).reverbPreset, Updater = (object o, ref object v) => { var x = (int)((AudioReverbFilter)o).reverbPreset; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "dryLevel", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioReverbFilter)o).dryLevel = (System.Single)v, Getter = (o) => ((AudioReverbFilter)o).dryLevel, Updater = (object o, ref object v) => { var x = ((AudioReverbFilter)o).dryLevel; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "room", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioReverbFilter)o).room = (System.Single)v, Getter = (o) => ((AudioReverbFilter)o).room, Updater = (object o, ref object v) => { var x = ((AudioReverbFilter)o).room; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "roomHF", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioReverbFilter)o).roomHF = (System.Single)v, Getter = (o) => ((AudioReverbFilter)o).roomHF, Updater = (object o, ref object v) => { var x = ((AudioReverbFilter)o).roomHF; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "roomLF", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioReverbFilter)o).roomLF = (System.Single)v, Getter = (o) => ((AudioReverbFilter)o).roomLF, Updater = (object o, ref object v) => { var x = ((AudioReverbFilter)o).roomLF; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "decayTime", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioReverbFilter)o).decayTime = (System.Single)v, Getter = (o) => ((AudioReverbFilter)o).decayTime, Updater = (object o, ref object v) => { var x = ((AudioReverbFilter)o).decayTime; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "decayHFRatio", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioReverbFilter)o).decayHFRatio = (System.Single)v, Getter = (o) => ((AudioReverbFilter)o).decayHFRatio, Updater = (object o, ref object v) => { var x = ((AudioReverbFilter)o).decayHFRatio; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "reflectionsLevel", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioReverbFilter)o).reflectionsLevel = (System.Single)v, Getter = (o) => ((AudioReverbFilter)o).reflectionsLevel, Updater = (object o, ref object v) => { var x = ((AudioReverbFilter)o).reflectionsLevel; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "reflectionsDelay", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioReverbFilter)o).reflectionsDelay = (System.Single)v, Getter = (o) => ((AudioReverbFilter)o).reflectionsDelay, Updater = (object o, ref object v) => { var x = ((AudioReverbFilter)o).reflectionsDelay; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "reverbLevel", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioReverbFilter)o).reverbLevel = (System.Single)v, Getter = (o) => ((AudioReverbFilter)o).reverbLevel, Updater = (object o, ref object v) => { var x = ((AudioReverbFilter)o).reverbLevel; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "reverbDelay", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioReverbFilter)o).reverbDelay = (System.Single)v, Getter = (o) => ((AudioReverbFilter)o).reverbDelay, Updater = (object o, ref object v) => { var x = ((AudioReverbFilter)o).reverbDelay; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "hfReference", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioReverbFilter)o).hfReference = (System.Single)v, Getter = (o) => ((AudioReverbFilter)o).hfReference, Updater = (object o, ref object v) => { var x = ((AudioReverbFilter)o).hfReference; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "lfReference", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioReverbFilter)o).lfReference = (System.Single)v, Getter = (o) => ((AudioReverbFilter)o).lfReference, Updater = (object o, ref object v) => { var x = ((AudioReverbFilter)o).lfReference; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "diffusion", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioReverbFilter)o).diffusion = (System.Single)v, Getter = (o) => ((AudioReverbFilter)o).diffusion, Updater = (object o, ref object v) => { var x = ((AudioReverbFilter)o).diffusion; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "density", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioReverbFilter)o).density = (System.Single)v, Getter = (o) => ((AudioReverbFilter)o).density, Updater = (object o, ref object v) => { var x = ((AudioReverbFilter)o).density; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((AudioReverbFilter)o).enabled = (System.Boolean)v, Getter = (o) => ((AudioReverbFilter)o).enabled, Updater = (object o, ref object v) => { var x = ((AudioReverbFilter)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_AUDIO + { "UnityEngine.AudioReverbZone", new UnityProperty[] { + new UnityProperty { Name = "minDistance", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioReverbZone)o).minDistance = (System.Single)v, Getter = (o) => ((AudioReverbZone)o).minDistance, Updater = (object o, ref object v) => { var x = ((AudioReverbZone)o).minDistance; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "maxDistance", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioReverbZone)o).maxDistance = (System.Single)v, Getter = (o) => ((AudioReverbZone)o).maxDistance, Updater = (object o, ref object v) => { var x = ((AudioReverbZone)o).maxDistance; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "reverbPreset", PropertyType = typeof(UnityEngine.AudioReverbPreset), Setter = (o, v) => ((AudioReverbZone)o).reverbPreset = (UnityEngine.AudioReverbPreset)v, Getter = (o) => ((AudioReverbZone)o).reverbPreset, Updater = (object o, ref object v) => { var x = (int)((AudioReverbZone)o).reverbPreset; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "room", PropertyType = typeof(System.Int32), Setter = (o, v) => ((AudioReverbZone)o).room = (System.Int32)v, Getter = (o) => ((AudioReverbZone)o).room, Updater = (object o, ref object v) => { var x = ((AudioReverbZone)o).room; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "roomHF", PropertyType = typeof(System.Int32), Setter = (o, v) => ((AudioReverbZone)o).roomHF = (System.Int32)v, Getter = (o) => ((AudioReverbZone)o).roomHF, Updater = (object o, ref object v) => { var x = ((AudioReverbZone)o).roomHF; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "roomLF", PropertyType = typeof(System.Int32), Setter = (o, v) => ((AudioReverbZone)o).roomLF = (System.Int32)v, Getter = (o) => ((AudioReverbZone)o).roomLF, Updater = (object o, ref object v) => { var x = ((AudioReverbZone)o).roomLF; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "decayTime", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioReverbZone)o).decayTime = (System.Single)v, Getter = (o) => ((AudioReverbZone)o).decayTime, Updater = (object o, ref object v) => { var x = ((AudioReverbZone)o).decayTime; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "decayHFRatio", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioReverbZone)o).decayHFRatio = (System.Single)v, Getter = (o) => ((AudioReverbZone)o).decayHFRatio, Updater = (object o, ref object v) => { var x = ((AudioReverbZone)o).decayHFRatio; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "reflections", PropertyType = typeof(System.Int32), Setter = (o, v) => ((AudioReverbZone)o).reflections = (System.Int32)v, Getter = (o) => ((AudioReverbZone)o).reflections, Updater = (object o, ref object v) => { var x = ((AudioReverbZone)o).reflections; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "reflectionsDelay", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioReverbZone)o).reflectionsDelay = (System.Single)v, Getter = (o) => ((AudioReverbZone)o).reflectionsDelay, Updater = (object o, ref object v) => { var x = ((AudioReverbZone)o).reflectionsDelay; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "reverb", PropertyType = typeof(System.Int32), Setter = (o, v) => ((AudioReverbZone)o).reverb = (System.Int32)v, Getter = (o) => ((AudioReverbZone)o).reverb, Updater = (object o, ref object v) => { var x = ((AudioReverbZone)o).reverb; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "reverbDelay", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioReverbZone)o).reverbDelay = (System.Single)v, Getter = (o) => ((AudioReverbZone)o).reverbDelay, Updater = (object o, ref object v) => { var x = ((AudioReverbZone)o).reverbDelay; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "HFReference", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioReverbZone)o).HFReference = (System.Single)v, Getter = (o) => ((AudioReverbZone)o).HFReference, Updater = (object o, ref object v) => { var x = ((AudioReverbZone)o).HFReference; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "LFReference", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioReverbZone)o).LFReference = (System.Single)v, Getter = (o) => ((AudioReverbZone)o).LFReference, Updater = (object o, ref object v) => { var x = ((AudioReverbZone)o).LFReference; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "diffusion", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioReverbZone)o).diffusion = (System.Single)v, Getter = (o) => ((AudioReverbZone)o).diffusion, Updater = (object o, ref object v) => { var x = ((AudioReverbZone)o).diffusion; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "density", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioReverbZone)o).density = (System.Single)v, Getter = (o) => ((AudioReverbZone)o).density, Updater = (object o, ref object v) => { var x = ((AudioReverbZone)o).density; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((AudioReverbZone)o).enabled = (System.Boolean)v, Getter = (o) => ((AudioReverbZone)o).enabled, Updater = (object o, ref object v) => { var x = ((AudioReverbZone)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_AUDIO + { "UnityEngine.AudioSource", new UnityProperty[] { + new UnityProperty { Name = "clip", PropertyType = typeof(UnityEngine.AudioClip), Setter = (o, v) => ((AudioSource)o).clip = (UnityEngine.AudioClip)v, Getter = (o) => ((AudioSource)o).clip, }, + new UnityProperty { Name = "outputAudioMixerGroup", PropertyType = typeof(UnityEngine.Audio.AudioMixerGroup), Setter = (o, v) => ((AudioSource)o).outputAudioMixerGroup = (UnityEngine.Audio.AudioMixerGroup)v, Getter = (o) => ((AudioSource)o).outputAudioMixerGroup, }, + new UnityProperty { Name = "mute", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((AudioSource)o).mute = (System.Boolean)v, Getter = (o) => ((AudioSource)o).mute, Updater = (object o, ref object v) => { var x = ((AudioSource)o).mute; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "bypassEffects", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((AudioSource)o).bypassEffects = (System.Boolean)v, Getter = (o) => ((AudioSource)o).bypassEffects, Updater = (object o, ref object v) => { var x = ((AudioSource)o).bypassEffects; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "bypassListenerEffects", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((AudioSource)o).bypassListenerEffects = (System.Boolean)v, Getter = (o) => ((AudioSource)o).bypassListenerEffects, Updater = (object o, ref object v) => { var x = ((AudioSource)o).bypassListenerEffects; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "bypassReverbZones", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((AudioSource)o).bypassReverbZones = (System.Boolean)v, Getter = (o) => ((AudioSource)o).bypassReverbZones, Updater = (object o, ref object v) => { var x = ((AudioSource)o).bypassReverbZones; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "playOnAwake", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((AudioSource)o).playOnAwake = (System.Boolean)v, Getter = (o) => ((AudioSource)o).playOnAwake, Updater = (object o, ref object v) => { var x = ((AudioSource)o).playOnAwake; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "loop", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((AudioSource)o).loop = (System.Boolean)v, Getter = (o) => ((AudioSource)o).loop, Updater = (object o, ref object v) => { var x = ((AudioSource)o).loop; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "priority", PropertyType = typeof(System.Int32), Setter = (o, v) => ((AudioSource)o).priority = (System.Int32)v, Getter = (o) => ((AudioSource)o).priority, Updater = (object o, ref object v) => { var x = ((AudioSource)o).priority; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "volume", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioSource)o).volume = (System.Single)v, Getter = (o) => ((AudioSource)o).volume, Updater = (object o, ref object v) => { var x = ((AudioSource)o).volume; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "pitch", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioSource)o).pitch = (System.Single)v, Getter = (o) => ((AudioSource)o).pitch, Updater = (object o, ref object v) => { var x = ((AudioSource)o).pitch; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "panStereo", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioSource)o).panStereo = (System.Single)v, Getter = (o) => ((AudioSource)o).panStereo, Updater = (object o, ref object v) => { var x = ((AudioSource)o).panStereo; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "spatialBlend", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioSource)o).spatialBlend = (System.Single)v, Getter = (o) => ((AudioSource)o).spatialBlend, Updater = (object o, ref object v) => { var x = ((AudioSource)o).spatialBlend; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "reverbZoneMix", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioSource)o).reverbZoneMix = (System.Single)v, Getter = (o) => ((AudioSource)o).reverbZoneMix, Updater = (object o, ref object v) => { var x = ((AudioSource)o).reverbZoneMix; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "dopplerLevel", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioSource)o).dopplerLevel = (System.Single)v, Getter = (o) => ((AudioSource)o).dopplerLevel, Updater = (object o, ref object v) => { var x = ((AudioSource)o).dopplerLevel; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "spread", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioSource)o).spread = (System.Single)v, Getter = (o) => ((AudioSource)o).spread, Updater = (object o, ref object v) => { var x = ((AudioSource)o).spread; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "rolloffMode", PropertyType = typeof(UnityEngine.AudioRolloffMode), Setter = (o, v) => ((AudioSource)o).rolloffMode = (UnityEngine.AudioRolloffMode)v, Getter = (o) => ((AudioSource)o).rolloffMode, Updater = (object o, ref object v) => { var x = (int)((AudioSource)o).rolloffMode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "minDistance", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioSource)o).minDistance = (System.Single)v, Getter = (o) => ((AudioSource)o).minDistance, Updater = (object o, ref object v) => { var x = ((AudioSource)o).minDistance; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "maxDistance", PropertyType = typeof(System.Single), Setter = (o, v) => ((AudioSource)o).maxDistance = (System.Single)v, Getter = (o) => ((AudioSource)o).maxDistance, Updater = (object o, ref object v) => { var x = ((AudioSource)o).maxDistance; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((AudioSource)o).enabled = (System.Boolean)v, Getter = (o) => ((AudioSource)o).enabled, Updater = (object o, ref object v) => { var x = ((AudioSource)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_PHYSICS + { "UnityEngine.BoxCollider", new UnityProperty[] { + new UnityProperty { Name = "isTrigger", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((BoxCollider)o).isTrigger = (System.Boolean)v, Getter = (o) => ((BoxCollider)o).isTrigger, Updater = (object o, ref object v) => { var x = ((BoxCollider)o).isTrigger; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "sharedMaterial", PropertyType = typeof(UnityEngine.PhysicMaterial), Setter = (o, v) => ((BoxCollider)o).sharedMaterial = (UnityEngine.PhysicMaterial)v, Getter = (o) => ((BoxCollider)o).sharedMaterial, }, + new UnityProperty { Name = "center", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((BoxCollider)o).center = (UnityEngine.Vector3)v, Getter = (o) => ((BoxCollider)o).center, Updater = (object o, ref object v) => { var x = ((BoxCollider)o).center; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "size", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((BoxCollider)o).size = (UnityEngine.Vector3)v, Getter = (o) => ((BoxCollider)o).size, Updater = (object o, ref object v) => { var x = ((BoxCollider)o).size; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((BoxCollider)o).enabled = (System.Boolean)v, Getter = (o) => ((BoxCollider)o).enabled, Updater = (object o, ref object v) => { var x = ((BoxCollider)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_PHYSICS_2D + { "UnityEngine.BoxCollider2D", new UnityProperty[] { + new UnityProperty { Name = "sharedMaterial", PropertyType = typeof(UnityEngine.PhysicsMaterial2D), Setter = (o, v) => ((BoxCollider2D)o).sharedMaterial = (UnityEngine.PhysicsMaterial2D)v, Getter = (o) => ((BoxCollider2D)o).sharedMaterial, }, + new UnityProperty { Name = "isTrigger", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((BoxCollider2D)o).isTrigger = (System.Boolean)v, Getter = (o) => ((BoxCollider2D)o).isTrigger, Updater = (object o, ref object v) => { var x = ((BoxCollider2D)o).isTrigger; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "usedByEffector", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((BoxCollider2D)o).usedByEffector = (System.Boolean)v, Getter = (o) => ((BoxCollider2D)o).usedByEffector, Updater = (object o, ref object v) => { var x = ((BoxCollider2D)o).usedByEffector; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + #if !UNITY_2023_1_OR_NEWER + new UnityProperty { Name = "usedByComposite", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((BoxCollider2D)o).usedByComposite = (System.Boolean)v, Getter = (o) => ((BoxCollider2D)o).usedByComposite, Updater = (object o, ref object v) => { var x = ((BoxCollider2D)o).usedByComposite; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + #endif + #if UNITY_2023_1_OR_NEWER + new UnityProperty { Name = "compositeOperation", PropertyType = typeof(UnityEngine.Collider2D.CompositeOperation), Setter = (o, v) => ((BoxCollider2D)o).compositeOperation = (UnityEngine.Collider2D.CompositeOperation)v, Getter = (o) => ((BoxCollider2D)o).compositeOperation, Updater = (object o, ref object v) => { var x = (int)((BoxCollider2D)o).compositeOperation; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + #endif + new UnityProperty { Name = "offset", PropertyType = typeof(UnityEngine.Vector2), Setter = (o, v) => ((BoxCollider2D)o).offset = (UnityEngine.Vector2)v, Getter = (o) => ((BoxCollider2D)o).offset, Updater = (object o, ref object v) => { var x = ((BoxCollider2D)o).offset; if (!x.Equals((UnityEngine.Vector2)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "autoTiling", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((BoxCollider2D)o).autoTiling = (System.Boolean)v, Getter = (o) => ((BoxCollider2D)o).autoTiling, Updater = (object o, ref object v) => { var x = ((BoxCollider2D)o).autoTiling; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "size", PropertyType = typeof(UnityEngine.Vector2), Setter = (o, v) => ((BoxCollider2D)o).size = (UnityEngine.Vector2)v, Getter = (o) => ((BoxCollider2D)o).size, Updater = (object o, ref object v) => { var x = ((BoxCollider2D)o).size; if (!x.Equals((UnityEngine.Vector2)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "edgeRadius", PropertyType = typeof(System.Single), Setter = (o, v) => ((BoxCollider2D)o).edgeRadius = (System.Single)v, Getter = (o) => ((BoxCollider2D)o).edgeRadius, Updater = (object o, ref object v) => { var x = ((BoxCollider2D)o).edgeRadius; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((BoxCollider2D)o).enabled = (System.Boolean)v, Getter = (o) => ((BoxCollider2D)o).enabled, Updater = (object o, ref object v) => { var x = ((BoxCollider2D)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + { "UnityEngine.BillboardRenderer", new UnityProperty[] { + new UnityProperty { Name = "billboard", PropertyType = typeof(UnityEngine.BillboardAsset), Setter = (o, v) => ((BillboardRenderer)o).billboard = (UnityEngine.BillboardAsset)v, Getter = (o) => ((BillboardRenderer)o).billboard, }, + new UnityProperty { Name = "shadowCastingMode", PropertyType = typeof(UnityEngine.Rendering.ShadowCastingMode), Setter = (o, v) => ((BillboardRenderer)o).shadowCastingMode = (UnityEngine.Rendering.ShadowCastingMode)v, Getter = (o) => ((BillboardRenderer)o).shadowCastingMode, Updater = (object o, ref object v) => { var x = (int)((BillboardRenderer)o).shadowCastingMode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "receiveShadows", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((BillboardRenderer)o).receiveShadows = (System.Boolean)v, Getter = (o) => ((BillboardRenderer)o).receiveShadows, Updater = (object o, ref object v) => { var x = ((BillboardRenderer)o).receiveShadows; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "lightProbeUsage", PropertyType = typeof(UnityEngine.Rendering.LightProbeUsage), Setter = (o, v) => ((BillboardRenderer)o).lightProbeUsage = (UnityEngine.Rendering.LightProbeUsage)v, Getter = (o) => ((BillboardRenderer)o).lightProbeUsage, Updater = (object o, ref object v) => { var x = (int)((BillboardRenderer)o).lightProbeUsage; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "reflectionProbeUsage", PropertyType = typeof(UnityEngine.Rendering.ReflectionProbeUsage), Setter = (o, v) => ((BillboardRenderer)o).reflectionProbeUsage = (UnityEngine.Rendering.ReflectionProbeUsage)v, Getter = (o) => ((BillboardRenderer)o).reflectionProbeUsage, Updater = (object o, ref object v) => { var x = (int)((BillboardRenderer)o).reflectionProbeUsage; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "motionVectorGenerationMode", PropertyType = typeof(UnityEngine.MotionVectorGenerationMode), Setter = (o, v) => ((BillboardRenderer)o).motionVectorGenerationMode = (UnityEngine.MotionVectorGenerationMode)v, Getter = (o) => ((BillboardRenderer)o).motionVectorGenerationMode, Updater = (object o, ref object v) => { var x = (int)((BillboardRenderer)o).motionVectorGenerationMode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "allowOcclusionWhenDynamic", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((BillboardRenderer)o).allowOcclusionWhenDynamic = (System.Boolean)v, Getter = (o) => ((BillboardRenderer)o).allowOcclusionWhenDynamic, Updater = (object o, ref object v) => { var x = ((BillboardRenderer)o).allowOcclusionWhenDynamic; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((BillboardRenderer)o).enabled = (System.Boolean)v, Getter = (o) => ((BillboardRenderer)o).enabled, Updater = (object o, ref object v) => { var x = ((BillboardRenderer)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + + + #if UNITY_PHYSICS_2D + { "UnityEngine.BuoyancyEffector2D", new UnityProperty[] { + new UnityProperty { Name = "useColliderMask", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((BuoyancyEffector2D)o).useColliderMask = (System.Boolean)v, Getter = (o) => ((BuoyancyEffector2D)o).useColliderMask, Updater = (object o, ref object v) => { var x = ((BuoyancyEffector2D)o).useColliderMask; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "colliderMask", PropertyType = typeof(System.Int32), Setter = (o, v) => ((BuoyancyEffector2D)o).colliderMask = (System.Int32)v, Getter = (o) => ((BuoyancyEffector2D)o).colliderMask, Updater = (object o, ref object v) => { var x = ((BuoyancyEffector2D)o).colliderMask; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "density", PropertyType = typeof(System.Single), Setter = (o, v) => ((BuoyancyEffector2D)o).density = (System.Single)v, Getter = (o) => ((BuoyancyEffector2D)o).density, Updater = (object o, ref object v) => { var x = ((BuoyancyEffector2D)o).density; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "surfaceLevel", PropertyType = typeof(System.Single), Setter = (o, v) => ((BuoyancyEffector2D)o).surfaceLevel = (System.Single)v, Getter = (o) => ((BuoyancyEffector2D)o).surfaceLevel, Updater = (object o, ref object v) => { var x = ((BuoyancyEffector2D)o).surfaceLevel; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "linearDrag", PropertyType = typeof(System.Single), Setter = (o, v) => ((BuoyancyEffector2D)o).linearDrag = (System.Single)v, Getter = (o) => ((BuoyancyEffector2D)o).linearDrag, Updater = (object o, ref object v) => { var x = ((BuoyancyEffector2D)o).linearDrag; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "angularDrag", PropertyType = typeof(System.Single), Setter = (o, v) => ((BuoyancyEffector2D)o).angularDrag = (System.Single)v, Getter = (o) => ((BuoyancyEffector2D)o).angularDrag, Updater = (object o, ref object v) => { var x = ((BuoyancyEffector2D)o).angularDrag; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "flowAngle", PropertyType = typeof(System.Single), Setter = (o, v) => ((BuoyancyEffector2D)o).flowAngle = (System.Single)v, Getter = (o) => ((BuoyancyEffector2D)o).flowAngle, Updater = (object o, ref object v) => { var x = ((BuoyancyEffector2D)o).flowAngle; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "flowMagnitude", PropertyType = typeof(System.Single), Setter = (o, v) => ((BuoyancyEffector2D)o).flowMagnitude = (System.Single)v, Getter = (o) => ((BuoyancyEffector2D)o).flowMagnitude, Updater = (object o, ref object v) => { var x = ((BuoyancyEffector2D)o).flowMagnitude; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "flowVariation", PropertyType = typeof(System.Single), Setter = (o, v) => ((BuoyancyEffector2D)o).flowVariation = (System.Single)v, Getter = (o) => ((BuoyancyEffector2D)o).flowVariation, Updater = (object o, ref object v) => { var x = ((BuoyancyEffector2D)o).flowVariation; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((BuoyancyEffector2D)o).enabled = (System.Boolean)v, Getter = (o) => ((BuoyancyEffector2D)o).enabled, Updater = (object o, ref object v) => { var x = ((BuoyancyEffector2D)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_GUI + { "UnityEngine.UI.Button", new UnityProperty[] { + new UnityProperty { Name = "interactable", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.Button)o).interactable = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.Button)o).interactable, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Button)o).interactable; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "transition", PropertyType = typeof(UnityEngine.UI.Selectable.Transition), Setter = (o, v) => ((UnityEngine.UI.Button)o).transition = (UnityEngine.UI.Selectable.Transition)v, Getter = (o) => ((UnityEngine.UI.Button)o).transition, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.UI.Button)o).transition; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "targetGraphic", PropertyType = typeof(UnityEngine.UI.Graphic), Setter = (o, v) => ((UnityEngine.UI.Button)o).targetGraphic = (UnityEngine.UI.Graphic)v, Getter = (o) => ((UnityEngine.UI.Button)o).targetGraphic, }, + new UnityProperty { Name = "colors", PropertyType = typeof(UnityEngine.UI.ColorBlock), Setter = (o, v) => ((UnityEngine.UI.Button)o).colors = (UnityEngine.UI.ColorBlock)v, Getter = (o) => ((UnityEngine.UI.Button)o).colors, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Button)o).colors; if (!x.Equals((UnityEngine.UI.ColorBlock)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "navigation", PropertyType = typeof(UnityEngine.UI.Navigation), Setter = (o, v) => ((UnityEngine.UI.Button)o).navigation = (UnityEngine.UI.Navigation)v, Getter = (o) => ((UnityEngine.UI.Button)o).navigation, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Button)o).navigation; if (!x.Equals((UnityEngine.UI.Navigation)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.Button)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.Button)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Button)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + { "UnityEngine.Camera", new UnityProperty[] { + new UnityProperty { Name = "clearFlags", PropertyType = typeof(UnityEngine.CameraClearFlags), Setter = (o, v) => ((Camera)o).clearFlags = (UnityEngine.CameraClearFlags)v, Getter = (o) => ((Camera)o).clearFlags, Updater = (object o, ref object v) => { var x = (int)((Camera)o).clearFlags; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "backgroundColor", PropertyType = typeof(UnityEngine.Color), Setter = (o, v) => ((Camera)o).backgroundColor = (UnityEngine.Color)v, Getter = (o) => ((Camera)o).backgroundColor, Updater = (object o, ref object v) => { var x = ((Camera)o).backgroundColor; if (!x.Equals((UnityEngine.Color)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "cullingMask", PropertyType = typeof(System.Int32), Setter = (o, v) => ((Camera)o).cullingMask = (System.Int32)v, Getter = (o) => ((Camera)o).cullingMask, Updater = (object o, ref object v) => { var x = ((Camera)o).cullingMask; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "orthographic", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((Camera)o).orthographic = (System.Boolean)v, Getter = (o) => ((Camera)o).orthographic, Updater = (object o, ref object v) => { var x = ((Camera)o).orthographic; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "fieldOfView", PropertyType = typeof(System.Single), Setter = (o, v) => ((Camera)o).fieldOfView = (System.Single)v, Getter = (o) => ((Camera)o).fieldOfView, Updater = (object o, ref object v) => { var x = ((Camera)o).fieldOfView; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "usePhysicalProperties", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((Camera)o).usePhysicalProperties = (System.Boolean)v, Getter = (o) => ((Camera)o).usePhysicalProperties, Updater = (object o, ref object v) => { var x = ((Camera)o).usePhysicalProperties; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "nearClipPlane", PropertyType = typeof(System.Single), Setter = (o, v) => ((Camera)o).nearClipPlane = (System.Single)v, Getter = (o) => ((Camera)o).nearClipPlane, Updater = (object o, ref object v) => { var x = ((Camera)o).nearClipPlane; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "farClipPlane", PropertyType = typeof(System.Single), Setter = (o, v) => ((Camera)o).farClipPlane = (System.Single)v, Getter = (o) => ((Camera)o).farClipPlane, Updater = (object o, ref object v) => { var x = ((Camera)o).farClipPlane; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "rect", PropertyType = typeof(UnityEngine.Rect), Setter = (o, v) => ((Camera)o).rect = (UnityEngine.Rect)v, Getter = (o) => ((Camera)o).rect, Updater = (object o, ref object v) => { var x = ((Camera)o).rect; if (!x.Equals((UnityEngine.Rect)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "depth", PropertyType = typeof(System.Single), Setter = (o, v) => ((Camera)o).depth = (System.Single)v, Getter = (o) => ((Camera)o).depth, Updater = (object o, ref object v) => { var x = ((Camera)o).depth; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "renderingPath", PropertyType = typeof(UnityEngine.RenderingPath), Setter = (o, v) => ((Camera)o).renderingPath = (UnityEngine.RenderingPath)v, Getter = (o) => ((Camera)o).renderingPath, Updater = (object o, ref object v) => { var x = (int)((Camera)o).renderingPath; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "targetTexture", PropertyType = typeof(UnityEngine.RenderTexture), Setter = (o, v) => ((Camera)o).targetTexture = (UnityEngine.RenderTexture)v, Getter = (o) => ((Camera)o).targetTexture, }, + new UnityProperty { Name = "useOcclusionCulling", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((Camera)o).useOcclusionCulling = (System.Boolean)v, Getter = (o) => ((Camera)o).useOcclusionCulling, Updater = (object o, ref object v) => { var x = ((Camera)o).useOcclusionCulling; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "allowHDR", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((Camera)o).allowHDR = (System.Boolean)v, Getter = (o) => ((Camera)o).allowHDR, Updater = (object o, ref object v) => { var x = ((Camera)o).allowHDR; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "allowMSAA", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((Camera)o).allowMSAA = (System.Boolean)v, Getter = (o) => ((Camera)o).allowMSAA, Updater = (object o, ref object v) => { var x = ((Camera)o).allowMSAA; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "allowDynamicResolution", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((Camera)o).allowDynamicResolution = (System.Boolean)v, Getter = (o) => ((Camera)o).allowDynamicResolution, Updater = (object o, ref object v) => { var x = ((Camera)o).allowDynamicResolution; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "targetDisplay", PropertyType = typeof(System.Int32), Setter = (o, v) => ((Camera)o).targetDisplay = (System.Int32)v, Getter = (o) => ((Camera)o).targetDisplay, Updater = (object o, ref object v) => { var x = ((Camera)o).targetDisplay; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((Camera)o).enabled = (System.Boolean)v, Getter = (o) => ((Camera)o).enabled, Updater = (object o, ref object v) => { var x = ((Camera)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + + + #if UNITY_UI + { "UnityEngine.Canvas", new UnityProperty[] { + new UnityProperty { Name = "renderMode", PropertyType = typeof(UnityEngine.RenderMode), Setter = (o, v) => ((Canvas)o).renderMode = (UnityEngine.RenderMode)v, Getter = (o) => ((Canvas)o).renderMode, Updater = (object o, ref object v) => { var x = (int)((Canvas)o).renderMode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "worldCamera", PropertyType = typeof(UnityEngine.Camera), Setter = (o, v) => ((Canvas)o).worldCamera = (UnityEngine.Camera)v, Getter = (o) => ((Canvas)o).worldCamera, }, + new UnityProperty { Name = "pixelPerfect", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((Canvas)o).pixelPerfect = (System.Boolean)v, Getter = (o) => ((Canvas)o).pixelPerfect, Updater = (object o, ref object v) => { var x = ((Canvas)o).pixelPerfect; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "sortingOrder", PropertyType = typeof(System.Int32), Setter = (o, v) => ((Canvas)o).sortingOrder = (System.Int32)v, Getter = (o) => ((Canvas)o).sortingOrder, Updater = (object o, ref object v) => { var x = ((Canvas)o).sortingOrder; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "targetDisplay", PropertyType = typeof(System.Int32), Setter = (o, v) => ((Canvas)o).targetDisplay = (System.Int32)v, Getter = (o) => ((Canvas)o).targetDisplay, Updater = (object o, ref object v) => { var x = ((Canvas)o).targetDisplay; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "additionalShaderChannels", PropertyType = typeof(UnityEngine.AdditionalCanvasShaderChannels), Setter = (o, v) => ((Canvas)o).additionalShaderChannels = (UnityEngine.AdditionalCanvasShaderChannels)v, Getter = (o) => ((Canvas)o).additionalShaderChannels, Updater = (object o, ref object v) => { var x = (int)((Canvas)o).additionalShaderChannels; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((Canvas)o).enabled = (System.Boolean)v, Getter = (o) => ((Canvas)o).enabled, Updater = (object o, ref object v) => { var x = ((Canvas)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_UI + { "UnityEngine.CanvasGroup", new UnityProperty[] { + new UnityProperty { Name = "alpha", PropertyType = typeof(System.Single), Setter = (o, v) => ((CanvasGroup)o).alpha = (System.Single)v, Getter = (o) => ((CanvasGroup)o).alpha, Updater = (object o, ref object v) => { var x = ((CanvasGroup)o).alpha; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "interactable", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((CanvasGroup)o).interactable = (System.Boolean)v, Getter = (o) => ((CanvasGroup)o).interactable, Updater = (object o, ref object v) => { var x = ((CanvasGroup)o).interactable; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "blocksRaycasts", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((CanvasGroup)o).blocksRaycasts = (System.Boolean)v, Getter = (o) => ((CanvasGroup)o).blocksRaycasts, Updater = (object o, ref object v) => { var x = ((CanvasGroup)o).blocksRaycasts; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "ignoreParentGroups", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((CanvasGroup)o).ignoreParentGroups = (System.Boolean)v, Getter = (o) => ((CanvasGroup)o).ignoreParentGroups, Updater = (object o, ref object v) => { var x = ((CanvasGroup)o).ignoreParentGroups; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((CanvasGroup)o).enabled = (System.Boolean)v, Getter = (o) => ((CanvasGroup)o).enabled, Updater = (object o, ref object v) => { var x = ((CanvasGroup)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_UI + { "UnityEngine.CanvasRenderer", new UnityProperty[] { + new UnityProperty { Name = "cullTransparentMesh", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((CanvasRenderer)o).cullTransparentMesh = (System.Boolean)v, Getter = (o) => ((CanvasRenderer)o).cullTransparentMesh, Updater = (object o, ref object v) => { var x = ((CanvasRenderer)o).cullTransparentMesh; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_GUI + { "UnityEngine.UI.CanvasScaler", new UnityProperty[] { + new UnityProperty { Name = "uiScaleMode", PropertyType = typeof(UnityEngine.UI.CanvasScaler.ScaleMode), Setter = (o, v) => ((UnityEngine.UI.CanvasScaler)o).uiScaleMode = (UnityEngine.UI.CanvasScaler.ScaleMode)v, Getter = (o) => ((UnityEngine.UI.CanvasScaler)o).uiScaleMode, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.UI.CanvasScaler)o).uiScaleMode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "scaleFactor", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.UI.CanvasScaler)o).scaleFactor = (System.Single)v, Getter = (o) => ((UnityEngine.UI.CanvasScaler)o).scaleFactor, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.CanvasScaler)o).scaleFactor; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "referenceResolution", PropertyType = typeof(UnityEngine.Vector2), Setter = (o, v) => ((UnityEngine.UI.CanvasScaler)o).referenceResolution = (UnityEngine.Vector2)v, Getter = (o) => ((UnityEngine.UI.CanvasScaler)o).referenceResolution, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.CanvasScaler)o).referenceResolution; if (!x.Equals((UnityEngine.Vector2)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "screenMatchMode", PropertyType = typeof(UnityEngine.UI.CanvasScaler.ScreenMatchMode), Setter = (o, v) => ((UnityEngine.UI.CanvasScaler)o).screenMatchMode = (UnityEngine.UI.CanvasScaler.ScreenMatchMode)v, Getter = (o) => ((UnityEngine.UI.CanvasScaler)o).screenMatchMode, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.UI.CanvasScaler)o).screenMatchMode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "physicalUnit", PropertyType = typeof(UnityEngine.UI.CanvasScaler.Unit), Setter = (o, v) => ((UnityEngine.UI.CanvasScaler)o).physicalUnit = (UnityEngine.UI.CanvasScaler.Unit)v, Getter = (o) => ((UnityEngine.UI.CanvasScaler)o).physicalUnit, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.UI.CanvasScaler)o).physicalUnit; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "fallbackScreenDPI", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.UI.CanvasScaler)o).fallbackScreenDPI = (System.Single)v, Getter = (o) => ((UnityEngine.UI.CanvasScaler)o).fallbackScreenDPI, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.CanvasScaler)o).fallbackScreenDPI; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "defaultSpriteDPI", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.UI.CanvasScaler)o).defaultSpriteDPI = (System.Single)v, Getter = (o) => ((UnityEngine.UI.CanvasScaler)o).defaultSpriteDPI, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.CanvasScaler)o).defaultSpriteDPI; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "referencePixelsPerUnit", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.UI.CanvasScaler)o).referencePixelsPerUnit = (System.Single)v, Getter = (o) => ((UnityEngine.UI.CanvasScaler)o).referencePixelsPerUnit, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.CanvasScaler)o).referencePixelsPerUnit; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.CanvasScaler)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.CanvasScaler)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.CanvasScaler)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_PHYSICS + { "UnityEngine.CapsuleCollider", new UnityProperty[] { + new UnityProperty { Name = "isTrigger", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((CapsuleCollider)o).isTrigger = (System.Boolean)v, Getter = (o) => ((CapsuleCollider)o).isTrigger, Updater = (object o, ref object v) => { var x = ((CapsuleCollider)o).isTrigger; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "sharedMaterial", PropertyType = typeof(UnityEngine.PhysicMaterial), Setter = (o, v) => ((CapsuleCollider)o).sharedMaterial = (UnityEngine.PhysicMaterial)v, Getter = (o) => ((CapsuleCollider)o).sharedMaterial, }, + new UnityProperty { Name = "center", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((CapsuleCollider)o).center = (UnityEngine.Vector3)v, Getter = (o) => ((CapsuleCollider)o).center, Updater = (object o, ref object v) => { var x = ((CapsuleCollider)o).center; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "radius", PropertyType = typeof(System.Single), Setter = (o, v) => ((CapsuleCollider)o).radius = (System.Single)v, Getter = (o) => ((CapsuleCollider)o).radius, Updater = (object o, ref object v) => { var x = ((CapsuleCollider)o).radius; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "height", PropertyType = typeof(System.Single), Setter = (o, v) => ((CapsuleCollider)o).height = (System.Single)v, Getter = (o) => ((CapsuleCollider)o).height, Updater = (object o, ref object v) => { var x = ((CapsuleCollider)o).height; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "direction", PropertyType = typeof(System.Int32), Setter = (o, v) => ((CapsuleCollider)o).direction = (System.Int32)v, Getter = (o) => ((CapsuleCollider)o).direction, Updater = (object o, ref object v) => { var x = ((CapsuleCollider)o).direction; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((CapsuleCollider)o).enabled = (System.Boolean)v, Getter = (o) => ((CapsuleCollider)o).enabled, Updater = (object o, ref object v) => { var x = ((CapsuleCollider)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_PHYSICS_2D + { "UnityEngine.CapsuleCollider2D", new UnityProperty[] { + new UnityProperty { Name = "sharedMaterial", PropertyType = typeof(UnityEngine.PhysicsMaterial2D), Setter = (o, v) => ((CapsuleCollider2D)o).sharedMaterial = (UnityEngine.PhysicsMaterial2D)v, Getter = (o) => ((CapsuleCollider2D)o).sharedMaterial, }, + new UnityProperty { Name = "isTrigger", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((CapsuleCollider2D)o).isTrigger = (System.Boolean)v, Getter = (o) => ((CapsuleCollider2D)o).isTrigger, Updater = (object o, ref object v) => { var x = ((CapsuleCollider2D)o).isTrigger; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "usedByEffector", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((CapsuleCollider2D)o).usedByEffector = (System.Boolean)v, Getter = (o) => ((CapsuleCollider2D)o).usedByEffector, Updater = (object o, ref object v) => { var x = ((CapsuleCollider2D)o).usedByEffector; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + #if !UNITY_2023_1_OR_NEWER + new UnityProperty { Name = "usedByComposite", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((CapsuleCollider2D)o).usedByComposite = (System.Boolean)v, Getter = (o) => ((CapsuleCollider2D)o).usedByComposite, Updater = (object o, ref object v) => { var x = ((CapsuleCollider2D)o).usedByComposite; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + #endif + #if UNITY_2023_1_OR_NEWER + new UnityProperty { Name = "compositeOperation", PropertyType = typeof(UnityEngine.Collider2D.CompositeOperation), Setter = (o, v) => ((CapsuleCollider2D)o).compositeOperation = (UnityEngine.Collider2D.CompositeOperation)v, Getter = (o) => ((CapsuleCollider2D)o).compositeOperation, Updater = (object o, ref object v) => { var x = (int)((CapsuleCollider2D)o).compositeOperation; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + #endif + new UnityProperty { Name = "offset", PropertyType = typeof(UnityEngine.Vector2), Setter = (o, v) => ((CapsuleCollider2D)o).offset = (UnityEngine.Vector2)v, Getter = (o) => ((CapsuleCollider2D)o).offset, Updater = (object o, ref object v) => { var x = ((CapsuleCollider2D)o).offset; if (!x.Equals((UnityEngine.Vector2)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "size", PropertyType = typeof(UnityEngine.Vector2), Setter = (o, v) => ((CapsuleCollider2D)o).size = (UnityEngine.Vector2)v, Getter = (o) => ((CapsuleCollider2D)o).size, Updater = (object o, ref object v) => { var x = ((CapsuleCollider2D)o).size; if (!x.Equals((UnityEngine.Vector2)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "direction", PropertyType = typeof(UnityEngine.CapsuleDirection2D), Setter = (o, v) => ((CapsuleCollider2D)o).direction = (UnityEngine.CapsuleDirection2D)v, Getter = (o) => ((CapsuleCollider2D)o).direction, Updater = (object o, ref object v) => { var x = (int)((CapsuleCollider2D)o).direction; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((CapsuleCollider2D)o).enabled = (System.Boolean)v, Getter = (o) => ((CapsuleCollider2D)o).enabled, Updater = (object o, ref object v) => { var x = ((CapsuleCollider2D)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_PHYSICS + { "UnityEngine.CharacterController", new UnityProperty[] { + new UnityProperty { Name = "slopeLimit", PropertyType = typeof(System.Single), Setter = (o, v) => ((CharacterController)o).slopeLimit = (System.Single)v, Getter = (o) => ((CharacterController)o).slopeLimit, Updater = (object o, ref object v) => { var x = ((CharacterController)o).slopeLimit; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "stepOffset", PropertyType = typeof(System.Single), Setter = (o, v) => ((CharacterController)o).stepOffset = (System.Single)v, Getter = (o) => ((CharacterController)o).stepOffset, Updater = (object o, ref object v) => { var x = ((CharacterController)o).stepOffset; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "skinWidth", PropertyType = typeof(System.Single), Setter = (o, v) => ((CharacterController)o).skinWidth = (System.Single)v, Getter = (o) => ((CharacterController)o).skinWidth, Updater = (object o, ref object v) => { var x = ((CharacterController)o).skinWidth; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "minMoveDistance", PropertyType = typeof(System.Single), Setter = (o, v) => ((CharacterController)o).minMoveDistance = (System.Single)v, Getter = (o) => ((CharacterController)o).minMoveDistance, Updater = (object o, ref object v) => { var x = ((CharacterController)o).minMoveDistance; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "center", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((CharacterController)o).center = (UnityEngine.Vector3)v, Getter = (o) => ((CharacterController)o).center, Updater = (object o, ref object v) => { var x = ((CharacterController)o).center; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "radius", PropertyType = typeof(System.Single), Setter = (o, v) => ((CharacterController)o).radius = (System.Single)v, Getter = (o) => ((CharacterController)o).radius, Updater = (object o, ref object v) => { var x = ((CharacterController)o).radius; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "height", PropertyType = typeof(System.Single), Setter = (o, v) => ((CharacterController)o).height = (System.Single)v, Getter = (o) => ((CharacterController)o).height, Updater = (object o, ref object v) => { var x = ((CharacterController)o).height; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((CharacterController)o).enabled = (System.Boolean)v, Getter = (o) => ((CharacterController)o).enabled, Updater = (object o, ref object v) => { var x = ((CharacterController)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_PHYSICS + { "UnityEngine.CharacterJoint", new UnityProperty[] { + new UnityProperty { Name = "connectedBody", PropertyType = typeof(UnityEngine.Rigidbody), Setter = (o, v) => ((CharacterJoint)o).connectedBody = (UnityEngine.Rigidbody)v, Getter = (o) => ((CharacterJoint)o).connectedBody, }, + #if UNITY_2020_2_OR_NEWER + new UnityProperty { Name = "connectedArticulationBody", PropertyType = typeof(UnityEngine.ArticulationBody), Setter = (o, v) => ((CharacterJoint)o).connectedArticulationBody = (UnityEngine.ArticulationBody)v, Getter = (o) => ((CharacterJoint)o).connectedArticulationBody, }, + #endif + new UnityProperty { Name = "anchor", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((CharacterJoint)o).anchor = (UnityEngine.Vector3)v, Getter = (o) => ((CharacterJoint)o).anchor, Updater = (object o, ref object v) => { var x = ((CharacterJoint)o).anchor; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "axis", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((CharacterJoint)o).axis = (UnityEngine.Vector3)v, Getter = (o) => ((CharacterJoint)o).axis, Updater = (object o, ref object v) => { var x = ((CharacterJoint)o).axis; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "autoConfigureConnectedAnchor", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((CharacterJoint)o).autoConfigureConnectedAnchor = (System.Boolean)v, Getter = (o) => ((CharacterJoint)o).autoConfigureConnectedAnchor, Updater = (object o, ref object v) => { var x = ((CharacterJoint)o).autoConfigureConnectedAnchor; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "connectedAnchor", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((CharacterJoint)o).connectedAnchor = (UnityEngine.Vector3)v, Getter = (o) => ((CharacterJoint)o).connectedAnchor, Updater = (object o, ref object v) => { var x = ((CharacterJoint)o).connectedAnchor; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "swingAxis", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((CharacterJoint)o).swingAxis = (UnityEngine.Vector3)v, Getter = (o) => ((CharacterJoint)o).swingAxis, Updater = (object o, ref object v) => { var x = ((CharacterJoint)o).swingAxis; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "twistLimitSpring", PropertyType = typeof(UnityEngine.SoftJointLimitSpring), Setter = (o, v) => ((CharacterJoint)o).twistLimitSpring = (UnityEngine.SoftJointLimitSpring)v, Getter = (o) => ((CharacterJoint)o).twistLimitSpring, Updater = (object o, ref object v) => { var x = ((CharacterJoint)o).twistLimitSpring; if (!x.Equals((UnityEngine.SoftJointLimitSpring)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "lowTwistLimit", PropertyType = typeof(UnityEngine.SoftJointLimit), Setter = (o, v) => ((CharacterJoint)o).lowTwistLimit = (UnityEngine.SoftJointLimit)v, Getter = (o) => ((CharacterJoint)o).lowTwistLimit, Updater = (object o, ref object v) => { var x = ((CharacterJoint)o).lowTwistLimit; if (!x.Equals((UnityEngine.SoftJointLimit)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "highTwistLimit", PropertyType = typeof(UnityEngine.SoftJointLimit), Setter = (o, v) => ((CharacterJoint)o).highTwistLimit = (UnityEngine.SoftJointLimit)v, Getter = (o) => ((CharacterJoint)o).highTwistLimit, Updater = (object o, ref object v) => { var x = ((CharacterJoint)o).highTwistLimit; if (!x.Equals((UnityEngine.SoftJointLimit)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "swingLimitSpring", PropertyType = typeof(UnityEngine.SoftJointLimitSpring), Setter = (o, v) => ((CharacterJoint)o).swingLimitSpring = (UnityEngine.SoftJointLimitSpring)v, Getter = (o) => ((CharacterJoint)o).swingLimitSpring, Updater = (object o, ref object v) => { var x = ((CharacterJoint)o).swingLimitSpring; if (!x.Equals((UnityEngine.SoftJointLimitSpring)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "swing1Limit", PropertyType = typeof(UnityEngine.SoftJointLimit), Setter = (o, v) => ((CharacterJoint)o).swing1Limit = (UnityEngine.SoftJointLimit)v, Getter = (o) => ((CharacterJoint)o).swing1Limit, Updater = (object o, ref object v) => { var x = ((CharacterJoint)o).swing1Limit; if (!x.Equals((UnityEngine.SoftJointLimit)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "swing2Limit", PropertyType = typeof(UnityEngine.SoftJointLimit), Setter = (o, v) => ((CharacterJoint)o).swing2Limit = (UnityEngine.SoftJointLimit)v, Getter = (o) => ((CharacterJoint)o).swing2Limit, Updater = (object o, ref object v) => { var x = ((CharacterJoint)o).swing2Limit; if (!x.Equals((UnityEngine.SoftJointLimit)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enableProjection", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((CharacterJoint)o).enableProjection = (System.Boolean)v, Getter = (o) => ((CharacterJoint)o).enableProjection, Updater = (object o, ref object v) => { var x = ((CharacterJoint)o).enableProjection; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "projectionDistance", PropertyType = typeof(System.Single), Setter = (o, v) => ((CharacterJoint)o).projectionDistance = (System.Single)v, Getter = (o) => ((CharacterJoint)o).projectionDistance, Updater = (object o, ref object v) => { var x = ((CharacterJoint)o).projectionDistance; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "projectionAngle", PropertyType = typeof(System.Single), Setter = (o, v) => ((CharacterJoint)o).projectionAngle = (System.Single)v, Getter = (o) => ((CharacterJoint)o).projectionAngle, Updater = (object o, ref object v) => { var x = ((CharacterJoint)o).projectionAngle; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "breakForce", PropertyType = typeof(System.Single), Setter = (o, v) => ((CharacterJoint)o).breakForce = (System.Single)v, Getter = (o) => ((CharacterJoint)o).breakForce, Updater = (object o, ref object v) => { var x = ((CharacterJoint)o).breakForce; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "breakTorque", PropertyType = typeof(System.Single), Setter = (o, v) => ((CharacterJoint)o).breakTorque = (System.Single)v, Getter = (o) => ((CharacterJoint)o).breakTorque, Updater = (object o, ref object v) => { var x = ((CharacterJoint)o).breakTorque; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enableCollision", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((CharacterJoint)o).enableCollision = (System.Boolean)v, Getter = (o) => ((CharacterJoint)o).enableCollision, Updater = (object o, ref object v) => { var x = ((CharacterJoint)o).enableCollision; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enablePreprocessing", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((CharacterJoint)o).enablePreprocessing = (System.Boolean)v, Getter = (o) => ((CharacterJoint)o).enablePreprocessing, Updater = (object o, ref object v) => { var x = ((CharacterJoint)o).enablePreprocessing; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "massScale", PropertyType = typeof(System.Single), Setter = (o, v) => ((CharacterJoint)o).massScale = (System.Single)v, Getter = (o) => ((CharacterJoint)o).massScale, Updater = (object o, ref object v) => { var x = ((CharacterJoint)o).massScale; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "connectedMassScale", PropertyType = typeof(System.Single), Setter = (o, v) => ((CharacterJoint)o).connectedMassScale = (System.Single)v, Getter = (o) => ((CharacterJoint)o).connectedMassScale, Updater = (object o, ref object v) => { var x = ((CharacterJoint)o).connectedMassScale; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_PHYSICS_2D + { "UnityEngine.CircleCollider2D", new UnityProperty[] { + new UnityProperty { Name = "sharedMaterial", PropertyType = typeof(UnityEngine.PhysicsMaterial2D), Setter = (o, v) => ((CircleCollider2D)o).sharedMaterial = (UnityEngine.PhysicsMaterial2D)v, Getter = (o) => ((CircleCollider2D)o).sharedMaterial, }, + new UnityProperty { Name = "isTrigger", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((CircleCollider2D)o).isTrigger = (System.Boolean)v, Getter = (o) => ((CircleCollider2D)o).isTrigger, Updater = (object o, ref object v) => { var x = ((CircleCollider2D)o).isTrigger; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "usedByEffector", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((CircleCollider2D)o).usedByEffector = (System.Boolean)v, Getter = (o) => ((CircleCollider2D)o).usedByEffector, Updater = (object o, ref object v) => { var x = ((CircleCollider2D)o).usedByEffector; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + #if !UNITY_2023_1_OR_NEWER + new UnityProperty { Name = "usedByComposite", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((CircleCollider2D)o).usedByComposite = (System.Boolean)v, Getter = (o) => ((CircleCollider2D)o).usedByComposite, Updater = (object o, ref object v) => { var x = ((CircleCollider2D)o).usedByComposite; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + #endif + #if UNITY_2023_1_OR_NEWER + new UnityProperty { Name = "compositeOperation", PropertyType = typeof(UnityEngine.Collider2D.CompositeOperation), Setter = (o, v) => ((CircleCollider2D)o).compositeOperation = (UnityEngine.Collider2D.CompositeOperation)v, Getter = (o) => ((CircleCollider2D)o).compositeOperation, Updater = (object o, ref object v) => { var x = (int)((CircleCollider2D)o).compositeOperation; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + #endif + new UnityProperty { Name = "offset", PropertyType = typeof(UnityEngine.Vector2), Setter = (o, v) => ((CircleCollider2D)o).offset = (UnityEngine.Vector2)v, Getter = (o) => ((CircleCollider2D)o).offset, Updater = (object o, ref object v) => { var x = ((CircleCollider2D)o).offset; if (!x.Equals((UnityEngine.Vector2)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "radius", PropertyType = typeof(System.Single), Setter = (o, v) => ((CircleCollider2D)o).radius = (System.Single)v, Getter = (o) => ((CircleCollider2D)o).radius, Updater = (object o, ref object v) => { var x = ((CircleCollider2D)o).radius; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((CircleCollider2D)o).enabled = (System.Boolean)v, Getter = (o) => ((CircleCollider2D)o).enabled, Updater = (object o, ref object v) => { var x = ((CircleCollider2D)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_CLOTH + { "UnityEngine.Cloth", new UnityProperty[] { + new UnityProperty { Name = "stretchingStiffness", PropertyType = typeof(System.Single), Setter = (o, v) => ((Cloth)o).stretchingStiffness = (System.Single)v, Getter = (o) => ((Cloth)o).stretchingStiffness, Updater = (object o, ref object v) => { var x = ((Cloth)o).stretchingStiffness; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "bendingStiffness", PropertyType = typeof(System.Single), Setter = (o, v) => ((Cloth)o).bendingStiffness = (System.Single)v, Getter = (o) => ((Cloth)o).bendingStiffness, Updater = (object o, ref object v) => { var x = ((Cloth)o).bendingStiffness; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "useTethers", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((Cloth)o).useTethers = (System.Boolean)v, Getter = (o) => ((Cloth)o).useTethers, Updater = (object o, ref object v) => { var x = ((Cloth)o).useTethers; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "useGravity", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((Cloth)o).useGravity = (System.Boolean)v, Getter = (o) => ((Cloth)o).useGravity, Updater = (object o, ref object v) => { var x = ((Cloth)o).useGravity; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "damping", PropertyType = typeof(System.Single), Setter = (o, v) => ((Cloth)o).damping = (System.Single)v, Getter = (o) => ((Cloth)o).damping, Updater = (object o, ref object v) => { var x = ((Cloth)o).damping; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "externalAcceleration", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((Cloth)o).externalAcceleration = (UnityEngine.Vector3)v, Getter = (o) => ((Cloth)o).externalAcceleration, Updater = (object o, ref object v) => { var x = ((Cloth)o).externalAcceleration; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "randomAcceleration", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((Cloth)o).randomAcceleration = (UnityEngine.Vector3)v, Getter = (o) => ((Cloth)o).randomAcceleration, Updater = (object o, ref object v) => { var x = ((Cloth)o).randomAcceleration; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "worldVelocityScale", PropertyType = typeof(System.Single), Setter = (o, v) => ((Cloth)o).worldVelocityScale = (System.Single)v, Getter = (o) => ((Cloth)o).worldVelocityScale, Updater = (object o, ref object v) => { var x = ((Cloth)o).worldVelocityScale; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "worldAccelerationScale", PropertyType = typeof(System.Single), Setter = (o, v) => ((Cloth)o).worldAccelerationScale = (System.Single)v, Getter = (o) => ((Cloth)o).worldAccelerationScale, Updater = (object o, ref object v) => { var x = ((Cloth)o).worldAccelerationScale; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "friction", PropertyType = typeof(System.Single), Setter = (o, v) => ((Cloth)o).friction = (System.Single)v, Getter = (o) => ((Cloth)o).friction, Updater = (object o, ref object v) => { var x = ((Cloth)o).friction; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "collisionMassScale", PropertyType = typeof(System.Single), Setter = (o, v) => ((Cloth)o).collisionMassScale = (System.Single)v, Getter = (o) => ((Cloth)o).collisionMassScale, Updater = (object o, ref object v) => { var x = ((Cloth)o).collisionMassScale; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enableContinuousCollision", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((Cloth)o).enableContinuousCollision = (System.Boolean)v, Getter = (o) => ((Cloth)o).enableContinuousCollision, Updater = (object o, ref object v) => { var x = ((Cloth)o).enableContinuousCollision; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "useVirtualParticles", PropertyType = typeof(System.Single), Setter = (o, v) => ((Cloth)o).useVirtualParticles = (System.Single)v, Getter = (o) => ((Cloth)o).useVirtualParticles, Updater = (object o, ref object v) => { var x = ((Cloth)o).useVirtualParticles; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "clothSolverFrequency", PropertyType = typeof(System.Single), Setter = (o, v) => ((Cloth)o).clothSolverFrequency = (System.Single)v, Getter = (o) => ((Cloth)o).clothSolverFrequency, Updater = (object o, ref object v) => { var x = ((Cloth)o).clothSolverFrequency; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "sleepThreshold", PropertyType = typeof(System.Single), Setter = (o, v) => ((Cloth)o).sleepThreshold = (System.Single)v, Getter = (o) => ((Cloth)o).sleepThreshold, Updater = (object o, ref object v) => { var x = ((Cloth)o).sleepThreshold; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "capsuleColliders", PropertyType = typeof(UnityEngine.CapsuleCollider[]), Setter = (o, v) => ((Cloth)o).capsuleColliders = (UnityEngine.CapsuleCollider[])v, Getter = (o) => ((Cloth)o).capsuleColliders, }, + new UnityProperty { Name = "sphereColliders", PropertyType = typeof(UnityEngine.ClothSphereColliderPair[]), Setter = (o, v) => ((Cloth)o).sphereColliders = (UnityEngine.ClothSphereColliderPair[])v, Getter = (o) => ((Cloth)o).sphereColliders, }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((Cloth)o).enabled = (System.Boolean)v, Getter = (o) => ((Cloth)o).enabled, Updater = (object o, ref object v) => { var x = ((Cloth)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_PHYSICS_2D + { "UnityEngine.CompositeCollider2D", new UnityProperty[] { + new UnityProperty { Name = "sharedMaterial", PropertyType = typeof(UnityEngine.PhysicsMaterial2D), Setter = (o, v) => ((CompositeCollider2D)o).sharedMaterial = (UnityEngine.PhysicsMaterial2D)v, Getter = (o) => ((CompositeCollider2D)o).sharedMaterial, }, + new UnityProperty { Name = "isTrigger", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((CompositeCollider2D)o).isTrigger = (System.Boolean)v, Getter = (o) => ((CompositeCollider2D)o).isTrigger, Updater = (object o, ref object v) => { var x = ((CompositeCollider2D)o).isTrigger; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "usedByEffector", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((CompositeCollider2D)o).usedByEffector = (System.Boolean)v, Getter = (o) => ((CompositeCollider2D)o).usedByEffector, Updater = (object o, ref object v) => { var x = ((CompositeCollider2D)o).usedByEffector; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + #if !UNITY_2023_1_OR_NEWER + new UnityProperty { Name = "usedByComposite", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((CompositeCollider2D)o).usedByComposite = (System.Boolean)v, Getter = (o) => ((CompositeCollider2D)o).usedByComposite, Updater = (object o, ref object v) => { var x = ((CompositeCollider2D)o).usedByComposite; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + #endif + #if UNITY_2023_1_OR_NEWER + new UnityProperty { Name = "compositeOperation", PropertyType = typeof(UnityEngine.Collider2D.CompositeOperation), Setter = (o, v) => ((CompositeCollider2D)o).compositeOperation = (UnityEngine.Collider2D.CompositeOperation)v, Getter = (o) => ((CompositeCollider2D)o).compositeOperation, Updater = (object o, ref object v) => { var x = (int)((CompositeCollider2D)o).compositeOperation; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + #endif + new UnityProperty { Name = "offset", PropertyType = typeof(UnityEngine.Vector2), Setter = (o, v) => ((CompositeCollider2D)o).offset = (UnityEngine.Vector2)v, Getter = (o) => ((CompositeCollider2D)o).offset, Updater = (object o, ref object v) => { var x = ((CompositeCollider2D)o).offset; if (!x.Equals((UnityEngine.Vector2)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "geometryType", PropertyType = typeof(UnityEngine.CompositeCollider2D.GeometryType), Setter = (o, v) => ((CompositeCollider2D)o).geometryType = (UnityEngine.CompositeCollider2D.GeometryType)v, Getter = (o) => ((CompositeCollider2D)o).geometryType, Updater = (object o, ref object v) => { var x = (int)((CompositeCollider2D)o).geometryType; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "generationType", PropertyType = typeof(UnityEngine.CompositeCollider2D.GenerationType), Setter = (o, v) => ((CompositeCollider2D)o).generationType = (UnityEngine.CompositeCollider2D.GenerationType)v, Getter = (o) => ((CompositeCollider2D)o).generationType, Updater = (object o, ref object v) => { var x = (int)((CompositeCollider2D)o).generationType; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "vertexDistance", PropertyType = typeof(System.Single), Setter = (o, v) => ((CompositeCollider2D)o).vertexDistance = (System.Single)v, Getter = (o) => ((CompositeCollider2D)o).vertexDistance, Updater = (object o, ref object v) => { var x = ((CompositeCollider2D)o).vertexDistance; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "offsetDistance", PropertyType = typeof(System.Single), Setter = (o, v) => ((CompositeCollider2D)o).offsetDistance = (System.Single)v, Getter = (o) => ((CompositeCollider2D)o).offsetDistance, Updater = (object o, ref object v) => { var x = ((CompositeCollider2D)o).offsetDistance; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "edgeRadius", PropertyType = typeof(System.Single), Setter = (o, v) => ((CompositeCollider2D)o).edgeRadius = (System.Single)v, Getter = (o) => ((CompositeCollider2D)o).edgeRadius, Updater = (object o, ref object v) => { var x = ((CompositeCollider2D)o).edgeRadius; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((CompositeCollider2D)o).enabled = (System.Boolean)v, Getter = (o) => ((CompositeCollider2D)o).enabled, Updater = (object o, ref object v) => { var x = ((CompositeCollider2D)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_PHYSICS + { "UnityEngine.ConfigurableJoint", new UnityProperty[] { + new UnityProperty { Name = "connectedBody", PropertyType = typeof(UnityEngine.Rigidbody), Setter = (o, v) => ((ConfigurableJoint)o).connectedBody = (UnityEngine.Rigidbody)v, Getter = (o) => ((ConfigurableJoint)o).connectedBody, }, + #if UNITY_2020_2_OR_NEWER + new UnityProperty { Name = "connectedArticulationBody", PropertyType = typeof(UnityEngine.ArticulationBody), Setter = (o, v) => ((ConfigurableJoint)o).connectedArticulationBody = (UnityEngine.ArticulationBody)v, Getter = (o) => ((ConfigurableJoint)o).connectedArticulationBody, }, + #endif + new UnityProperty { Name = "anchor", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((ConfigurableJoint)o).anchor = (UnityEngine.Vector3)v, Getter = (o) => ((ConfigurableJoint)o).anchor, Updater = (object o, ref object v) => { var x = ((ConfigurableJoint)o).anchor; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "axis", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((ConfigurableJoint)o).axis = (UnityEngine.Vector3)v, Getter = (o) => ((ConfigurableJoint)o).axis, Updater = (object o, ref object v) => { var x = ((ConfigurableJoint)o).axis; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "autoConfigureConnectedAnchor", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((ConfigurableJoint)o).autoConfigureConnectedAnchor = (System.Boolean)v, Getter = (o) => ((ConfigurableJoint)o).autoConfigureConnectedAnchor, Updater = (object o, ref object v) => { var x = ((ConfigurableJoint)o).autoConfigureConnectedAnchor; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "connectedAnchor", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((ConfigurableJoint)o).connectedAnchor = (UnityEngine.Vector3)v, Getter = (o) => ((ConfigurableJoint)o).connectedAnchor, Updater = (object o, ref object v) => { var x = ((ConfigurableJoint)o).connectedAnchor; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "xMotion", PropertyType = typeof(UnityEngine.ConfigurableJointMotion), Setter = (o, v) => ((ConfigurableJoint)o).xMotion = (UnityEngine.ConfigurableJointMotion)v, Getter = (o) => ((ConfigurableJoint)o).xMotion, Updater = (object o, ref object v) => { var x = (int)((ConfigurableJoint)o).xMotion; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "yMotion", PropertyType = typeof(UnityEngine.ConfigurableJointMotion), Setter = (o, v) => ((ConfigurableJoint)o).yMotion = (UnityEngine.ConfigurableJointMotion)v, Getter = (o) => ((ConfigurableJoint)o).yMotion, Updater = (object o, ref object v) => { var x = (int)((ConfigurableJoint)o).yMotion; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "zMotion", PropertyType = typeof(UnityEngine.ConfigurableJointMotion), Setter = (o, v) => ((ConfigurableJoint)o).zMotion = (UnityEngine.ConfigurableJointMotion)v, Getter = (o) => ((ConfigurableJoint)o).zMotion, Updater = (object o, ref object v) => { var x = (int)((ConfigurableJoint)o).zMotion; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "angularXMotion", PropertyType = typeof(UnityEngine.ConfigurableJointMotion), Setter = (o, v) => ((ConfigurableJoint)o).angularXMotion = (UnityEngine.ConfigurableJointMotion)v, Getter = (o) => ((ConfigurableJoint)o).angularXMotion, Updater = (object o, ref object v) => { var x = (int)((ConfigurableJoint)o).angularXMotion; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "angularYMotion", PropertyType = typeof(UnityEngine.ConfigurableJointMotion), Setter = (o, v) => ((ConfigurableJoint)o).angularYMotion = (UnityEngine.ConfigurableJointMotion)v, Getter = (o) => ((ConfigurableJoint)o).angularYMotion, Updater = (object o, ref object v) => { var x = (int)((ConfigurableJoint)o).angularYMotion; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "angularZMotion", PropertyType = typeof(UnityEngine.ConfigurableJointMotion), Setter = (o, v) => ((ConfigurableJoint)o).angularZMotion = (UnityEngine.ConfigurableJointMotion)v, Getter = (o) => ((ConfigurableJoint)o).angularZMotion, Updater = (object o, ref object v) => { var x = (int)((ConfigurableJoint)o).angularZMotion; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "linearLimitSpring", PropertyType = typeof(UnityEngine.SoftJointLimitSpring), Setter = (o, v) => ((ConfigurableJoint)o).linearLimitSpring = (UnityEngine.SoftJointLimitSpring)v, Getter = (o) => ((ConfigurableJoint)o).linearLimitSpring, Updater = (object o, ref object v) => { var x = ((ConfigurableJoint)o).linearLimitSpring; if (!x.Equals((UnityEngine.SoftJointLimitSpring)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "linearLimit", PropertyType = typeof(UnityEngine.SoftJointLimit), Setter = (o, v) => ((ConfigurableJoint)o).linearLimit = (UnityEngine.SoftJointLimit)v, Getter = (o) => ((ConfigurableJoint)o).linearLimit, Updater = (object o, ref object v) => { var x = ((ConfigurableJoint)o).linearLimit; if (!x.Equals((UnityEngine.SoftJointLimit)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "angularXLimitSpring", PropertyType = typeof(UnityEngine.SoftJointLimitSpring), Setter = (o, v) => ((ConfigurableJoint)o).angularXLimitSpring = (UnityEngine.SoftJointLimitSpring)v, Getter = (o) => ((ConfigurableJoint)o).angularXLimitSpring, Updater = (object o, ref object v) => { var x = ((ConfigurableJoint)o).angularXLimitSpring; if (!x.Equals((UnityEngine.SoftJointLimitSpring)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "lowAngularXLimit", PropertyType = typeof(UnityEngine.SoftJointLimit), Setter = (o, v) => ((ConfigurableJoint)o).lowAngularXLimit = (UnityEngine.SoftJointLimit)v, Getter = (o) => ((ConfigurableJoint)o).lowAngularXLimit, Updater = (object o, ref object v) => { var x = ((ConfigurableJoint)o).lowAngularXLimit; if (!x.Equals((UnityEngine.SoftJointLimit)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "highAngularXLimit", PropertyType = typeof(UnityEngine.SoftJointLimit), Setter = (o, v) => ((ConfigurableJoint)o).highAngularXLimit = (UnityEngine.SoftJointLimit)v, Getter = (o) => ((ConfigurableJoint)o).highAngularXLimit, Updater = (object o, ref object v) => { var x = ((ConfigurableJoint)o).highAngularXLimit; if (!x.Equals((UnityEngine.SoftJointLimit)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "angularYZLimitSpring", PropertyType = typeof(UnityEngine.SoftJointLimitSpring), Setter = (o, v) => ((ConfigurableJoint)o).angularYZLimitSpring = (UnityEngine.SoftJointLimitSpring)v, Getter = (o) => ((ConfigurableJoint)o).angularYZLimitSpring, Updater = (object o, ref object v) => { var x = ((ConfigurableJoint)o).angularYZLimitSpring; if (!x.Equals((UnityEngine.SoftJointLimitSpring)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "angularYLimit", PropertyType = typeof(UnityEngine.SoftJointLimit), Setter = (o, v) => ((ConfigurableJoint)o).angularYLimit = (UnityEngine.SoftJointLimit)v, Getter = (o) => ((ConfigurableJoint)o).angularYLimit, Updater = (object o, ref object v) => { var x = ((ConfigurableJoint)o).angularYLimit; if (!x.Equals((UnityEngine.SoftJointLimit)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "angularZLimit", PropertyType = typeof(UnityEngine.SoftJointLimit), Setter = (o, v) => ((ConfigurableJoint)o).angularZLimit = (UnityEngine.SoftJointLimit)v, Getter = (o) => ((ConfigurableJoint)o).angularZLimit, Updater = (object o, ref object v) => { var x = ((ConfigurableJoint)o).angularZLimit; if (!x.Equals((UnityEngine.SoftJointLimit)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "targetPosition", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((ConfigurableJoint)o).targetPosition = (UnityEngine.Vector3)v, Getter = (o) => ((ConfigurableJoint)o).targetPosition, Updater = (object o, ref object v) => { var x = ((ConfigurableJoint)o).targetPosition; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "targetVelocity", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((ConfigurableJoint)o).targetVelocity = (UnityEngine.Vector3)v, Getter = (o) => ((ConfigurableJoint)o).targetVelocity, Updater = (object o, ref object v) => { var x = ((ConfigurableJoint)o).targetVelocity; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "xDrive", PropertyType = typeof(UnityEngine.JointDrive), Setter = (o, v) => ((ConfigurableJoint)o).xDrive = (UnityEngine.JointDrive)v, Getter = (o) => ((ConfigurableJoint)o).xDrive, Updater = (object o, ref object v) => { var x = ((ConfigurableJoint)o).xDrive; if (!x.Equals((UnityEngine.JointDrive)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "yDrive", PropertyType = typeof(UnityEngine.JointDrive), Setter = (o, v) => ((ConfigurableJoint)o).yDrive = (UnityEngine.JointDrive)v, Getter = (o) => ((ConfigurableJoint)o).yDrive, Updater = (object o, ref object v) => { var x = ((ConfigurableJoint)o).yDrive; if (!x.Equals((UnityEngine.JointDrive)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "zDrive", PropertyType = typeof(UnityEngine.JointDrive), Setter = (o, v) => ((ConfigurableJoint)o).zDrive = (UnityEngine.JointDrive)v, Getter = (o) => ((ConfigurableJoint)o).zDrive, Updater = (object o, ref object v) => { var x = ((ConfigurableJoint)o).zDrive; if (!x.Equals((UnityEngine.JointDrive)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "targetRotation", PropertyType = typeof(UnityEngine.Quaternion), Setter = (o, v) => ((ConfigurableJoint)o).targetRotation = (UnityEngine.Quaternion)v, Getter = (o) => ((ConfigurableJoint)o).targetRotation, Updater = (object o, ref object v) => { var x = ((ConfigurableJoint)o).targetRotation; if (!x.Equals((UnityEngine.Quaternion)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "targetAngularVelocity", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((ConfigurableJoint)o).targetAngularVelocity = (UnityEngine.Vector3)v, Getter = (o) => ((ConfigurableJoint)o).targetAngularVelocity, Updater = (object o, ref object v) => { var x = ((ConfigurableJoint)o).targetAngularVelocity; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "rotationDriveMode", PropertyType = typeof(UnityEngine.RotationDriveMode), Setter = (o, v) => ((ConfigurableJoint)o).rotationDriveMode = (UnityEngine.RotationDriveMode)v, Getter = (o) => ((ConfigurableJoint)o).rotationDriveMode, Updater = (object o, ref object v) => { var x = (int)((ConfigurableJoint)o).rotationDriveMode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "angularXDrive", PropertyType = typeof(UnityEngine.JointDrive), Setter = (o, v) => ((ConfigurableJoint)o).angularXDrive = (UnityEngine.JointDrive)v, Getter = (o) => ((ConfigurableJoint)o).angularXDrive, Updater = (object o, ref object v) => { var x = ((ConfigurableJoint)o).angularXDrive; if (!x.Equals((UnityEngine.JointDrive)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "angularYZDrive", PropertyType = typeof(UnityEngine.JointDrive), Setter = (o, v) => ((ConfigurableJoint)o).angularYZDrive = (UnityEngine.JointDrive)v, Getter = (o) => ((ConfigurableJoint)o).angularYZDrive, Updater = (object o, ref object v) => { var x = ((ConfigurableJoint)o).angularYZDrive; if (!x.Equals((UnityEngine.JointDrive)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "slerpDrive", PropertyType = typeof(UnityEngine.JointDrive), Setter = (o, v) => ((ConfigurableJoint)o).slerpDrive = (UnityEngine.JointDrive)v, Getter = (o) => ((ConfigurableJoint)o).slerpDrive, Updater = (object o, ref object v) => { var x = ((ConfigurableJoint)o).slerpDrive; if (!x.Equals((UnityEngine.JointDrive)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "projectionMode", PropertyType = typeof(UnityEngine.JointProjectionMode), Setter = (o, v) => ((ConfigurableJoint)o).projectionMode = (UnityEngine.JointProjectionMode)v, Getter = (o) => ((ConfigurableJoint)o).projectionMode, Updater = (object o, ref object v) => { var x = (int)((ConfigurableJoint)o).projectionMode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "projectionDistance", PropertyType = typeof(System.Single), Setter = (o, v) => ((ConfigurableJoint)o).projectionDistance = (System.Single)v, Getter = (o) => ((ConfigurableJoint)o).projectionDistance, Updater = (object o, ref object v) => { var x = ((ConfigurableJoint)o).projectionDistance; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "projectionAngle", PropertyType = typeof(System.Single), Setter = (o, v) => ((ConfigurableJoint)o).projectionAngle = (System.Single)v, Getter = (o) => ((ConfigurableJoint)o).projectionAngle, Updater = (object o, ref object v) => { var x = ((ConfigurableJoint)o).projectionAngle; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "configuredInWorldSpace", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((ConfigurableJoint)o).configuredInWorldSpace = (System.Boolean)v, Getter = (o) => ((ConfigurableJoint)o).configuredInWorldSpace, Updater = (object o, ref object v) => { var x = ((ConfigurableJoint)o).configuredInWorldSpace; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "swapBodies", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((ConfigurableJoint)o).swapBodies = (System.Boolean)v, Getter = (o) => ((ConfigurableJoint)o).swapBodies, Updater = (object o, ref object v) => { var x = ((ConfigurableJoint)o).swapBodies; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "breakForce", PropertyType = typeof(System.Single), Setter = (o, v) => ((ConfigurableJoint)o).breakForce = (System.Single)v, Getter = (o) => ((ConfigurableJoint)o).breakForce, Updater = (object o, ref object v) => { var x = ((ConfigurableJoint)o).breakForce; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "breakTorque", PropertyType = typeof(System.Single), Setter = (o, v) => ((ConfigurableJoint)o).breakTorque = (System.Single)v, Getter = (o) => ((ConfigurableJoint)o).breakTorque, Updater = (object o, ref object v) => { var x = ((ConfigurableJoint)o).breakTorque; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enableCollision", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((ConfigurableJoint)o).enableCollision = (System.Boolean)v, Getter = (o) => ((ConfigurableJoint)o).enableCollision, Updater = (object o, ref object v) => { var x = ((ConfigurableJoint)o).enableCollision; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enablePreprocessing", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((ConfigurableJoint)o).enablePreprocessing = (System.Boolean)v, Getter = (o) => ((ConfigurableJoint)o).enablePreprocessing, Updater = (object o, ref object v) => { var x = ((ConfigurableJoint)o).enablePreprocessing; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "massScale", PropertyType = typeof(System.Single), Setter = (o, v) => ((ConfigurableJoint)o).massScale = (System.Single)v, Getter = (o) => ((ConfigurableJoint)o).massScale, Updater = (object o, ref object v) => { var x = ((ConfigurableJoint)o).massScale; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "connectedMassScale", PropertyType = typeof(System.Single), Setter = (o, v) => ((ConfigurableJoint)o).connectedMassScale = (System.Single)v, Getter = (o) => ((ConfigurableJoint)o).connectedMassScale, Updater = (object o, ref object v) => { var x = ((ConfigurableJoint)o).connectedMassScale; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_PHYSICS + { "UnityEngine.ConstantForce", new UnityProperty[] { + new UnityProperty { Name = "force", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((ConstantForce)o).force = (UnityEngine.Vector3)v, Getter = (o) => ((ConstantForce)o).force, Updater = (object o, ref object v) => { var x = ((ConstantForce)o).force; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "relativeForce", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((ConstantForce)o).relativeForce = (UnityEngine.Vector3)v, Getter = (o) => ((ConstantForce)o).relativeForce, Updater = (object o, ref object v) => { var x = ((ConstantForce)o).relativeForce; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "torque", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((ConstantForce)o).torque = (UnityEngine.Vector3)v, Getter = (o) => ((ConstantForce)o).torque, Updater = (object o, ref object v) => { var x = ((ConstantForce)o).torque; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "relativeTorque", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((ConstantForce)o).relativeTorque = (UnityEngine.Vector3)v, Getter = (o) => ((ConstantForce)o).relativeTorque, Updater = (object o, ref object v) => { var x = ((ConstantForce)o).relativeTorque; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((ConstantForce)o).enabled = (System.Boolean)v, Getter = (o) => ((ConstantForce)o).enabled, Updater = (object o, ref object v) => { var x = ((ConstantForce)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_PHYSICS_2D + { "UnityEngine.ConstantForce2D", new UnityProperty[] { + new UnityProperty { Name = "force", PropertyType = typeof(UnityEngine.Vector2), Setter = (o, v) => ((ConstantForce2D)o).force = (UnityEngine.Vector2)v, Getter = (o) => ((ConstantForce2D)o).force, Updater = (object o, ref object v) => { var x = ((ConstantForce2D)o).force; if (!x.Equals((UnityEngine.Vector2)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "relativeForce", PropertyType = typeof(UnityEngine.Vector2), Setter = (o, v) => ((ConstantForce2D)o).relativeForce = (UnityEngine.Vector2)v, Getter = (o) => ((ConstantForce2D)o).relativeForce, Updater = (object o, ref object v) => { var x = ((ConstantForce2D)o).relativeForce; if (!x.Equals((UnityEngine.Vector2)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "torque", PropertyType = typeof(System.Single), Setter = (o, v) => ((ConstantForce2D)o).torque = (System.Single)v, Getter = (o) => ((ConstantForce2D)o).torque, Updater = (object o, ref object v) => { var x = ((ConstantForce2D)o).torque; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((ConstantForce2D)o).enabled = (System.Boolean)v, Getter = (o) => ((ConstantForce2D)o).enabled, Updater = (object o, ref object v) => { var x = ((ConstantForce2D)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_GUI + { "UnityEngine.UI.ContentSizeFitter", new UnityProperty[] { + new UnityProperty { Name = "horizontalFit", PropertyType = typeof(UnityEngine.UI.ContentSizeFitter.FitMode), Setter = (o, v) => ((UnityEngine.UI.ContentSizeFitter)o).horizontalFit = (UnityEngine.UI.ContentSizeFitter.FitMode)v, Getter = (o) => ((UnityEngine.UI.ContentSizeFitter)o).horizontalFit, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.UI.ContentSizeFitter)o).horizontalFit; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "verticalFit", PropertyType = typeof(UnityEngine.UI.ContentSizeFitter.FitMode), Setter = (o, v) => ((UnityEngine.UI.ContentSizeFitter)o).verticalFit = (UnityEngine.UI.ContentSizeFitter.FitMode)v, Getter = (o) => ((UnityEngine.UI.ContentSizeFitter)o).verticalFit, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.UI.ContentSizeFitter)o).verticalFit; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.ContentSizeFitter)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.ContentSizeFitter)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.ContentSizeFitter)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_PHYSICS_2D + { "UnityEngine.DistanceJoint2D", new UnityProperty[] { + new UnityProperty { Name = "enableCollision", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((DistanceJoint2D)o).enableCollision = (System.Boolean)v, Getter = (o) => ((DistanceJoint2D)o).enableCollision, Updater = (object o, ref object v) => { var x = ((DistanceJoint2D)o).enableCollision; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "connectedBody", PropertyType = typeof(UnityEngine.Rigidbody2D), Setter = (o, v) => ((DistanceJoint2D)o).connectedBody = (UnityEngine.Rigidbody2D)v, Getter = (o) => ((DistanceJoint2D)o).connectedBody, }, + new UnityProperty { Name = "autoConfigureConnectedAnchor", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((DistanceJoint2D)o).autoConfigureConnectedAnchor = (System.Boolean)v, Getter = (o) => ((DistanceJoint2D)o).autoConfigureConnectedAnchor, Updater = (object o, ref object v) => { var x = ((DistanceJoint2D)o).autoConfigureConnectedAnchor; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "anchor", PropertyType = typeof(UnityEngine.Vector2), Setter = (o, v) => ((DistanceJoint2D)o).anchor = (UnityEngine.Vector2)v, Getter = (o) => ((DistanceJoint2D)o).anchor, Updater = (object o, ref object v) => { var x = ((DistanceJoint2D)o).anchor; if (!x.Equals((UnityEngine.Vector2)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "connectedAnchor", PropertyType = typeof(UnityEngine.Vector2), Setter = (o, v) => ((DistanceJoint2D)o).connectedAnchor = (UnityEngine.Vector2)v, Getter = (o) => ((DistanceJoint2D)o).connectedAnchor, Updater = (object o, ref object v) => { var x = ((DistanceJoint2D)o).connectedAnchor; if (!x.Equals((UnityEngine.Vector2)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "autoConfigureDistance", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((DistanceJoint2D)o).autoConfigureDistance = (System.Boolean)v, Getter = (o) => ((DistanceJoint2D)o).autoConfigureDistance, Updater = (object o, ref object v) => { var x = ((DistanceJoint2D)o).autoConfigureDistance; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "distance", PropertyType = typeof(System.Single), Setter = (o, v) => ((DistanceJoint2D)o).distance = (System.Single)v, Getter = (o) => ((DistanceJoint2D)o).distance, Updater = (object o, ref object v) => { var x = ((DistanceJoint2D)o).distance; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "maxDistanceOnly", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((DistanceJoint2D)o).maxDistanceOnly = (System.Boolean)v, Getter = (o) => ((DistanceJoint2D)o).maxDistanceOnly, Updater = (object o, ref object v) => { var x = ((DistanceJoint2D)o).maxDistanceOnly; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "breakForce", PropertyType = typeof(System.Single), Setter = (o, v) => ((DistanceJoint2D)o).breakForce = (System.Single)v, Getter = (o) => ((DistanceJoint2D)o).breakForce, Updater = (object o, ref object v) => { var x = ((DistanceJoint2D)o).breakForce; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((DistanceJoint2D)o).enabled = (System.Boolean)v, Getter = (o) => ((DistanceJoint2D)o).enabled, Updater = (object o, ref object v) => { var x = ((DistanceJoint2D)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_GUI + { "UnityEngine.UI.Dropdown", new UnityProperty[] { + new UnityProperty { Name = "interactable", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.Dropdown)o).interactable = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.Dropdown)o).interactable, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Dropdown)o).interactable; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "transition", PropertyType = typeof(UnityEngine.UI.Selectable.Transition), Setter = (o, v) => ((UnityEngine.UI.Dropdown)o).transition = (UnityEngine.UI.Selectable.Transition)v, Getter = (o) => ((UnityEngine.UI.Dropdown)o).transition, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.UI.Dropdown)o).transition; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "targetGraphic", PropertyType = typeof(UnityEngine.UI.Graphic), Setter = (o, v) => ((UnityEngine.UI.Dropdown)o).targetGraphic = (UnityEngine.UI.Graphic)v, Getter = (o) => ((UnityEngine.UI.Dropdown)o).targetGraphic, }, + new UnityProperty { Name = "colors", PropertyType = typeof(UnityEngine.UI.ColorBlock), Setter = (o, v) => ((UnityEngine.UI.Dropdown)o).colors = (UnityEngine.UI.ColorBlock)v, Getter = (o) => ((UnityEngine.UI.Dropdown)o).colors, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Dropdown)o).colors; if (!x.Equals((UnityEngine.UI.ColorBlock)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "navigation", PropertyType = typeof(UnityEngine.UI.Navigation), Setter = (o, v) => ((UnityEngine.UI.Dropdown)o).navigation = (UnityEngine.UI.Navigation)v, Getter = (o) => ((UnityEngine.UI.Dropdown)o).navigation, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Dropdown)o).navigation; if (!x.Equals((UnityEngine.UI.Navigation)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "template", PropertyType = typeof(UnityEngine.RectTransform), Setter = (o, v) => ((UnityEngine.UI.Dropdown)o).template = (UnityEngine.RectTransform)v, Getter = (o) => ((UnityEngine.UI.Dropdown)o).template, }, + new UnityProperty { Name = "captionText", PropertyType = typeof(UnityEngine.UI.Text), Setter = (o, v) => ((UnityEngine.UI.Dropdown)o).captionText = (UnityEngine.UI.Text)v, Getter = (o) => ((UnityEngine.UI.Dropdown)o).captionText, }, + new UnityProperty { Name = "captionImage", PropertyType = typeof(UnityEngine.UI.Image), Setter = (o, v) => ((UnityEngine.UI.Dropdown)o).captionImage = (UnityEngine.UI.Image)v, Getter = (o) => ((UnityEngine.UI.Dropdown)o).captionImage, }, + new UnityProperty { Name = "itemText", PropertyType = typeof(UnityEngine.UI.Text), Setter = (o, v) => ((UnityEngine.UI.Dropdown)o).itemText = (UnityEngine.UI.Text)v, Getter = (o) => ((UnityEngine.UI.Dropdown)o).itemText, }, + new UnityProperty { Name = "itemImage", PropertyType = typeof(UnityEngine.UI.Image), Setter = (o, v) => ((UnityEngine.UI.Dropdown)o).itemImage = (UnityEngine.UI.Image)v, Getter = (o) => ((UnityEngine.UI.Dropdown)o).itemImage, }, + new UnityProperty { Name = "value", PropertyType = typeof(System.Int32), Setter = (o, v) => ((UnityEngine.UI.Dropdown)o).value = (System.Int32)v, Getter = (o) => ((UnityEngine.UI.Dropdown)o).value, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Dropdown)o).value; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "alphaFadeSpeed", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.UI.Dropdown)o).alphaFadeSpeed = (System.Single)v, Getter = (o) => ((UnityEngine.UI.Dropdown)o).alphaFadeSpeed, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Dropdown)o).alphaFadeSpeed; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "options", PropertyType = typeof(System.Collections.Generic.List<UnityEngine.UI.Dropdown.OptionData>), Setter = (o, v) => ((UnityEngine.UI.Dropdown)o).options = (System.Collections.Generic.List<UnityEngine.UI.Dropdown.OptionData>)v, Getter = (o) => ((UnityEngine.UI.Dropdown)o).options, }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.Dropdown)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.Dropdown)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Dropdown)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_PHYSICS_2D + { "UnityEngine.EdgeCollider2D", new UnityProperty[] { + new UnityProperty { Name = "sharedMaterial", PropertyType = typeof(UnityEngine.PhysicsMaterial2D), Setter = (o, v) => ((EdgeCollider2D)o).sharedMaterial = (UnityEngine.PhysicsMaterial2D)v, Getter = (o) => ((EdgeCollider2D)o).sharedMaterial, }, + new UnityProperty { Name = "isTrigger", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((EdgeCollider2D)o).isTrigger = (System.Boolean)v, Getter = (o) => ((EdgeCollider2D)o).isTrigger, Updater = (object o, ref object v) => { var x = ((EdgeCollider2D)o).isTrigger; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "usedByEffector", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((EdgeCollider2D)o).usedByEffector = (System.Boolean)v, Getter = (o) => ((EdgeCollider2D)o).usedByEffector, Updater = (object o, ref object v) => { var x = ((EdgeCollider2D)o).usedByEffector; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + #if !UNITY_2023_1_OR_NEWER + new UnityProperty { Name = "usedByComposite", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((EdgeCollider2D)o).usedByComposite = (System.Boolean)v, Getter = (o) => ((EdgeCollider2D)o).usedByComposite, Updater = (object o, ref object v) => { var x = ((EdgeCollider2D)o).usedByComposite; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + #endif + #if UNITY_2023_1_OR_NEWER + new UnityProperty { Name = "compositeOperation", PropertyType = typeof(UnityEngine.Collider2D.CompositeOperation), Setter = (o, v) => ((EdgeCollider2D)o).compositeOperation = (UnityEngine.Collider2D.CompositeOperation)v, Getter = (o) => ((EdgeCollider2D)o).compositeOperation, Updater = (object o, ref object v) => { var x = (int)((EdgeCollider2D)o).compositeOperation; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + #endif + new UnityProperty { Name = "offset", PropertyType = typeof(UnityEngine.Vector2), Setter = (o, v) => ((EdgeCollider2D)o).offset = (UnityEngine.Vector2)v, Getter = (o) => ((EdgeCollider2D)o).offset, Updater = (object o, ref object v) => { var x = ((EdgeCollider2D)o).offset; if (!x.Equals((UnityEngine.Vector2)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "edgeRadius", PropertyType = typeof(System.Single), Setter = (o, v) => ((EdgeCollider2D)o).edgeRadius = (System.Single)v, Getter = (o) => ((EdgeCollider2D)o).edgeRadius, Updater = (object o, ref object v) => { var x = ((EdgeCollider2D)o).edgeRadius; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "points", PropertyType = typeof(UnityEngine.Vector2[]), Setter = (o, v) => ((EdgeCollider2D)o).points = (UnityEngine.Vector2[])v, Getter = (o) => ((EdgeCollider2D)o).points, }, + #if UNITY_2020_1_OR_NEWER + new UnityProperty { Name = "useAdjacentStartPoint", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((EdgeCollider2D)o).useAdjacentStartPoint = (System.Boolean)v, Getter = (o) => ((EdgeCollider2D)o).useAdjacentStartPoint, Updater = (object o, ref object v) => { var x = ((EdgeCollider2D)o).useAdjacentStartPoint; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + #endif + #if UNITY_2020_1_OR_NEWER + new UnityProperty { Name = "useAdjacentEndPoint", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((EdgeCollider2D)o).useAdjacentEndPoint = (System.Boolean)v, Getter = (o) => ((EdgeCollider2D)o).useAdjacentEndPoint, Updater = (object o, ref object v) => { var x = ((EdgeCollider2D)o).useAdjacentEndPoint; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + #endif + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((EdgeCollider2D)o).enabled = (System.Boolean)v, Getter = (o) => ((EdgeCollider2D)o).enabled, Updater = (object o, ref object v) => { var x = ((EdgeCollider2D)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_GUI + { "UnityEngine.EventSystems.EventSystem", new UnityProperty[] { + new UnityProperty { Name = "firstSelectedGameObject", PropertyType = typeof(UnityEngine.GameObject), Setter = (o, v) => ((UnityEngine.EventSystems.EventSystem)o).firstSelectedGameObject = (UnityEngine.GameObject)v, Getter = (o) => ((UnityEngine.EventSystems.EventSystem)o).firstSelectedGameObject, }, + new UnityProperty { Name = "sendNavigationEvents", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.EventSystems.EventSystem)o).sendNavigationEvents = (System.Boolean)v, Getter = (o) => ((UnityEngine.EventSystems.EventSystem)o).sendNavigationEvents, Updater = (object o, ref object v) => { var x = ((UnityEngine.EventSystems.EventSystem)o).sendNavigationEvents; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "pixelDragThreshold", PropertyType = typeof(System.Int32), Setter = (o, v) => ((UnityEngine.EventSystems.EventSystem)o).pixelDragThreshold = (System.Int32)v, Getter = (o) => ((UnityEngine.EventSystems.EventSystem)o).pixelDragThreshold, Updater = (object o, ref object v) => { var x = ((UnityEngine.EventSystems.EventSystem)o).pixelDragThreshold; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.EventSystems.EventSystem)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.EventSystems.EventSystem)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.EventSystems.EventSystem)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_PHYSICS_2D + { "UnityEngine.FixedJoint2D", new UnityProperty[] { + new UnityProperty { Name = "enableCollision", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((FixedJoint2D)o).enableCollision = (System.Boolean)v, Getter = (o) => ((FixedJoint2D)o).enableCollision, Updater = (object o, ref object v) => { var x = ((FixedJoint2D)o).enableCollision; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "connectedBody", PropertyType = typeof(UnityEngine.Rigidbody2D), Setter = (o, v) => ((FixedJoint2D)o).connectedBody = (UnityEngine.Rigidbody2D)v, Getter = (o) => ((FixedJoint2D)o).connectedBody, }, + new UnityProperty { Name = "autoConfigureConnectedAnchor", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((FixedJoint2D)o).autoConfigureConnectedAnchor = (System.Boolean)v, Getter = (o) => ((FixedJoint2D)o).autoConfigureConnectedAnchor, Updater = (object o, ref object v) => { var x = ((FixedJoint2D)o).autoConfigureConnectedAnchor; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "anchor", PropertyType = typeof(UnityEngine.Vector2), Setter = (o, v) => ((FixedJoint2D)o).anchor = (UnityEngine.Vector2)v, Getter = (o) => ((FixedJoint2D)o).anchor, Updater = (object o, ref object v) => { var x = ((FixedJoint2D)o).anchor; if (!x.Equals((UnityEngine.Vector2)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "connectedAnchor", PropertyType = typeof(UnityEngine.Vector2), Setter = (o, v) => ((FixedJoint2D)o).connectedAnchor = (UnityEngine.Vector2)v, Getter = (o) => ((FixedJoint2D)o).connectedAnchor, Updater = (object o, ref object v) => { var x = ((FixedJoint2D)o).connectedAnchor; if (!x.Equals((UnityEngine.Vector2)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "dampingRatio", PropertyType = typeof(System.Single), Setter = (o, v) => ((FixedJoint2D)o).dampingRatio = (System.Single)v, Getter = (o) => ((FixedJoint2D)o).dampingRatio, Updater = (object o, ref object v) => { var x = ((FixedJoint2D)o).dampingRatio; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "frequency", PropertyType = typeof(System.Single), Setter = (o, v) => ((FixedJoint2D)o).frequency = (System.Single)v, Getter = (o) => ((FixedJoint2D)o).frequency, Updater = (object o, ref object v) => { var x = ((FixedJoint2D)o).frequency; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "breakForce", PropertyType = typeof(System.Single), Setter = (o, v) => ((FixedJoint2D)o).breakForce = (System.Single)v, Getter = (o) => ((FixedJoint2D)o).breakForce, Updater = (object o, ref object v) => { var x = ((FixedJoint2D)o).breakForce; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "breakTorque", PropertyType = typeof(System.Single), Setter = (o, v) => ((FixedJoint2D)o).breakTorque = (System.Single)v, Getter = (o) => ((FixedJoint2D)o).breakTorque, Updater = (object o, ref object v) => { var x = ((FixedJoint2D)o).breakTorque; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((FixedJoint2D)o).enabled = (System.Boolean)v, Getter = (o) => ((FixedJoint2D)o).enabled, Updater = (object o, ref object v) => { var x = ((FixedJoint2D)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_PHYSICS_2D + { "UnityEngine.FrictionJoint2D", new UnityProperty[] { + new UnityProperty { Name = "enableCollision", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((FrictionJoint2D)o).enableCollision = (System.Boolean)v, Getter = (o) => ((FrictionJoint2D)o).enableCollision, Updater = (object o, ref object v) => { var x = ((FrictionJoint2D)o).enableCollision; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "connectedBody", PropertyType = typeof(UnityEngine.Rigidbody2D), Setter = (o, v) => ((FrictionJoint2D)o).connectedBody = (UnityEngine.Rigidbody2D)v, Getter = (o) => ((FrictionJoint2D)o).connectedBody, }, + new UnityProperty { Name = "autoConfigureConnectedAnchor", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((FrictionJoint2D)o).autoConfigureConnectedAnchor = (System.Boolean)v, Getter = (o) => ((FrictionJoint2D)o).autoConfigureConnectedAnchor, Updater = (object o, ref object v) => { var x = ((FrictionJoint2D)o).autoConfigureConnectedAnchor; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "anchor", PropertyType = typeof(UnityEngine.Vector2), Setter = (o, v) => ((FrictionJoint2D)o).anchor = (UnityEngine.Vector2)v, Getter = (o) => ((FrictionJoint2D)o).anchor, Updater = (object o, ref object v) => { var x = ((FrictionJoint2D)o).anchor; if (!x.Equals((UnityEngine.Vector2)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "connectedAnchor", PropertyType = typeof(UnityEngine.Vector2), Setter = (o, v) => ((FrictionJoint2D)o).connectedAnchor = (UnityEngine.Vector2)v, Getter = (o) => ((FrictionJoint2D)o).connectedAnchor, Updater = (object o, ref object v) => { var x = ((FrictionJoint2D)o).connectedAnchor; if (!x.Equals((UnityEngine.Vector2)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "maxForce", PropertyType = typeof(System.Single), Setter = (o, v) => ((FrictionJoint2D)o).maxForce = (System.Single)v, Getter = (o) => ((FrictionJoint2D)o).maxForce, Updater = (object o, ref object v) => { var x = ((FrictionJoint2D)o).maxForce; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "maxTorque", PropertyType = typeof(System.Single), Setter = (o, v) => ((FrictionJoint2D)o).maxTorque = (System.Single)v, Getter = (o) => ((FrictionJoint2D)o).maxTorque, Updater = (object o, ref object v) => { var x = ((FrictionJoint2D)o).maxTorque; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "breakForce", PropertyType = typeof(System.Single), Setter = (o, v) => ((FrictionJoint2D)o).breakForce = (System.Single)v, Getter = (o) => ((FrictionJoint2D)o).breakForce, Updater = (object o, ref object v) => { var x = ((FrictionJoint2D)o).breakForce; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "breakTorque", PropertyType = typeof(System.Single), Setter = (o, v) => ((FrictionJoint2D)o).breakTorque = (System.Single)v, Getter = (o) => ((FrictionJoint2D)o).breakTorque, Updater = (object o, ref object v) => { var x = ((FrictionJoint2D)o).breakTorque; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((FrictionJoint2D)o).enabled = (System.Boolean)v, Getter = (o) => ((FrictionJoint2D)o).enabled, Updater = (object o, ref object v) => { var x = ((FrictionJoint2D)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_GUI + { "UnityEngine.UI.GraphicRaycaster", new UnityProperty[] { + new UnityProperty { Name = "ignoreReversedGraphics", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.GraphicRaycaster)o).ignoreReversedGraphics = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.GraphicRaycaster)o).ignoreReversedGraphics, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.GraphicRaycaster)o).ignoreReversedGraphics; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "blockingObjects", PropertyType = typeof(UnityEngine.UI.GraphicRaycaster.BlockingObjects), Setter = (o, v) => ((UnityEngine.UI.GraphicRaycaster)o).blockingObjects = (UnityEngine.UI.GraphicRaycaster.BlockingObjects)v, Getter = (o) => ((UnityEngine.UI.GraphicRaycaster)o).blockingObjects, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.UI.GraphicRaycaster)o).blockingObjects; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + #if UNITY_2020_2_OR_NEWER + new UnityProperty { Name = "blockingMask", PropertyType = typeof(UnityEngine.LayerMask), Setter = (o, v) => ((UnityEngine.UI.GraphicRaycaster)o).blockingMask = (UnityEngine.LayerMask)v, Getter = (o) => ((UnityEngine.UI.GraphicRaycaster)o).blockingMask, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.GraphicRaycaster)o).blockingMask; if (!x.Equals((UnityEngine.LayerMask)v)) { v = x; return true; } return false; } }, + #endif + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.GraphicRaycaster)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.GraphicRaycaster)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.GraphicRaycaster)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + { "UnityEngine.Grid", new UnityProperty[] { + new UnityProperty { Name = "cellSize", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((Grid)o).cellSize = (UnityEngine.Vector3)v, Getter = (o) => ((Grid)o).cellSize, Updater = (object o, ref object v) => { var x = ((Grid)o).cellSize; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "cellGap", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((Grid)o).cellGap = (UnityEngine.Vector3)v, Getter = (o) => ((Grid)o).cellGap, Updater = (object o, ref object v) => { var x = ((Grid)o).cellGap; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "cellLayout", PropertyType = typeof(UnityEngine.GridLayout.CellLayout), Setter = (o, v) => ((Grid)o).cellLayout = (UnityEngine.GridLayout.CellLayout)v, Getter = (o) => ((Grid)o).cellLayout, Updater = (object o, ref object v) => { var x = (int)((Grid)o).cellLayout; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "cellSwizzle", PropertyType = typeof(UnityEngine.GridLayout.CellSwizzle), Setter = (o, v) => ((Grid)o).cellSwizzle = (UnityEngine.GridLayout.CellSwizzle)v, Getter = (o) => ((Grid)o).cellSwizzle, Updater = (object o, ref object v) => { var x = (int)((Grid)o).cellSwizzle; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((Grid)o).enabled = (System.Boolean)v, Getter = (o) => ((Grid)o).enabled, Updater = (object o, ref object v) => { var x = ((Grid)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + + + #if UNITY_GUI + { "UnityEngine.UI.GridLayoutGroup", new UnityProperty[] { + new UnityProperty { Name = "padding", PropertyType = typeof(UnityEngine.RectOffset), Setter = (o, v) => ((UnityEngine.UI.GridLayoutGroup)o).padding = (UnityEngine.RectOffset)v, Getter = (o) => ((UnityEngine.UI.GridLayoutGroup)o).padding, }, + new UnityProperty { Name = "cellSize", PropertyType = typeof(UnityEngine.Vector2), Setter = (o, v) => ((UnityEngine.UI.GridLayoutGroup)o).cellSize = (UnityEngine.Vector2)v, Getter = (o) => ((UnityEngine.UI.GridLayoutGroup)o).cellSize, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.GridLayoutGroup)o).cellSize; if (!x.Equals((UnityEngine.Vector2)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "spacing", PropertyType = typeof(UnityEngine.Vector2), Setter = (o, v) => ((UnityEngine.UI.GridLayoutGroup)o).spacing = (UnityEngine.Vector2)v, Getter = (o) => ((UnityEngine.UI.GridLayoutGroup)o).spacing, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.GridLayoutGroup)o).spacing; if (!x.Equals((UnityEngine.Vector2)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "startCorner", PropertyType = typeof(UnityEngine.UI.GridLayoutGroup.Corner), Setter = (o, v) => ((UnityEngine.UI.GridLayoutGroup)o).startCorner = (UnityEngine.UI.GridLayoutGroup.Corner)v, Getter = (o) => ((UnityEngine.UI.GridLayoutGroup)o).startCorner, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.UI.GridLayoutGroup)o).startCorner; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "startAxis", PropertyType = typeof(UnityEngine.UI.GridLayoutGroup.Axis), Setter = (o, v) => ((UnityEngine.UI.GridLayoutGroup)o).startAxis = (UnityEngine.UI.GridLayoutGroup.Axis)v, Getter = (o) => ((UnityEngine.UI.GridLayoutGroup)o).startAxis, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.UI.GridLayoutGroup)o).startAxis; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "childAlignment", PropertyType = typeof(UnityEngine.TextAnchor), Setter = (o, v) => ((UnityEngine.UI.GridLayoutGroup)o).childAlignment = (UnityEngine.TextAnchor)v, Getter = (o) => ((UnityEngine.UI.GridLayoutGroup)o).childAlignment, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.UI.GridLayoutGroup)o).childAlignment; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "constraint", PropertyType = typeof(UnityEngine.UI.GridLayoutGroup.Constraint), Setter = (o, v) => ((UnityEngine.UI.GridLayoutGroup)o).constraint = (UnityEngine.UI.GridLayoutGroup.Constraint)v, Getter = (o) => ((UnityEngine.UI.GridLayoutGroup)o).constraint, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.UI.GridLayoutGroup)o).constraint; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.GridLayoutGroup)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.GridLayoutGroup)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.GridLayoutGroup)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_PHYSICS + { "UnityEngine.HingeJoint", new UnityProperty[] { + new UnityProperty { Name = "connectedBody", PropertyType = typeof(UnityEngine.Rigidbody), Setter = (o, v) => ((HingeJoint)o).connectedBody = (UnityEngine.Rigidbody)v, Getter = (o) => ((HingeJoint)o).connectedBody, }, + #if UNITY_2020_2_OR_NEWER + new UnityProperty { Name = "connectedArticulationBody", PropertyType = typeof(UnityEngine.ArticulationBody), Setter = (o, v) => ((HingeJoint)o).connectedArticulationBody = (UnityEngine.ArticulationBody)v, Getter = (o) => ((HingeJoint)o).connectedArticulationBody, }, + #endif + new UnityProperty { Name = "anchor", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((HingeJoint)o).anchor = (UnityEngine.Vector3)v, Getter = (o) => ((HingeJoint)o).anchor, Updater = (object o, ref object v) => { var x = ((HingeJoint)o).anchor; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "axis", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((HingeJoint)o).axis = (UnityEngine.Vector3)v, Getter = (o) => ((HingeJoint)o).axis, Updater = (object o, ref object v) => { var x = ((HingeJoint)o).axis; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "autoConfigureConnectedAnchor", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((HingeJoint)o).autoConfigureConnectedAnchor = (System.Boolean)v, Getter = (o) => ((HingeJoint)o).autoConfigureConnectedAnchor, Updater = (object o, ref object v) => { var x = ((HingeJoint)o).autoConfigureConnectedAnchor; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "connectedAnchor", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((HingeJoint)o).connectedAnchor = (UnityEngine.Vector3)v, Getter = (o) => ((HingeJoint)o).connectedAnchor, Updater = (object o, ref object v) => { var x = ((HingeJoint)o).connectedAnchor; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "useSpring", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((HingeJoint)o).useSpring = (System.Boolean)v, Getter = (o) => ((HingeJoint)o).useSpring, Updater = (object o, ref object v) => { var x = ((HingeJoint)o).useSpring; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "spring", PropertyType = typeof(UnityEngine.JointSpring), Setter = (o, v) => ((HingeJoint)o).spring = (UnityEngine.JointSpring)v, Getter = (o) => ((HingeJoint)o).spring, Updater = (object o, ref object v) => { var x = ((HingeJoint)o).spring; if (!x.Equals((UnityEngine.JointSpring)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "useMotor", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((HingeJoint)o).useMotor = (System.Boolean)v, Getter = (o) => ((HingeJoint)o).useMotor, Updater = (object o, ref object v) => { var x = ((HingeJoint)o).useMotor; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "motor", PropertyType = typeof(UnityEngine.JointMotor), Setter = (o, v) => ((HingeJoint)o).motor = (UnityEngine.JointMotor)v, Getter = (o) => ((HingeJoint)o).motor, Updater = (object o, ref object v) => { var x = ((HingeJoint)o).motor; if (!x.Equals((UnityEngine.JointMotor)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "useLimits", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((HingeJoint)o).useLimits = (System.Boolean)v, Getter = (o) => ((HingeJoint)o).useLimits, Updater = (object o, ref object v) => { var x = ((HingeJoint)o).useLimits; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "limits", PropertyType = typeof(UnityEngine.JointLimits), Setter = (o, v) => ((HingeJoint)o).limits = (UnityEngine.JointLimits)v, Getter = (o) => ((HingeJoint)o).limits, Updater = (object o, ref object v) => { var x = ((HingeJoint)o).limits; if (!x.Equals((UnityEngine.JointLimits)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "breakForce", PropertyType = typeof(System.Single), Setter = (o, v) => ((HingeJoint)o).breakForce = (System.Single)v, Getter = (o) => ((HingeJoint)o).breakForce, Updater = (object o, ref object v) => { var x = ((HingeJoint)o).breakForce; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "breakTorque", PropertyType = typeof(System.Single), Setter = (o, v) => ((HingeJoint)o).breakTorque = (System.Single)v, Getter = (o) => ((HingeJoint)o).breakTorque, Updater = (object o, ref object v) => { var x = ((HingeJoint)o).breakTorque; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enableCollision", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((HingeJoint)o).enableCollision = (System.Boolean)v, Getter = (o) => ((HingeJoint)o).enableCollision, Updater = (object o, ref object v) => { var x = ((HingeJoint)o).enableCollision; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enablePreprocessing", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((HingeJoint)o).enablePreprocessing = (System.Boolean)v, Getter = (o) => ((HingeJoint)o).enablePreprocessing, Updater = (object o, ref object v) => { var x = ((HingeJoint)o).enablePreprocessing; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "massScale", PropertyType = typeof(System.Single), Setter = (o, v) => ((HingeJoint)o).massScale = (System.Single)v, Getter = (o) => ((HingeJoint)o).massScale, Updater = (object o, ref object v) => { var x = ((HingeJoint)o).massScale; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "connectedMassScale", PropertyType = typeof(System.Single), Setter = (o, v) => ((HingeJoint)o).connectedMassScale = (System.Single)v, Getter = (o) => ((HingeJoint)o).connectedMassScale, Updater = (object o, ref object v) => { var x = ((HingeJoint)o).connectedMassScale; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_PHYSICS_2D + { "UnityEngine.HingeJoint2D", new UnityProperty[] { + new UnityProperty { Name = "enableCollision", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((HingeJoint2D)o).enableCollision = (System.Boolean)v, Getter = (o) => ((HingeJoint2D)o).enableCollision, Updater = (object o, ref object v) => { var x = ((HingeJoint2D)o).enableCollision; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "connectedBody", PropertyType = typeof(UnityEngine.Rigidbody2D), Setter = (o, v) => ((HingeJoint2D)o).connectedBody = (UnityEngine.Rigidbody2D)v, Getter = (o) => ((HingeJoint2D)o).connectedBody, }, + new UnityProperty { Name = "autoConfigureConnectedAnchor", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((HingeJoint2D)o).autoConfigureConnectedAnchor = (System.Boolean)v, Getter = (o) => ((HingeJoint2D)o).autoConfigureConnectedAnchor, Updater = (object o, ref object v) => { var x = ((HingeJoint2D)o).autoConfigureConnectedAnchor; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "anchor", PropertyType = typeof(UnityEngine.Vector2), Setter = (o, v) => ((HingeJoint2D)o).anchor = (UnityEngine.Vector2)v, Getter = (o) => ((HingeJoint2D)o).anchor, Updater = (object o, ref object v) => { var x = ((HingeJoint2D)o).anchor; if (!x.Equals((UnityEngine.Vector2)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "connectedAnchor", PropertyType = typeof(UnityEngine.Vector2), Setter = (o, v) => ((HingeJoint2D)o).connectedAnchor = (UnityEngine.Vector2)v, Getter = (o) => ((HingeJoint2D)o).connectedAnchor, Updater = (object o, ref object v) => { var x = ((HingeJoint2D)o).connectedAnchor; if (!x.Equals((UnityEngine.Vector2)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "useMotor", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((HingeJoint2D)o).useMotor = (System.Boolean)v, Getter = (o) => ((HingeJoint2D)o).useMotor, Updater = (object o, ref object v) => { var x = ((HingeJoint2D)o).useMotor; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "motor", PropertyType = typeof(UnityEngine.JointMotor2D), Setter = (o, v) => ((HingeJoint2D)o).motor = (UnityEngine.JointMotor2D)v, Getter = (o) => ((HingeJoint2D)o).motor, Updater = (object o, ref object v) => { var x = ((HingeJoint2D)o).motor; if (!x.Equals((UnityEngine.JointMotor2D)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "useLimits", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((HingeJoint2D)o).useLimits = (System.Boolean)v, Getter = (o) => ((HingeJoint2D)o).useLimits, Updater = (object o, ref object v) => { var x = ((HingeJoint2D)o).useLimits; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "limits", PropertyType = typeof(UnityEngine.JointAngleLimits2D), Setter = (o, v) => ((HingeJoint2D)o).limits = (UnityEngine.JointAngleLimits2D)v, Getter = (o) => ((HingeJoint2D)o).limits, Updater = (object o, ref object v) => { var x = ((HingeJoint2D)o).limits; if (!x.Equals((UnityEngine.JointAngleLimits2D)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "breakForce", PropertyType = typeof(System.Single), Setter = (o, v) => ((HingeJoint2D)o).breakForce = (System.Single)v, Getter = (o) => ((HingeJoint2D)o).breakForce, Updater = (object o, ref object v) => { var x = ((HingeJoint2D)o).breakForce; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "breakTorque", PropertyType = typeof(System.Single), Setter = (o, v) => ((HingeJoint2D)o).breakTorque = (System.Single)v, Getter = (o) => ((HingeJoint2D)o).breakTorque, Updater = (object o, ref object v) => { var x = ((HingeJoint2D)o).breakTorque; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((HingeJoint2D)o).enabled = (System.Boolean)v, Getter = (o) => ((HingeJoint2D)o).enabled, Updater = (object o, ref object v) => { var x = ((HingeJoint2D)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_GUI + { "UnityEngine.UI.HorizontalLayoutGroup", new UnityProperty[] { + new UnityProperty { Name = "padding", PropertyType = typeof(UnityEngine.RectOffset), Setter = (o, v) => ((UnityEngine.UI.HorizontalLayoutGroup)o).padding = (UnityEngine.RectOffset)v, Getter = (o) => ((UnityEngine.UI.HorizontalLayoutGroup)o).padding, }, + new UnityProperty { Name = "spacing", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.UI.HorizontalLayoutGroup)o).spacing = (System.Single)v, Getter = (o) => ((UnityEngine.UI.HorizontalLayoutGroup)o).spacing, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.HorizontalLayoutGroup)o).spacing; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "childAlignment", PropertyType = typeof(UnityEngine.TextAnchor), Setter = (o, v) => ((UnityEngine.UI.HorizontalLayoutGroup)o).childAlignment = (UnityEngine.TextAnchor)v, Getter = (o) => ((UnityEngine.UI.HorizontalLayoutGroup)o).childAlignment, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.UI.HorizontalLayoutGroup)o).childAlignment; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "childControlWidth", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.HorizontalLayoutGroup)o).childControlWidth = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.HorizontalLayoutGroup)o).childControlWidth, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.HorizontalLayoutGroup)o).childControlWidth; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "childControlHeight", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.HorizontalLayoutGroup)o).childControlHeight = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.HorizontalLayoutGroup)o).childControlHeight, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.HorizontalLayoutGroup)o).childControlHeight; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "childScaleWidth", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.HorizontalLayoutGroup)o).childScaleWidth = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.HorizontalLayoutGroup)o).childScaleWidth, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.HorizontalLayoutGroup)o).childScaleWidth; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "childScaleHeight", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.HorizontalLayoutGroup)o).childScaleHeight = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.HorizontalLayoutGroup)o).childScaleHeight, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.HorizontalLayoutGroup)o).childScaleHeight; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "childForceExpandWidth", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.HorizontalLayoutGroup)o).childForceExpandWidth = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.HorizontalLayoutGroup)o).childForceExpandWidth, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.HorizontalLayoutGroup)o).childForceExpandWidth; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "childForceExpandHeight", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.HorizontalLayoutGroup)o).childForceExpandHeight = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.HorizontalLayoutGroup)o).childForceExpandHeight, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.HorizontalLayoutGroup)o).childForceExpandHeight; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.HorizontalLayoutGroup)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.HorizontalLayoutGroup)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.HorizontalLayoutGroup)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_GUI + { "UnityEngine.UI.VerticalLayoutGroup", new UnityProperty[] { + new UnityProperty { Name = "padding", PropertyType = typeof(UnityEngine.RectOffset), Setter = (o, v) => ((UnityEngine.UI.VerticalLayoutGroup)o).padding = (UnityEngine.RectOffset)v, Getter = (o) => ((UnityEngine.UI.VerticalLayoutGroup)o).padding, }, + new UnityProperty { Name = "spacing", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.UI.VerticalLayoutGroup)o).spacing = (System.Single)v, Getter = (o) => ((UnityEngine.UI.VerticalLayoutGroup)o).spacing, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.VerticalLayoutGroup)o).spacing; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "childAlignment", PropertyType = typeof(UnityEngine.TextAnchor), Setter = (o, v) => ((UnityEngine.UI.VerticalLayoutGroup)o).childAlignment = (UnityEngine.TextAnchor)v, Getter = (o) => ((UnityEngine.UI.VerticalLayoutGroup)o).childAlignment, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.UI.VerticalLayoutGroup)o).childAlignment; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "childControlWidth", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.VerticalLayoutGroup)o).childControlWidth = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.VerticalLayoutGroup)o).childControlWidth, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.VerticalLayoutGroup)o).childControlWidth; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "childControlHeight", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.VerticalLayoutGroup)o).childControlHeight = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.VerticalLayoutGroup)o).childControlHeight, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.VerticalLayoutGroup)o).childControlHeight; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "childScaleWidth", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.VerticalLayoutGroup)o).childScaleWidth = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.VerticalLayoutGroup)o).childScaleWidth, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.VerticalLayoutGroup)o).childScaleWidth; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "childScaleHeight", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.VerticalLayoutGroup)o).childScaleHeight = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.VerticalLayoutGroup)o).childScaleHeight, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.VerticalLayoutGroup)o).childScaleHeight; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "childForceExpandWidth", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.VerticalLayoutGroup)o).childForceExpandWidth = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.VerticalLayoutGroup)o).childForceExpandWidth, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.VerticalLayoutGroup)o).childForceExpandWidth; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "childForceExpandHeight", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.VerticalLayoutGroup)o).childForceExpandHeight = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.VerticalLayoutGroup)o).childForceExpandHeight, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.VerticalLayoutGroup)o).childForceExpandHeight; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.VerticalLayoutGroup)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.VerticalLayoutGroup)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.VerticalLayoutGroup)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_GUI + { "UnityEngine.UI.Image", new UnityProperty[] { + new UnityProperty { Name = "sprite", PropertyType = typeof(UnityEngine.Sprite), Setter = (o, v) => ((UnityEngine.UI.Image)o).sprite = (UnityEngine.Sprite)v, Getter = (o) => ((UnityEngine.UI.Image)o).sprite, }, + new UnityProperty { Name = "material", PropertyType = typeof(UnityEngine.Material), Setter = (o, v) => ((UnityEngine.UI.Image)o).material = (UnityEngine.Material)v, Getter = (o) => ((UnityEngine.UI.Image)o).material, }, + new UnityProperty { Name = "color", PropertyType = typeof(UnityEngine.Color), Setter = (o, v) => ((UnityEngine.UI.Image)o).color = (UnityEngine.Color)v, Getter = (o) => ((UnityEngine.UI.Image)o).color, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Image)o).color; if (!x.Equals((UnityEngine.Color)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "raycastTarget", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.Image)o).raycastTarget = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.Image)o).raycastTarget, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Image)o).raycastTarget; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + #if UNITY_2020_1_OR_NEWER + new UnityProperty { Name = "raycastPadding", PropertyType = typeof(UnityEngine.Vector4), Setter = (o, v) => ((UnityEngine.UI.Image)o).raycastPadding = (UnityEngine.Vector4)v, Getter = (o) => ((UnityEngine.UI.Image)o).raycastPadding, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Image)o).raycastPadding; if (!x.Equals((UnityEngine.Vector4)v)) { v = x; return true; } return false; } }, + #endif + new UnityProperty { Name = "maskable", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.Image)o).maskable = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.Image)o).maskable, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Image)o).maskable; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.Image)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.Image)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Image)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_GUI + { "UnityEngine.UI.InputField", new UnityProperty[] { + new UnityProperty { Name = "interactable", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.InputField)o).interactable = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.InputField)o).interactable, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.InputField)o).interactable; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "transition", PropertyType = typeof(UnityEngine.UI.Selectable.Transition), Setter = (o, v) => ((UnityEngine.UI.InputField)o).transition = (UnityEngine.UI.Selectable.Transition)v, Getter = (o) => ((UnityEngine.UI.InputField)o).transition, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.UI.InputField)o).transition; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "targetGraphic", PropertyType = typeof(UnityEngine.UI.Graphic), Setter = (o, v) => ((UnityEngine.UI.InputField)o).targetGraphic = (UnityEngine.UI.Graphic)v, Getter = (o) => ((UnityEngine.UI.InputField)o).targetGraphic, }, + new UnityProperty { Name = "colors", PropertyType = typeof(UnityEngine.UI.ColorBlock), Setter = (o, v) => ((UnityEngine.UI.InputField)o).colors = (UnityEngine.UI.ColorBlock)v, Getter = (o) => ((UnityEngine.UI.InputField)o).colors, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.InputField)o).colors; if (!x.Equals((UnityEngine.UI.ColorBlock)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "navigation", PropertyType = typeof(UnityEngine.UI.Navigation), Setter = (o, v) => ((UnityEngine.UI.InputField)o).navigation = (UnityEngine.UI.Navigation)v, Getter = (o) => ((UnityEngine.UI.InputField)o).navigation, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.InputField)o).navigation; if (!x.Equals((UnityEngine.UI.Navigation)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "textComponent", PropertyType = typeof(UnityEngine.UI.Text), Setter = (o, v) => ((UnityEngine.UI.InputField)o).textComponent = (UnityEngine.UI.Text)v, Getter = (o) => ((UnityEngine.UI.InputField)o).textComponent, }, + new UnityProperty { Name = "text", PropertyType = typeof(System.String), Setter = (o, v) => ((UnityEngine.UI.InputField)o).text = (System.String)v, Getter = (o) => ((UnityEngine.UI.InputField)o).text, }, + new UnityProperty { Name = "characterLimit", PropertyType = typeof(System.Int32), Setter = (o, v) => ((UnityEngine.UI.InputField)o).characterLimit = (System.Int32)v, Getter = (o) => ((UnityEngine.UI.InputField)o).characterLimit, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.InputField)o).characterLimit; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "contentType", PropertyType = typeof(UnityEngine.UI.InputField.ContentType), Setter = (o, v) => ((UnityEngine.UI.InputField)o).contentType = (UnityEngine.UI.InputField.ContentType)v, Getter = (o) => ((UnityEngine.UI.InputField)o).contentType, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.UI.InputField)o).contentType; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "lineType", PropertyType = typeof(UnityEngine.UI.InputField.LineType), Setter = (o, v) => ((UnityEngine.UI.InputField)o).lineType = (UnityEngine.UI.InputField.LineType)v, Getter = (o) => ((UnityEngine.UI.InputField)o).lineType, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.UI.InputField)o).lineType; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "placeholder", PropertyType = typeof(UnityEngine.UI.Graphic), Setter = (o, v) => ((UnityEngine.UI.InputField)o).placeholder = (UnityEngine.UI.Graphic)v, Getter = (o) => ((UnityEngine.UI.InputField)o).placeholder, }, + new UnityProperty { Name = "caretBlinkRate", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.UI.InputField)o).caretBlinkRate = (System.Single)v, Getter = (o) => ((UnityEngine.UI.InputField)o).caretBlinkRate, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.InputField)o).caretBlinkRate; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "caretWidth", PropertyType = typeof(System.Int32), Setter = (o, v) => ((UnityEngine.UI.InputField)o).caretWidth = (System.Int32)v, Getter = (o) => ((UnityEngine.UI.InputField)o).caretWidth, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.InputField)o).caretWidth; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "customCaretColor", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.InputField)o).customCaretColor = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.InputField)o).customCaretColor, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.InputField)o).customCaretColor; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "selectionColor", PropertyType = typeof(UnityEngine.Color), Setter = (o, v) => ((UnityEngine.UI.InputField)o).selectionColor = (UnityEngine.Color)v, Getter = (o) => ((UnityEngine.UI.InputField)o).selectionColor, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.InputField)o).selectionColor; if (!x.Equals((UnityEngine.Color)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "shouldHideMobileInput", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.InputField)o).shouldHideMobileInput = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.InputField)o).shouldHideMobileInput, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.InputField)o).shouldHideMobileInput; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "readOnly", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.InputField)o).readOnly = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.InputField)o).readOnly, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.InputField)o).readOnly; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + #if UNITY_2020_3_OR_NEWER + new UnityProperty { Name = "shouldActivateOnSelect", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.InputField)o).shouldActivateOnSelect = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.InputField)o).shouldActivateOnSelect, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.InputField)o).shouldActivateOnSelect; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + #endif + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.InputField)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.InputField)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.InputField)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_GUI + { "UnityEngine.UI.LayoutElement", new UnityProperty[] { + new UnityProperty { Name = "ignoreLayout", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.LayoutElement)o).ignoreLayout = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.LayoutElement)o).ignoreLayout, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.LayoutElement)o).ignoreLayout; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "minWidth", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.UI.LayoutElement)o).minWidth = (System.Single)v, Getter = (o) => ((UnityEngine.UI.LayoutElement)o).minWidth, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.LayoutElement)o).minWidth; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "minHeight", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.UI.LayoutElement)o).minHeight = (System.Single)v, Getter = (o) => ((UnityEngine.UI.LayoutElement)o).minHeight, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.LayoutElement)o).minHeight; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "preferredWidth", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.UI.LayoutElement)o).preferredWidth = (System.Single)v, Getter = (o) => ((UnityEngine.UI.LayoutElement)o).preferredWidth, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.LayoutElement)o).preferredWidth; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "preferredHeight", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.UI.LayoutElement)o).preferredHeight = (System.Single)v, Getter = (o) => ((UnityEngine.UI.LayoutElement)o).preferredHeight, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.LayoutElement)o).preferredHeight; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "flexibleWidth", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.UI.LayoutElement)o).flexibleWidth = (System.Single)v, Getter = (o) => ((UnityEngine.UI.LayoutElement)o).flexibleWidth, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.LayoutElement)o).flexibleWidth; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "flexibleHeight", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.UI.LayoutElement)o).flexibleHeight = (System.Single)v, Getter = (o) => ((UnityEngine.UI.LayoutElement)o).flexibleHeight, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.LayoutElement)o).flexibleHeight; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "layoutPriority", PropertyType = typeof(System.Int32), Setter = (o, v) => ((UnityEngine.UI.LayoutElement)o).layoutPriority = (System.Int32)v, Getter = (o) => ((UnityEngine.UI.LayoutElement)o).layoutPriority, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.LayoutElement)o).layoutPriority; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.LayoutElement)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.LayoutElement)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.LayoutElement)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + { "UnityEngine.LensFlare", new UnityProperty[] { + new UnityProperty { Name = "flare", PropertyType = typeof(UnityEngine.Flare), Setter = (o, v) => ((LensFlare)o).flare = (UnityEngine.Flare)v, Getter = (o) => ((LensFlare)o).flare, }, + new UnityProperty { Name = "color", PropertyType = typeof(UnityEngine.Color), Setter = (o, v) => ((LensFlare)o).color = (UnityEngine.Color)v, Getter = (o) => ((LensFlare)o).color, Updater = (object o, ref object v) => { var x = ((LensFlare)o).color; if (!x.Equals((UnityEngine.Color)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "brightness", PropertyType = typeof(System.Single), Setter = (o, v) => ((LensFlare)o).brightness = (System.Single)v, Getter = (o) => ((LensFlare)o).brightness, Updater = (object o, ref object v) => { var x = ((LensFlare)o).brightness; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "fadeSpeed", PropertyType = typeof(System.Single), Setter = (o, v) => ((LensFlare)o).fadeSpeed = (System.Single)v, Getter = (o) => ((LensFlare)o).fadeSpeed, Updater = (object o, ref object v) => { var x = ((LensFlare)o).fadeSpeed; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((LensFlare)o).enabled = (System.Boolean)v, Getter = (o) => ((LensFlare)o).enabled, Updater = (object o, ref object v) => { var x = ((LensFlare)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + + + { "UnityEngine.Light", new UnityProperty[] { + new UnityProperty { Name = "type", PropertyType = typeof(UnityEngine.LightType), Setter = (o, v) => ((Light)o).type = (UnityEngine.LightType)v, Getter = (o) => ((Light)o).type, Updater = (object o, ref object v) => { var x = (int)((Light)o).type; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "range", PropertyType = typeof(System.Single), Setter = (o, v) => ((Light)o).range = (System.Single)v, Getter = (o) => ((Light)o).range, Updater = (object o, ref object v) => { var x = ((Light)o).range; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "spotAngle", PropertyType = typeof(System.Single), Setter = (o, v) => ((Light)o).spotAngle = (System.Single)v, Getter = (o) => ((Light)o).spotAngle, Updater = (object o, ref object v) => { var x = ((Light)o).spotAngle; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "type", PropertyType = typeof(UnityEngine.LightType), Setter = (o, v) => ((Light)o).type = (UnityEngine.LightType)v, Getter = (o) => ((Light)o).type, Updater = (object o, ref object v) => { var x = (int)((Light)o).type; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "color", PropertyType = typeof(UnityEngine.Color), Setter = (o, v) => ((Light)o).color = (UnityEngine.Color)v, Getter = (o) => ((Light)o).color, Updater = (object o, ref object v) => { var x = ((Light)o).color; if (!x.Equals((UnityEngine.Color)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "intensity", PropertyType = typeof(System.Single), Setter = (o, v) => ((Light)o).intensity = (System.Single)v, Getter = (o) => ((Light)o).intensity, Updater = (object o, ref object v) => { var x = ((Light)o).intensity; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "bounceIntensity", PropertyType = typeof(System.Single), Setter = (o, v) => ((Light)o).bounceIntensity = (System.Single)v, Getter = (o) => ((Light)o).bounceIntensity, Updater = (object o, ref object v) => { var x = ((Light)o).bounceIntensity; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "shadows", PropertyType = typeof(UnityEngine.LightShadows), Setter = (o, v) => ((Light)o).shadows = (UnityEngine.LightShadows)v, Getter = (o) => ((Light)o).shadows, Updater = (object o, ref object v) => { var x = (int)((Light)o).shadows; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "cookie", PropertyType = typeof(UnityEngine.Texture), Setter = (o, v) => ((Light)o).cookie = (UnityEngine.Texture)v, Getter = (o) => ((Light)o).cookie, }, + new UnityProperty { Name = "flare", PropertyType = typeof(UnityEngine.Flare), Setter = (o, v) => ((Light)o).flare = (UnityEngine.Flare)v, Getter = (o) => ((Light)o).flare, }, + new UnityProperty { Name = "renderMode", PropertyType = typeof(UnityEngine.LightRenderMode), Setter = (o, v) => ((Light)o).renderMode = (UnityEngine.LightRenderMode)v, Getter = (o) => ((Light)o).renderMode, Updater = (object o, ref object v) => { var x = (int)((Light)o).renderMode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "cullingMask", PropertyType = typeof(System.Int32), Setter = (o, v) => ((Light)o).cullingMask = (System.Int32)v, Getter = (o) => ((Light)o).cullingMask, Updater = (object o, ref object v) => { var x = ((Light)o).cullingMask; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((Light)o).enabled = (System.Boolean)v, Getter = (o) => ((Light)o).enabled, Updater = (object o, ref object v) => { var x = ((Light)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + + + { "UnityEngine.LightProbeProxyVolume", new UnityProperty[] { + new UnityProperty { Name = "refreshMode", PropertyType = typeof(UnityEngine.LightProbeProxyVolume.RefreshMode), Setter = (o, v) => ((LightProbeProxyVolume)o).refreshMode = (UnityEngine.LightProbeProxyVolume.RefreshMode)v, Getter = (o) => ((LightProbeProxyVolume)o).refreshMode, Updater = (object o, ref object v) => { var x = (int)((LightProbeProxyVolume)o).refreshMode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "qualityMode", PropertyType = typeof(UnityEngine.LightProbeProxyVolume.QualityMode), Setter = (o, v) => ((LightProbeProxyVolume)o).qualityMode = (UnityEngine.LightProbeProxyVolume.QualityMode)v, Getter = (o) => ((LightProbeProxyVolume)o).qualityMode, Updater = (object o, ref object v) => { var x = (int)((LightProbeProxyVolume)o).qualityMode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + #if UNITY_2020_2_OR_NEWER + new UnityProperty { Name = "dataFormat", PropertyType = typeof(UnityEngine.LightProbeProxyVolume.DataFormat), Setter = (o, v) => ((LightProbeProxyVolume)o).dataFormat = (UnityEngine.LightProbeProxyVolume.DataFormat)v, Getter = (o) => ((LightProbeProxyVolume)o).dataFormat, Updater = (object o, ref object v) => { var x = (int)((LightProbeProxyVolume)o).dataFormat; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + #endif + new UnityProperty { Name = "boundingBoxMode", PropertyType = typeof(UnityEngine.LightProbeProxyVolume.BoundingBoxMode), Setter = (o, v) => ((LightProbeProxyVolume)o).boundingBoxMode = (UnityEngine.LightProbeProxyVolume.BoundingBoxMode)v, Getter = (o) => ((LightProbeProxyVolume)o).boundingBoxMode, Updater = (object o, ref object v) => { var x = (int)((LightProbeProxyVolume)o).boundingBoxMode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "resolutionMode", PropertyType = typeof(UnityEngine.LightProbeProxyVolume.ResolutionMode), Setter = (o, v) => ((LightProbeProxyVolume)o).resolutionMode = (UnityEngine.LightProbeProxyVolume.ResolutionMode)v, Getter = (o) => ((LightProbeProxyVolume)o).resolutionMode, Updater = (object o, ref object v) => { var x = (int)((LightProbeProxyVolume)o).resolutionMode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "probeDensity", PropertyType = typeof(System.Single), Setter = (o, v) => ((LightProbeProxyVolume)o).probeDensity = (System.Single)v, Getter = (o) => ((LightProbeProxyVolume)o).probeDensity, Updater = (object o, ref object v) => { var x = ((LightProbeProxyVolume)o).probeDensity; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "probePositionMode", PropertyType = typeof(UnityEngine.LightProbeProxyVolume.ProbePositionMode), Setter = (o, v) => ((LightProbeProxyVolume)o).probePositionMode = (UnityEngine.LightProbeProxyVolume.ProbePositionMode)v, Getter = (o) => ((LightProbeProxyVolume)o).probePositionMode, Updater = (object o, ref object v) => { var x = (int)((LightProbeProxyVolume)o).probePositionMode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((LightProbeProxyVolume)o).enabled = (System.Boolean)v, Getter = (o) => ((LightProbeProxyVolume)o).enabled, Updater = (object o, ref object v) => { var x = ((LightProbeProxyVolume)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + + + { "UnityEngine.LineRenderer", new UnityProperty[] { + new UnityProperty { Name = "loop", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((LineRenderer)o).loop = (System.Boolean)v, Getter = (o) => ((LineRenderer)o).loop, Updater = (object o, ref object v) => { var x = ((LineRenderer)o).loop; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "startColor", PropertyType = typeof(UnityEngine.Color), Setter = (o, v) => ((LineRenderer)o).startColor = (UnityEngine.Color)v, Getter = (o) => ((LineRenderer)o).startColor, Updater = (object o, ref object v) => { var x = ((LineRenderer)o).startColor; if (!x.Equals((UnityEngine.Color)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "endColor", PropertyType = typeof(UnityEngine.Color), Setter = (o, v) => ((LineRenderer)o).endColor = (UnityEngine.Color)v, Getter = (o) => ((LineRenderer)o).endColor, Updater = (object o, ref object v) => { var x = ((LineRenderer)o).endColor; if (!x.Equals((UnityEngine.Color)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "numCornerVertices", PropertyType = typeof(System.Int32), Setter = (o, v) => ((LineRenderer)o).numCornerVertices = (System.Int32)v, Getter = (o) => ((LineRenderer)o).numCornerVertices, Updater = (object o, ref object v) => { var x = ((LineRenderer)o).numCornerVertices; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "numCapVertices", PropertyType = typeof(System.Int32), Setter = (o, v) => ((LineRenderer)o).numCapVertices = (System.Int32)v, Getter = (o) => ((LineRenderer)o).numCapVertices, Updater = (object o, ref object v) => { var x = ((LineRenderer)o).numCapVertices; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "alignment", PropertyType = typeof(UnityEngine.LineAlignment), Setter = (o, v) => ((LineRenderer)o).alignment = (UnityEngine.LineAlignment)v, Getter = (o) => ((LineRenderer)o).alignment, Updater = (object o, ref object v) => { var x = (int)((LineRenderer)o).alignment; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "textureMode", PropertyType = typeof(UnityEngine.LineTextureMode), Setter = (o, v) => ((LineRenderer)o).textureMode = (UnityEngine.LineTextureMode)v, Getter = (o) => ((LineRenderer)o).textureMode, Updater = (object o, ref object v) => { var x = (int)((LineRenderer)o).textureMode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "shadowBias", PropertyType = typeof(System.Single), Setter = (o, v) => ((LineRenderer)o).shadowBias = (System.Single)v, Getter = (o) => ((LineRenderer)o).shadowBias, Updater = (object o, ref object v) => { var x = ((LineRenderer)o).shadowBias; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "generateLightingData", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((LineRenderer)o).generateLightingData = (System.Boolean)v, Getter = (o) => ((LineRenderer)o).generateLightingData, Updater = (object o, ref object v) => { var x = ((LineRenderer)o).generateLightingData; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "useWorldSpace", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((LineRenderer)o).useWorldSpace = (System.Boolean)v, Getter = (o) => ((LineRenderer)o).useWorldSpace, Updater = (object o, ref object v) => { var x = ((LineRenderer)o).useWorldSpace; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "sharedMaterials", PropertyType = typeof(UnityEngine.Material[]), Setter = (o, v) => ((LineRenderer)o).sharedMaterials = (UnityEngine.Material[])v, Getter = (o) => ((LineRenderer)o).sharedMaterials, Updater = (object o, ref object v) => { var x = ((LineRenderer)o).sharedMaterials; if (x.Length != ((UnityEngine.Material[])v).Length) { v = x; return true; } else { v = x; return false; }} }, + new UnityProperty { Name = "shadowCastingMode", PropertyType = typeof(UnityEngine.Rendering.ShadowCastingMode), Setter = (o, v) => ((LineRenderer)o).shadowCastingMode = (UnityEngine.Rendering.ShadowCastingMode)v, Getter = (o) => ((LineRenderer)o).shadowCastingMode, Updater = (object o, ref object v) => { var x = (int)((LineRenderer)o).shadowCastingMode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "receiveShadows", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((LineRenderer)o).receiveShadows = (System.Boolean)v, Getter = (o) => ((LineRenderer)o).receiveShadows, Updater = (object o, ref object v) => { var x = ((LineRenderer)o).receiveShadows; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "lightProbeUsage", PropertyType = typeof(UnityEngine.Rendering.LightProbeUsage), Setter = (o, v) => ((LineRenderer)o).lightProbeUsage = (UnityEngine.Rendering.LightProbeUsage)v, Getter = (o) => ((LineRenderer)o).lightProbeUsage, Updater = (object o, ref object v) => { var x = (int)((LineRenderer)o).lightProbeUsage; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "reflectionProbeUsage", PropertyType = typeof(UnityEngine.Rendering.ReflectionProbeUsage), Setter = (o, v) => ((LineRenderer)o).reflectionProbeUsage = (UnityEngine.Rendering.ReflectionProbeUsage)v, Getter = (o) => ((LineRenderer)o).reflectionProbeUsage, Updater = (object o, ref object v) => { var x = (int)((LineRenderer)o).reflectionProbeUsage; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "motionVectorGenerationMode", PropertyType = typeof(UnityEngine.MotionVectorGenerationMode), Setter = (o, v) => ((LineRenderer)o).motionVectorGenerationMode = (UnityEngine.MotionVectorGenerationMode)v, Getter = (o) => ((LineRenderer)o).motionVectorGenerationMode, Updater = (object o, ref object v) => { var x = (int)((LineRenderer)o).motionVectorGenerationMode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "allowOcclusionWhenDynamic", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((LineRenderer)o).allowOcclusionWhenDynamic = (System.Boolean)v, Getter = (o) => ((LineRenderer)o).allowOcclusionWhenDynamic, Updater = (object o, ref object v) => { var x = ((LineRenderer)o).allowOcclusionWhenDynamic; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "sortingLayerID", PropertyType = typeof(System.Int32), Setter = (o, v) => ((LineRenderer)o).sortingLayerID = (System.Int32)v, Getter = (o) => ((LineRenderer)o).sortingLayerID, Updater = (object o, ref object v) => { var x = ((LineRenderer)o).sortingLayerID; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "sortingOrder", PropertyType = typeof(System.Int32), Setter = (o, v) => ((LineRenderer)o).sortingOrder = (System.Int32)v, Getter = (o) => ((LineRenderer)o).sortingOrder, Updater = (object o, ref object v) => { var x = ((LineRenderer)o).sortingOrder; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((LineRenderer)o).enabled = (System.Boolean)v, Getter = (o) => ((LineRenderer)o).enabled, Updater = (object o, ref object v) => { var x = ((LineRenderer)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + + + #if UNITY_ANIMATION + { "UnityEngine.Animations.LookAtConstraint", new UnityProperty[] { + new UnityProperty { Name = "constraintActive", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.Animations.LookAtConstraint)o).constraintActive = (System.Boolean)v, Getter = (o) => ((UnityEngine.Animations.LookAtConstraint)o).constraintActive, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.LookAtConstraint)o).constraintActive; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "weight", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.Animations.LookAtConstraint)o).weight = (System.Single)v, Getter = (o) => ((UnityEngine.Animations.LookAtConstraint)o).weight, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.LookAtConstraint)o).weight; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "useUpObject", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.Animations.LookAtConstraint)o).useUpObject = (System.Boolean)v, Getter = (o) => ((UnityEngine.Animations.LookAtConstraint)o).useUpObject, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.LookAtConstraint)o).useUpObject; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "roll", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.Animations.LookAtConstraint)o).roll = (System.Single)v, Getter = (o) => ((UnityEngine.Animations.LookAtConstraint)o).roll, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.LookAtConstraint)o).roll; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "worldUpObject", PropertyType = typeof(UnityEngine.Transform), Setter = (o, v) => ((UnityEngine.Animations.LookAtConstraint)o).worldUpObject = (UnityEngine.Transform)v, Getter = (o) => ((UnityEngine.Animations.LookAtConstraint)o).worldUpObject, }, + new UnityProperty { Name = "locked", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.Animations.LookAtConstraint)o).locked = (System.Boolean)v, Getter = (o) => ((UnityEngine.Animations.LookAtConstraint)o).locked, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.LookAtConstraint)o).locked; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "rotationAtRest", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((UnityEngine.Animations.LookAtConstraint)o).rotationAtRest = (UnityEngine.Vector3)v, Getter = (o) => ((UnityEngine.Animations.LookAtConstraint)o).rotationAtRest, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.LookAtConstraint)o).rotationAtRest; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "rotationOffset", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((UnityEngine.Animations.LookAtConstraint)o).rotationOffset = (UnityEngine.Vector3)v, Getter = (o) => ((UnityEngine.Animations.LookAtConstraint)o).rotationOffset, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.LookAtConstraint)o).rotationOffset; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.Animations.LookAtConstraint)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.Animations.LookAtConstraint)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.LookAtConstraint)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_GUI + { "UnityEngine.UI.Mask", new UnityProperty[] { + new UnityProperty { Name = "showMaskGraphic", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.Mask)o).showMaskGraphic = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.Mask)o).showMaskGraphic, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Mask)o).showMaskGraphic; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.Mask)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.Mask)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Mask)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_PHYSICS + { "UnityEngine.MeshCollider", new UnityProperty[] { + new UnityProperty { Name = "convex", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((MeshCollider)o).convex = (System.Boolean)v, Getter = (o) => ((MeshCollider)o).convex, Updater = (object o, ref object v) => { var x = ((MeshCollider)o).convex; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "isTrigger", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((MeshCollider)o).isTrigger = (System.Boolean)v, Getter = (o) => ((MeshCollider)o).isTrigger, Updater = (object o, ref object v) => { var x = ((MeshCollider)o).isTrigger; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "cookingOptions", PropertyType = typeof(UnityEngine.MeshColliderCookingOptions), Setter = (o, v) => ((MeshCollider)o).cookingOptions = (UnityEngine.MeshColliderCookingOptions)v, Getter = (o) => ((MeshCollider)o).cookingOptions, Updater = (object o, ref object v) => { var x = (int)((MeshCollider)o).cookingOptions; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "sharedMaterial", PropertyType = typeof(UnityEngine.PhysicMaterial), Setter = (o, v) => ((MeshCollider)o).sharedMaterial = (UnityEngine.PhysicMaterial)v, Getter = (o) => ((MeshCollider)o).sharedMaterial, }, + new UnityProperty { Name = "sharedMesh", PropertyType = typeof(UnityEngine.Mesh), Setter = (o, v) => ((MeshCollider)o).sharedMesh = (UnityEngine.Mesh)v, Getter = (o) => ((MeshCollider)o).sharedMesh, }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((MeshCollider)o).enabled = (System.Boolean)v, Getter = (o) => ((MeshCollider)o).enabled, Updater = (object o, ref object v) => { var x = ((MeshCollider)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + { "UnityEngine.MeshFilter", new UnityProperty[] { + new UnityProperty { Name = "sharedMesh", PropertyType = typeof(UnityEngine.Mesh), Setter = (o, v) => ((MeshFilter)o).sharedMesh = (UnityEngine.Mesh)v, Getter = (o) => ((MeshFilter)o).sharedMesh, }, + }}, + + + { "UnityEngine.MeshRenderer", new UnityProperty[] { + new UnityProperty { Name = "sharedMaterials", PropertyType = typeof(UnityEngine.Material[]), Setter = (o, v) => ((MeshRenderer)o).sharedMaterials = (UnityEngine.Material[])v, Getter = (o) => ((MeshRenderer)o).sharedMaterials, Updater = (object o, ref object v) => { var x = ((MeshRenderer)o).sharedMaterials; if (x.Length != ((UnityEngine.Material[])v).Length) { v = x; return true; } else { v = x; return false; }} }, + new UnityProperty { Name = "shadowCastingMode", PropertyType = typeof(UnityEngine.Rendering.ShadowCastingMode), Setter = (o, v) => ((MeshRenderer)o).shadowCastingMode = (UnityEngine.Rendering.ShadowCastingMode)v, Getter = (o) => ((MeshRenderer)o).shadowCastingMode, Updater = (object o, ref object v) => { var x = (int)((MeshRenderer)o).shadowCastingMode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "receiveShadows", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((MeshRenderer)o).receiveShadows = (System.Boolean)v, Getter = (o) => ((MeshRenderer)o).receiveShadows, Updater = (object o, ref object v) => { var x = ((MeshRenderer)o).receiveShadows; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "lightProbeUsage", PropertyType = typeof(UnityEngine.Rendering.LightProbeUsage), Setter = (o, v) => ((MeshRenderer)o).lightProbeUsage = (UnityEngine.Rendering.LightProbeUsage)v, Getter = (o) => ((MeshRenderer)o).lightProbeUsage, Updater = (object o, ref object v) => { var x = (int)((MeshRenderer)o).lightProbeUsage; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "reflectionProbeUsage", PropertyType = typeof(UnityEngine.Rendering.ReflectionProbeUsage), Setter = (o, v) => ((MeshRenderer)o).reflectionProbeUsage = (UnityEngine.Rendering.ReflectionProbeUsage)v, Getter = (o) => ((MeshRenderer)o).reflectionProbeUsage, Updater = (object o, ref object v) => { var x = (int)((MeshRenderer)o).reflectionProbeUsage; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "probeAnchor", PropertyType = typeof(UnityEngine.Transform), Setter = (o, v) => ((MeshRenderer)o).probeAnchor = (UnityEngine.Transform)v, Getter = (o) => ((MeshRenderer)o).probeAnchor, }, + new UnityProperty { Name = "motionVectorGenerationMode", PropertyType = typeof(UnityEngine.MotionVectorGenerationMode), Setter = (o, v) => ((MeshRenderer)o).motionVectorGenerationMode = (UnityEngine.MotionVectorGenerationMode)v, Getter = (o) => ((MeshRenderer)o).motionVectorGenerationMode, Updater = (object o, ref object v) => { var x = (int)((MeshRenderer)o).motionVectorGenerationMode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "allowOcclusionWhenDynamic", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((MeshRenderer)o).allowOcclusionWhenDynamic = (System.Boolean)v, Getter = (o) => ((MeshRenderer)o).allowOcclusionWhenDynamic, Updater = (object o, ref object v) => { var x = ((MeshRenderer)o).allowOcclusionWhenDynamic; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((MeshRenderer)o).enabled = (System.Boolean)v, Getter = (o) => ((MeshRenderer)o).enabled, Updater = (object o, ref object v) => { var x = ((MeshRenderer)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + + + #if UNITY_AI + { "UnityEngine.AI.NavMeshAgent", new UnityProperty[] { + new UnityProperty { Name = "agentTypeID", PropertyType = typeof(System.Int32), Setter = (o, v) => ((UnityEngine.AI.NavMeshAgent)o).agentTypeID = (System.Int32)v, Getter = (o) => ((UnityEngine.AI.NavMeshAgent)o).agentTypeID, Updater = (object o, ref object v) => { var x = ((UnityEngine.AI.NavMeshAgent)o).agentTypeID; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "baseOffset", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.AI.NavMeshAgent)o).baseOffset = (System.Single)v, Getter = (o) => ((UnityEngine.AI.NavMeshAgent)o).baseOffset, Updater = (object o, ref object v) => { var x = ((UnityEngine.AI.NavMeshAgent)o).baseOffset; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "speed", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.AI.NavMeshAgent)o).speed = (System.Single)v, Getter = (o) => ((UnityEngine.AI.NavMeshAgent)o).speed, Updater = (object o, ref object v) => { var x = ((UnityEngine.AI.NavMeshAgent)o).speed; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "angularSpeed", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.AI.NavMeshAgent)o).angularSpeed = (System.Single)v, Getter = (o) => ((UnityEngine.AI.NavMeshAgent)o).angularSpeed, Updater = (object o, ref object v) => { var x = ((UnityEngine.AI.NavMeshAgent)o).angularSpeed; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "acceleration", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.AI.NavMeshAgent)o).acceleration = (System.Single)v, Getter = (o) => ((UnityEngine.AI.NavMeshAgent)o).acceleration, Updater = (object o, ref object v) => { var x = ((UnityEngine.AI.NavMeshAgent)o).acceleration; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "stoppingDistance", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.AI.NavMeshAgent)o).stoppingDistance = (System.Single)v, Getter = (o) => ((UnityEngine.AI.NavMeshAgent)o).stoppingDistance, Updater = (object o, ref object v) => { var x = ((UnityEngine.AI.NavMeshAgent)o).stoppingDistance; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "autoBraking", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.AI.NavMeshAgent)o).autoBraking = (System.Boolean)v, Getter = (o) => ((UnityEngine.AI.NavMeshAgent)o).autoBraking, Updater = (object o, ref object v) => { var x = ((UnityEngine.AI.NavMeshAgent)o).autoBraking; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "radius", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.AI.NavMeshAgent)o).radius = (System.Single)v, Getter = (o) => ((UnityEngine.AI.NavMeshAgent)o).radius, Updater = (object o, ref object v) => { var x = ((UnityEngine.AI.NavMeshAgent)o).radius; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "height", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.AI.NavMeshAgent)o).height = (System.Single)v, Getter = (o) => ((UnityEngine.AI.NavMeshAgent)o).height, Updater = (object o, ref object v) => { var x = ((UnityEngine.AI.NavMeshAgent)o).height; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "obstacleAvoidanceType", PropertyType = typeof(UnityEngine.AI.ObstacleAvoidanceType), Setter = (o, v) => ((UnityEngine.AI.NavMeshAgent)o).obstacleAvoidanceType = (UnityEngine.AI.ObstacleAvoidanceType)v, Getter = (o) => ((UnityEngine.AI.NavMeshAgent)o).obstacleAvoidanceType, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.AI.NavMeshAgent)o).obstacleAvoidanceType; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "avoidancePriority", PropertyType = typeof(System.Int32), Setter = (o, v) => ((UnityEngine.AI.NavMeshAgent)o).avoidancePriority = (System.Int32)v, Getter = (o) => ((UnityEngine.AI.NavMeshAgent)o).avoidancePriority, Updater = (object o, ref object v) => { var x = ((UnityEngine.AI.NavMeshAgent)o).avoidancePriority; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "autoTraverseOffMeshLink", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.AI.NavMeshAgent)o).autoTraverseOffMeshLink = (System.Boolean)v, Getter = (o) => ((UnityEngine.AI.NavMeshAgent)o).autoTraverseOffMeshLink, Updater = (object o, ref object v) => { var x = ((UnityEngine.AI.NavMeshAgent)o).autoTraverseOffMeshLink; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "autoRepath", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.AI.NavMeshAgent)o).autoRepath = (System.Boolean)v, Getter = (o) => ((UnityEngine.AI.NavMeshAgent)o).autoRepath, Updater = (object o, ref object v) => { var x = ((UnityEngine.AI.NavMeshAgent)o).autoRepath; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "areaMask", PropertyType = typeof(System.Int32), Setter = (o, v) => ((UnityEngine.AI.NavMeshAgent)o).areaMask = (System.Int32)v, Getter = (o) => ((UnityEngine.AI.NavMeshAgent)o).areaMask, Updater = (object o, ref object v) => { var x = ((UnityEngine.AI.NavMeshAgent)o).areaMask; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.AI.NavMeshAgent)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.AI.NavMeshAgent)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.AI.NavMeshAgent)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_AI + { "UnityEngine.AI.NavMeshObstacle", new UnityProperty[] { + new UnityProperty { Name = "shape", PropertyType = typeof(UnityEngine.AI.NavMeshObstacleShape), Setter = (o, v) => ((UnityEngine.AI.NavMeshObstacle)o).shape = (UnityEngine.AI.NavMeshObstacleShape)v, Getter = (o) => ((UnityEngine.AI.NavMeshObstacle)o).shape, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.AI.NavMeshObstacle)o).shape; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "center", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((UnityEngine.AI.NavMeshObstacle)o).center = (UnityEngine.Vector3)v, Getter = (o) => ((UnityEngine.AI.NavMeshObstacle)o).center, Updater = (object o, ref object v) => { var x = ((UnityEngine.AI.NavMeshObstacle)o).center; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "size", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((UnityEngine.AI.NavMeshObstacle)o).size = (UnityEngine.Vector3)v, Getter = (o) => ((UnityEngine.AI.NavMeshObstacle)o).size, Updater = (object o, ref object v) => { var x = ((UnityEngine.AI.NavMeshObstacle)o).size; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "carving", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.AI.NavMeshObstacle)o).carving = (System.Boolean)v, Getter = (o) => ((UnityEngine.AI.NavMeshObstacle)o).carving, Updater = (object o, ref object v) => { var x = ((UnityEngine.AI.NavMeshObstacle)o).carving; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.AI.NavMeshObstacle)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.AI.NavMeshObstacle)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.AI.NavMeshObstacle)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + { "UnityEngine.OcclusionArea", new UnityProperty[] { + new UnityProperty { Name = "size", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((OcclusionArea)o).size = (UnityEngine.Vector3)v, Getter = (o) => ((OcclusionArea)o).size, Updater = (object o, ref object v) => { var x = ((OcclusionArea)o).size; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "center", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((OcclusionArea)o).center = (UnityEngine.Vector3)v, Getter = (o) => ((OcclusionArea)o).center, Updater = (object o, ref object v) => { var x = ((OcclusionArea)o).center; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + }}, + + + { "UnityEngine.OcclusionPortal", new UnityProperty[] { + new UnityProperty { Name = "open", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((OcclusionPortal)o).open = (System.Boolean)v, Getter = (o) => ((OcclusionPortal)o).open, Updater = (object o, ref object v) => { var x = ((OcclusionPortal)o).open; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + + + #if UNITY_AI && !UNITY_2023_2_OR_NEWER + { "UnityEngine.AI.OffMeshLink", new UnityProperty[] { + new UnityProperty { Name = "startTransform", PropertyType = typeof(UnityEngine.Transform), Setter = (o, v) => ((UnityEngine.AI.OffMeshLink)o).startTransform = (UnityEngine.Transform)v, Getter = (o) => ((UnityEngine.AI.OffMeshLink)o).startTransform, }, + new UnityProperty { Name = "endTransform", PropertyType = typeof(UnityEngine.Transform), Setter = (o, v) => ((UnityEngine.AI.OffMeshLink)o).endTransform = (UnityEngine.Transform)v, Getter = (o) => ((UnityEngine.AI.OffMeshLink)o).endTransform, }, + new UnityProperty { Name = "costOverride", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.AI.OffMeshLink)o).costOverride = (System.Single)v, Getter = (o) => ((UnityEngine.AI.OffMeshLink)o).costOverride, Updater = (object o, ref object v) => { var x = ((UnityEngine.AI.OffMeshLink)o).costOverride; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "biDirectional", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.AI.OffMeshLink)o).biDirectional = (System.Boolean)v, Getter = (o) => ((UnityEngine.AI.OffMeshLink)o).biDirectional, Updater = (object o, ref object v) => { var x = ((UnityEngine.AI.OffMeshLink)o).biDirectional; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "activated", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.AI.OffMeshLink)o).activated = (System.Boolean)v, Getter = (o) => ((UnityEngine.AI.OffMeshLink)o).activated, Updater = (object o, ref object v) => { var x = ((UnityEngine.AI.OffMeshLink)o).activated; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "autoUpdatePositions", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.AI.OffMeshLink)o).autoUpdatePositions = (System.Boolean)v, Getter = (o) => ((UnityEngine.AI.OffMeshLink)o).autoUpdatePositions, Updater = (object o, ref object v) => { var x = ((UnityEngine.AI.OffMeshLink)o).autoUpdatePositions; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "area", PropertyType = typeof(System.Int32), Setter = (o, v) => ((UnityEngine.AI.OffMeshLink)o).area = (System.Int32)v, Getter = (o) => ((UnityEngine.AI.OffMeshLink)o).area, Updater = (object o, ref object v) => { var x = ((UnityEngine.AI.OffMeshLink)o).area; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.AI.OffMeshLink)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.AI.OffMeshLink)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.AI.OffMeshLink)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_GUI + { "UnityEngine.UI.Outline", new UnityProperty[] { + new UnityProperty { Name = "effectColor", PropertyType = typeof(UnityEngine.Color), Setter = (o, v) => ((UnityEngine.UI.Outline)o).effectColor = (UnityEngine.Color)v, Getter = (o) => ((UnityEngine.UI.Outline)o).effectColor, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Outline)o).effectColor; if (!x.Equals((UnityEngine.Color)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "effectDistance", PropertyType = typeof(UnityEngine.Vector2), Setter = (o, v) => ((UnityEngine.UI.Outline)o).effectDistance = (UnityEngine.Vector2)v, Getter = (o) => ((UnityEngine.UI.Outline)o).effectDistance, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Outline)o).effectDistance; if (!x.Equals((UnityEngine.Vector2)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "useGraphicAlpha", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.Outline)o).useGraphicAlpha = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.Outline)o).useGraphicAlpha, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Outline)o).useGraphicAlpha; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.Outline)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.Outline)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Outline)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_ANIMATION + { "UnityEngine.Animations.ParentConstraint", new UnityProperty[] { + new UnityProperty { Name = "constraintActive", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.Animations.ParentConstraint)o).constraintActive = (System.Boolean)v, Getter = (o) => ((UnityEngine.Animations.ParentConstraint)o).constraintActive, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.ParentConstraint)o).constraintActive; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "weight", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.Animations.ParentConstraint)o).weight = (System.Single)v, Getter = (o) => ((UnityEngine.Animations.ParentConstraint)o).weight, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.ParentConstraint)o).weight; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "locked", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.Animations.ParentConstraint)o).locked = (System.Boolean)v, Getter = (o) => ((UnityEngine.Animations.ParentConstraint)o).locked, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.ParentConstraint)o).locked; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "translationAtRest", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((UnityEngine.Animations.ParentConstraint)o).translationAtRest = (UnityEngine.Vector3)v, Getter = (o) => ((UnityEngine.Animations.ParentConstraint)o).translationAtRest, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.ParentConstraint)o).translationAtRest; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "rotationAtRest", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((UnityEngine.Animations.ParentConstraint)o).rotationAtRest = (UnityEngine.Vector3)v, Getter = (o) => ((UnityEngine.Animations.ParentConstraint)o).rotationAtRest, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.ParentConstraint)o).rotationAtRest; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "translationOffsets", PropertyType = typeof(UnityEngine.Vector3[]), Setter = (o, v) => ((UnityEngine.Animations.ParentConstraint)o).translationOffsets = (UnityEngine.Vector3[])v, Getter = (o) => ((UnityEngine.Animations.ParentConstraint)o).translationOffsets, }, + new UnityProperty { Name = "rotationOffsets", PropertyType = typeof(UnityEngine.Vector3[]), Setter = (o, v) => ((UnityEngine.Animations.ParentConstraint)o).rotationOffsets = (UnityEngine.Vector3[])v, Getter = (o) => ((UnityEngine.Animations.ParentConstraint)o).rotationOffsets, }, + new UnityProperty { Name = "translationAxis", PropertyType = typeof(UnityEngine.Animations.Axis), Setter = (o, v) => ((UnityEngine.Animations.ParentConstraint)o).translationAxis = (UnityEngine.Animations.Axis)v, Getter = (o) => ((UnityEngine.Animations.ParentConstraint)o).translationAxis, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.Animations.ParentConstraint)o).translationAxis; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "rotationAxis", PropertyType = typeof(UnityEngine.Animations.Axis), Setter = (o, v) => ((UnityEngine.Animations.ParentConstraint)o).rotationAxis = (UnityEngine.Animations.Axis)v, Getter = (o) => ((UnityEngine.Animations.ParentConstraint)o).rotationAxis, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.Animations.ParentConstraint)o).rotationAxis; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.Animations.ParentConstraint)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.Animations.ParentConstraint)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.ParentConstraint)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_PARTICLE_SYSTEM + { "UnityEngine.ParticleSystemForceField", new UnityProperty[] { + new UnityProperty { Name = "shape", PropertyType = typeof(UnityEngine.ParticleSystemForceFieldShape), Setter = (o, v) => ((ParticleSystemForceField)o).shape = (UnityEngine.ParticleSystemForceFieldShape)v, Getter = (o) => ((ParticleSystemForceField)o).shape, Updater = (object o, ref object v) => { var x = (int)((ParticleSystemForceField)o).shape; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "startRange", PropertyType = typeof(System.Single), Setter = (o, v) => ((ParticleSystemForceField)o).startRange = (System.Single)v, Getter = (o) => ((ParticleSystemForceField)o).startRange, Updater = (object o, ref object v) => { var x = ((ParticleSystemForceField)o).startRange; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "endRange", PropertyType = typeof(System.Single), Setter = (o, v) => ((ParticleSystemForceField)o).endRange = (System.Single)v, Getter = (o) => ((ParticleSystemForceField)o).endRange, Updater = (object o, ref object v) => { var x = ((ParticleSystemForceField)o).endRange; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "directionX", PropertyType = typeof(UnityEngine.ParticleSystem.MinMaxCurve), Setter = (o, v) => ((ParticleSystemForceField)o).directionX = (UnityEngine.ParticleSystem.MinMaxCurve)v, Getter = (o) => ((ParticleSystemForceField)o).directionX, Updater = (object o, ref object v) => { var x = ((ParticleSystemForceField)o).directionX; if (!x.Equals((UnityEngine.ParticleSystem.MinMaxCurve)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "directionY", PropertyType = typeof(UnityEngine.ParticleSystem.MinMaxCurve), Setter = (o, v) => ((ParticleSystemForceField)o).directionY = (UnityEngine.ParticleSystem.MinMaxCurve)v, Getter = (o) => ((ParticleSystemForceField)o).directionY, Updater = (object o, ref object v) => { var x = ((ParticleSystemForceField)o).directionY; if (!x.Equals((UnityEngine.ParticleSystem.MinMaxCurve)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "directionZ", PropertyType = typeof(UnityEngine.ParticleSystem.MinMaxCurve), Setter = (o, v) => ((ParticleSystemForceField)o).directionZ = (UnityEngine.ParticleSystem.MinMaxCurve)v, Getter = (o) => ((ParticleSystemForceField)o).directionZ, Updater = (object o, ref object v) => { var x = ((ParticleSystemForceField)o).directionZ; if (!x.Equals((UnityEngine.ParticleSystem.MinMaxCurve)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "gravity", PropertyType = typeof(UnityEngine.ParticleSystem.MinMaxCurve), Setter = (o, v) => ((ParticleSystemForceField)o).gravity = (UnityEngine.ParticleSystem.MinMaxCurve)v, Getter = (o) => ((ParticleSystemForceField)o).gravity, Updater = (object o, ref object v) => { var x = ((ParticleSystemForceField)o).gravity; if (!x.Equals((UnityEngine.ParticleSystem.MinMaxCurve)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "gravityFocus", PropertyType = typeof(System.Single), Setter = (o, v) => ((ParticleSystemForceField)o).gravityFocus = (System.Single)v, Getter = (o) => ((ParticleSystemForceField)o).gravityFocus, Updater = (object o, ref object v) => { var x = ((ParticleSystemForceField)o).gravityFocus; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "rotationSpeed", PropertyType = typeof(UnityEngine.ParticleSystem.MinMaxCurve), Setter = (o, v) => ((ParticleSystemForceField)o).rotationSpeed = (UnityEngine.ParticleSystem.MinMaxCurve)v, Getter = (o) => ((ParticleSystemForceField)o).rotationSpeed, Updater = (object o, ref object v) => { var x = ((ParticleSystemForceField)o).rotationSpeed; if (!x.Equals((UnityEngine.ParticleSystem.MinMaxCurve)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "rotationAttraction", PropertyType = typeof(UnityEngine.ParticleSystem.MinMaxCurve), Setter = (o, v) => ((ParticleSystemForceField)o).rotationAttraction = (UnityEngine.ParticleSystem.MinMaxCurve)v, Getter = (o) => ((ParticleSystemForceField)o).rotationAttraction, Updater = (object o, ref object v) => { var x = ((ParticleSystemForceField)o).rotationAttraction; if (!x.Equals((UnityEngine.ParticleSystem.MinMaxCurve)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "rotationRandomness", PropertyType = typeof(UnityEngine.Vector2), Setter = (o, v) => ((ParticleSystemForceField)o).rotationRandomness = (UnityEngine.Vector2)v, Getter = (o) => ((ParticleSystemForceField)o).rotationRandomness, Updater = (object o, ref object v) => { var x = ((ParticleSystemForceField)o).rotationRandomness; if (!x.Equals((UnityEngine.Vector2)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "drag", PropertyType = typeof(UnityEngine.ParticleSystem.MinMaxCurve), Setter = (o, v) => ((ParticleSystemForceField)o).drag = (UnityEngine.ParticleSystem.MinMaxCurve)v, Getter = (o) => ((ParticleSystemForceField)o).drag, Updater = (object o, ref object v) => { var x = ((ParticleSystemForceField)o).drag; if (!x.Equals((UnityEngine.ParticleSystem.MinMaxCurve)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "multiplyDragByParticleSize", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((ParticleSystemForceField)o).multiplyDragByParticleSize = (System.Boolean)v, Getter = (o) => ((ParticleSystemForceField)o).multiplyDragByParticleSize, Updater = (object o, ref object v) => { var x = ((ParticleSystemForceField)o).multiplyDragByParticleSize; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "multiplyDragByParticleVelocity", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((ParticleSystemForceField)o).multiplyDragByParticleVelocity = (System.Boolean)v, Getter = (o) => ((ParticleSystemForceField)o).multiplyDragByParticleVelocity, Updater = (object o, ref object v) => { var x = ((ParticleSystemForceField)o).multiplyDragByParticleVelocity; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "vectorField", PropertyType = typeof(UnityEngine.Texture3D), Setter = (o, v) => ((ParticleSystemForceField)o).vectorField = (UnityEngine.Texture3D)v, Getter = (o) => ((ParticleSystemForceField)o).vectorField, }, + new UnityProperty { Name = "vectorFieldSpeed", PropertyType = typeof(UnityEngine.ParticleSystem.MinMaxCurve), Setter = (o, v) => ((ParticleSystemForceField)o).vectorFieldSpeed = (UnityEngine.ParticleSystem.MinMaxCurve)v, Getter = (o) => ((ParticleSystemForceField)o).vectorFieldSpeed, Updater = (object o, ref object v) => { var x = ((ParticleSystemForceField)o).vectorFieldSpeed; if (!x.Equals((UnityEngine.ParticleSystem.MinMaxCurve)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "vectorFieldAttraction", PropertyType = typeof(UnityEngine.ParticleSystem.MinMaxCurve), Setter = (o, v) => ((ParticleSystemForceField)o).vectorFieldAttraction = (UnityEngine.ParticleSystem.MinMaxCurve)v, Getter = (o) => ((ParticleSystemForceField)o).vectorFieldAttraction, Updater = (object o, ref object v) => { var x = ((ParticleSystemForceField)o).vectorFieldAttraction; if (!x.Equals((UnityEngine.ParticleSystem.MinMaxCurve)v)) { v = x; return true; } return false; } }, + #if UNITY_2021_3_OR_NEWER + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((ParticleSystemForceField)o).enabled = (System.Boolean)v, Getter = (o) => ((ParticleSystemForceField)o).enabled, Updater = (object o, ref object v) => { var x = ((ParticleSystemForceField)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + #endif + }}, + #endif + + + #if UNITY_GUI + { "UnityEngine.EventSystems.Physics2DRaycaster", new UnityProperty[] { + new UnityProperty { Name = "eventMask", PropertyType = typeof(UnityEngine.LayerMask), Setter = (o, v) => ((UnityEngine.EventSystems.Physics2DRaycaster)o).eventMask = (UnityEngine.LayerMask)v, Getter = (o) => ((UnityEngine.EventSystems.Physics2DRaycaster)o).eventMask, Updater = (object o, ref object v) => { var x = ((UnityEngine.EventSystems.Physics2DRaycaster)o).eventMask; if (!x.Equals((UnityEngine.LayerMask)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "maxRayIntersections", PropertyType = typeof(System.Int32), Setter = (o, v) => ((UnityEngine.EventSystems.Physics2DRaycaster)o).maxRayIntersections = (System.Int32)v, Getter = (o) => ((UnityEngine.EventSystems.Physics2DRaycaster)o).maxRayIntersections, Updater = (object o, ref object v) => { var x = ((UnityEngine.EventSystems.Physics2DRaycaster)o).maxRayIntersections; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.EventSystems.Physics2DRaycaster)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.EventSystems.Physics2DRaycaster)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.EventSystems.Physics2DRaycaster)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_GUI + { "UnityEngine.EventSystems.PhysicsRaycaster", new UnityProperty[] { + new UnityProperty { Name = "eventMask", PropertyType = typeof(UnityEngine.LayerMask), Setter = (o, v) => ((UnityEngine.EventSystems.PhysicsRaycaster)o).eventMask = (UnityEngine.LayerMask)v, Getter = (o) => ((UnityEngine.EventSystems.PhysicsRaycaster)o).eventMask, Updater = (object o, ref object v) => { var x = ((UnityEngine.EventSystems.PhysicsRaycaster)o).eventMask; if (!x.Equals((UnityEngine.LayerMask)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "maxRayIntersections", PropertyType = typeof(System.Int32), Setter = (o, v) => ((UnityEngine.EventSystems.PhysicsRaycaster)o).maxRayIntersections = (System.Int32)v, Getter = (o) => ((UnityEngine.EventSystems.PhysicsRaycaster)o).maxRayIntersections, Updater = (object o, ref object v) => { var x = ((UnityEngine.EventSystems.PhysicsRaycaster)o).maxRayIntersections; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.EventSystems.PhysicsRaycaster)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.EventSystems.PhysicsRaycaster)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.EventSystems.PhysicsRaycaster)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_PHYSICS_2D + { "UnityEngine.PlatformEffector2D", new UnityProperty[] { + new UnityProperty { Name = "useColliderMask", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((PlatformEffector2D)o).useColliderMask = (System.Boolean)v, Getter = (o) => ((PlatformEffector2D)o).useColliderMask, Updater = (object o, ref object v) => { var x = ((PlatformEffector2D)o).useColliderMask; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "colliderMask", PropertyType = typeof(System.Int32), Setter = (o, v) => ((PlatformEffector2D)o).colliderMask = (System.Int32)v, Getter = (o) => ((PlatformEffector2D)o).colliderMask, Updater = (object o, ref object v) => { var x = ((PlatformEffector2D)o).colliderMask; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "rotationalOffset", PropertyType = typeof(System.Single), Setter = (o, v) => ((PlatformEffector2D)o).rotationalOffset = (System.Single)v, Getter = (o) => ((PlatformEffector2D)o).rotationalOffset, Updater = (object o, ref object v) => { var x = ((PlatformEffector2D)o).rotationalOffset; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "useOneWay", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((PlatformEffector2D)o).useOneWay = (System.Boolean)v, Getter = (o) => ((PlatformEffector2D)o).useOneWay, Updater = (object o, ref object v) => { var x = ((PlatformEffector2D)o).useOneWay; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "useOneWayGrouping", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((PlatformEffector2D)o).useOneWayGrouping = (System.Boolean)v, Getter = (o) => ((PlatformEffector2D)o).useOneWayGrouping, Updater = (object o, ref object v) => { var x = ((PlatformEffector2D)o).useOneWayGrouping; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "surfaceArc", PropertyType = typeof(System.Single), Setter = (o, v) => ((PlatformEffector2D)o).surfaceArc = (System.Single)v, Getter = (o) => ((PlatformEffector2D)o).surfaceArc, Updater = (object o, ref object v) => { var x = ((PlatformEffector2D)o).surfaceArc; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "useSideFriction", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((PlatformEffector2D)o).useSideFriction = (System.Boolean)v, Getter = (o) => ((PlatformEffector2D)o).useSideFriction, Updater = (object o, ref object v) => { var x = ((PlatformEffector2D)o).useSideFriction; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "useSideBounce", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((PlatformEffector2D)o).useSideBounce = (System.Boolean)v, Getter = (o) => ((PlatformEffector2D)o).useSideBounce, Updater = (object o, ref object v) => { var x = ((PlatformEffector2D)o).useSideBounce; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "sideArc", PropertyType = typeof(System.Single), Setter = (o, v) => ((PlatformEffector2D)o).sideArc = (System.Single)v, Getter = (o) => ((PlatformEffector2D)o).sideArc, Updater = (object o, ref object v) => { var x = ((PlatformEffector2D)o).sideArc; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((PlatformEffector2D)o).enabled = (System.Boolean)v, Getter = (o) => ((PlatformEffector2D)o).enabled, Updater = (object o, ref object v) => { var x = ((PlatformEffector2D)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_DIRECTOR + { "UnityEngine.Playables.PlayableDirector", new UnityProperty[] { + new UnityProperty { Name = "playableAsset", PropertyType = typeof(UnityEngine.Playables.PlayableAsset), Setter = (o, v) => ((UnityEngine.Playables.PlayableDirector)o).playableAsset = (UnityEngine.Playables.PlayableAsset)v, Getter = (o) => ((UnityEngine.Playables.PlayableDirector)o).playableAsset, }, + new UnityProperty { Name = "timeUpdateMode", PropertyType = typeof(UnityEngine.Playables.DirectorUpdateMode), Setter = (o, v) => ((UnityEngine.Playables.PlayableDirector)o).timeUpdateMode = (UnityEngine.Playables.DirectorUpdateMode)v, Getter = (o) => ((UnityEngine.Playables.PlayableDirector)o).timeUpdateMode, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.Playables.PlayableDirector)o).timeUpdateMode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "playOnAwake", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.Playables.PlayableDirector)o).playOnAwake = (System.Boolean)v, Getter = (o) => ((UnityEngine.Playables.PlayableDirector)o).playOnAwake, Updater = (object o, ref object v) => { var x = ((UnityEngine.Playables.PlayableDirector)o).playOnAwake; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "extrapolationMode", PropertyType = typeof(UnityEngine.Playables.DirectorWrapMode), Setter = (o, v) => ((UnityEngine.Playables.PlayableDirector)o).extrapolationMode = (UnityEngine.Playables.DirectorWrapMode)v, Getter = (o) => ((UnityEngine.Playables.PlayableDirector)o).extrapolationMode, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.Playables.PlayableDirector)o).extrapolationMode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "initialTime", PropertyType = typeof(System.Double), Setter = (o, v) => ((UnityEngine.Playables.PlayableDirector)o).initialTime = (System.Double)v, Getter = (o) => ((UnityEngine.Playables.PlayableDirector)o).initialTime, Updater = (object o, ref object v) => { var x = ((UnityEngine.Playables.PlayableDirector)o).initialTime; if (!x.Equals((System.Double)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "time", PropertyType = typeof(System.Double), Setter = (o, v) => ((UnityEngine.Playables.PlayableDirector)o).time = (System.Double)v, Getter = (o) => ((UnityEngine.Playables.PlayableDirector)o).time, Updater = (object o, ref object v) => { var x = ((UnityEngine.Playables.PlayableDirector)o).time; if (!x.Equals((System.Double)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.Playables.PlayableDirector)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.Playables.PlayableDirector)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.Playables.PlayableDirector)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_PHYSICS_2D + { "UnityEngine.PointEffector2D", new UnityProperty[] { + new UnityProperty { Name = "useColliderMask", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((PointEffector2D)o).useColliderMask = (System.Boolean)v, Getter = (o) => ((PointEffector2D)o).useColliderMask, Updater = (object o, ref object v) => { var x = ((PointEffector2D)o).useColliderMask; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "colliderMask", PropertyType = typeof(System.Int32), Setter = (o, v) => ((PointEffector2D)o).colliderMask = (System.Int32)v, Getter = (o) => ((PointEffector2D)o).colliderMask, Updater = (object o, ref object v) => { var x = ((PointEffector2D)o).colliderMask; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "forceMagnitude", PropertyType = typeof(System.Single), Setter = (o, v) => ((PointEffector2D)o).forceMagnitude = (System.Single)v, Getter = (o) => ((PointEffector2D)o).forceMagnitude, Updater = (object o, ref object v) => { var x = ((PointEffector2D)o).forceMagnitude; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "forceVariation", PropertyType = typeof(System.Single), Setter = (o, v) => ((PointEffector2D)o).forceVariation = (System.Single)v, Getter = (o) => ((PointEffector2D)o).forceVariation, Updater = (object o, ref object v) => { var x = ((PointEffector2D)o).forceVariation; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "distanceScale", PropertyType = typeof(System.Single), Setter = (o, v) => ((PointEffector2D)o).distanceScale = (System.Single)v, Getter = (o) => ((PointEffector2D)o).distanceScale, Updater = (object o, ref object v) => { var x = ((PointEffector2D)o).distanceScale; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "forceSource", PropertyType = typeof(UnityEngine.EffectorSelection2D), Setter = (o, v) => ((PointEffector2D)o).forceSource = (UnityEngine.EffectorSelection2D)v, Getter = (o) => ((PointEffector2D)o).forceSource, Updater = (object o, ref object v) => { var x = (int)((PointEffector2D)o).forceSource; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "forceTarget", PropertyType = typeof(UnityEngine.EffectorSelection2D), Setter = (o, v) => ((PointEffector2D)o).forceTarget = (UnityEngine.EffectorSelection2D)v, Getter = (o) => ((PointEffector2D)o).forceTarget, Updater = (object o, ref object v) => { var x = (int)((PointEffector2D)o).forceTarget; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "forceMode", PropertyType = typeof(UnityEngine.EffectorForceMode2D), Setter = (o, v) => ((PointEffector2D)o).forceMode = (UnityEngine.EffectorForceMode2D)v, Getter = (o) => ((PointEffector2D)o).forceMode, Updater = (object o, ref object v) => { var x = (int)((PointEffector2D)o).forceMode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "drag", PropertyType = typeof(System.Single), Setter = (o, v) => ((PointEffector2D)o).drag = (System.Single)v, Getter = (o) => ((PointEffector2D)o).drag, Updater = (object o, ref object v) => { var x = ((PointEffector2D)o).drag; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "angularDrag", PropertyType = typeof(System.Single), Setter = (o, v) => ((PointEffector2D)o).angularDrag = (System.Single)v, Getter = (o) => ((PointEffector2D)o).angularDrag, Updater = (object o, ref object v) => { var x = ((PointEffector2D)o).angularDrag; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((PointEffector2D)o).enabled = (System.Boolean)v, Getter = (o) => ((PointEffector2D)o).enabled, Updater = (object o, ref object v) => { var x = ((PointEffector2D)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_PHYSICS_2D + { "UnityEngine.PolygonCollider2D", new UnityProperty[] { + new UnityProperty { Name = "sharedMaterial", PropertyType = typeof(UnityEngine.PhysicsMaterial2D), Setter = (o, v) => ((PolygonCollider2D)o).sharedMaterial = (UnityEngine.PhysicsMaterial2D)v, Getter = (o) => ((PolygonCollider2D)o).sharedMaterial, }, + new UnityProperty { Name = "isTrigger", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((PolygonCollider2D)o).isTrigger = (System.Boolean)v, Getter = (o) => ((PolygonCollider2D)o).isTrigger, Updater = (object o, ref object v) => { var x = ((PolygonCollider2D)o).isTrigger; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "usedByEffector", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((PolygonCollider2D)o).usedByEffector = (System.Boolean)v, Getter = (o) => ((PolygonCollider2D)o).usedByEffector, Updater = (object o, ref object v) => { var x = ((PolygonCollider2D)o).usedByEffector; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + #if !UNITY_2023_1_OR_NEWER + new UnityProperty { Name = "usedByComposite", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((PolygonCollider2D)o).usedByComposite = (System.Boolean)v, Getter = (o) => ((PolygonCollider2D)o).usedByComposite, Updater = (object o, ref object v) => { var x = ((PolygonCollider2D)o).usedByComposite; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + #endif + #if UNITY_2023_1_OR_NEWER + new UnityProperty { Name = "compositeOperation", PropertyType = typeof(UnityEngine.Collider2D.CompositeOperation), Setter = (o, v) => ((PolygonCollider2D)o).compositeOperation = (UnityEngine.Collider2D.CompositeOperation)v, Getter = (o) => ((PolygonCollider2D)o).compositeOperation, Updater = (object o, ref object v) => { var x = (int)((PolygonCollider2D)o).compositeOperation; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + #endif + new UnityProperty { Name = "autoTiling", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((PolygonCollider2D)o).autoTiling = (System.Boolean)v, Getter = (o) => ((PolygonCollider2D)o).autoTiling, Updater = (object o, ref object v) => { var x = ((PolygonCollider2D)o).autoTiling; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "offset", PropertyType = typeof(UnityEngine.Vector2), Setter = (o, v) => ((PolygonCollider2D)o).offset = (UnityEngine.Vector2)v, Getter = (o) => ((PolygonCollider2D)o).offset, Updater = (object o, ref object v) => { var x = ((PolygonCollider2D)o).offset; if (!x.Equals((UnityEngine.Vector2)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "pathCount", PropertyType = typeof(System.Int32), Setter = (o, v) => ((PolygonCollider2D)o).pathCount = (System.Int32)v, Getter = (o) => ((PolygonCollider2D)o).pathCount, Updater = (object o, ref object v) => { var x = ((PolygonCollider2D)o).pathCount; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "points", PropertyType = typeof(UnityEngine.Vector2[]), Setter = (o, v) => ((PolygonCollider2D)o).points = (UnityEngine.Vector2[])v, Getter = (o) => ((PolygonCollider2D)o).points, }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((PolygonCollider2D)o).enabled = (System.Boolean)v, Getter = (o) => ((PolygonCollider2D)o).enabled, Updater = (object o, ref object v) => { var x = ((PolygonCollider2D)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_ANIMATION + { "UnityEngine.Animations.PositionConstraint", new UnityProperty[] { + new UnityProperty { Name = "constraintActive", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.Animations.PositionConstraint)o).constraintActive = (System.Boolean)v, Getter = (o) => ((UnityEngine.Animations.PositionConstraint)o).constraintActive, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.PositionConstraint)o).constraintActive; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "weight", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.Animations.PositionConstraint)o).weight = (System.Single)v, Getter = (o) => ((UnityEngine.Animations.PositionConstraint)o).weight, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.PositionConstraint)o).weight; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "locked", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.Animations.PositionConstraint)o).locked = (System.Boolean)v, Getter = (o) => ((UnityEngine.Animations.PositionConstraint)o).locked, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.PositionConstraint)o).locked; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "translationAtRest", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((UnityEngine.Animations.PositionConstraint)o).translationAtRest = (UnityEngine.Vector3)v, Getter = (o) => ((UnityEngine.Animations.PositionConstraint)o).translationAtRest, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.PositionConstraint)o).translationAtRest; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "translationOffset", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((UnityEngine.Animations.PositionConstraint)o).translationOffset = (UnityEngine.Vector3)v, Getter = (o) => ((UnityEngine.Animations.PositionConstraint)o).translationOffset, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.PositionConstraint)o).translationOffset; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "translationAxis", PropertyType = typeof(UnityEngine.Animations.Axis), Setter = (o, v) => ((UnityEngine.Animations.PositionConstraint)o).translationAxis = (UnityEngine.Animations.Axis)v, Getter = (o) => ((UnityEngine.Animations.PositionConstraint)o).translationAxis, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.Animations.PositionConstraint)o).translationAxis; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.Animations.PositionConstraint)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.Animations.PositionConstraint)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.PositionConstraint)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + { "UnityEngine.Projector", new UnityProperty[] { + new UnityProperty { Name = "nearClipPlane", PropertyType = typeof(System.Single), Setter = (o, v) => ((Projector)o).nearClipPlane = (System.Single)v, Getter = (o) => ((Projector)o).nearClipPlane, Updater = (object o, ref object v) => { var x = ((Projector)o).nearClipPlane; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "farClipPlane", PropertyType = typeof(System.Single), Setter = (o, v) => ((Projector)o).farClipPlane = (System.Single)v, Getter = (o) => ((Projector)o).farClipPlane, Updater = (object o, ref object v) => { var x = ((Projector)o).farClipPlane; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "fieldOfView", PropertyType = typeof(System.Single), Setter = (o, v) => ((Projector)o).fieldOfView = (System.Single)v, Getter = (o) => ((Projector)o).fieldOfView, Updater = (object o, ref object v) => { var x = ((Projector)o).fieldOfView; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "aspectRatio", PropertyType = typeof(System.Single), Setter = (o, v) => ((Projector)o).aspectRatio = (System.Single)v, Getter = (o) => ((Projector)o).aspectRatio, Updater = (object o, ref object v) => { var x = ((Projector)o).aspectRatio; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "orthographic", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((Projector)o).orthographic = (System.Boolean)v, Getter = (o) => ((Projector)o).orthographic, Updater = (object o, ref object v) => { var x = ((Projector)o).orthographic; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "orthographicSize", PropertyType = typeof(System.Single), Setter = (o, v) => ((Projector)o).orthographicSize = (System.Single)v, Getter = (o) => ((Projector)o).orthographicSize, Updater = (object o, ref object v) => { var x = ((Projector)o).orthographicSize; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "material", PropertyType = typeof(UnityEngine.Material), Setter = (o, v) => ((Projector)o).material = (UnityEngine.Material)v, Getter = (o) => ((Projector)o).material, }, + new UnityProperty { Name = "ignoreLayers", PropertyType = typeof(System.Int32), Setter = (o, v) => ((Projector)o).ignoreLayers = (System.Int32)v, Getter = (o) => ((Projector)o).ignoreLayers, Updater = (object o, ref object v) => { var x = ((Projector)o).ignoreLayers; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((Projector)o).enabled = (System.Boolean)v, Getter = (o) => ((Projector)o).enabled, Updater = (object o, ref object v) => { var x = ((Projector)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + + + #if UNITY_GUI + { "UnityEngine.UI.RawImage", new UnityProperty[] { + new UnityProperty { Name = "texture", PropertyType = typeof(UnityEngine.Texture), Setter = (o, v) => ((UnityEngine.UI.RawImage)o).texture = (UnityEngine.Texture)v, Getter = (o) => ((UnityEngine.UI.RawImage)o).texture, }, + new UnityProperty { Name = "color", PropertyType = typeof(UnityEngine.Color), Setter = (o, v) => ((UnityEngine.UI.RawImage)o).color = (UnityEngine.Color)v, Getter = (o) => ((UnityEngine.UI.RawImage)o).color, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.RawImage)o).color; if (!x.Equals((UnityEngine.Color)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "raycastTarget", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.RawImage)o).raycastTarget = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.RawImage)o).raycastTarget, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.RawImage)o).raycastTarget; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + #if UNITY_2020_1_OR_NEWER + new UnityProperty { Name = "raycastPadding", PropertyType = typeof(UnityEngine.Vector4), Setter = (o, v) => ((UnityEngine.UI.RawImage)o).raycastPadding = (UnityEngine.Vector4)v, Getter = (o) => ((UnityEngine.UI.RawImage)o).raycastPadding, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.RawImage)o).raycastPadding; if (!x.Equals((UnityEngine.Vector4)v)) { v = x; return true; } return false; } }, + #endif + new UnityProperty { Name = "maskable", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.RawImage)o).maskable = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.RawImage)o).maskable, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.RawImage)o).maskable; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "uvRect", PropertyType = typeof(UnityEngine.Rect), Setter = (o, v) => ((UnityEngine.UI.RawImage)o).uvRect = (UnityEngine.Rect)v, Getter = (o) => ((UnityEngine.UI.RawImage)o).uvRect, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.RawImage)o).uvRect; if (!x.Equals((UnityEngine.Rect)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.RawImage)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.RawImage)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.RawImage)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_GUI + { "UnityEngine.UI.RectMask2D", new UnityProperty[] { + new UnityProperty { Name = "padding", PropertyType = typeof(UnityEngine.Vector4), Setter = (o, v) => ((UnityEngine.UI.RectMask2D)o).padding = (UnityEngine.Vector4)v, Getter = (o) => ((UnityEngine.UI.RectMask2D)o).padding, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.RectMask2D)o).padding; if (!x.Equals((UnityEngine.Vector4)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "softness", PropertyType = typeof(UnityEngine.Vector2Int), Setter = (o, v) => ((UnityEngine.UI.RectMask2D)o).softness = (UnityEngine.Vector2Int)v, Getter = (o) => ((UnityEngine.UI.RectMask2D)o).softness, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.RectMask2D)o).softness; if (!x.Equals((UnityEngine.Vector2Int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.RectMask2D)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.RectMask2D)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.RectMask2D)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + { "UnityEngine.RectTransform", new UnityProperty[] { + new UnityProperty { Name = "localPosition", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((RectTransform)o).localPosition = (UnityEngine.Vector3)v, Getter = (o) => ((RectTransform)o).localPosition, Updater = (object o, ref object v) => { var x = ((RectTransform)o).localPosition; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "sizeDelta", PropertyType = typeof(UnityEngine.Vector2), Setter = (o, v) => ((RectTransform)o).sizeDelta = (UnityEngine.Vector2)v, Getter = (o) => ((RectTransform)o).sizeDelta, Updater = (object o, ref object v) => { var x = ((RectTransform)o).sizeDelta; if (!x.Equals((UnityEngine.Vector2)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "anchorMin", PropertyType = typeof(UnityEngine.Vector2), Setter = (o, v) => ((RectTransform)o).anchorMin = (UnityEngine.Vector2)v, Getter = (o) => ((RectTransform)o).anchorMin, Updater = (object o, ref object v) => { var x = ((RectTransform)o).anchorMin; if (!x.Equals((UnityEngine.Vector2)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "anchorMax", PropertyType = typeof(UnityEngine.Vector2), Setter = (o, v) => ((RectTransform)o).anchorMax = (UnityEngine.Vector2)v, Getter = (o) => ((RectTransform)o).anchorMax, Updater = (object o, ref object v) => { var x = ((RectTransform)o).anchorMax; if (!x.Equals((UnityEngine.Vector2)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "localRotation", PropertyType = typeof(UnityEngine.Quaternion), Setter = (o, v) => ((RectTransform)o).localRotation = (UnityEngine.Quaternion)v, Getter = (o) => ((RectTransform)o).localRotation, Updater = (object o, ref object v) => { var x = ((RectTransform)o).localRotation; if (!x.Equals((UnityEngine.Quaternion)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "localScale", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((RectTransform)o).localScale = (UnityEngine.Vector3)v, Getter = (o) => ((RectTransform)o).localScale, Updater = (object o, ref object v) => { var x = ((RectTransform)o).localScale; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + }}, + + + { "UnityEngine.ReflectionProbe", new UnityProperty[] { + new UnityProperty { Name = "mode", PropertyType = typeof(UnityEngine.Rendering.ReflectionProbeMode), Setter = (o, v) => ((ReflectionProbe)o).mode = (UnityEngine.Rendering.ReflectionProbeMode)v, Getter = (o) => ((ReflectionProbe)o).mode, Updater = (object o, ref object v) => { var x = (int)((ReflectionProbe)o).mode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "importance", PropertyType = typeof(System.Int32), Setter = (o, v) => ((ReflectionProbe)o).importance = (System.Int32)v, Getter = (o) => ((ReflectionProbe)o).importance, Updater = (object o, ref object v) => { var x = ((ReflectionProbe)o).importance; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "intensity", PropertyType = typeof(System.Single), Setter = (o, v) => ((ReflectionProbe)o).intensity = (System.Single)v, Getter = (o) => ((ReflectionProbe)o).intensity, Updater = (object o, ref object v) => { var x = ((ReflectionProbe)o).intensity; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "boxProjection", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((ReflectionProbe)o).boxProjection = (System.Boolean)v, Getter = (o) => ((ReflectionProbe)o).boxProjection, Updater = (object o, ref object v) => { var x = ((ReflectionProbe)o).boxProjection; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "blendDistance", PropertyType = typeof(System.Single), Setter = (o, v) => ((ReflectionProbe)o).blendDistance = (System.Single)v, Getter = (o) => ((ReflectionProbe)o).blendDistance, Updater = (object o, ref object v) => { var x = ((ReflectionProbe)o).blendDistance; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "size", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((ReflectionProbe)o).size = (UnityEngine.Vector3)v, Getter = (o) => ((ReflectionProbe)o).size, Updater = (object o, ref object v) => { var x = ((ReflectionProbe)o).size; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "center", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((ReflectionProbe)o).center = (UnityEngine.Vector3)v, Getter = (o) => ((ReflectionProbe)o).center, Updater = (object o, ref object v) => { var x = ((ReflectionProbe)o).center; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "resolution", PropertyType = typeof(System.Int32), Setter = (o, v) => ((ReflectionProbe)o).resolution = (System.Int32)v, Getter = (o) => ((ReflectionProbe)o).resolution, Updater = (object o, ref object v) => { var x = ((ReflectionProbe)o).resolution; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "hdr", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((ReflectionProbe)o).hdr = (System.Boolean)v, Getter = (o) => ((ReflectionProbe)o).hdr, Updater = (object o, ref object v) => { var x = ((ReflectionProbe)o).hdr; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "shadowDistance", PropertyType = typeof(System.Single), Setter = (o, v) => ((ReflectionProbe)o).shadowDistance = (System.Single)v, Getter = (o) => ((ReflectionProbe)o).shadowDistance, Updater = (object o, ref object v) => { var x = ((ReflectionProbe)o).shadowDistance; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "clearFlags", PropertyType = typeof(UnityEngine.Rendering.ReflectionProbeClearFlags), Setter = (o, v) => ((ReflectionProbe)o).clearFlags = (UnityEngine.Rendering.ReflectionProbeClearFlags)v, Getter = (o) => ((ReflectionProbe)o).clearFlags, Updater = (object o, ref object v) => { var x = (int)((ReflectionProbe)o).clearFlags; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "backgroundColor", PropertyType = typeof(UnityEngine.Color), Setter = (o, v) => ((ReflectionProbe)o).backgroundColor = (UnityEngine.Color)v, Getter = (o) => ((ReflectionProbe)o).backgroundColor, Updater = (object o, ref object v) => { var x = ((ReflectionProbe)o).backgroundColor; if (!x.Equals((UnityEngine.Color)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "cullingMask", PropertyType = typeof(System.Int32), Setter = (o, v) => ((ReflectionProbe)o).cullingMask = (System.Int32)v, Getter = (o) => ((ReflectionProbe)o).cullingMask, Updater = (object o, ref object v) => { var x = ((ReflectionProbe)o).cullingMask; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "nearClipPlane", PropertyType = typeof(System.Single), Setter = (o, v) => ((ReflectionProbe)o).nearClipPlane = (System.Single)v, Getter = (o) => ((ReflectionProbe)o).nearClipPlane, Updater = (object o, ref object v) => { var x = ((ReflectionProbe)o).nearClipPlane; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "farClipPlane", PropertyType = typeof(System.Single), Setter = (o, v) => ((ReflectionProbe)o).farClipPlane = (System.Single)v, Getter = (o) => ((ReflectionProbe)o).farClipPlane, Updater = (object o, ref object v) => { var x = ((ReflectionProbe)o).farClipPlane; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((ReflectionProbe)o).enabled = (System.Boolean)v, Getter = (o) => ((ReflectionProbe)o).enabled, Updater = (object o, ref object v) => { var x = ((ReflectionProbe)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + + + #if UNITY_PHYSICS_2D + { "UnityEngine.RelativeJoint2D", new UnityProperty[] { + new UnityProperty { Name = "enableCollision", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((RelativeJoint2D)o).enableCollision = (System.Boolean)v, Getter = (o) => ((RelativeJoint2D)o).enableCollision, Updater = (object o, ref object v) => { var x = ((RelativeJoint2D)o).enableCollision; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "connectedBody", PropertyType = typeof(UnityEngine.Rigidbody2D), Setter = (o, v) => ((RelativeJoint2D)o).connectedBody = (UnityEngine.Rigidbody2D)v, Getter = (o) => ((RelativeJoint2D)o).connectedBody, }, + new UnityProperty { Name = "maxForce", PropertyType = typeof(System.Single), Setter = (o, v) => ((RelativeJoint2D)o).maxForce = (System.Single)v, Getter = (o) => ((RelativeJoint2D)o).maxForce, Updater = (object o, ref object v) => { var x = ((RelativeJoint2D)o).maxForce; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "maxTorque", PropertyType = typeof(System.Single), Setter = (o, v) => ((RelativeJoint2D)o).maxTorque = (System.Single)v, Getter = (o) => ((RelativeJoint2D)o).maxTorque, Updater = (object o, ref object v) => { var x = ((RelativeJoint2D)o).maxTorque; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "correctionScale", PropertyType = typeof(System.Single), Setter = (o, v) => ((RelativeJoint2D)o).correctionScale = (System.Single)v, Getter = (o) => ((RelativeJoint2D)o).correctionScale, Updater = (object o, ref object v) => { var x = ((RelativeJoint2D)o).correctionScale; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "autoConfigureOffset", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((RelativeJoint2D)o).autoConfigureOffset = (System.Boolean)v, Getter = (o) => ((RelativeJoint2D)o).autoConfigureOffset, Updater = (object o, ref object v) => { var x = ((RelativeJoint2D)o).autoConfigureOffset; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "linearOffset", PropertyType = typeof(UnityEngine.Vector2), Setter = (o, v) => ((RelativeJoint2D)o).linearOffset = (UnityEngine.Vector2)v, Getter = (o) => ((RelativeJoint2D)o).linearOffset, Updater = (object o, ref object v) => { var x = ((RelativeJoint2D)o).linearOffset; if (!x.Equals((UnityEngine.Vector2)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "angularOffset", PropertyType = typeof(System.Single), Setter = (o, v) => ((RelativeJoint2D)o).angularOffset = (System.Single)v, Getter = (o) => ((RelativeJoint2D)o).angularOffset, Updater = (object o, ref object v) => { var x = ((RelativeJoint2D)o).angularOffset; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "breakForce", PropertyType = typeof(System.Single), Setter = (o, v) => ((RelativeJoint2D)o).breakForce = (System.Single)v, Getter = (o) => ((RelativeJoint2D)o).breakForce, Updater = (object o, ref object v) => { var x = ((RelativeJoint2D)o).breakForce; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "breakTorque", PropertyType = typeof(System.Single), Setter = (o, v) => ((RelativeJoint2D)o).breakTorque = (System.Single)v, Getter = (o) => ((RelativeJoint2D)o).breakTorque, Updater = (object o, ref object v) => { var x = ((RelativeJoint2D)o).breakTorque; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((RelativeJoint2D)o).enabled = (System.Boolean)v, Getter = (o) => ((RelativeJoint2D)o).enabled, Updater = (object o, ref object v) => { var x = ((RelativeJoint2D)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_PHYSICS + { "UnityEngine.Rigidbody", new UnityProperty[] { + new UnityProperty { Name = "mass", PropertyType = typeof(System.Single), Setter = (o, v) => ((Rigidbody)o).mass = (System.Single)v, Getter = (o) => ((Rigidbody)o).mass, Updater = (object o, ref object v) => { var x = ((Rigidbody)o).mass; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "drag", PropertyType = typeof(System.Single), Setter = (o, v) => ((Rigidbody)o).drag = (System.Single)v, Getter = (o) => ((Rigidbody)o).drag, Updater = (object o, ref object v) => { var x = ((Rigidbody)o).drag; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "angularDrag", PropertyType = typeof(System.Single), Setter = (o, v) => ((Rigidbody)o).angularDrag = (System.Single)v, Getter = (o) => ((Rigidbody)o).angularDrag, Updater = (object o, ref object v) => { var x = ((Rigidbody)o).angularDrag; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "useGravity", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((Rigidbody)o).useGravity = (System.Boolean)v, Getter = (o) => ((Rigidbody)o).useGravity, Updater = (object o, ref object v) => { var x = ((Rigidbody)o).useGravity; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "isKinematic", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((Rigidbody)o).isKinematic = (System.Boolean)v, Getter = (o) => ((Rigidbody)o).isKinematic, Updater = (object o, ref object v) => { var x = ((Rigidbody)o).isKinematic; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "interpolation", PropertyType = typeof(UnityEngine.RigidbodyInterpolation), Setter = (o, v) => ((Rigidbody)o).interpolation = (UnityEngine.RigidbodyInterpolation)v, Getter = (o) => ((Rigidbody)o).interpolation, Updater = (object o, ref object v) => { var x = (int)((Rigidbody)o).interpolation; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "collisionDetectionMode", PropertyType = typeof(UnityEngine.CollisionDetectionMode), Setter = (o, v) => ((Rigidbody)o).collisionDetectionMode = (UnityEngine.CollisionDetectionMode)v, Getter = (o) => ((Rigidbody)o).collisionDetectionMode, Updater = (object o, ref object v) => { var x = (int)((Rigidbody)o).collisionDetectionMode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "constraints", PropertyType = typeof(UnityEngine.RigidbodyConstraints), Setter = (o, v) => ((Rigidbody)o).constraints = (UnityEngine.RigidbodyConstraints)v, Getter = (o) => ((Rigidbody)o).constraints, Updater = (object o, ref object v) => { var x = (int)((Rigidbody)o).constraints; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_PHYSICS_2D + { "UnityEngine.Rigidbody2D", new UnityProperty[] { + new UnityProperty { Name = "bodyType", PropertyType = typeof(UnityEngine.RigidbodyType2D), Setter = (o, v) => ((Rigidbody2D)o).bodyType = (UnityEngine.RigidbodyType2D)v, Getter = (o) => ((Rigidbody2D)o).bodyType, Updater = (object o, ref object v) => { var x = (int)((Rigidbody2D)o).bodyType; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "simulated", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((Rigidbody2D)o).simulated = (System.Boolean)v, Getter = (o) => ((Rigidbody2D)o).simulated, Updater = (object o, ref object v) => { var x = ((Rigidbody2D)o).simulated; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "useAutoMass", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((Rigidbody2D)o).useAutoMass = (System.Boolean)v, Getter = (o) => ((Rigidbody2D)o).useAutoMass, Updater = (object o, ref object v) => { var x = ((Rigidbody2D)o).useAutoMass; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "mass", PropertyType = typeof(System.Single), Setter = (o, v) => ((Rigidbody2D)o).mass = (System.Single)v, Getter = (o) => ((Rigidbody2D)o).mass, Updater = (object o, ref object v) => { var x = ((Rigidbody2D)o).mass; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "drag", PropertyType = typeof(System.Single), Setter = (o, v) => ((Rigidbody2D)o).drag = (System.Single)v, Getter = (o) => ((Rigidbody2D)o).drag, Updater = (object o, ref object v) => { var x = ((Rigidbody2D)o).drag; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "angularDrag", PropertyType = typeof(System.Single), Setter = (o, v) => ((Rigidbody2D)o).angularDrag = (System.Single)v, Getter = (o) => ((Rigidbody2D)o).angularDrag, Updater = (object o, ref object v) => { var x = ((Rigidbody2D)o).angularDrag; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "gravityScale", PropertyType = typeof(System.Single), Setter = (o, v) => ((Rigidbody2D)o).gravityScale = (System.Single)v, Getter = (o) => ((Rigidbody2D)o).gravityScale, Updater = (object o, ref object v) => { var x = ((Rigidbody2D)o).gravityScale; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "collisionDetectionMode", PropertyType = typeof(UnityEngine.CollisionDetectionMode2D), Setter = (o, v) => ((Rigidbody2D)o).collisionDetectionMode = (UnityEngine.CollisionDetectionMode2D)v, Getter = (o) => ((Rigidbody2D)o).collisionDetectionMode, Updater = (object o, ref object v) => { var x = (int)((Rigidbody2D)o).collisionDetectionMode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "sleepMode", PropertyType = typeof(UnityEngine.RigidbodySleepMode2D), Setter = (o, v) => ((Rigidbody2D)o).sleepMode = (UnityEngine.RigidbodySleepMode2D)v, Getter = (o) => ((Rigidbody2D)o).sleepMode, Updater = (object o, ref object v) => { var x = (int)((Rigidbody2D)o).sleepMode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "interpolation", PropertyType = typeof(UnityEngine.RigidbodyInterpolation2D), Setter = (o, v) => ((Rigidbody2D)o).interpolation = (UnityEngine.RigidbodyInterpolation2D)v, Getter = (o) => ((Rigidbody2D)o).interpolation, Updater = (object o, ref object v) => { var x = (int)((Rigidbody2D)o).interpolation; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "constraints", PropertyType = typeof(UnityEngine.RigidbodyConstraints2D), Setter = (o, v) => ((Rigidbody2D)o).constraints = (UnityEngine.RigidbodyConstraints2D)v, Getter = (o) => ((Rigidbody2D)o).constraints, Updater = (object o, ref object v) => { var x = (int)((Rigidbody2D)o).constraints; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_ANIMATION + { "UnityEngine.Animations.RotationConstraint", new UnityProperty[] { + new UnityProperty { Name = "constraintActive", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.Animations.RotationConstraint)o).constraintActive = (System.Boolean)v, Getter = (o) => ((UnityEngine.Animations.RotationConstraint)o).constraintActive, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.RotationConstraint)o).constraintActive; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "weight", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.Animations.RotationConstraint)o).weight = (System.Single)v, Getter = (o) => ((UnityEngine.Animations.RotationConstraint)o).weight, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.RotationConstraint)o).weight; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "locked", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.Animations.RotationConstraint)o).locked = (System.Boolean)v, Getter = (o) => ((UnityEngine.Animations.RotationConstraint)o).locked, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.RotationConstraint)o).locked; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "rotationAtRest", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((UnityEngine.Animations.RotationConstraint)o).rotationAtRest = (UnityEngine.Vector3)v, Getter = (o) => ((UnityEngine.Animations.RotationConstraint)o).rotationAtRest, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.RotationConstraint)o).rotationAtRest; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "rotationOffset", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((UnityEngine.Animations.RotationConstraint)o).rotationOffset = (UnityEngine.Vector3)v, Getter = (o) => ((UnityEngine.Animations.RotationConstraint)o).rotationOffset, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.RotationConstraint)o).rotationOffset; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "rotationAxis", PropertyType = typeof(UnityEngine.Animations.Axis), Setter = (o, v) => ((UnityEngine.Animations.RotationConstraint)o).rotationAxis = (UnityEngine.Animations.Axis)v, Getter = (o) => ((UnityEngine.Animations.RotationConstraint)o).rotationAxis, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.Animations.RotationConstraint)o).rotationAxis; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.Animations.RotationConstraint)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.Animations.RotationConstraint)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.RotationConstraint)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_ANIMATION + { "UnityEngine.Animations.ScaleConstraint", new UnityProperty[] { + new UnityProperty { Name = "constraintActive", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.Animations.ScaleConstraint)o).constraintActive = (System.Boolean)v, Getter = (o) => ((UnityEngine.Animations.ScaleConstraint)o).constraintActive, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.ScaleConstraint)o).constraintActive; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "weight", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.Animations.ScaleConstraint)o).weight = (System.Single)v, Getter = (o) => ((UnityEngine.Animations.ScaleConstraint)o).weight, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.ScaleConstraint)o).weight; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "locked", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.Animations.ScaleConstraint)o).locked = (System.Boolean)v, Getter = (o) => ((UnityEngine.Animations.ScaleConstraint)o).locked, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.ScaleConstraint)o).locked; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "scaleAtRest", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((UnityEngine.Animations.ScaleConstraint)o).scaleAtRest = (UnityEngine.Vector3)v, Getter = (o) => ((UnityEngine.Animations.ScaleConstraint)o).scaleAtRest, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.ScaleConstraint)o).scaleAtRest; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "scaleOffset", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((UnityEngine.Animations.ScaleConstraint)o).scaleOffset = (UnityEngine.Vector3)v, Getter = (o) => ((UnityEngine.Animations.ScaleConstraint)o).scaleOffset, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.ScaleConstraint)o).scaleOffset; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "scalingAxis", PropertyType = typeof(UnityEngine.Animations.Axis), Setter = (o, v) => ((UnityEngine.Animations.ScaleConstraint)o).scalingAxis = (UnityEngine.Animations.Axis)v, Getter = (o) => ((UnityEngine.Animations.ScaleConstraint)o).scalingAxis, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.Animations.ScaleConstraint)o).scalingAxis; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.Animations.ScaleConstraint)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.Animations.ScaleConstraint)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.Animations.ScaleConstraint)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_GUI + { "UnityEngine.UI.Scrollbar", new UnityProperty[] { + new UnityProperty { Name = "interactable", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.Scrollbar)o).interactable = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.Scrollbar)o).interactable, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Scrollbar)o).interactable; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "transition", PropertyType = typeof(UnityEngine.UI.Selectable.Transition), Setter = (o, v) => ((UnityEngine.UI.Scrollbar)o).transition = (UnityEngine.UI.Selectable.Transition)v, Getter = (o) => ((UnityEngine.UI.Scrollbar)o).transition, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.UI.Scrollbar)o).transition; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "targetGraphic", PropertyType = typeof(UnityEngine.UI.Graphic), Setter = (o, v) => ((UnityEngine.UI.Scrollbar)o).targetGraphic = (UnityEngine.UI.Graphic)v, Getter = (o) => ((UnityEngine.UI.Scrollbar)o).targetGraphic, }, + new UnityProperty { Name = "colors", PropertyType = typeof(UnityEngine.UI.ColorBlock), Setter = (o, v) => ((UnityEngine.UI.Scrollbar)o).colors = (UnityEngine.UI.ColorBlock)v, Getter = (o) => ((UnityEngine.UI.Scrollbar)o).colors, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Scrollbar)o).colors; if (!x.Equals((UnityEngine.UI.ColorBlock)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "navigation", PropertyType = typeof(UnityEngine.UI.Navigation), Setter = (o, v) => ((UnityEngine.UI.Scrollbar)o).navigation = (UnityEngine.UI.Navigation)v, Getter = (o) => ((UnityEngine.UI.Scrollbar)o).navigation, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Scrollbar)o).navigation; if (!x.Equals((UnityEngine.UI.Navigation)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "handleRect", PropertyType = typeof(UnityEngine.RectTransform), Setter = (o, v) => ((UnityEngine.UI.Scrollbar)o).handleRect = (UnityEngine.RectTransform)v, Getter = (o) => ((UnityEngine.UI.Scrollbar)o).handleRect, }, + new UnityProperty { Name = "direction", PropertyType = typeof(UnityEngine.UI.Scrollbar.Direction), Setter = (o, v) => ((UnityEngine.UI.Scrollbar)o).direction = (UnityEngine.UI.Scrollbar.Direction)v, Getter = (o) => ((UnityEngine.UI.Scrollbar)o).direction, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.UI.Scrollbar)o).direction; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "value", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.UI.Scrollbar)o).value = (System.Single)v, Getter = (o) => ((UnityEngine.UI.Scrollbar)o).value, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Scrollbar)o).value; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "size", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.UI.Scrollbar)o).size = (System.Single)v, Getter = (o) => ((UnityEngine.UI.Scrollbar)o).size, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Scrollbar)o).size; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "numberOfSteps", PropertyType = typeof(System.Int32), Setter = (o, v) => ((UnityEngine.UI.Scrollbar)o).numberOfSteps = (System.Int32)v, Getter = (o) => ((UnityEngine.UI.Scrollbar)o).numberOfSteps, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Scrollbar)o).numberOfSteps; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.Scrollbar)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.Scrollbar)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Scrollbar)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_GUI + { "UnityEngine.UI.ScrollRect", new UnityProperty[] { + new UnityProperty { Name = "content", PropertyType = typeof(UnityEngine.RectTransform), Setter = (o, v) => ((UnityEngine.UI.ScrollRect)o).content = (UnityEngine.RectTransform)v, Getter = (o) => ((UnityEngine.UI.ScrollRect)o).content, }, + new UnityProperty { Name = "horizontal", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.ScrollRect)o).horizontal = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.ScrollRect)o).horizontal, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.ScrollRect)o).horizontal; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "vertical", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.ScrollRect)o).vertical = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.ScrollRect)o).vertical, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.ScrollRect)o).vertical; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "movementType", PropertyType = typeof(UnityEngine.UI.ScrollRect.MovementType), Setter = (o, v) => ((UnityEngine.UI.ScrollRect)o).movementType = (UnityEngine.UI.ScrollRect.MovementType)v, Getter = (o) => ((UnityEngine.UI.ScrollRect)o).movementType, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.UI.ScrollRect)o).movementType; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "elasticity", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.UI.ScrollRect)o).elasticity = (System.Single)v, Getter = (o) => ((UnityEngine.UI.ScrollRect)o).elasticity, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.ScrollRect)o).elasticity; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "inertia", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.ScrollRect)o).inertia = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.ScrollRect)o).inertia, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.ScrollRect)o).inertia; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "decelerationRate", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.UI.ScrollRect)o).decelerationRate = (System.Single)v, Getter = (o) => ((UnityEngine.UI.ScrollRect)o).decelerationRate, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.ScrollRect)o).decelerationRate; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "scrollSensitivity", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.UI.ScrollRect)o).scrollSensitivity = (System.Single)v, Getter = (o) => ((UnityEngine.UI.ScrollRect)o).scrollSensitivity, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.ScrollRect)o).scrollSensitivity; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "viewport", PropertyType = typeof(UnityEngine.RectTransform), Setter = (o, v) => ((UnityEngine.UI.ScrollRect)o).viewport = (UnityEngine.RectTransform)v, Getter = (o) => ((UnityEngine.UI.ScrollRect)o).viewport, }, + new UnityProperty { Name = "horizontalScrollbar", PropertyType = typeof(UnityEngine.UI.Scrollbar), Setter = (o, v) => ((UnityEngine.UI.ScrollRect)o).horizontalScrollbar = (UnityEngine.UI.Scrollbar)v, Getter = (o) => ((UnityEngine.UI.ScrollRect)o).horizontalScrollbar, }, + new UnityProperty { Name = "verticalScrollbar", PropertyType = typeof(UnityEngine.UI.Scrollbar), Setter = (o, v) => ((UnityEngine.UI.ScrollRect)o).verticalScrollbar = (UnityEngine.UI.Scrollbar)v, Getter = (o) => ((UnityEngine.UI.ScrollRect)o).verticalScrollbar, }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.ScrollRect)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.ScrollRect)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.ScrollRect)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_GUI + { "UnityEngine.UI.Shadow", new UnityProperty[] { + new UnityProperty { Name = "effectColor", PropertyType = typeof(UnityEngine.Color), Setter = (o, v) => ((UnityEngine.UI.Shadow)o).effectColor = (UnityEngine.Color)v, Getter = (o) => ((UnityEngine.UI.Shadow)o).effectColor, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Shadow)o).effectColor; if (!x.Equals((UnityEngine.Color)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "effectDistance", PropertyType = typeof(UnityEngine.Vector2), Setter = (o, v) => ((UnityEngine.UI.Shadow)o).effectDistance = (UnityEngine.Vector2)v, Getter = (o) => ((UnityEngine.UI.Shadow)o).effectDistance, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Shadow)o).effectDistance; if (!x.Equals((UnityEngine.Vector2)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "useGraphicAlpha", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.Shadow)o).useGraphicAlpha = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.Shadow)o).useGraphicAlpha, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Shadow)o).useGraphicAlpha; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.Shadow)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.Shadow)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Shadow)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + { "UnityEngine.SkinnedMeshRenderer", new UnityProperty[] { + #if UNITY_2021_2_OR_NEWER + new UnityProperty { Name = "bounds", PropertyType = typeof(UnityEngine.Bounds), Setter = (o, v) => ((SkinnedMeshRenderer)o).bounds = (UnityEngine.Bounds)v, Getter = (o) => ((SkinnedMeshRenderer)o).bounds, Updater = (object o, ref object v) => { var x = ((SkinnedMeshRenderer)o).bounds; if (!x.Equals((UnityEngine.Bounds)v)) { v = x; return true; } return false; } }, + #endif + new UnityProperty { Name = "quality", PropertyType = typeof(UnityEngine.SkinQuality), Setter = (o, v) => ((SkinnedMeshRenderer)o).quality = (UnityEngine.SkinQuality)v, Getter = (o) => ((SkinnedMeshRenderer)o).quality, Updater = (object o, ref object v) => { var x = (int)((SkinnedMeshRenderer)o).quality; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "updateWhenOffscreen", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((SkinnedMeshRenderer)o).updateWhenOffscreen = (System.Boolean)v, Getter = (o) => ((SkinnedMeshRenderer)o).updateWhenOffscreen, Updater = (object o, ref object v) => { var x = ((SkinnedMeshRenderer)o).updateWhenOffscreen; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "sharedMesh", PropertyType = typeof(UnityEngine.Mesh), Setter = (o, v) => ((SkinnedMeshRenderer)o).sharedMesh = (UnityEngine.Mesh)v, Getter = (o) => ((SkinnedMeshRenderer)o).sharedMesh, }, + new UnityProperty { Name = "rootBone", PropertyType = typeof(UnityEngine.Transform), Setter = (o, v) => ((SkinnedMeshRenderer)o).rootBone = (UnityEngine.Transform)v, Getter = (o) => ((SkinnedMeshRenderer)o).rootBone, }, + new UnityProperty { Name = "sharedMaterials", PropertyType = typeof(UnityEngine.Material[]), Setter = (o, v) => ((SkinnedMeshRenderer)o).sharedMaterials = (UnityEngine.Material[])v, Getter = (o) => ((SkinnedMeshRenderer)o).sharedMaterials, Updater = (object o, ref object v) => { var x = ((SkinnedMeshRenderer)o).sharedMaterials; if (x.Length != ((UnityEngine.Material[])v).Length) { v = x; return true; } else { v = x; return false; }} }, + new UnityProperty { Name = "shadowCastingMode", PropertyType = typeof(UnityEngine.Rendering.ShadowCastingMode), Setter = (o, v) => ((SkinnedMeshRenderer)o).shadowCastingMode = (UnityEngine.Rendering.ShadowCastingMode)v, Getter = (o) => ((SkinnedMeshRenderer)o).shadowCastingMode, Updater = (object o, ref object v) => { var x = (int)((SkinnedMeshRenderer)o).shadowCastingMode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "receiveShadows", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((SkinnedMeshRenderer)o).receiveShadows = (System.Boolean)v, Getter = (o) => ((SkinnedMeshRenderer)o).receiveShadows, Updater = (object o, ref object v) => { var x = ((SkinnedMeshRenderer)o).receiveShadows; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "lightProbeUsage", PropertyType = typeof(UnityEngine.Rendering.LightProbeUsage), Setter = (o, v) => ((SkinnedMeshRenderer)o).lightProbeUsage = (UnityEngine.Rendering.LightProbeUsage)v, Getter = (o) => ((SkinnedMeshRenderer)o).lightProbeUsage, Updater = (object o, ref object v) => { var x = (int)((SkinnedMeshRenderer)o).lightProbeUsage; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "reflectionProbeUsage", PropertyType = typeof(UnityEngine.Rendering.ReflectionProbeUsage), Setter = (o, v) => ((SkinnedMeshRenderer)o).reflectionProbeUsage = (UnityEngine.Rendering.ReflectionProbeUsage)v, Getter = (o) => ((SkinnedMeshRenderer)o).reflectionProbeUsage, Updater = (object o, ref object v) => { var x = (int)((SkinnedMeshRenderer)o).reflectionProbeUsage; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "motionVectorGenerationMode", PropertyType = typeof(UnityEngine.MotionVectorGenerationMode), Setter = (o, v) => ((SkinnedMeshRenderer)o).motionVectorGenerationMode = (UnityEngine.MotionVectorGenerationMode)v, Getter = (o) => ((SkinnedMeshRenderer)o).motionVectorGenerationMode, Updater = (object o, ref object v) => { var x = (int)((SkinnedMeshRenderer)o).motionVectorGenerationMode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "allowOcclusionWhenDynamic", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((SkinnedMeshRenderer)o).allowOcclusionWhenDynamic = (System.Boolean)v, Getter = (o) => ((SkinnedMeshRenderer)o).allowOcclusionWhenDynamic, Updater = (object o, ref object v) => { var x = ((SkinnedMeshRenderer)o).allowOcclusionWhenDynamic; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((SkinnedMeshRenderer)o).enabled = (System.Boolean)v, Getter = (o) => ((SkinnedMeshRenderer)o).enabled, Updater = (object o, ref object v) => { var x = ((SkinnedMeshRenderer)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + + + { "UnityEngine.Skybox", new UnityProperty[] { + new UnityProperty { Name = "material", PropertyType = typeof(UnityEngine.Material), Setter = (o, v) => ((Skybox)o).material = (UnityEngine.Material)v, Getter = (o) => ((Skybox)o).material, }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((Skybox)o).enabled = (System.Boolean)v, Getter = (o) => ((Skybox)o).enabled, Updater = (object o, ref object v) => { var x = ((Skybox)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + + + #if UNITY_GUI + { "UnityEngine.UI.Slider", new UnityProperty[] { + new UnityProperty { Name = "interactable", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.Slider)o).interactable = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.Slider)o).interactable, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Slider)o).interactable; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "transition", PropertyType = typeof(UnityEngine.UI.Selectable.Transition), Setter = (o, v) => ((UnityEngine.UI.Slider)o).transition = (UnityEngine.UI.Selectable.Transition)v, Getter = (o) => ((UnityEngine.UI.Slider)o).transition, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.UI.Slider)o).transition; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "targetGraphic", PropertyType = typeof(UnityEngine.UI.Graphic), Setter = (o, v) => ((UnityEngine.UI.Slider)o).targetGraphic = (UnityEngine.UI.Graphic)v, Getter = (o) => ((UnityEngine.UI.Slider)o).targetGraphic, }, + new UnityProperty { Name = "colors", PropertyType = typeof(UnityEngine.UI.ColorBlock), Setter = (o, v) => ((UnityEngine.UI.Slider)o).colors = (UnityEngine.UI.ColorBlock)v, Getter = (o) => ((UnityEngine.UI.Slider)o).colors, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Slider)o).colors; if (!x.Equals((UnityEngine.UI.ColorBlock)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "navigation", PropertyType = typeof(UnityEngine.UI.Navigation), Setter = (o, v) => ((UnityEngine.UI.Slider)o).navigation = (UnityEngine.UI.Navigation)v, Getter = (o) => ((UnityEngine.UI.Slider)o).navigation, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Slider)o).navigation; if (!x.Equals((UnityEngine.UI.Navigation)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "fillRect", PropertyType = typeof(UnityEngine.RectTransform), Setter = (o, v) => ((UnityEngine.UI.Slider)o).fillRect = (UnityEngine.RectTransform)v, Getter = (o) => ((UnityEngine.UI.Slider)o).fillRect, }, + new UnityProperty { Name = "handleRect", PropertyType = typeof(UnityEngine.RectTransform), Setter = (o, v) => ((UnityEngine.UI.Slider)o).handleRect = (UnityEngine.RectTransform)v, Getter = (o) => ((UnityEngine.UI.Slider)o).handleRect, }, + new UnityProperty { Name = "direction", PropertyType = typeof(UnityEngine.UI.Slider.Direction), Setter = (o, v) => ((UnityEngine.UI.Slider)o).direction = (UnityEngine.UI.Slider.Direction)v, Getter = (o) => ((UnityEngine.UI.Slider)o).direction, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.UI.Slider)o).direction; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "minValue", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.UI.Slider)o).minValue = (System.Single)v, Getter = (o) => ((UnityEngine.UI.Slider)o).minValue, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Slider)o).minValue; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "maxValue", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.UI.Slider)o).maxValue = (System.Single)v, Getter = (o) => ((UnityEngine.UI.Slider)o).maxValue, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Slider)o).maxValue; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "wholeNumbers", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.Slider)o).wholeNumbers = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.Slider)o).wholeNumbers, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Slider)o).wholeNumbers; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "value", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.UI.Slider)o).value = (System.Single)v, Getter = (o) => ((UnityEngine.UI.Slider)o).value, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Slider)o).value; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.Slider)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.Slider)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Slider)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_PHYSICS_2D + { "UnityEngine.SliderJoint2D", new UnityProperty[] { + new UnityProperty { Name = "enableCollision", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((SliderJoint2D)o).enableCollision = (System.Boolean)v, Getter = (o) => ((SliderJoint2D)o).enableCollision, Updater = (object o, ref object v) => { var x = ((SliderJoint2D)o).enableCollision; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "connectedBody", PropertyType = typeof(UnityEngine.Rigidbody2D), Setter = (o, v) => ((SliderJoint2D)o).connectedBody = (UnityEngine.Rigidbody2D)v, Getter = (o) => ((SliderJoint2D)o).connectedBody, }, + new UnityProperty { Name = "autoConfigureConnectedAnchor", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((SliderJoint2D)o).autoConfigureConnectedAnchor = (System.Boolean)v, Getter = (o) => ((SliderJoint2D)o).autoConfigureConnectedAnchor, Updater = (object o, ref object v) => { var x = ((SliderJoint2D)o).autoConfigureConnectedAnchor; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "anchor", PropertyType = typeof(UnityEngine.Vector2), Setter = (o, v) => ((SliderJoint2D)o).anchor = (UnityEngine.Vector2)v, Getter = (o) => ((SliderJoint2D)o).anchor, Updater = (object o, ref object v) => { var x = ((SliderJoint2D)o).anchor; if (!x.Equals((UnityEngine.Vector2)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "connectedAnchor", PropertyType = typeof(UnityEngine.Vector2), Setter = (o, v) => ((SliderJoint2D)o).connectedAnchor = (UnityEngine.Vector2)v, Getter = (o) => ((SliderJoint2D)o).connectedAnchor, Updater = (object o, ref object v) => { var x = ((SliderJoint2D)o).connectedAnchor; if (!x.Equals((UnityEngine.Vector2)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "autoConfigureAngle", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((SliderJoint2D)o).autoConfigureAngle = (System.Boolean)v, Getter = (o) => ((SliderJoint2D)o).autoConfigureAngle, Updater = (object o, ref object v) => { var x = ((SliderJoint2D)o).autoConfigureAngle; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "angle", PropertyType = typeof(System.Single), Setter = (o, v) => ((SliderJoint2D)o).angle = (System.Single)v, Getter = (o) => ((SliderJoint2D)o).angle, Updater = (object o, ref object v) => { var x = ((SliderJoint2D)o).angle; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "useMotor", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((SliderJoint2D)o).useMotor = (System.Boolean)v, Getter = (o) => ((SliderJoint2D)o).useMotor, Updater = (object o, ref object v) => { var x = ((SliderJoint2D)o).useMotor; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "motor", PropertyType = typeof(UnityEngine.JointMotor2D), Setter = (o, v) => ((SliderJoint2D)o).motor = (UnityEngine.JointMotor2D)v, Getter = (o) => ((SliderJoint2D)o).motor, Updater = (object o, ref object v) => { var x = ((SliderJoint2D)o).motor; if (!x.Equals((UnityEngine.JointMotor2D)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "useLimits", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((SliderJoint2D)o).useLimits = (System.Boolean)v, Getter = (o) => ((SliderJoint2D)o).useLimits, Updater = (object o, ref object v) => { var x = ((SliderJoint2D)o).useLimits; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "limits", PropertyType = typeof(UnityEngine.JointTranslationLimits2D), Setter = (o, v) => ((SliderJoint2D)o).limits = (UnityEngine.JointTranslationLimits2D)v, Getter = (o) => ((SliderJoint2D)o).limits, Updater = (object o, ref object v) => { var x = ((SliderJoint2D)o).limits; if (!x.Equals((UnityEngine.JointTranslationLimits2D)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "breakForce", PropertyType = typeof(System.Single), Setter = (o, v) => ((SliderJoint2D)o).breakForce = (System.Single)v, Getter = (o) => ((SliderJoint2D)o).breakForce, Updater = (object o, ref object v) => { var x = ((SliderJoint2D)o).breakForce; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "breakTorque", PropertyType = typeof(System.Single), Setter = (o, v) => ((SliderJoint2D)o).breakTorque = (System.Single)v, Getter = (o) => ((SliderJoint2D)o).breakTorque, Updater = (object o, ref object v) => { var x = ((SliderJoint2D)o).breakTorque; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((SliderJoint2D)o).enabled = (System.Boolean)v, Getter = (o) => ((SliderJoint2D)o).enabled, Updater = (object o, ref object v) => { var x = ((SliderJoint2D)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + { "UnityEngine.Rendering.SortingGroup", new UnityProperty[] { + new UnityProperty { Name = "sortingLayerID", PropertyType = typeof(System.Int32), Setter = (o, v) => ((UnityEngine.Rendering.SortingGroup)o).sortingLayerID = (System.Int32)v, Getter = (o) => ((UnityEngine.Rendering.SortingGroup)o).sortingLayerID, Updater = (object o, ref object v) => { var x = ((UnityEngine.Rendering.SortingGroup)o).sortingLayerID; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "sortingOrder", PropertyType = typeof(System.Int32), Setter = (o, v) => ((UnityEngine.Rendering.SortingGroup)o).sortingOrder = (System.Int32)v, Getter = (o) => ((UnityEngine.Rendering.SortingGroup)o).sortingOrder, Updater = (object o, ref object v) => { var x = ((UnityEngine.Rendering.SortingGroup)o).sortingOrder; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.Rendering.SortingGroup)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.Rendering.SortingGroup)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.Rendering.SortingGroup)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + + + #if UNITY_PHYSICS + { "UnityEngine.SphereCollider", new UnityProperty[] { + new UnityProperty { Name = "isTrigger", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((SphereCollider)o).isTrigger = (System.Boolean)v, Getter = (o) => ((SphereCollider)o).isTrigger, Updater = (object o, ref object v) => { var x = ((SphereCollider)o).isTrigger; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "sharedMaterial", PropertyType = typeof(UnityEngine.PhysicMaterial), Setter = (o, v) => ((SphereCollider)o).sharedMaterial = (UnityEngine.PhysicMaterial)v, Getter = (o) => ((SphereCollider)o).sharedMaterial, }, + new UnityProperty { Name = "center", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((SphereCollider)o).center = (UnityEngine.Vector3)v, Getter = (o) => ((SphereCollider)o).center, Updater = (object o, ref object v) => { var x = ((SphereCollider)o).center; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "radius", PropertyType = typeof(System.Single), Setter = (o, v) => ((SphereCollider)o).radius = (System.Single)v, Getter = (o) => ((SphereCollider)o).radius, Updater = (object o, ref object v) => { var x = ((SphereCollider)o).radius; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((SphereCollider)o).enabled = (System.Boolean)v, Getter = (o) => ((SphereCollider)o).enabled, Updater = (object o, ref object v) => { var x = ((SphereCollider)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_PHYSICS + { "UnityEngine.SpringJoint", new UnityProperty[] { + new UnityProperty { Name = "connectedBody", PropertyType = typeof(UnityEngine.Rigidbody), Setter = (o, v) => ((SpringJoint)o).connectedBody = (UnityEngine.Rigidbody)v, Getter = (o) => ((SpringJoint)o).connectedBody, }, + #if UNITY_2020_2_OR_NEWER + new UnityProperty { Name = "connectedArticulationBody", PropertyType = typeof(UnityEngine.ArticulationBody), Setter = (o, v) => ((SpringJoint)o).connectedArticulationBody = (UnityEngine.ArticulationBody)v, Getter = (o) => ((SpringJoint)o).connectedArticulationBody, }, + #endif + new UnityProperty { Name = "anchor", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((SpringJoint)o).anchor = (UnityEngine.Vector3)v, Getter = (o) => ((SpringJoint)o).anchor, Updater = (object o, ref object v) => { var x = ((SpringJoint)o).anchor; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "axis", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((SpringJoint)o).axis = (UnityEngine.Vector3)v, Getter = (o) => ((SpringJoint)o).axis, Updater = (object o, ref object v) => { var x = ((SpringJoint)o).axis; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "autoConfigureConnectedAnchor", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((SpringJoint)o).autoConfigureConnectedAnchor = (System.Boolean)v, Getter = (o) => ((SpringJoint)o).autoConfigureConnectedAnchor, Updater = (object o, ref object v) => { var x = ((SpringJoint)o).autoConfigureConnectedAnchor; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "connectedAnchor", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((SpringJoint)o).connectedAnchor = (UnityEngine.Vector3)v, Getter = (o) => ((SpringJoint)o).connectedAnchor, Updater = (object o, ref object v) => { var x = ((SpringJoint)o).connectedAnchor; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "spring", PropertyType = typeof(System.Single), Setter = (o, v) => ((SpringJoint)o).spring = (System.Single)v, Getter = (o) => ((SpringJoint)o).spring, Updater = (object o, ref object v) => { var x = ((SpringJoint)o).spring; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "damper", PropertyType = typeof(System.Single), Setter = (o, v) => ((SpringJoint)o).damper = (System.Single)v, Getter = (o) => ((SpringJoint)o).damper, Updater = (object o, ref object v) => { var x = ((SpringJoint)o).damper; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "minDistance", PropertyType = typeof(System.Single), Setter = (o, v) => ((SpringJoint)o).minDistance = (System.Single)v, Getter = (o) => ((SpringJoint)o).minDistance, Updater = (object o, ref object v) => { var x = ((SpringJoint)o).minDistance; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "maxDistance", PropertyType = typeof(System.Single), Setter = (o, v) => ((SpringJoint)o).maxDistance = (System.Single)v, Getter = (o) => ((SpringJoint)o).maxDistance, Updater = (object o, ref object v) => { var x = ((SpringJoint)o).maxDistance; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "tolerance", PropertyType = typeof(System.Single), Setter = (o, v) => ((SpringJoint)o).tolerance = (System.Single)v, Getter = (o) => ((SpringJoint)o).tolerance, Updater = (object o, ref object v) => { var x = ((SpringJoint)o).tolerance; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "breakForce", PropertyType = typeof(System.Single), Setter = (o, v) => ((SpringJoint)o).breakForce = (System.Single)v, Getter = (o) => ((SpringJoint)o).breakForce, Updater = (object o, ref object v) => { var x = ((SpringJoint)o).breakForce; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "breakTorque", PropertyType = typeof(System.Single), Setter = (o, v) => ((SpringJoint)o).breakTorque = (System.Single)v, Getter = (o) => ((SpringJoint)o).breakTorque, Updater = (object o, ref object v) => { var x = ((SpringJoint)o).breakTorque; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enableCollision", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((SpringJoint)o).enableCollision = (System.Boolean)v, Getter = (o) => ((SpringJoint)o).enableCollision, Updater = (object o, ref object v) => { var x = ((SpringJoint)o).enableCollision; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enablePreprocessing", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((SpringJoint)o).enablePreprocessing = (System.Boolean)v, Getter = (o) => ((SpringJoint)o).enablePreprocessing, Updater = (object o, ref object v) => { var x = ((SpringJoint)o).enablePreprocessing; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "massScale", PropertyType = typeof(System.Single), Setter = (o, v) => ((SpringJoint)o).massScale = (System.Single)v, Getter = (o) => ((SpringJoint)o).massScale, Updater = (object o, ref object v) => { var x = ((SpringJoint)o).massScale; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "connectedMassScale", PropertyType = typeof(System.Single), Setter = (o, v) => ((SpringJoint)o).connectedMassScale = (System.Single)v, Getter = (o) => ((SpringJoint)o).connectedMassScale, Updater = (object o, ref object v) => { var x = ((SpringJoint)o).connectedMassScale; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_PHYSICS_2D + { "UnityEngine.SpringJoint2D", new UnityProperty[] { + new UnityProperty { Name = "enableCollision", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((SpringJoint2D)o).enableCollision = (System.Boolean)v, Getter = (o) => ((SpringJoint2D)o).enableCollision, Updater = (object o, ref object v) => { var x = ((SpringJoint2D)o).enableCollision; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "connectedBody", PropertyType = typeof(UnityEngine.Rigidbody2D), Setter = (o, v) => ((SpringJoint2D)o).connectedBody = (UnityEngine.Rigidbody2D)v, Getter = (o) => ((SpringJoint2D)o).connectedBody, }, + new UnityProperty { Name = "autoConfigureConnectedAnchor", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((SpringJoint2D)o).autoConfigureConnectedAnchor = (System.Boolean)v, Getter = (o) => ((SpringJoint2D)o).autoConfigureConnectedAnchor, Updater = (object o, ref object v) => { var x = ((SpringJoint2D)o).autoConfigureConnectedAnchor; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "anchor", PropertyType = typeof(UnityEngine.Vector2), Setter = (o, v) => ((SpringJoint2D)o).anchor = (UnityEngine.Vector2)v, Getter = (o) => ((SpringJoint2D)o).anchor, Updater = (object o, ref object v) => { var x = ((SpringJoint2D)o).anchor; if (!x.Equals((UnityEngine.Vector2)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "connectedAnchor", PropertyType = typeof(UnityEngine.Vector2), Setter = (o, v) => ((SpringJoint2D)o).connectedAnchor = (UnityEngine.Vector2)v, Getter = (o) => ((SpringJoint2D)o).connectedAnchor, Updater = (object o, ref object v) => { var x = ((SpringJoint2D)o).connectedAnchor; if (!x.Equals((UnityEngine.Vector2)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "autoConfigureDistance", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((SpringJoint2D)o).autoConfigureDistance = (System.Boolean)v, Getter = (o) => ((SpringJoint2D)o).autoConfigureDistance, Updater = (object o, ref object v) => { var x = ((SpringJoint2D)o).autoConfigureDistance; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "distance", PropertyType = typeof(System.Single), Setter = (o, v) => ((SpringJoint2D)o).distance = (System.Single)v, Getter = (o) => ((SpringJoint2D)o).distance, Updater = (object o, ref object v) => { var x = ((SpringJoint2D)o).distance; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "dampingRatio", PropertyType = typeof(System.Single), Setter = (o, v) => ((SpringJoint2D)o).dampingRatio = (System.Single)v, Getter = (o) => ((SpringJoint2D)o).dampingRatio, Updater = (object o, ref object v) => { var x = ((SpringJoint2D)o).dampingRatio; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "frequency", PropertyType = typeof(System.Single), Setter = (o, v) => ((SpringJoint2D)o).frequency = (System.Single)v, Getter = (o) => ((SpringJoint2D)o).frequency, Updater = (object o, ref object v) => { var x = ((SpringJoint2D)o).frequency; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "breakForce", PropertyType = typeof(System.Single), Setter = (o, v) => ((SpringJoint2D)o).breakForce = (System.Single)v, Getter = (o) => ((SpringJoint2D)o).breakForce, Updater = (object o, ref object v) => { var x = ((SpringJoint2D)o).breakForce; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((SpringJoint2D)o).enabled = (System.Boolean)v, Getter = (o) => ((SpringJoint2D)o).enabled, Updater = (object o, ref object v) => { var x = ((SpringJoint2D)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + { "UnityEngine.SpriteMask", new UnityProperty[] { + new UnityProperty { Name = "sprite", PropertyType = typeof(UnityEngine.Sprite), Setter = (o, v) => ((SpriteMask)o).sprite = (UnityEngine.Sprite)v, Getter = (o) => ((SpriteMask)o).sprite, }, + new UnityProperty { Name = "alphaCutoff", PropertyType = typeof(System.Single), Setter = (o, v) => ((SpriteMask)o).alphaCutoff = (System.Single)v, Getter = (o) => ((SpriteMask)o).alphaCutoff, Updater = (object o, ref object v) => { var x = ((SpriteMask)o).alphaCutoff; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "isCustomRangeActive", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((SpriteMask)o).isCustomRangeActive = (System.Boolean)v, Getter = (o) => ((SpriteMask)o).isCustomRangeActive, Updater = (object o, ref object v) => { var x = ((SpriteMask)o).isCustomRangeActive; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "frontSortingOrder", PropertyType = typeof(System.Int32), Setter = (o, v) => ((SpriteMask)o).frontSortingOrder = (System.Int32)v, Getter = (o) => ((SpriteMask)o).frontSortingOrder, Updater = (object o, ref object v) => { var x = ((SpriteMask)o).frontSortingOrder; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((SpriteMask)o).enabled = (System.Boolean)v, Getter = (o) => ((SpriteMask)o).enabled, Updater = (object o, ref object v) => { var x = ((SpriteMask)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + + + { "UnityEngine.SpriteRenderer", new UnityProperty[] { + new UnityProperty { Name = "sprite", PropertyType = typeof(UnityEngine.Sprite), Setter = (o, v) => ((SpriteRenderer)o).sprite = (UnityEngine.Sprite)v, Getter = (o) => ((SpriteRenderer)o).sprite, }, + new UnityProperty { Name = "color", PropertyType = typeof(UnityEngine.Color), Setter = (o, v) => ((SpriteRenderer)o).color = (UnityEngine.Color)v, Getter = (o) => ((SpriteRenderer)o).color, Updater = (object o, ref object v) => { var x = ((SpriteRenderer)o).color; if (!x.Equals((UnityEngine.Color)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "flipX", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((SpriteRenderer)o).flipX = (System.Boolean)v, Getter = (o) => ((SpriteRenderer)o).flipX, Updater = (object o, ref object v) => { var x = ((SpriteRenderer)o).flipX; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "flipY", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((SpriteRenderer)o).flipY = (System.Boolean)v, Getter = (o) => ((SpriteRenderer)o).flipY, Updater = (object o, ref object v) => { var x = ((SpriteRenderer)o).flipY; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "drawMode", PropertyType = typeof(UnityEngine.SpriteDrawMode), Setter = (o, v) => ((SpriteRenderer)o).drawMode = (UnityEngine.SpriteDrawMode)v, Getter = (o) => ((SpriteRenderer)o).drawMode, Updater = (object o, ref object v) => { var x = (int)((SpriteRenderer)o).drawMode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "maskInteraction", PropertyType = typeof(UnityEngine.SpriteMaskInteraction), Setter = (o, v) => ((SpriteRenderer)o).maskInteraction = (UnityEngine.SpriteMaskInteraction)v, Getter = (o) => ((SpriteRenderer)o).maskInteraction, Updater = (object o, ref object v) => { var x = (int)((SpriteRenderer)o).maskInteraction; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "spriteSortPoint", PropertyType = typeof(UnityEngine.SpriteSortPoint), Setter = (o, v) => ((SpriteRenderer)o).spriteSortPoint = (UnityEngine.SpriteSortPoint)v, Getter = (o) => ((SpriteRenderer)o).spriteSortPoint, Updater = (object o, ref object v) => { var x = (int)((SpriteRenderer)o).spriteSortPoint; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "sharedMaterials", PropertyType = typeof(UnityEngine.Material[]), Setter = (o, v) => ((SpriteRenderer)o).sharedMaterials = (UnityEngine.Material[])v, Getter = (o) => ((SpriteRenderer)o).sharedMaterials, Updater = (object o, ref object v) => { var x = ((SpriteRenderer)o).sharedMaterials; if (x.Length != ((UnityEngine.Material[])v).Length) { v = x; return true; } else { v = x; return false; }} }, + new UnityProperty { Name = "sortingLayerID", PropertyType = typeof(System.Int32), Setter = (o, v) => ((SpriteRenderer)o).sortingLayerID = (System.Int32)v, Getter = (o) => ((SpriteRenderer)o).sortingLayerID, Updater = (object o, ref object v) => { var x = ((SpriteRenderer)o).sortingLayerID; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "sortingOrder", PropertyType = typeof(System.Int32), Setter = (o, v) => ((SpriteRenderer)o).sortingOrder = (System.Int32)v, Getter = (o) => ((SpriteRenderer)o).sortingOrder, Updater = (object o, ref object v) => { var x = ((SpriteRenderer)o).sortingOrder; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((SpriteRenderer)o).enabled = (System.Boolean)v, Getter = (o) => ((SpriteRenderer)o).enabled, Updater = (object o, ref object v) => { var x = ((SpriteRenderer)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + + + #if UNITY_UI + { "UnityEngine.U2D.SpriteShapeRenderer", new UnityProperty[] { + new UnityProperty { Name = "color", PropertyType = typeof(UnityEngine.Color), Setter = (o, v) => ((UnityEngine.U2D.SpriteShapeRenderer)o).color = (UnityEngine.Color)v, Getter = (o) => ((UnityEngine.U2D.SpriteShapeRenderer)o).color, Updater = (object o, ref object v) => { var x = ((UnityEngine.U2D.SpriteShapeRenderer)o).color; if (!x.Equals((UnityEngine.Color)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "maskInteraction", PropertyType = typeof(UnityEngine.SpriteMaskInteraction), Setter = (o, v) => ((UnityEngine.U2D.SpriteShapeRenderer)o).maskInteraction = (UnityEngine.SpriteMaskInteraction)v, Getter = (o) => ((UnityEngine.U2D.SpriteShapeRenderer)o).maskInteraction, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.U2D.SpriteShapeRenderer)o).maskInteraction; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "sharedMaterials", PropertyType = typeof(UnityEngine.Material[]), Setter = (o, v) => ((UnityEngine.U2D.SpriteShapeRenderer)o).sharedMaterials = (UnityEngine.Material[])v, Getter = (o) => ((UnityEngine.U2D.SpriteShapeRenderer)o).sharedMaterials, Updater = (object o, ref object v) => { var x = ((UnityEngine.U2D.SpriteShapeRenderer)o).sharedMaterials; if (x.Length != ((UnityEngine.Material[])v).Length) { v = x; return true; } else { v = x; return false; }} }, + new UnityProperty { Name = "sortingLayerID", PropertyType = typeof(System.Int32), Setter = (o, v) => ((UnityEngine.U2D.SpriteShapeRenderer)o).sortingLayerID = (System.Int32)v, Getter = (o) => ((UnityEngine.U2D.SpriteShapeRenderer)o).sortingLayerID, Updater = (object o, ref object v) => { var x = ((UnityEngine.U2D.SpriteShapeRenderer)o).sortingLayerID; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "sortingOrder", PropertyType = typeof(System.Int32), Setter = (o, v) => ((UnityEngine.U2D.SpriteShapeRenderer)o).sortingOrder = (System.Int32)v, Getter = (o) => ((UnityEngine.U2D.SpriteShapeRenderer)o).sortingOrder, Updater = (object o, ref object v) => { var x = ((UnityEngine.U2D.SpriteShapeRenderer)o).sortingOrder; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.U2D.SpriteShapeRenderer)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.U2D.SpriteShapeRenderer)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.U2D.SpriteShapeRenderer)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_GUI + { "UnityEngine.EventSystems.StandaloneInputModule", new UnityProperty[] { + new UnityProperty { Name = "horizontalAxis", PropertyType = typeof(System.String), Setter = (o, v) => ((UnityEngine.EventSystems.StandaloneInputModule)o).horizontalAxis = (System.String)v, Getter = (o) => ((UnityEngine.EventSystems.StandaloneInputModule)o).horizontalAxis, }, + new UnityProperty { Name = "verticalAxis", PropertyType = typeof(System.String), Setter = (o, v) => ((UnityEngine.EventSystems.StandaloneInputModule)o).verticalAxis = (System.String)v, Getter = (o) => ((UnityEngine.EventSystems.StandaloneInputModule)o).verticalAxis, }, + new UnityProperty { Name = "submitButton", PropertyType = typeof(System.String), Setter = (o, v) => ((UnityEngine.EventSystems.StandaloneInputModule)o).submitButton = (System.String)v, Getter = (o) => ((UnityEngine.EventSystems.StandaloneInputModule)o).submitButton, }, + new UnityProperty { Name = "cancelButton", PropertyType = typeof(System.String), Setter = (o, v) => ((UnityEngine.EventSystems.StandaloneInputModule)o).cancelButton = (System.String)v, Getter = (o) => ((UnityEngine.EventSystems.StandaloneInputModule)o).cancelButton, }, + new UnityProperty { Name = "inputActionsPerSecond", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.EventSystems.StandaloneInputModule)o).inputActionsPerSecond = (System.Single)v, Getter = (o) => ((UnityEngine.EventSystems.StandaloneInputModule)o).inputActionsPerSecond, Updater = (object o, ref object v) => { var x = ((UnityEngine.EventSystems.StandaloneInputModule)o).inputActionsPerSecond; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "repeatDelay", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.EventSystems.StandaloneInputModule)o).repeatDelay = (System.Single)v, Getter = (o) => ((UnityEngine.EventSystems.StandaloneInputModule)o).repeatDelay, Updater = (object o, ref object v) => { var x = ((UnityEngine.EventSystems.StandaloneInputModule)o).repeatDelay; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.EventSystems.StandaloneInputModule)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.EventSystems.StandaloneInputModule)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.EventSystems.StandaloneInputModule)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + { "UnityEngine.StreamingController", new UnityProperty[] { + new UnityProperty { Name = "streamingMipmapBias", PropertyType = typeof(System.Single), Setter = (o, v) => ((StreamingController)o).streamingMipmapBias = (System.Single)v, Getter = (o) => ((StreamingController)o).streamingMipmapBias, Updater = (object o, ref object v) => { var x = ((StreamingController)o).streamingMipmapBias; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((StreamingController)o).enabled = (System.Boolean)v, Getter = (o) => ((StreamingController)o).enabled, Updater = (object o, ref object v) => { var x = ((StreamingController)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + + + #if UNITY_PHYSICS_2D + { "UnityEngine.SurfaceEffector2D", new UnityProperty[] { + new UnityProperty { Name = "useColliderMask", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((SurfaceEffector2D)o).useColliderMask = (System.Boolean)v, Getter = (o) => ((SurfaceEffector2D)o).useColliderMask, Updater = (object o, ref object v) => { var x = ((SurfaceEffector2D)o).useColliderMask; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "colliderMask", PropertyType = typeof(System.Int32), Setter = (o, v) => ((SurfaceEffector2D)o).colliderMask = (System.Int32)v, Getter = (o) => ((SurfaceEffector2D)o).colliderMask, Updater = (object o, ref object v) => { var x = ((SurfaceEffector2D)o).colliderMask; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "speed", PropertyType = typeof(System.Single), Setter = (o, v) => ((SurfaceEffector2D)o).speed = (System.Single)v, Getter = (o) => ((SurfaceEffector2D)o).speed, Updater = (object o, ref object v) => { var x = ((SurfaceEffector2D)o).speed; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "speedVariation", PropertyType = typeof(System.Single), Setter = (o, v) => ((SurfaceEffector2D)o).speedVariation = (System.Single)v, Getter = (o) => ((SurfaceEffector2D)o).speedVariation, Updater = (object o, ref object v) => { var x = ((SurfaceEffector2D)o).speedVariation; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "forceScale", PropertyType = typeof(System.Single), Setter = (o, v) => ((SurfaceEffector2D)o).forceScale = (System.Single)v, Getter = (o) => ((SurfaceEffector2D)o).forceScale, Updater = (object o, ref object v) => { var x = ((SurfaceEffector2D)o).forceScale; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "useContactForce", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((SurfaceEffector2D)o).useContactForce = (System.Boolean)v, Getter = (o) => ((SurfaceEffector2D)o).useContactForce, Updater = (object o, ref object v) => { var x = ((SurfaceEffector2D)o).useContactForce; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "useFriction", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((SurfaceEffector2D)o).useFriction = (System.Boolean)v, Getter = (o) => ((SurfaceEffector2D)o).useFriction, Updater = (object o, ref object v) => { var x = ((SurfaceEffector2D)o).useFriction; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "useBounce", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((SurfaceEffector2D)o).useBounce = (System.Boolean)v, Getter = (o) => ((SurfaceEffector2D)o).useBounce, Updater = (object o, ref object v) => { var x = ((SurfaceEffector2D)o).useBounce; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((SurfaceEffector2D)o).enabled = (System.Boolean)v, Getter = (o) => ((SurfaceEffector2D)o).enabled, Updater = (object o, ref object v) => { var x = ((SurfaceEffector2D)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_PHYSICS_2D + { "UnityEngine.TargetJoint2D", new UnityProperty[] { + new UnityProperty { Name = "anchor", PropertyType = typeof(UnityEngine.Vector2), Setter = (o, v) => ((TargetJoint2D)o).anchor = (UnityEngine.Vector2)v, Getter = (o) => ((TargetJoint2D)o).anchor, Updater = (object o, ref object v) => { var x = ((TargetJoint2D)o).anchor; if (!x.Equals((UnityEngine.Vector2)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "target", PropertyType = typeof(UnityEngine.Vector2), Setter = (o, v) => ((TargetJoint2D)o).target = (UnityEngine.Vector2)v, Getter = (o) => ((TargetJoint2D)o).target, Updater = (object o, ref object v) => { var x = ((TargetJoint2D)o).target; if (!x.Equals((UnityEngine.Vector2)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "autoConfigureTarget", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TargetJoint2D)o).autoConfigureTarget = (System.Boolean)v, Getter = (o) => ((TargetJoint2D)o).autoConfigureTarget, Updater = (object o, ref object v) => { var x = ((TargetJoint2D)o).autoConfigureTarget; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "maxForce", PropertyType = typeof(System.Single), Setter = (o, v) => ((TargetJoint2D)o).maxForce = (System.Single)v, Getter = (o) => ((TargetJoint2D)o).maxForce, Updater = (object o, ref object v) => { var x = ((TargetJoint2D)o).maxForce; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "dampingRatio", PropertyType = typeof(System.Single), Setter = (o, v) => ((TargetJoint2D)o).dampingRatio = (System.Single)v, Getter = (o) => ((TargetJoint2D)o).dampingRatio, Updater = (object o, ref object v) => { var x = ((TargetJoint2D)o).dampingRatio; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "frequency", PropertyType = typeof(System.Single), Setter = (o, v) => ((TargetJoint2D)o).frequency = (System.Single)v, Getter = (o) => ((TargetJoint2D)o).frequency, Updater = (object o, ref object v) => { var x = ((TargetJoint2D)o).frequency; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "breakForce", PropertyType = typeof(System.Single), Setter = (o, v) => ((TargetJoint2D)o).breakForce = (System.Single)v, Getter = (o) => ((TargetJoint2D)o).breakForce, Updater = (object o, ref object v) => { var x = ((TargetJoint2D)o).breakForce; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TargetJoint2D)o).enabled = (System.Boolean)v, Getter = (o) => ((TargetJoint2D)o).enabled, Updater = (object o, ref object v) => { var x = ((TargetJoint2D)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_TERRAIN_PHYSICS + { "UnityEngine.TerrainCollider", new UnityProperty[] { + new UnityProperty { Name = "isTrigger", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TerrainCollider)o).isTrigger = (System.Boolean)v, Getter = (o) => ((TerrainCollider)o).isTrigger, Updater = (object o, ref object v) => { var x = ((TerrainCollider)o).isTrigger; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "sharedMaterial", PropertyType = typeof(UnityEngine.PhysicMaterial), Setter = (o, v) => ((TerrainCollider)o).sharedMaterial = (UnityEngine.PhysicMaterial)v, Getter = (o) => ((TerrainCollider)o).sharedMaterial, }, + new UnityProperty { Name = "terrainData", PropertyType = typeof(UnityEngine.TerrainData), Setter = (o, v) => ((TerrainCollider)o).terrainData = (UnityEngine.TerrainData)v, Getter = (o) => ((TerrainCollider)o).terrainData, }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TerrainCollider)o).enabled = (System.Boolean)v, Getter = (o) => ((TerrainCollider)o).enabled, Updater = (object o, ref object v) => { var x = ((TerrainCollider)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_GUI + { "UnityEngine.UI.Text", new UnityProperty[] { + new UnityProperty { Name = "text", PropertyType = typeof(System.String), Setter = (o, v) => ((UnityEngine.UI.Text)o).text = (System.String)v, Getter = (o) => ((UnityEngine.UI.Text)o).text, }, + new UnityProperty { Name = "font", PropertyType = typeof(UnityEngine.Font), Setter = (o, v) => ((UnityEngine.UI.Text)o).font = (UnityEngine.Font)v, Getter = (o) => ((UnityEngine.UI.Text)o).font, }, + new UnityProperty { Name = "fontStyle", PropertyType = typeof(UnityEngine.FontStyle), Setter = (o, v) => ((UnityEngine.UI.Text)o).fontStyle = (UnityEngine.FontStyle)v, Getter = (o) => ((UnityEngine.UI.Text)o).fontStyle, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.UI.Text)o).fontStyle; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "fontSize", PropertyType = typeof(System.Int32), Setter = (o, v) => ((UnityEngine.UI.Text)o).fontSize = (System.Int32)v, Getter = (o) => ((UnityEngine.UI.Text)o).fontSize, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Text)o).fontSize; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "lineSpacing", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.UI.Text)o).lineSpacing = (System.Single)v, Getter = (o) => ((UnityEngine.UI.Text)o).lineSpacing, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Text)o).lineSpacing; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "supportRichText", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.Text)o).supportRichText = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.Text)o).supportRichText, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Text)o).supportRichText; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "alignment", PropertyType = typeof(UnityEngine.TextAnchor), Setter = (o, v) => ((UnityEngine.UI.Text)o).alignment = (UnityEngine.TextAnchor)v, Getter = (o) => ((UnityEngine.UI.Text)o).alignment, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.UI.Text)o).alignment; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "alignByGeometry", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.Text)o).alignByGeometry = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.Text)o).alignByGeometry, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Text)o).alignByGeometry; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "horizontalOverflow", PropertyType = typeof(UnityEngine.HorizontalWrapMode), Setter = (o, v) => ((UnityEngine.UI.Text)o).horizontalOverflow = (UnityEngine.HorizontalWrapMode)v, Getter = (o) => ((UnityEngine.UI.Text)o).horizontalOverflow, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.UI.Text)o).horizontalOverflow; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "verticalOverflow", PropertyType = typeof(UnityEngine.VerticalWrapMode), Setter = (o, v) => ((UnityEngine.UI.Text)o).verticalOverflow = (UnityEngine.VerticalWrapMode)v, Getter = (o) => ((UnityEngine.UI.Text)o).verticalOverflow, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.UI.Text)o).verticalOverflow; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "resizeTextForBestFit", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.Text)o).resizeTextForBestFit = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.Text)o).resizeTextForBestFit, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Text)o).resizeTextForBestFit; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "color", PropertyType = typeof(UnityEngine.Color), Setter = (o, v) => ((UnityEngine.UI.Text)o).color = (UnityEngine.Color)v, Getter = (o) => ((UnityEngine.UI.Text)o).color, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Text)o).color; if (!x.Equals((UnityEngine.Color)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "raycastTarget", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.Text)o).raycastTarget = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.Text)o).raycastTarget, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Text)o).raycastTarget; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + #if UNITY_2020_1_OR_NEWER + new UnityProperty { Name = "raycastPadding", PropertyType = typeof(UnityEngine.Vector4), Setter = (o, v) => ((UnityEngine.UI.Text)o).raycastPadding = (UnityEngine.Vector4)v, Getter = (o) => ((UnityEngine.UI.Text)o).raycastPadding, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Text)o).raycastPadding; if (!x.Equals((UnityEngine.Vector4)v)) { v = x; return true; } return false; } }, + #endif + new UnityProperty { Name = "maskable", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.Text)o).maskable = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.Text)o).maskable, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Text)o).maskable; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.Text)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.Text)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Text)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_TMPRO + { "TMPro.TextContainer", new UnityProperty[] { + new UnityProperty { Name = "anchorPosition", PropertyType = typeof(TMPro.TextContainerAnchors), Setter = (o, v) => ((TMPro.TextContainer)o).anchorPosition = (TMPro.TextContainerAnchors)v, Getter = (o) => ((TMPro.TextContainer)o).anchorPosition, Updater = (object o, ref object v) => { var x = (int)((TMPro.TextContainer)o).anchorPosition; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "width", PropertyType = typeof(System.Single), Setter = (o, v) => ((TMPro.TextContainer)o).width = (System.Single)v, Getter = (o) => ((TMPro.TextContainer)o).width, Updater = (object o, ref object v) => { var x = ((TMPro.TextContainer)o).width; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "height", PropertyType = typeof(System.Single), Setter = (o, v) => ((TMPro.TextContainer)o).height = (System.Single)v, Getter = (o) => ((TMPro.TextContainer)o).height, Updater = (object o, ref object v) => { var x = ((TMPro.TextContainer)o).height; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "margins", PropertyType = typeof(UnityEngine.Vector4), Setter = (o, v) => ((TMPro.TextContainer)o).margins = (UnityEngine.Vector4)v, Getter = (o) => ((TMPro.TextContainer)o).margins, Updater = (object o, ref object v) => { var x = ((TMPro.TextContainer)o).margins; if (!x.Equals((UnityEngine.Vector4)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TextContainer)o).enabled = (System.Boolean)v, Getter = (o) => ((TMPro.TextContainer)o).enabled, Updater = (object o, ref object v) => { var x = ((TMPro.TextContainer)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + { "UnityEngine.TextMesh", new UnityProperty[] { + new UnityProperty { Name = "text", PropertyType = typeof(System.String), Setter = (o, v) => ((TextMesh)o).text = (System.String)v, Getter = (o) => ((TextMesh)o).text, }, + new UnityProperty { Name = "offsetZ", PropertyType = typeof(System.Single), Setter = (o, v) => ((TextMesh)o).offsetZ = (System.Single)v, Getter = (o) => ((TextMesh)o).offsetZ, Updater = (object o, ref object v) => { var x = ((TextMesh)o).offsetZ; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "characterSize", PropertyType = typeof(System.Single), Setter = (o, v) => ((TextMesh)o).characterSize = (System.Single)v, Getter = (o) => ((TextMesh)o).characterSize, Updater = (object o, ref object v) => { var x = ((TextMesh)o).characterSize; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "lineSpacing", PropertyType = typeof(System.Single), Setter = (o, v) => ((TextMesh)o).lineSpacing = (System.Single)v, Getter = (o) => ((TextMesh)o).lineSpacing, Updater = (object o, ref object v) => { var x = ((TextMesh)o).lineSpacing; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "anchor", PropertyType = typeof(UnityEngine.TextAnchor), Setter = (o, v) => ((TextMesh)o).anchor = (UnityEngine.TextAnchor)v, Getter = (o) => ((TextMesh)o).anchor, Updater = (object o, ref object v) => { var x = (int)((TextMesh)o).anchor; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "alignment", PropertyType = typeof(UnityEngine.TextAlignment), Setter = (o, v) => ((TextMesh)o).alignment = (UnityEngine.TextAlignment)v, Getter = (o) => ((TextMesh)o).alignment, Updater = (object o, ref object v) => { var x = (int)((TextMesh)o).alignment; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "tabSize", PropertyType = typeof(System.Single), Setter = (o, v) => ((TextMesh)o).tabSize = (System.Single)v, Getter = (o) => ((TextMesh)o).tabSize, Updater = (object o, ref object v) => { var x = ((TextMesh)o).tabSize; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "fontSize", PropertyType = typeof(System.Int32), Setter = (o, v) => ((TextMesh)o).fontSize = (System.Int32)v, Getter = (o) => ((TextMesh)o).fontSize, Updater = (object o, ref object v) => { var x = ((TextMesh)o).fontSize; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "fontStyle", PropertyType = typeof(UnityEngine.FontStyle), Setter = (o, v) => ((TextMesh)o).fontStyle = (UnityEngine.FontStyle)v, Getter = (o) => ((TextMesh)o).fontStyle, Updater = (object o, ref object v) => { var x = (int)((TextMesh)o).fontStyle; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "richText", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TextMesh)o).richText = (System.Boolean)v, Getter = (o) => ((TextMesh)o).richText, Updater = (object o, ref object v) => { var x = ((TextMesh)o).richText; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "font", PropertyType = typeof(UnityEngine.Font), Setter = (o, v) => ((TextMesh)o).font = (UnityEngine.Font)v, Getter = (o) => ((TextMesh)o).font, }, + new UnityProperty { Name = "color", PropertyType = typeof(UnityEngine.Color), Setter = (o, v) => ((TextMesh)o).color = (UnityEngine.Color)v, Getter = (o) => ((TextMesh)o).color, Updater = (object o, ref object v) => { var x = ((TextMesh)o).color; if (!x.Equals((UnityEngine.Color)v)) { v = x; return true; } return false; } }, + }}, + + + #if UNITY_TMPRO + { "TMPro.TextMeshPro", new UnityProperty[] { + new UnityProperty { Name = "text", PropertyType = typeof(System.String), Setter = (o, v) => ((TMPro.TextMeshPro)o).text = (System.String)v, Getter = (o) => ((TMPro.TextMeshPro)o).text, }, + new UnityProperty { Name = "font", PropertyType = typeof(TMPro.TMP_FontAsset), Setter = (o, v) => ((TMPro.TextMeshPro)o).font = (TMPro.TMP_FontAsset)v, Getter = (o) => ((TMPro.TextMeshPro)o).font, }, + new UnityProperty { Name = "fontStyle", PropertyType = typeof(TMPro.FontStyles), Setter = (o, v) => ((TMPro.TextMeshPro)o).fontStyle = (TMPro.FontStyles)v, Getter = (o) => ((TMPro.TextMeshPro)o).fontStyle, Updater = (object o, ref object v) => { var x = (int)((TMPro.TextMeshPro)o).fontStyle; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "fontSize", PropertyType = typeof(System.Single), Setter = (o, v) => ((TMPro.TextMeshPro)o).fontSize = (System.Single)v, Getter = (o) => ((TMPro.TextMeshPro)o).fontSize, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshPro)o).fontSize; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "autoSizeTextContainer", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TextMeshPro)o).autoSizeTextContainer = (System.Boolean)v, Getter = (o) => ((TMPro.TextMeshPro)o).autoSizeTextContainer, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshPro)o).autoSizeTextContainer; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "color", PropertyType = typeof(UnityEngine.Color), Setter = (o, v) => ((TMPro.TextMeshPro)o).color = (UnityEngine.Color)v, Getter = (o) => ((TMPro.TextMeshPro)o).color, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshPro)o).color; if (!x.Equals((UnityEngine.Color)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "colorGradientPreset", PropertyType = typeof(TMPro.TMP_ColorGradient), Setter = (o, v) => ((TMPro.TextMeshPro)o).colorGradientPreset = (TMPro.TMP_ColorGradient)v, Getter = (o) => ((TMPro.TextMeshPro)o).colorGradientPreset, }, + new UnityProperty { Name = "colorGradient", PropertyType = typeof(TMPro.VertexGradient), Setter = (o, v) => ((TMPro.TextMeshPro)o).colorGradient = (TMPro.VertexGradient)v, Getter = (o) => ((TMPro.TextMeshPro)o).colorGradient, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshPro)o).colorGradient; if (!x.Equals((TMPro.VertexGradient)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "overrideColorTags", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TextMeshPro)o).overrideColorTags = (System.Boolean)v, Getter = (o) => ((TMPro.TextMeshPro)o).overrideColorTags, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshPro)o).overrideColorTags; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "characterSpacing", PropertyType = typeof(System.Single), Setter = (o, v) => ((TMPro.TextMeshPro)o).characterSpacing = (System.Single)v, Getter = (o) => ((TMPro.TextMeshPro)o).characterSpacing, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshPro)o).characterSpacing; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "wordSpacing", PropertyType = typeof(System.Single), Setter = (o, v) => ((TMPro.TextMeshPro)o).wordSpacing = (System.Single)v, Getter = (o) => ((TMPro.TextMeshPro)o).wordSpacing, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshPro)o).wordSpacing; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "lineSpacing", PropertyType = typeof(System.Single), Setter = (o, v) => ((TMPro.TextMeshPro)o).lineSpacing = (System.Single)v, Getter = (o) => ((TMPro.TextMeshPro)o).lineSpacing, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshPro)o).lineSpacing; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "paragraphSpacing", PropertyType = typeof(System.Single), Setter = (o, v) => ((TMPro.TextMeshPro)o).paragraphSpacing = (System.Single)v, Getter = (o) => ((TMPro.TextMeshPro)o).paragraphSpacing, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshPro)o).paragraphSpacing; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "alignment", PropertyType = typeof(TMPro.TextAlignmentOptions), Setter = (o, v) => ((TMPro.TextMeshPro)o).alignment = (TMPro.TextAlignmentOptions)v, Getter = (o) => ((TMPro.TextMeshPro)o).alignment, Updater = (object o, ref object v) => { var x = (int)((TMPro.TextMeshPro)o).alignment; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enableWordWrapping", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TextMeshPro)o).enableWordWrapping = (System.Boolean)v, Getter = (o) => ((TMPro.TextMeshPro)o).enableWordWrapping, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshPro)o).enableWordWrapping; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "overflowMode", PropertyType = typeof(TMPro.TextOverflowModes), Setter = (o, v) => ((TMPro.TextMeshPro)o).overflowMode = (TMPro.TextOverflowModes)v, Getter = (o) => ((TMPro.TextMeshPro)o).overflowMode, Updater = (object o, ref object v) => { var x = (int)((TMPro.TextMeshPro)o).overflowMode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "horizontalMapping", PropertyType = typeof(TMPro.TextureMappingOptions), Setter = (o, v) => ((TMPro.TextMeshPro)o).horizontalMapping = (TMPro.TextureMappingOptions)v, Getter = (o) => ((TMPro.TextMeshPro)o).horizontalMapping, Updater = (object o, ref object v) => { var x = (int)((TMPro.TextMeshPro)o).horizontalMapping; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "verticalMapping", PropertyType = typeof(TMPro.TextureMappingOptions), Setter = (o, v) => ((TMPro.TextMeshPro)o).verticalMapping = (TMPro.TextureMappingOptions)v, Getter = (o) => ((TMPro.TextMeshPro)o).verticalMapping, Updater = (object o, ref object v) => { var x = (int)((TMPro.TextMeshPro)o).verticalMapping; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "margin", PropertyType = typeof(UnityEngine.Vector4), Setter = (o, v) => ((TMPro.TextMeshPro)o).margin = (UnityEngine.Vector4)v, Getter = (o) => ((TMPro.TextMeshPro)o).margin, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshPro)o).margin; if (!x.Equals((UnityEngine.Vector4)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "sortingLayerID", PropertyType = typeof(System.Int32), Setter = (o, v) => ((TMPro.TextMeshPro)o).sortingLayerID = (System.Int32)v, Getter = (o) => ((TMPro.TextMeshPro)o).sortingLayerID, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshPro)o).sortingLayerID; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "sortingOrder", PropertyType = typeof(System.Int32), Setter = (o, v) => ((TMPro.TextMeshPro)o).sortingOrder = (System.Int32)v, Getter = (o) => ((TMPro.TextMeshPro)o).sortingOrder, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshPro)o).sortingOrder; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "geometrySortingOrder", PropertyType = typeof(TMPro.VertexSortingOrder), Setter = (o, v) => ((TMPro.TextMeshPro)o).geometrySortingOrder = (TMPro.VertexSortingOrder)v, Getter = (o) => ((TMPro.TextMeshPro)o).geometrySortingOrder, Updater = (object o, ref object v) => { var x = (int)((TMPro.TextMeshPro)o).geometrySortingOrder; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "isTextObjectScaleStatic", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TextMeshPro)o).isTextObjectScaleStatic = (System.Boolean)v, Getter = (o) => ((TMPro.TextMeshPro)o).isTextObjectScaleStatic, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshPro)o).isTextObjectScaleStatic; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "isOrthographic", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TextMeshPro)o).isOrthographic = (System.Boolean)v, Getter = (o) => ((TMPro.TextMeshPro)o).isOrthographic, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshPro)o).isOrthographic; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "richText", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TextMeshPro)o).richText = (System.Boolean)v, Getter = (o) => ((TMPro.TextMeshPro)o).richText, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshPro)o).richText; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "parseCtrlCharacters", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TextMeshPro)o).parseCtrlCharacters = (System.Boolean)v, Getter = (o) => ((TMPro.TextMeshPro)o).parseCtrlCharacters, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshPro)o).parseCtrlCharacters; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "useMaxVisibleDescender", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TextMeshPro)o).useMaxVisibleDescender = (System.Boolean)v, Getter = (o) => ((TMPro.TextMeshPro)o).useMaxVisibleDescender, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshPro)o).useMaxVisibleDescender; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "spriteAsset", PropertyType = typeof(TMPro.TMP_SpriteAsset), Setter = (o, v) => ((TMPro.TextMeshPro)o).spriteAsset = (TMPro.TMP_SpriteAsset)v, Getter = (o) => ((TMPro.TextMeshPro)o).spriteAsset, }, + new UnityProperty { Name = "styleSheet", PropertyType = typeof(TMPro.TMP_StyleSheet), Setter = (o, v) => ((TMPro.TextMeshPro)o).styleSheet = (TMPro.TMP_StyleSheet)v, Getter = (o) => ((TMPro.TextMeshPro)o).styleSheet, }, + new UnityProperty { Name = "enableKerning", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TextMeshPro)o).enableKerning = (System.Boolean)v, Getter = (o) => ((TMPro.TextMeshPro)o).enableKerning, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshPro)o).enableKerning; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "extraPadding", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TextMeshPro)o).extraPadding = (System.Boolean)v, Getter = (o) => ((TMPro.TextMeshPro)o).extraPadding, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshPro)o).extraPadding; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TextMeshPro)o).enabled = (System.Boolean)v, Getter = (o) => ((TMPro.TextMeshPro)o).enabled, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshPro)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_TMPRO + { "TMPro.TextMeshProUGUI", new UnityProperty[] { + new UnityProperty { Name = "text", PropertyType = typeof(System.String), Setter = (o, v) => ((TMPro.TextMeshProUGUI)o).text = (System.String)v, Getter = (o) => ((TMPro.TextMeshProUGUI)o).text, }, + new UnityProperty { Name = "font", PropertyType = typeof(TMPro.TMP_FontAsset), Setter = (o, v) => ((TMPro.TextMeshProUGUI)o).font = (TMPro.TMP_FontAsset)v, Getter = (o) => ((TMPro.TextMeshProUGUI)o).font, }, + new UnityProperty { Name = "fontStyle", PropertyType = typeof(TMPro.FontStyles), Setter = (o, v) => ((TMPro.TextMeshProUGUI)o).fontStyle = (TMPro.FontStyles)v, Getter = (o) => ((TMPro.TextMeshProUGUI)o).fontStyle, Updater = (object o, ref object v) => { var x = (int)((TMPro.TextMeshProUGUI)o).fontStyle; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "fontSize", PropertyType = typeof(System.Single), Setter = (o, v) => ((TMPro.TextMeshProUGUI)o).fontSize = (System.Single)v, Getter = (o) => ((TMPro.TextMeshProUGUI)o).fontSize, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshProUGUI)o).fontSize; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "autoSizeTextContainer", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TextMeshProUGUI)o).autoSizeTextContainer = (System.Boolean)v, Getter = (o) => ((TMPro.TextMeshProUGUI)o).autoSizeTextContainer, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshProUGUI)o).autoSizeTextContainer; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "color", PropertyType = typeof(UnityEngine.Color), Setter = (o, v) => ((TMPro.TextMeshProUGUI)o).color = (UnityEngine.Color)v, Getter = (o) => ((TMPro.TextMeshProUGUI)o).color, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshProUGUI)o).color; if (!x.Equals((UnityEngine.Color)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "colorGradientPreset", PropertyType = typeof(TMPro.TMP_ColorGradient), Setter = (o, v) => ((TMPro.TextMeshProUGUI)o).colorGradientPreset = (TMPro.TMP_ColorGradient)v, Getter = (o) => ((TMPro.TextMeshProUGUI)o).colorGradientPreset, }, + new UnityProperty { Name = "colorGradient", PropertyType = typeof(TMPro.VertexGradient), Setter = (o, v) => ((TMPro.TextMeshProUGUI)o).colorGradient = (TMPro.VertexGradient)v, Getter = (o) => ((TMPro.TextMeshProUGUI)o).colorGradient, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshProUGUI)o).colorGradient; if (!x.Equals((TMPro.VertexGradient)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "overrideColorTags", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TextMeshProUGUI)o).overrideColorTags = (System.Boolean)v, Getter = (o) => ((TMPro.TextMeshProUGUI)o).overrideColorTags, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshProUGUI)o).overrideColorTags; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "characterSpacing", PropertyType = typeof(System.Single), Setter = (o, v) => ((TMPro.TextMeshProUGUI)o).characterSpacing = (System.Single)v, Getter = (o) => ((TMPro.TextMeshProUGUI)o).characterSpacing, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshProUGUI)o).characterSpacing; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "wordSpacing", PropertyType = typeof(System.Single), Setter = (o, v) => ((TMPro.TextMeshProUGUI)o).wordSpacing = (System.Single)v, Getter = (o) => ((TMPro.TextMeshProUGUI)o).wordSpacing, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshProUGUI)o).wordSpacing; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "lineSpacing", PropertyType = typeof(System.Single), Setter = (o, v) => ((TMPro.TextMeshProUGUI)o).lineSpacing = (System.Single)v, Getter = (o) => ((TMPro.TextMeshProUGUI)o).lineSpacing, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshProUGUI)o).lineSpacing; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "paragraphSpacing", PropertyType = typeof(System.Single), Setter = (o, v) => ((TMPro.TextMeshProUGUI)o).paragraphSpacing = (System.Single)v, Getter = (o) => ((TMPro.TextMeshProUGUI)o).paragraphSpacing, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshProUGUI)o).paragraphSpacing; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "alignment", PropertyType = typeof(TMPro.TextAlignmentOptions), Setter = (o, v) => ((TMPro.TextMeshProUGUI)o).alignment = (TMPro.TextAlignmentOptions)v, Getter = (o) => ((TMPro.TextMeshProUGUI)o).alignment, Updater = (object o, ref object v) => { var x = (int)((TMPro.TextMeshProUGUI)o).alignment; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enableWordWrapping", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TextMeshProUGUI)o).enableWordWrapping = (System.Boolean)v, Getter = (o) => ((TMPro.TextMeshProUGUI)o).enableWordWrapping, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshProUGUI)o).enableWordWrapping; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "overflowMode", PropertyType = typeof(TMPro.TextOverflowModes), Setter = (o, v) => ((TMPro.TextMeshProUGUI)o).overflowMode = (TMPro.TextOverflowModes)v, Getter = (o) => ((TMPro.TextMeshProUGUI)o).overflowMode, Updater = (object o, ref object v) => { var x = (int)((TMPro.TextMeshProUGUI)o).overflowMode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "horizontalMapping", PropertyType = typeof(TMPro.TextureMappingOptions), Setter = (o, v) => ((TMPro.TextMeshProUGUI)o).horizontalMapping = (TMPro.TextureMappingOptions)v, Getter = (o) => ((TMPro.TextMeshProUGUI)o).horizontalMapping, Updater = (object o, ref object v) => { var x = (int)((TMPro.TextMeshProUGUI)o).horizontalMapping; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "verticalMapping", PropertyType = typeof(TMPro.TextureMappingOptions), Setter = (o, v) => ((TMPro.TextMeshProUGUI)o).verticalMapping = (TMPro.TextureMappingOptions)v, Getter = (o) => ((TMPro.TextMeshProUGUI)o).verticalMapping, Updater = (object o, ref object v) => { var x = (int)((TMPro.TextMeshProUGUI)o).verticalMapping; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "margin", PropertyType = typeof(UnityEngine.Vector4), Setter = (o, v) => ((TMPro.TextMeshProUGUI)o).margin = (UnityEngine.Vector4)v, Getter = (o) => ((TMPro.TextMeshProUGUI)o).margin, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshProUGUI)o).margin; if (!x.Equals((UnityEngine.Vector4)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "geometrySortingOrder", PropertyType = typeof(TMPro.VertexSortingOrder), Setter = (o, v) => ((TMPro.TextMeshProUGUI)o).geometrySortingOrder = (TMPro.VertexSortingOrder)v, Getter = (o) => ((TMPro.TextMeshProUGUI)o).geometrySortingOrder, Updater = (object o, ref object v) => { var x = (int)((TMPro.TextMeshProUGUI)o).geometrySortingOrder; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "isTextObjectScaleStatic", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TextMeshProUGUI)o).isTextObjectScaleStatic = (System.Boolean)v, Getter = (o) => ((TMPro.TextMeshProUGUI)o).isTextObjectScaleStatic, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshProUGUI)o).isTextObjectScaleStatic; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "isOrthographic", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TextMeshProUGUI)o).isOrthographic = (System.Boolean)v, Getter = (o) => ((TMPro.TextMeshProUGUI)o).isOrthographic, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshProUGUI)o).isOrthographic; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "richText", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TextMeshProUGUI)o).richText = (System.Boolean)v, Getter = (o) => ((TMPro.TextMeshProUGUI)o).richText, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshProUGUI)o).richText; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "parseCtrlCharacters", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TextMeshProUGUI)o).parseCtrlCharacters = (System.Boolean)v, Getter = (o) => ((TMPro.TextMeshProUGUI)o).parseCtrlCharacters, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshProUGUI)o).parseCtrlCharacters; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "useMaxVisibleDescender", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TextMeshProUGUI)o).useMaxVisibleDescender = (System.Boolean)v, Getter = (o) => ((TMPro.TextMeshProUGUI)o).useMaxVisibleDescender, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshProUGUI)o).useMaxVisibleDescender; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "spriteAsset", PropertyType = typeof(TMPro.TMP_SpriteAsset), Setter = (o, v) => ((TMPro.TextMeshProUGUI)o).spriteAsset = (TMPro.TMP_SpriteAsset)v, Getter = (o) => ((TMPro.TextMeshProUGUI)o).spriteAsset, }, + new UnityProperty { Name = "styleSheet", PropertyType = typeof(TMPro.TMP_StyleSheet), Setter = (o, v) => ((TMPro.TextMeshProUGUI)o).styleSheet = (TMPro.TMP_StyleSheet)v, Getter = (o) => ((TMPro.TextMeshProUGUI)o).styleSheet, }, + new UnityProperty { Name = "enableKerning", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TextMeshProUGUI)o).enableKerning = (System.Boolean)v, Getter = (o) => ((TMPro.TextMeshProUGUI)o).enableKerning, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshProUGUI)o).enableKerning; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "extraPadding", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TextMeshProUGUI)o).extraPadding = (System.Boolean)v, Getter = (o) => ((TMPro.TextMeshProUGUI)o).extraPadding, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshProUGUI)o).extraPadding; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TextMeshProUGUI)o).enabled = (System.Boolean)v, Getter = (o) => ((TMPro.TextMeshProUGUI)o).enabled, Updater = (object o, ref object v) => { var x = ((TMPro.TextMeshProUGUI)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_TILEMAP + { "UnityEngine.Tilemaps.Tilemap", new UnityProperty[] { + new UnityProperty { Name = "animationFrameRate", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.Tilemaps.Tilemap)o).animationFrameRate = (System.Single)v, Getter = (o) => ((UnityEngine.Tilemaps.Tilemap)o).animationFrameRate, Updater = (object o, ref object v) => { var x = ((UnityEngine.Tilemaps.Tilemap)o).animationFrameRate; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "color", PropertyType = typeof(UnityEngine.Color), Setter = (o, v) => ((UnityEngine.Tilemaps.Tilemap)o).color = (UnityEngine.Color)v, Getter = (o) => ((UnityEngine.Tilemaps.Tilemap)o).color, Updater = (object o, ref object v) => { var x = ((UnityEngine.Tilemaps.Tilemap)o).color; if (!x.Equals((UnityEngine.Color)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "tileAnchor", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((UnityEngine.Tilemaps.Tilemap)o).tileAnchor = (UnityEngine.Vector3)v, Getter = (o) => ((UnityEngine.Tilemaps.Tilemap)o).tileAnchor, Updater = (object o, ref object v) => { var x = ((UnityEngine.Tilemaps.Tilemap)o).tileAnchor; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "orientation", PropertyType = typeof(UnityEngine.Tilemaps.Tilemap.Orientation), Setter = (o, v) => ((UnityEngine.Tilemaps.Tilemap)o).orientation = (UnityEngine.Tilemaps.Tilemap.Orientation)v, Getter = (o) => ((UnityEngine.Tilemaps.Tilemap)o).orientation, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.Tilemaps.Tilemap)o).orientation; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.Tilemaps.Tilemap)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.Tilemaps.Tilemap)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.Tilemaps.Tilemap)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_TILEMAP + { "UnityEngine.Tilemaps.TilemapCollider2D", new UnityProperty[] { + new UnityProperty { Name = "maximumTileChangeCount", PropertyType = typeof(System.UInt32), Setter = (o, v) => ((UnityEngine.Tilemaps.TilemapCollider2D)o).maximumTileChangeCount = (System.UInt32)v, Getter = (o) => ((UnityEngine.Tilemaps.TilemapCollider2D)o).maximumTileChangeCount, Updater = (object o, ref object v) => { var x = ((UnityEngine.Tilemaps.TilemapCollider2D)o).maximumTileChangeCount; if (!x.Equals((System.UInt32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "extrusionFactor", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.Tilemaps.TilemapCollider2D)o).extrusionFactor = (System.Single)v, Getter = (o) => ((UnityEngine.Tilemaps.TilemapCollider2D)o).extrusionFactor, Updater = (object o, ref object v) => { var x = ((UnityEngine.Tilemaps.TilemapCollider2D)o).extrusionFactor; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "sharedMaterial", PropertyType = typeof(UnityEngine.PhysicsMaterial2D), Setter = (o, v) => ((UnityEngine.Tilemaps.TilemapCollider2D)o).sharedMaterial = (UnityEngine.PhysicsMaterial2D)v, Getter = (o) => ((UnityEngine.Tilemaps.TilemapCollider2D)o).sharedMaterial, }, + new UnityProperty { Name = "isTrigger", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.Tilemaps.TilemapCollider2D)o).isTrigger = (System.Boolean)v, Getter = (o) => ((UnityEngine.Tilemaps.TilemapCollider2D)o).isTrigger, Updater = (object o, ref object v) => { var x = ((UnityEngine.Tilemaps.TilemapCollider2D)o).isTrigger; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "usedByEffector", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.Tilemaps.TilemapCollider2D)o).usedByEffector = (System.Boolean)v, Getter = (o) => ((UnityEngine.Tilemaps.TilemapCollider2D)o).usedByEffector, Updater = (object o, ref object v) => { var x = ((UnityEngine.Tilemaps.TilemapCollider2D)o).usedByEffector; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + #if !UNITY_2023_1_OR_NEWER + new UnityProperty { Name = "usedByComposite", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.Tilemaps.TilemapCollider2D)o).usedByComposite = (System.Boolean)v, Getter = (o) => ((UnityEngine.Tilemaps.TilemapCollider2D)o).usedByComposite, Updater = (object o, ref object v) => { var x = ((UnityEngine.Tilemaps.TilemapCollider2D)o).usedByComposite; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + #endif + #if UNITY_2023_1_OR_NEWER + new UnityProperty { Name = "compositeOperation", PropertyType = typeof(UnityEngine.Collider2D.CompositeOperation), Setter = (o, v) => ((UnityEngine.Tilemaps.TilemapCollider2D)o).compositeOperation = (UnityEngine.Collider2D.CompositeOperation)v, Getter = (o) => ((UnityEngine.Tilemaps.TilemapCollider2D)o).compositeOperation, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.Tilemaps.TilemapCollider2D)o).compositeOperation; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + #endif + new UnityProperty { Name = "offset", PropertyType = typeof(UnityEngine.Vector2), Setter = (o, v) => ((UnityEngine.Tilemaps.TilemapCollider2D)o).offset = (UnityEngine.Vector2)v, Getter = (o) => ((UnityEngine.Tilemaps.TilemapCollider2D)o).offset, Updater = (object o, ref object v) => { var x = ((UnityEngine.Tilemaps.TilemapCollider2D)o).offset; if (!x.Equals((UnityEngine.Vector2)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.Tilemaps.TilemapCollider2D)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.Tilemaps.TilemapCollider2D)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.Tilemaps.TilemapCollider2D)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_TILEMAP + { "UnityEngine.Tilemaps.TilemapRenderer", new UnityProperty[] { + new UnityProperty { Name = "sortOrder", PropertyType = typeof(UnityEngine.Tilemaps.TilemapRenderer.SortOrder), Setter = (o, v) => ((UnityEngine.Tilemaps.TilemapRenderer)o).sortOrder = (UnityEngine.Tilemaps.TilemapRenderer.SortOrder)v, Getter = (o) => ((UnityEngine.Tilemaps.TilemapRenderer)o).sortOrder, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.Tilemaps.TilemapRenderer)o).sortOrder; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "mode", PropertyType = typeof(UnityEngine.Tilemaps.TilemapRenderer.Mode), Setter = (o, v) => ((UnityEngine.Tilemaps.TilemapRenderer)o).mode = (UnityEngine.Tilemaps.TilemapRenderer.Mode)v, Getter = (o) => ((UnityEngine.Tilemaps.TilemapRenderer)o).mode, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.Tilemaps.TilemapRenderer)o).mode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "detectChunkCullingBounds", PropertyType = typeof(UnityEngine.Tilemaps.TilemapRenderer.DetectChunkCullingBounds), Setter = (o, v) => ((UnityEngine.Tilemaps.TilemapRenderer)o).detectChunkCullingBounds = (UnityEngine.Tilemaps.TilemapRenderer.DetectChunkCullingBounds)v, Getter = (o) => ((UnityEngine.Tilemaps.TilemapRenderer)o).detectChunkCullingBounds, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.Tilemaps.TilemapRenderer)o).detectChunkCullingBounds; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "chunkCullingBounds", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((UnityEngine.Tilemaps.TilemapRenderer)o).chunkCullingBounds = (UnityEngine.Vector3)v, Getter = (o) => ((UnityEngine.Tilemaps.TilemapRenderer)o).chunkCullingBounds, Updater = (object o, ref object v) => { var x = ((UnityEngine.Tilemaps.TilemapRenderer)o).chunkCullingBounds; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "maskInteraction", PropertyType = typeof(UnityEngine.SpriteMaskInteraction), Setter = (o, v) => ((UnityEngine.Tilemaps.TilemapRenderer)o).maskInteraction = (UnityEngine.SpriteMaskInteraction)v, Getter = (o) => ((UnityEngine.Tilemaps.TilemapRenderer)o).maskInteraction, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.Tilemaps.TilemapRenderer)o).maskInteraction; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "sharedMaterials", PropertyType = typeof(UnityEngine.Material[]), Setter = (o, v) => ((UnityEngine.Tilemaps.TilemapRenderer)o).sharedMaterials = (UnityEngine.Material[])v, Getter = (o) => ((UnityEngine.Tilemaps.TilemapRenderer)o).sharedMaterials, Updater = (object o, ref object v) => { var x = ((UnityEngine.Tilemaps.TilemapRenderer)o).sharedMaterials; if (x.Length != ((UnityEngine.Material[])v).Length) { v = x; return true; } else { v = x; return false; }} }, + new UnityProperty { Name = "sortingLayerID", PropertyType = typeof(System.Int32), Setter = (o, v) => ((UnityEngine.Tilemaps.TilemapRenderer)o).sortingLayerID = (System.Int32)v, Getter = (o) => ((UnityEngine.Tilemaps.TilemapRenderer)o).sortingLayerID, Updater = (object o, ref object v) => { var x = ((UnityEngine.Tilemaps.TilemapRenderer)o).sortingLayerID; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "sortingOrder", PropertyType = typeof(System.Int32), Setter = (o, v) => ((UnityEngine.Tilemaps.TilemapRenderer)o).sortingOrder = (System.Int32)v, Getter = (o) => ((UnityEngine.Tilemaps.TilemapRenderer)o).sortingOrder, Updater = (object o, ref object v) => { var x = ((UnityEngine.Tilemaps.TilemapRenderer)o).sortingOrder; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.Tilemaps.TilemapRenderer)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.Tilemaps.TilemapRenderer)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.Tilemaps.TilemapRenderer)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_TMPRO + { "TMPro.TMP_Dropdown", new UnityProperty[] { + new UnityProperty { Name = "template", PropertyType = typeof(UnityEngine.RectTransform), Setter = (o, v) => ((TMPro.TMP_Dropdown)o).template = (UnityEngine.RectTransform)v, Getter = (o) => ((TMPro.TMP_Dropdown)o).template, }, + new UnityProperty { Name = "captionText", PropertyType = typeof(TMPro.TMP_Text), Setter = (o, v) => ((TMPro.TMP_Dropdown)o).captionText = (TMPro.TMP_Text)v, Getter = (o) => ((TMPro.TMP_Dropdown)o).captionText, }, + new UnityProperty { Name = "captionImage", PropertyType = typeof(UnityEngine.UI.Image), Setter = (o, v) => ((TMPro.TMP_Dropdown)o).captionImage = (UnityEngine.UI.Image)v, Getter = (o) => ((TMPro.TMP_Dropdown)o).captionImage, }, + new UnityProperty { Name = "placeholder", PropertyType = typeof(UnityEngine.UI.Graphic), Setter = (o, v) => ((TMPro.TMP_Dropdown)o).placeholder = (UnityEngine.UI.Graphic)v, Getter = (o) => ((TMPro.TMP_Dropdown)o).placeholder, }, + new UnityProperty { Name = "itemText", PropertyType = typeof(TMPro.TMP_Text), Setter = (o, v) => ((TMPro.TMP_Dropdown)o).itemText = (TMPro.TMP_Text)v, Getter = (o) => ((TMPro.TMP_Dropdown)o).itemText, }, + new UnityProperty { Name = "itemImage", PropertyType = typeof(UnityEngine.UI.Image), Setter = (o, v) => ((TMPro.TMP_Dropdown)o).itemImage = (UnityEngine.UI.Image)v, Getter = (o) => ((TMPro.TMP_Dropdown)o).itemImage, }, + new UnityProperty { Name = "value", PropertyType = typeof(System.Int32), Setter = (o, v) => ((TMPro.TMP_Dropdown)o).value = (System.Int32)v, Getter = (o) => ((TMPro.TMP_Dropdown)o).value, Updater = (object o, ref object v) => { var x = ((TMPro.TMP_Dropdown)o).value; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "alphaFadeSpeed", PropertyType = typeof(System.Single), Setter = (o, v) => ((TMPro.TMP_Dropdown)o).alphaFadeSpeed = (System.Single)v, Getter = (o) => ((TMPro.TMP_Dropdown)o).alphaFadeSpeed, Updater = (object o, ref object v) => { var x = ((TMPro.TMP_Dropdown)o).alphaFadeSpeed; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "options", PropertyType = typeof(System.Collections.Generic.List<TMPro.TMP_Dropdown.OptionData>), Setter = (o, v) => ((TMPro.TMP_Dropdown)o).options = (System.Collections.Generic.List<TMPro.TMP_Dropdown.OptionData>)v, Getter = (o) => ((TMPro.TMP_Dropdown)o).options, }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TMP_Dropdown)o).enabled = (System.Boolean)v, Getter = (o) => ((TMPro.TMP_Dropdown)o).enabled, Updater = (object o, ref object v) => { var x = ((TMPro.TMP_Dropdown)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_TMPRO + { "TMPro.TMP_InputField", new UnityProperty[] { + new UnityProperty { Name = "interactable", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TMP_InputField)o).interactable = (System.Boolean)v, Getter = (o) => ((TMPro.TMP_InputField)o).interactable, Updater = (object o, ref object v) => { var x = ((TMPro.TMP_InputField)o).interactable; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "transition", PropertyType = typeof(UnityEngine.UI.Selectable.Transition), Setter = (o, v) => ((TMPro.TMP_InputField)o).transition = (UnityEngine.UI.Selectable.Transition)v, Getter = (o) => ((TMPro.TMP_InputField)o).transition, Updater = (object o, ref object v) => { var x = (int)((TMPro.TMP_InputField)o).transition; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "targetGraphic", PropertyType = typeof(UnityEngine.UI.Graphic), Setter = (o, v) => ((TMPro.TMP_InputField)o).targetGraphic = (UnityEngine.UI.Graphic)v, Getter = (o) => ((TMPro.TMP_InputField)o).targetGraphic, }, + new UnityProperty { Name = "colors", PropertyType = typeof(UnityEngine.UI.ColorBlock), Setter = (o, v) => ((TMPro.TMP_InputField)o).colors = (UnityEngine.UI.ColorBlock)v, Getter = (o) => ((TMPro.TMP_InputField)o).colors, Updater = (object o, ref object v) => { var x = ((TMPro.TMP_InputField)o).colors; if (!x.Equals((UnityEngine.UI.ColorBlock)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "navigation", PropertyType = typeof(UnityEngine.UI.Navigation), Setter = (o, v) => ((TMPro.TMP_InputField)o).navigation = (UnityEngine.UI.Navigation)v, Getter = (o) => ((TMPro.TMP_InputField)o).navigation, Updater = (object o, ref object v) => { var x = ((TMPro.TMP_InputField)o).navigation; if (!x.Equals((UnityEngine.UI.Navigation)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "textViewport", PropertyType = typeof(UnityEngine.RectTransform), Setter = (o, v) => ((TMPro.TMP_InputField)o).textViewport = (UnityEngine.RectTransform)v, Getter = (o) => ((TMPro.TMP_InputField)o).textViewport, }, + new UnityProperty { Name = "textComponent", PropertyType = typeof(TMPro.TMP_Text), Setter = (o, v) => ((TMPro.TMP_InputField)o).textComponent = (TMPro.TMP_Text)v, Getter = (o) => ((TMPro.TMP_InputField)o).textComponent, }, + new UnityProperty { Name = "text", PropertyType = typeof(System.String), Setter = (o, v) => ((TMPro.TMP_InputField)o).text = (System.String)v, Getter = (o) => ((TMPro.TMP_InputField)o).text, }, + new UnityProperty { Name = "fontAsset", PropertyType = typeof(TMPro.TMP_FontAsset), Setter = (o, v) => ((TMPro.TMP_InputField)o).fontAsset = (TMPro.TMP_FontAsset)v, Getter = (o) => ((TMPro.TMP_InputField)o).fontAsset, }, + new UnityProperty { Name = "pointSize", PropertyType = typeof(System.Single), Setter = (o, v) => ((TMPro.TMP_InputField)o).pointSize = (System.Single)v, Getter = (o) => ((TMPro.TMP_InputField)o).pointSize, Updater = (object o, ref object v) => { var x = ((TMPro.TMP_InputField)o).pointSize; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "characterLimit", PropertyType = typeof(System.Int32), Setter = (o, v) => ((TMPro.TMP_InputField)o).characterLimit = (System.Int32)v, Getter = (o) => ((TMPro.TMP_InputField)o).characterLimit, Updater = (object o, ref object v) => { var x = ((TMPro.TMP_InputField)o).characterLimit; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "contentType", PropertyType = typeof(TMPro.TMP_InputField.ContentType), Setter = (o, v) => ((TMPro.TMP_InputField)o).contentType = (TMPro.TMP_InputField.ContentType)v, Getter = (o) => ((TMPro.TMP_InputField)o).contentType, Updater = (object o, ref object v) => { var x = (int)((TMPro.TMP_InputField)o).contentType; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "lineType", PropertyType = typeof(TMPro.TMP_InputField.LineType), Setter = (o, v) => ((TMPro.TMP_InputField)o).lineType = (TMPro.TMP_InputField.LineType)v, Getter = (o) => ((TMPro.TMP_InputField)o).lineType, Updater = (object o, ref object v) => { var x = (int)((TMPro.TMP_InputField)o).lineType; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "placeholder", PropertyType = typeof(UnityEngine.UI.Graphic), Setter = (o, v) => ((TMPro.TMP_InputField)o).placeholder = (UnityEngine.UI.Graphic)v, Getter = (o) => ((TMPro.TMP_InputField)o).placeholder, }, + new UnityProperty { Name = "verticalScrollbar", PropertyType = typeof(UnityEngine.UI.Scrollbar), Setter = (o, v) => ((TMPro.TMP_InputField)o).verticalScrollbar = (UnityEngine.UI.Scrollbar)v, Getter = (o) => ((TMPro.TMP_InputField)o).verticalScrollbar, }, + new UnityProperty { Name = "caretBlinkRate", PropertyType = typeof(System.Single), Setter = (o, v) => ((TMPro.TMP_InputField)o).caretBlinkRate = (System.Single)v, Getter = (o) => ((TMPro.TMP_InputField)o).caretBlinkRate, Updater = (object o, ref object v) => { var x = ((TMPro.TMP_InputField)o).caretBlinkRate; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "caretWidth", PropertyType = typeof(System.Int32), Setter = (o, v) => ((TMPro.TMP_InputField)o).caretWidth = (System.Int32)v, Getter = (o) => ((TMPro.TMP_InputField)o).caretWidth, Updater = (object o, ref object v) => { var x = ((TMPro.TMP_InputField)o).caretWidth; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "customCaretColor", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TMP_InputField)o).customCaretColor = (System.Boolean)v, Getter = (o) => ((TMPro.TMP_InputField)o).customCaretColor, Updater = (object o, ref object v) => { var x = ((TMPro.TMP_InputField)o).customCaretColor; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "selectionColor", PropertyType = typeof(UnityEngine.Color), Setter = (o, v) => ((TMPro.TMP_InputField)o).selectionColor = (UnityEngine.Color)v, Getter = (o) => ((TMPro.TMP_InputField)o).selectionColor, Updater = (object o, ref object v) => { var x = ((TMPro.TMP_InputField)o).selectionColor; if (!x.Equals((UnityEngine.Color)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "onFocusSelectAll", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TMP_InputField)o).onFocusSelectAll = (System.Boolean)v, Getter = (o) => ((TMPro.TMP_InputField)o).onFocusSelectAll, Updater = (object o, ref object v) => { var x = ((TMPro.TMP_InputField)o).onFocusSelectAll; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "resetOnDeActivation", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TMP_InputField)o).resetOnDeActivation = (System.Boolean)v, Getter = (o) => ((TMPro.TMP_InputField)o).resetOnDeActivation, Updater = (object o, ref object v) => { var x = ((TMPro.TMP_InputField)o).resetOnDeActivation; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "restoreOriginalTextOnEscape", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TMP_InputField)o).restoreOriginalTextOnEscape = (System.Boolean)v, Getter = (o) => ((TMPro.TMP_InputField)o).restoreOriginalTextOnEscape, Updater = (object o, ref object v) => { var x = ((TMPro.TMP_InputField)o).restoreOriginalTextOnEscape; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "shouldHideSoftKeyboard", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TMP_InputField)o).shouldHideSoftKeyboard = (System.Boolean)v, Getter = (o) => ((TMPro.TMP_InputField)o).shouldHideSoftKeyboard, Updater = (object o, ref object v) => { var x = ((TMPro.TMP_InputField)o).shouldHideSoftKeyboard; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "shouldHideMobileInput", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TMP_InputField)o).shouldHideMobileInput = (System.Boolean)v, Getter = (o) => ((TMPro.TMP_InputField)o).shouldHideMobileInput, Updater = (object o, ref object v) => { var x = ((TMPro.TMP_InputField)o).shouldHideMobileInput; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "readOnly", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TMP_InputField)o).readOnly = (System.Boolean)v, Getter = (o) => ((TMPro.TMP_InputField)o).readOnly, Updater = (object o, ref object v) => { var x = ((TMPro.TMP_InputField)o).readOnly; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "richText", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TMP_InputField)o).richText = (System.Boolean)v, Getter = (o) => ((TMPro.TMP_InputField)o).richText, Updater = (object o, ref object v) => { var x = ((TMPro.TMP_InputField)o).richText; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "isRichTextEditingAllowed", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TMP_InputField)o).isRichTextEditingAllowed = (System.Boolean)v, Getter = (o) => ((TMPro.TMP_InputField)o).isRichTextEditingAllowed, Updater = (object o, ref object v) => { var x = ((TMPro.TMP_InputField)o).isRichTextEditingAllowed; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TMP_InputField)o).enabled = (System.Boolean)v, Getter = (o) => ((TMPro.TMP_InputField)o).enabled, Updater = (object o, ref object v) => { var x = ((TMPro.TMP_InputField)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_TMPRO + { "TMPro.TMP_ScrollbarEventHandler", new UnityProperty[] { + new UnityProperty { Name = "isSelected", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TMP_ScrollbarEventHandler)o).isSelected = (System.Boolean)v, Getter = (o) => ((TMPro.TMP_ScrollbarEventHandler)o).isSelected, Updater = (object o, ref object v) => { var x = ((TMPro.TMP_ScrollbarEventHandler)o).isSelected; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TMP_ScrollbarEventHandler)o).enabled = (System.Boolean)v, Getter = (o) => ((TMPro.TMP_ScrollbarEventHandler)o).enabled, Updater = (object o, ref object v) => { var x = ((TMPro.TMP_ScrollbarEventHandler)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_TMPRO + { "TMPro.TMP_SubMesh", new UnityProperty[] { + new UnityProperty { Name = "fontAsset", PropertyType = typeof(TMPro.TMP_FontAsset), Setter = (o, v) => ((TMPro.TMP_SubMesh)o).fontAsset = (TMPro.TMP_FontAsset)v, Getter = (o) => ((TMPro.TMP_SubMesh)o).fontAsset, }, + new UnityProperty { Name = "spriteAsset", PropertyType = typeof(TMPro.TMP_SpriteAsset), Setter = (o, v) => ((TMPro.TMP_SubMesh)o).spriteAsset = (TMPro.TMP_SpriteAsset)v, Getter = (o) => ((TMPro.TMP_SubMesh)o).spriteAsset, }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TMP_SubMesh)o).enabled = (System.Boolean)v, Getter = (o) => ((TMPro.TMP_SubMesh)o).enabled, Updater = (object o, ref object v) => { var x = ((TMPro.TMP_SubMesh)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_TMPRO + { "TMPro.TMP_SubMeshUI", new UnityProperty[] { + new UnityProperty { Name = "fontAsset", PropertyType = typeof(TMPro.TMP_FontAsset), Setter = (o, v) => ((TMPro.TMP_SubMeshUI)o).fontAsset = (TMPro.TMP_FontAsset)v, Getter = (o) => ((TMPro.TMP_SubMeshUI)o).fontAsset, }, + new UnityProperty { Name = "spriteAsset", PropertyType = typeof(TMPro.TMP_SpriteAsset), Setter = (o, v) => ((TMPro.TMP_SubMeshUI)o).spriteAsset = (TMPro.TMP_SpriteAsset)v, Getter = (o) => ((TMPro.TMP_SubMeshUI)o).spriteAsset, }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TMPro.TMP_SubMeshUI)o).enabled = (System.Boolean)v, Getter = (o) => ((TMPro.TMP_SubMeshUI)o).enabled, Updater = (object o, ref object v) => { var x = ((TMPro.TMP_SubMeshUI)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_GUI + { "UnityEngine.UI.Toggle", new UnityProperty[] { + new UnityProperty { Name = "interactable", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.Toggle)o).interactable = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.Toggle)o).interactable, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Toggle)o).interactable; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "transition", PropertyType = typeof(UnityEngine.UI.Selectable.Transition), Setter = (o, v) => ((UnityEngine.UI.Toggle)o).transition = (UnityEngine.UI.Selectable.Transition)v, Getter = (o) => ((UnityEngine.UI.Toggle)o).transition, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.UI.Toggle)o).transition; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "targetGraphic", PropertyType = typeof(UnityEngine.UI.Graphic), Setter = (o, v) => ((UnityEngine.UI.Toggle)o).targetGraphic = (UnityEngine.UI.Graphic)v, Getter = (o) => ((UnityEngine.UI.Toggle)o).targetGraphic, }, + new UnityProperty { Name = "colors", PropertyType = typeof(UnityEngine.UI.ColorBlock), Setter = (o, v) => ((UnityEngine.UI.Toggle)o).colors = (UnityEngine.UI.ColorBlock)v, Getter = (o) => ((UnityEngine.UI.Toggle)o).colors, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Toggle)o).colors; if (!x.Equals((UnityEngine.UI.ColorBlock)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "navigation", PropertyType = typeof(UnityEngine.UI.Navigation), Setter = (o, v) => ((UnityEngine.UI.Toggle)o).navigation = (UnityEngine.UI.Navigation)v, Getter = (o) => ((UnityEngine.UI.Toggle)o).navigation, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Toggle)o).navigation; if (!x.Equals((UnityEngine.UI.Navigation)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "isOn", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.Toggle)o).isOn = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.Toggle)o).isOn, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Toggle)o).isOn; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "toggleTransition", PropertyType = typeof(UnityEngine.UI.Toggle.ToggleTransition), Setter = (o, v) => ((UnityEngine.UI.Toggle)o).toggleTransition = (UnityEngine.UI.Toggle.ToggleTransition)v, Getter = (o) => ((UnityEngine.UI.Toggle)o).toggleTransition, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.UI.Toggle)o).toggleTransition; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "graphic", PropertyType = typeof(UnityEngine.UI.Graphic), Setter = (o, v) => ((UnityEngine.UI.Toggle)o).graphic = (UnityEngine.UI.Graphic)v, Getter = (o) => ((UnityEngine.UI.Toggle)o).graphic, }, + new UnityProperty { Name = "group", PropertyType = typeof(UnityEngine.UI.ToggleGroup), Setter = (o, v) => ((UnityEngine.UI.Toggle)o).group = (UnityEngine.UI.ToggleGroup)v, Getter = (o) => ((UnityEngine.UI.Toggle)o).group, }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.Toggle)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.Toggle)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.Toggle)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_GUI + { "UnityEngine.UI.ToggleGroup", new UnityProperty[] { + new UnityProperty { Name = "allowSwitchOff", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.ToggleGroup)o).allowSwitchOff = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.ToggleGroup)o).allowSwitchOff, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.ToggleGroup)o).allowSwitchOff; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UI.ToggleGroup)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.UI.ToggleGroup)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.UI.ToggleGroup)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + { "UnityEngine.TrailRenderer", new UnityProperty[] { + new UnityProperty { Name = "time", PropertyType = typeof(System.Single), Setter = (o, v) => ((TrailRenderer)o).time = (System.Single)v, Getter = (o) => ((TrailRenderer)o).time, Updater = (object o, ref object v) => { var x = ((TrailRenderer)o).time; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "minVertexDistance", PropertyType = typeof(System.Single), Setter = (o, v) => ((TrailRenderer)o).minVertexDistance = (System.Single)v, Getter = (o) => ((TrailRenderer)o).minVertexDistance, Updater = (object o, ref object v) => { var x = ((TrailRenderer)o).minVertexDistance; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "autodestruct", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TrailRenderer)o).autodestruct = (System.Boolean)v, Getter = (o) => ((TrailRenderer)o).autodestruct, Updater = (object o, ref object v) => { var x = ((TrailRenderer)o).autodestruct; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "emitting", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TrailRenderer)o).emitting = (System.Boolean)v, Getter = (o) => ((TrailRenderer)o).emitting, Updater = (object o, ref object v) => { var x = ((TrailRenderer)o).emitting; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "colorGradient", PropertyType = typeof(UnityEngine.Gradient), Setter = (o, v) => ((TrailRenderer)o).colorGradient = (UnityEngine.Gradient)v, Getter = (o) => ((TrailRenderer)o).colorGradient, }, + new UnityProperty { Name = "numCornerVertices", PropertyType = typeof(System.Int32), Setter = (o, v) => ((TrailRenderer)o).numCornerVertices = (System.Int32)v, Getter = (o) => ((TrailRenderer)o).numCornerVertices, Updater = (object o, ref object v) => { var x = ((TrailRenderer)o).numCornerVertices; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "numCapVertices", PropertyType = typeof(System.Int32), Setter = (o, v) => ((TrailRenderer)o).numCapVertices = (System.Int32)v, Getter = (o) => ((TrailRenderer)o).numCapVertices, Updater = (object o, ref object v) => { var x = ((TrailRenderer)o).numCapVertices; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "alignment", PropertyType = typeof(UnityEngine.LineAlignment), Setter = (o, v) => ((TrailRenderer)o).alignment = (UnityEngine.LineAlignment)v, Getter = (o) => ((TrailRenderer)o).alignment, Updater = (object o, ref object v) => { var x = (int)((TrailRenderer)o).alignment; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "textureMode", PropertyType = typeof(UnityEngine.LineTextureMode), Setter = (o, v) => ((TrailRenderer)o).textureMode = (UnityEngine.LineTextureMode)v, Getter = (o) => ((TrailRenderer)o).textureMode, Updater = (object o, ref object v) => { var x = (int)((TrailRenderer)o).textureMode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "generateLightingData", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TrailRenderer)o).generateLightingData = (System.Boolean)v, Getter = (o) => ((TrailRenderer)o).generateLightingData, Updater = (object o, ref object v) => { var x = ((TrailRenderer)o).generateLightingData; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "shadowBias", PropertyType = typeof(System.Single), Setter = (o, v) => ((TrailRenderer)o).shadowBias = (System.Single)v, Getter = (o) => ((TrailRenderer)o).shadowBias, Updater = (object o, ref object v) => { var x = ((TrailRenderer)o).shadowBias; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "sharedMaterials", PropertyType = typeof(UnityEngine.Material[]), Setter = (o, v) => ((TrailRenderer)o).sharedMaterials = (UnityEngine.Material[])v, Getter = (o) => ((TrailRenderer)o).sharedMaterials, Updater = (object o, ref object v) => { var x = ((TrailRenderer)o).sharedMaterials; if (x.Length != ((UnityEngine.Material[])v).Length) { v = x; return true; } else { v = x; return false; }} }, + new UnityProperty { Name = "shadowCastingMode", PropertyType = typeof(UnityEngine.Rendering.ShadowCastingMode), Setter = (o, v) => ((TrailRenderer)o).shadowCastingMode = (UnityEngine.Rendering.ShadowCastingMode)v, Getter = (o) => ((TrailRenderer)o).shadowCastingMode, Updater = (object o, ref object v) => { var x = (int)((TrailRenderer)o).shadowCastingMode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "receiveShadows", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TrailRenderer)o).receiveShadows = (System.Boolean)v, Getter = (o) => ((TrailRenderer)o).receiveShadows, Updater = (object o, ref object v) => { var x = ((TrailRenderer)o).receiveShadows; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "lightProbeUsage", PropertyType = typeof(UnityEngine.Rendering.LightProbeUsage), Setter = (o, v) => ((TrailRenderer)o).lightProbeUsage = (UnityEngine.Rendering.LightProbeUsage)v, Getter = (o) => ((TrailRenderer)o).lightProbeUsage, Updater = (object o, ref object v) => { var x = (int)((TrailRenderer)o).lightProbeUsage; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "reflectionProbeUsage", PropertyType = typeof(UnityEngine.Rendering.ReflectionProbeUsage), Setter = (o, v) => ((TrailRenderer)o).reflectionProbeUsage = (UnityEngine.Rendering.ReflectionProbeUsage)v, Getter = (o) => ((TrailRenderer)o).reflectionProbeUsage, Updater = (object o, ref object v) => { var x = (int)((TrailRenderer)o).reflectionProbeUsage; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "motionVectorGenerationMode", PropertyType = typeof(UnityEngine.MotionVectorGenerationMode), Setter = (o, v) => ((TrailRenderer)o).motionVectorGenerationMode = (UnityEngine.MotionVectorGenerationMode)v, Getter = (o) => ((TrailRenderer)o).motionVectorGenerationMode, Updater = (object o, ref object v) => { var x = (int)((TrailRenderer)o).motionVectorGenerationMode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "allowOcclusionWhenDynamic", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TrailRenderer)o).allowOcclusionWhenDynamic = (System.Boolean)v, Getter = (o) => ((TrailRenderer)o).allowOcclusionWhenDynamic, Updater = (object o, ref object v) => { var x = ((TrailRenderer)o).allowOcclusionWhenDynamic; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "sortingLayerID", PropertyType = typeof(System.Int32), Setter = (o, v) => ((TrailRenderer)o).sortingLayerID = (System.Int32)v, Getter = (o) => ((TrailRenderer)o).sortingLayerID, Updater = (object o, ref object v) => { var x = ((TrailRenderer)o).sortingLayerID; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "sortingOrder", PropertyType = typeof(System.Int32), Setter = (o, v) => ((TrailRenderer)o).sortingOrder = (System.Int32)v, Getter = (o) => ((TrailRenderer)o).sortingOrder, Updater = (object o, ref object v) => { var x = ((TrailRenderer)o).sortingOrder; if (!x.Equals((System.Int32)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((TrailRenderer)o).enabled = (System.Boolean)v, Getter = (o) => ((TrailRenderer)o).enabled, Updater = (object o, ref object v) => { var x = ((TrailRenderer)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + + + { "UnityEngine.Transform", new UnityProperty[] { + new UnityProperty { Name = "localPosition", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((Transform)o).localPosition = (UnityEngine.Vector3)v, Getter = (o) => ((Transform)o).localPosition, Updater = (object o, ref object v) => { var x = ((Transform)o).localPosition; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "localRotation", PropertyType = typeof(UnityEngine.Quaternion), Setter = (o, v) => ((Transform)o).localRotation = (UnityEngine.Quaternion)v, Getter = (o) => ((Transform)o).localRotation, Updater = (object o, ref object v) => { var x = ((Transform)o).localRotation; if (!x.Equals((UnityEngine.Quaternion)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "localScale", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((Transform)o).localScale = (UnityEngine.Vector3)v, Getter = (o) => ((Transform)o).localScale, Updater = (object o, ref object v) => { var x = ((Transform)o).localScale; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + }}, + + + #if UNITY_2021_2_OR_NEWER&&UNITY_UIELEMENTS + { "UnityEngine.UIElements.UIDocument", new UnityProperty[] { + new UnityProperty { Name = "panelSettings", PropertyType = typeof(UnityEngine.UIElements.PanelSettings), Setter = (o, v) => ((UnityEngine.UIElements.UIDocument)o).panelSettings = (UnityEngine.UIElements.PanelSettings)v, Getter = (o) => ((UnityEngine.UIElements.UIDocument)o).panelSettings, }, + new UnityProperty { Name = "visualTreeAsset", PropertyType = typeof(UnityEngine.UIElements.VisualTreeAsset), Setter = (o, v) => ((UnityEngine.UIElements.UIDocument)o).visualTreeAsset = (UnityEngine.UIElements.VisualTreeAsset)v, Getter = (o) => ((UnityEngine.UIElements.UIDocument)o).visualTreeAsset, }, + new UnityProperty { Name = "sortingOrder", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.UIElements.UIDocument)o).sortingOrder = (System.Single)v, Getter = (o) => ((UnityEngine.UIElements.UIDocument)o).sortingOrder, Updater = (object o, ref object v) => { var x = ((UnityEngine.UIElements.UIDocument)o).sortingOrder; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.UIElements.UIDocument)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.UIElements.UIDocument)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.UIElements.UIDocument)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_VIDEO + { "UnityEngine.Video.VideoPlayer", new UnityProperty[] { + new UnityProperty { Name = "source", PropertyType = typeof(UnityEngine.Video.VideoSource), Setter = (o, v) => ((UnityEngine.Video.VideoPlayer)o).source = (UnityEngine.Video.VideoSource)v, Getter = (o) => ((UnityEngine.Video.VideoPlayer)o).source, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.Video.VideoPlayer)o).source; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "clip", PropertyType = typeof(UnityEngine.Video.VideoClip), Setter = (o, v) => ((UnityEngine.Video.VideoPlayer)o).clip = (UnityEngine.Video.VideoClip)v, Getter = (o) => ((UnityEngine.Video.VideoPlayer)o).clip, }, + new UnityProperty { Name = "url", PropertyType = typeof(System.String), Setter = (o, v) => ((UnityEngine.Video.VideoPlayer)o).url = (System.String)v, Getter = (o) => ((UnityEngine.Video.VideoPlayer)o).url, }, + new UnityProperty { Name = "playOnAwake", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.Video.VideoPlayer)o).playOnAwake = (System.Boolean)v, Getter = (o) => ((UnityEngine.Video.VideoPlayer)o).playOnAwake, Updater = (object o, ref object v) => { var x = ((UnityEngine.Video.VideoPlayer)o).playOnAwake; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "waitForFirstFrame", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.Video.VideoPlayer)o).waitForFirstFrame = (System.Boolean)v, Getter = (o) => ((UnityEngine.Video.VideoPlayer)o).waitForFirstFrame, Updater = (object o, ref object v) => { var x = ((UnityEngine.Video.VideoPlayer)o).waitForFirstFrame; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "isLooping", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.Video.VideoPlayer)o).isLooping = (System.Boolean)v, Getter = (o) => ((UnityEngine.Video.VideoPlayer)o).isLooping, Updater = (object o, ref object v) => { var x = ((UnityEngine.Video.VideoPlayer)o).isLooping; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "skipOnDrop", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.Video.VideoPlayer)o).skipOnDrop = (System.Boolean)v, Getter = (o) => ((UnityEngine.Video.VideoPlayer)o).skipOnDrop, Updater = (object o, ref object v) => { var x = ((UnityEngine.Video.VideoPlayer)o).skipOnDrop; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "playbackSpeed", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.Video.VideoPlayer)o).playbackSpeed = (System.Single)v, Getter = (o) => ((UnityEngine.Video.VideoPlayer)o).playbackSpeed, Updater = (object o, ref object v) => { var x = ((UnityEngine.Video.VideoPlayer)o).playbackSpeed; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "renderMode", PropertyType = typeof(UnityEngine.Video.VideoRenderMode), Setter = (o, v) => ((UnityEngine.Video.VideoPlayer)o).renderMode = (UnityEngine.Video.VideoRenderMode)v, Getter = (o) => ((UnityEngine.Video.VideoPlayer)o).renderMode, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.Video.VideoPlayer)o).renderMode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "targetCamera", PropertyType = typeof(UnityEngine.Camera), Setter = (o, v) => ((UnityEngine.Video.VideoPlayer)o).targetCamera = (UnityEngine.Camera)v, Getter = (o) => ((UnityEngine.Video.VideoPlayer)o).targetCamera, }, + new UnityProperty { Name = "targetCameraAlpha", PropertyType = typeof(System.Single), Setter = (o, v) => ((UnityEngine.Video.VideoPlayer)o).targetCameraAlpha = (System.Single)v, Getter = (o) => ((UnityEngine.Video.VideoPlayer)o).targetCameraAlpha, Updater = (object o, ref object v) => { var x = ((UnityEngine.Video.VideoPlayer)o).targetCameraAlpha; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "targetCamera3DLayout", PropertyType = typeof(UnityEngine.Video.Video3DLayout), Setter = (o, v) => ((UnityEngine.Video.VideoPlayer)o).targetCamera3DLayout = (UnityEngine.Video.Video3DLayout)v, Getter = (o) => ((UnityEngine.Video.VideoPlayer)o).targetCamera3DLayout, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.Video.VideoPlayer)o).targetCamera3DLayout; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "aspectRatio", PropertyType = typeof(UnityEngine.Video.VideoAspectRatio), Setter = (o, v) => ((UnityEngine.Video.VideoPlayer)o).aspectRatio = (UnityEngine.Video.VideoAspectRatio)v, Getter = (o) => ((UnityEngine.Video.VideoPlayer)o).aspectRatio, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.Video.VideoPlayer)o).aspectRatio; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "audioOutputMode", PropertyType = typeof(UnityEngine.Video.VideoAudioOutputMode), Setter = (o, v) => ((UnityEngine.Video.VideoPlayer)o).audioOutputMode = (UnityEngine.Video.VideoAudioOutputMode)v, Getter = (o) => ((UnityEngine.Video.VideoPlayer)o).audioOutputMode, Updater = (object o, ref object v) => { var x = (int)((UnityEngine.Video.VideoPlayer)o).audioOutputMode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "controlledAudioTrackCount", PropertyType = typeof(System.UInt16), Setter = (o, v) => ((UnityEngine.Video.VideoPlayer)o).controlledAudioTrackCount = (System.UInt16)v, Getter = (o) => ((UnityEngine.Video.VideoPlayer)o).controlledAudioTrackCount, Updater = (object o, ref object v) => { var x = ((UnityEngine.Video.VideoPlayer)o).controlledAudioTrackCount; if (!x.Equals((System.UInt16)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((UnityEngine.Video.VideoPlayer)o).enabled = (System.Boolean)v, Getter = (o) => ((UnityEngine.Video.VideoPlayer)o).enabled, Updater = (object o, ref object v) => { var x = ((UnityEngine.Video.VideoPlayer)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_VEHICLES + { "UnityEngine.WheelCollider", new UnityProperty[] { + new UnityProperty { Name = "mass", PropertyType = typeof(System.Single), Setter = (o, v) => ((WheelCollider)o).mass = (System.Single)v, Getter = (o) => ((WheelCollider)o).mass, Updater = (object o, ref object v) => { var x = ((WheelCollider)o).mass; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "radius", PropertyType = typeof(System.Single), Setter = (o, v) => ((WheelCollider)o).radius = (System.Single)v, Getter = (o) => ((WheelCollider)o).radius, Updater = (object o, ref object v) => { var x = ((WheelCollider)o).radius; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "wheelDampingRate", PropertyType = typeof(System.Single), Setter = (o, v) => ((WheelCollider)o).wheelDampingRate = (System.Single)v, Getter = (o) => ((WheelCollider)o).wheelDampingRate, Updater = (object o, ref object v) => { var x = ((WheelCollider)o).wheelDampingRate; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "suspensionDistance", PropertyType = typeof(System.Single), Setter = (o, v) => ((WheelCollider)o).suspensionDistance = (System.Single)v, Getter = (o) => ((WheelCollider)o).suspensionDistance, Updater = (object o, ref object v) => { var x = ((WheelCollider)o).suspensionDistance; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "forceAppPointDistance", PropertyType = typeof(System.Single), Setter = (o, v) => ((WheelCollider)o).forceAppPointDistance = (System.Single)v, Getter = (o) => ((WheelCollider)o).forceAppPointDistance, Updater = (object o, ref object v) => { var x = ((WheelCollider)o).forceAppPointDistance; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "center", PropertyType = typeof(UnityEngine.Vector3), Setter = (o, v) => ((WheelCollider)o).center = (UnityEngine.Vector3)v, Getter = (o) => ((WheelCollider)o).center, Updater = (object o, ref object v) => { var x = ((WheelCollider)o).center; if (!x.Equals((UnityEngine.Vector3)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "suspensionSpring", PropertyType = typeof(UnityEngine.JointSpring), Setter = (o, v) => ((WheelCollider)o).suspensionSpring = (UnityEngine.JointSpring)v, Getter = (o) => ((WheelCollider)o).suspensionSpring, Updater = (object o, ref object v) => { var x = ((WheelCollider)o).suspensionSpring; if (!x.Equals((UnityEngine.JointSpring)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "forwardFriction", PropertyType = typeof(UnityEngine.WheelFrictionCurve), Setter = (o, v) => ((WheelCollider)o).forwardFriction = (UnityEngine.WheelFrictionCurve)v, Getter = (o) => ((WheelCollider)o).forwardFriction, Updater = (object o, ref object v) => { var x = ((WheelCollider)o).forwardFriction; if (!x.Equals((UnityEngine.WheelFrictionCurve)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "sidewaysFriction", PropertyType = typeof(UnityEngine.WheelFrictionCurve), Setter = (o, v) => ((WheelCollider)o).sidewaysFriction = (UnityEngine.WheelFrictionCurve)v, Getter = (o) => ((WheelCollider)o).sidewaysFriction, Updater = (object o, ref object v) => { var x = ((WheelCollider)o).sidewaysFriction; if (!x.Equals((UnityEngine.WheelFrictionCurve)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((WheelCollider)o).enabled = (System.Boolean)v, Getter = (o) => ((WheelCollider)o).enabled, Updater = (object o, ref object v) => { var x = ((WheelCollider)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_PHYSICS_2D + { "UnityEngine.WheelJoint2D", new UnityProperty[] { + new UnityProperty { Name = "enableCollision", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((WheelJoint2D)o).enableCollision = (System.Boolean)v, Getter = (o) => ((WheelJoint2D)o).enableCollision, Updater = (object o, ref object v) => { var x = ((WheelJoint2D)o).enableCollision; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "connectedBody", PropertyType = typeof(UnityEngine.Rigidbody2D), Setter = (o, v) => ((WheelJoint2D)o).connectedBody = (UnityEngine.Rigidbody2D)v, Getter = (o) => ((WheelJoint2D)o).connectedBody, }, + new UnityProperty { Name = "autoConfigureConnectedAnchor", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((WheelJoint2D)o).autoConfigureConnectedAnchor = (System.Boolean)v, Getter = (o) => ((WheelJoint2D)o).autoConfigureConnectedAnchor, Updater = (object o, ref object v) => { var x = ((WheelJoint2D)o).autoConfigureConnectedAnchor; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "anchor", PropertyType = typeof(UnityEngine.Vector2), Setter = (o, v) => ((WheelJoint2D)o).anchor = (UnityEngine.Vector2)v, Getter = (o) => ((WheelJoint2D)o).anchor, Updater = (object o, ref object v) => { var x = ((WheelJoint2D)o).anchor; if (!x.Equals((UnityEngine.Vector2)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "connectedAnchor", PropertyType = typeof(UnityEngine.Vector2), Setter = (o, v) => ((WheelJoint2D)o).connectedAnchor = (UnityEngine.Vector2)v, Getter = (o) => ((WheelJoint2D)o).connectedAnchor, Updater = (object o, ref object v) => { var x = ((WheelJoint2D)o).connectedAnchor; if (!x.Equals((UnityEngine.Vector2)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "suspension", PropertyType = typeof(UnityEngine.JointSuspension2D), Setter = (o, v) => ((WheelJoint2D)o).suspension = (UnityEngine.JointSuspension2D)v, Getter = (o) => ((WheelJoint2D)o).suspension, Updater = (object o, ref object v) => { var x = ((WheelJoint2D)o).suspension; if (!x.Equals((UnityEngine.JointSuspension2D)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "useMotor", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((WheelJoint2D)o).useMotor = (System.Boolean)v, Getter = (o) => ((WheelJoint2D)o).useMotor, Updater = (object o, ref object v) => { var x = ((WheelJoint2D)o).useMotor; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "motor", PropertyType = typeof(UnityEngine.JointMotor2D), Setter = (o, v) => ((WheelJoint2D)o).motor = (UnityEngine.JointMotor2D)v, Getter = (o) => ((WheelJoint2D)o).motor, Updater = (object o, ref object v) => { var x = ((WheelJoint2D)o).motor; if (!x.Equals((UnityEngine.JointMotor2D)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "breakForce", PropertyType = typeof(System.Single), Setter = (o, v) => ((WheelJoint2D)o).breakForce = (System.Single)v, Getter = (o) => ((WheelJoint2D)o).breakForce, Updater = (object o, ref object v) => { var x = ((WheelJoint2D)o).breakForce; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "breakTorque", PropertyType = typeof(System.Single), Setter = (o, v) => ((WheelJoint2D)o).breakTorque = (System.Single)v, Getter = (o) => ((WheelJoint2D)o).breakTorque, Updater = (object o, ref object v) => { var x = ((WheelJoint2D)o).breakTorque; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "enabled", PropertyType = typeof(System.Boolean), Setter = (o, v) => ((WheelJoint2D)o).enabled = (System.Boolean)v, Getter = (o) => ((WheelJoint2D)o).enabled, Updater = (object o, ref object v) => { var x = ((WheelJoint2D)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; } }, + }}, + #endif + + + #if UNITY_WIND + { "UnityEngine.WindZone", new UnityProperty[] { + new UnityProperty { Name = "mode", PropertyType = typeof(UnityEngine.WindZoneMode), Setter = (o, v) => ((WindZone)o).mode = (UnityEngine.WindZoneMode)v, Getter = (o) => ((WindZone)o).mode, Updater = (object o, ref object v) => { var x = (int)((WindZone)o).mode; if (!x.Equals((int)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "windMain", PropertyType = typeof(System.Single), Setter = (o, v) => ((WindZone)o).windMain = (System.Single)v, Getter = (o) => ((WindZone)o).windMain, Updater = (object o, ref object v) => { var x = ((WindZone)o).windMain; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "windTurbulence", PropertyType = typeof(System.Single), Setter = (o, v) => ((WindZone)o).windTurbulence = (System.Single)v, Getter = (o) => ((WindZone)o).windTurbulence, Updater = (object o, ref object v) => { var x = ((WindZone)o).windTurbulence; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "windPulseMagnitude", PropertyType = typeof(System.Single), Setter = (o, v) => ((WindZone)o).windPulseMagnitude = (System.Single)v, Getter = (o) => ((WindZone)o).windPulseMagnitude, Updater = (object o, ref object v) => { var x = ((WindZone)o).windPulseMagnitude; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + new UnityProperty { Name = "windPulseFrequency", PropertyType = typeof(System.Single), Setter = (o, v) => ((WindZone)o).windPulseFrequency = (System.Single)v, Getter = (o) => ((WindZone)o).windPulseFrequency, Updater = (object o, ref object v) => { var x = ((WindZone)o).windPulseFrequency; if (!x.Equals((System.Single)v)) { v = x; return true; } return false; } }, + }}, + #endif + }; + } +} \ No newline at end of file diff --git a/Assets/Proxima/Runtime/Generated/ProximaReflection.Generated.cs.meta b/Assets/Proxima/Runtime/Generated/ProximaReflection.Generated.cs.meta new file mode 100644 index 0000000..0ca6b0b --- /dev/null +++ b/Assets/Proxima/Runtime/Generated/ProximaReflection.Generated.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 195ceee437781954394800fb2b18ed2e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/Generated/ProximaReflection.Template.cs b/Assets/Proxima/Runtime/Generated/ProximaReflection.Template.cs new file mode 100644 index 0000000..285276f --- /dev/null +++ b/Assets/Proxima/Runtime/Generated/ProximaReflection.Template.cs @@ -0,0 +1,15 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace Proxima +{ + using UnityProperty = ProximaComponentCommands.PropertyInfo; + + internal static class ProximaReflection_Template + { + public static Dictionary<string, UnityProperty[]> Properties = new Dictionary<string, UnityProperty[]> + { + // <Auto-generated> + }; + } +} \ No newline at end of file diff --git a/Assets/Proxima/Runtime/Generated/ProximaReflection.Template.cs.meta b/Assets/Proxima/Runtime/Generated/ProximaReflection.Template.cs.meta new file mode 100644 index 0000000..2490433 --- /dev/null +++ b/Assets/Proxima/Runtime/Generated/ProximaReflection.Template.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b4fde9a24ee322043a11937afe647590 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/Proxima.asmdef b/Assets/Proxima/Runtime/Proxima.asmdef new file mode 100644 index 0000000..dc775a0 --- /dev/null +++ b/Assets/Proxima/Runtime/Proxima.asmdef @@ -0,0 +1,104 @@ +{ + "name": "Proxima", + "rootNamespace": "", + "references": [ + "Unity.TextMeshPro" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": true, + "precompiledReferences": [ + "proxima-websocket-sharp.dll" + ], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [ + { + "name": "com.unity.modules.ai", + "expression": "", + "define": "UNITY_AI" + }, + { + "name": "com.unity.modules.cloth", + "expression": "", + "define": "UNITY_CLOTH" + }, + { + "name": "com.unity.modules.animation", + "expression": "", + "define": "UNITY_ANIMATION" + }, + { + "name": "com.unity.modules.particlesystem", + "expression": "", + "define": "UNITY_PARTICLE_SYSTEM" + }, + { + "name": "com.unity.modules.director", + "expression": "", + "define": "UNITY_DIRECTOR" + }, + { + "name": "com.unity.modules.physics2d", + "expression": "", + "define": "UNITY_PHYSICS_2D" + }, + { + "name": "com.unity.modules.audio", + "expression": "", + "define": "UNITY_AUDIO" + }, + { + "name": "com.unity.modules.terrainphysics", + "expression": "", + "define": "UNITY_TERRAIN_PHYSICS" + }, + { + "name": "com.unity.modules.tilemap", + "expression": "", + "define": "UNITY_TILEMAP" + }, + { + "name": "com.unity.modules.video", + "expression": "", + "define": "UNITY_VIDEO" + }, + { + "name": "com.unity.modules.physics", + "expression": "", + "define": "UNITY_PHYSICS" + }, + { + "name": "com.unity.modules.wind", + "expression": "", + "define": "UNITY_WIND" + }, + { + "name": "com.unity.modules.vehicles", + "expression": "", + "define": "UNITY_VEHICLES" + }, + { + "name": "com.unity.textmeshpro", + "expression": "", + "define": "UNITY_TMPRO" + }, + { + "name": "com.unity.modules.ui", + "expression": "", + "define": "UNITY_UI" + }, + { + "name": "com.unity.ugui", + "expression": "", + "define": "UNITY_GUI" + }, + { + "name": "com.unity.modules.uielements", + "expression": "", + "define": "UNITY_UIELEMENTS" + } + ], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/Proxima/Runtime/Proxima.asmdef.meta b/Assets/Proxima/Runtime/Proxima.asmdef.meta new file mode 100644 index 0000000..1a874c7 --- /dev/null +++ b/Assets/Proxima/Runtime/Proxima.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5aecca43f8b5ec34dbb52f863bdf0e59 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/ProximaCommand.cs b/Assets/Proxima/Runtime/ProximaCommand.cs new file mode 100644 index 0000000..7d86057 --- /dev/null +++ b/Assets/Proxima/Runtime/ProximaCommand.cs @@ -0,0 +1,25 @@ + +using System; +using UnityEngine.Scripting; + +namespace Proxima +{ + [AttributeUsage(AttributeTargets.Method)] + public class ProximaCommandAttribute : PreserveAttribute + { + public string Category; + public string Alias; + public string Description; + public string ExampleInput; + public string ExampleOutput; + + public ProximaCommandAttribute(string category, string alias = "", string description = "", string exampleInput = "", string exampleOutput = "") + { + Category = category; + Alias = alias; + Description = description; + ExampleInput = exampleInput; + ExampleOutput = exampleOutput; + } + } +} \ No newline at end of file diff --git a/Assets/Proxima/Runtime/ProximaCommand.cs.meta b/Assets/Proxima/Runtime/ProximaCommand.cs.meta new file mode 100644 index 0000000..c986dc7 --- /dev/null +++ b/Assets/Proxima/Runtime/ProximaCommand.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 99574471972d90040a8d9e1fd8bc45da +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/ProximaCommandHelpers.cs b/Assets/Proxima/Runtime/ProximaCommandHelpers.cs new file mode 100644 index 0000000..861126f --- /dev/null +++ b/Assets/Proxima/Runtime/ProximaCommandHelpers.cs @@ -0,0 +1,353 @@ +using System; +using System.Reflection; +using System.Collections.Generic; +using System.Text.RegularExpressions; +using UnityEngine; +using UnityEngine.Scripting; + +namespace Proxima +{ + public interface IPropertyOrValue + { + object Get(Type type); + } + + public struct PropertyOrValue<T> : IPropertyOrValue + { + private string _pattern; + + [Preserve] + public PropertyOrValue(string pattern) + { + _pattern = pattern; + } + + public bool IsSet => !string.IsNullOrEmpty(_pattern); + + public T Get() + { + return (T)Get(typeof(T)); + } + + public object Get(Type type) + { + var properties = ProximaCommandHelpers.FindProperties(_pattern); + if (properties.Count > 1) + { + throw new Exception("Multiple properties found that match pattern."); + } + + if (properties.Count == 1) + { + var property = properties[0]; + if (property.CanRead && property.Type.IsAssignableFrom(type)) + { + return property.GetValue(); + } + } + + return ProximaSerialization.Deserialize(type, _pattern); + } + + public T GetOrDefault(T defaultValue = default) + { + if (!IsSet) + { + return defaultValue; + } + + return Get(); + } + } + + public static class ProximaCommandHelpers + { + public static List<GameObject> FindGameObjects(string name) + { + #if UNITY_2023_1_OR_NEWER + var allGameObjects = GameObject.FindObjectsByType<GameObject>(FindObjectsInactive.Include, FindObjectsSortMode.None); + #elif UNITY_2020_1_OR_NEWER + var allGameObjects = GameObject.FindObjectsOfType<GameObject>(true); + #else + #pragma warning disable 612, 618 + var allGameObjects = (GameObject[]) GameObject.FindObjectsOfTypeAll(typeof(GameObject)); + #pragma warning restore 612, 618 + #endif + + var objects = new List<GameObject>(); + + if (name.StartsWith("[") && name.EndsWith("]") && int.TryParse(name.Substring(1, name.Length - 2), out var id)) + { + foreach (var o in allGameObjects) + { + if (o.GetInstanceID() == id) + { + objects.Add(o); + break; + } + } + } + else + { + var regex = new Regex("^" + Regex.Escape(name).Replace("\\*", ".*?") + "$", RegexOptions.IgnoreCase); + foreach (var o in allGameObjects) + { + if (o.scene.isLoaded && regex.IsMatch(o.name)) + { + objects.Add(o); + } + } + } + + objects.Sort((a, b) => a.name.ToLower().CompareTo(b.name.ToLower())); + return objects; + } + + internal static List<PropertyOrField> FindProperties(string pattern) + { + var result = new List<PropertyOrField>(); + var idx = pattern.IndexOf('.'); + if (idx == -1) + { + return result; + } + + var objectName = pattern.Substring(0, idx); + var rest = pattern.Substring(idx + 1); + + foreach (var unityStatic in UnityStatics) + { + if (unityStatic.Name.Equals(objectName, StringComparison.OrdinalIgnoreCase)) + { + AddStaticProperty(result, unityStatic, rest); + return result; + } + } + + var gameObjects = FindGameObjects(objectName); + foreach (var o in gameObjects) + { + result.AddRange(FindGameObjectProperties(o, rest)); + } + + return result; + } + + public static Type FindFirstComponentType(string className) + { + var fullType = Type.GetType(className, false, true); + if (fullType != null) + { + return fullType.IsSubclassOf(typeof(UnityEngine.Component)) ? fullType : null; + } + + foreach (Assembly a in AppDomain.CurrentDomain.GetAssemblies()) + { + foreach (var type in a.GetTypes()) + { + if (type.IsSubclassOf(typeof(UnityEngine.Component)) && + type.Name.Equals(className, StringComparison.OrdinalIgnoreCase)) + { + return type; + } + } + } + + return null; + } + + private static bool ComponentMatchesPattern(Component component, string pattern) + { + var type = component.GetType(); + while (type != typeof(Component)) + { + if (type.Name.Equals(pattern, StringComparison.OrdinalIgnoreCase)) + { + return true; + } + + type = type.BaseType; + } + + return false; + } + + private static List<PropertyOrField> FindGameObjectProperties(GameObject obj, string pattern) + { + var descriptor = obj.name + " [" + obj.GetInstanceID() + "]"; + var result = new List<PropertyOrField>(); + if (TryAddObjectProperty(result, descriptor, obj, pattern)) + { + return result; + } + + var idx = pattern.IndexOf('.'); + if (idx >= 0) + { + var componentName = pattern.Substring(0, idx); + var rest = pattern.Substring(idx + 1); + foreach (var component in obj.GetComponents<Component>()) + { + if (ComponentMatchesPattern(component, componentName)) + { + TryAddObjectProperty(result, descriptor, component, rest); + } + } + } + else + { + foreach (var component in obj.GetComponents<Component>()) + { + if (ComponentMatchesPattern(component, pattern)) + { + result.Add(new PropertyOrField(descriptor, component)); + } + } + } + + return result; + } + + private static bool TryAddObjectProperty(List<PropertyOrField> list, string descriptor, object obj, string pattern) + { + var result = new List<PropertyOrField>(); + var prop = obj.GetType().GetProperty(pattern, BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); + var field = obj.GetType().GetField(pattern, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.IgnoreCase); + if (prop != null || field != null) + { + list.Add(new PropertyOrField(descriptor, obj, prop, field)); + return true; + } + + return false; + } + + private static void AddStaticProperty(List<PropertyOrField> list, Type staticType, string pattern) + { + var result = new List<PropertyOrField>(); + var prop = staticType.GetProperty(pattern, BindingFlags.Public | BindingFlags.Static | BindingFlags.IgnoreCase); + var field = staticType.GetField(pattern, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.IgnoreCase); + if (prop != null || field != null) + { + var name = prop != null ? prop.Name : field.Name; + list.Add(new PropertyOrField(staticType.Name + "." + name, null, prop, field)); + } + } + + private static Type[] UnityStatics = new Type[] { + typeof(Application), typeof(Time), typeof(Screen), typeof(QualitySettings), typeof(Input), + + #if UNITY_PHYSICS + typeof(Physics), + #endif + + #if UNITY_AUDIO + typeof(AudioSettings), + #endif + + #if UNITY_PHYSICS_2D + typeof(Physics2D) + #endif + }; + } + + internal class PropertyOrField + { + public string Descriptor { get; set; } + public object Object { get; set; } + public PropertyInfo Property { get; set; } + public FieldInfo Field { get; set; } + public object Value { get; set; } + + public PropertyOrField(string descriptor, object obj, PropertyInfo property, FieldInfo field) + { + Descriptor = descriptor; + Object = obj; + Property = property; + Field = field; + } + + public PropertyOrField(string descriptor, object value) + { + Descriptor = descriptor; + Value = value; + } + + public void SetValue(object value) + { + if (Property != null && Property.CanWrite) + { + Property.SetValue(Object, value); + } + else if (Field != null) + { + Field.SetValue(Object, value); + } + } + + public object GetValue() + { + if (Property != null && Property.CanRead) + { + return Property.GetValue(Object); + } + else if (Field != null) + { + return Field.GetValue(Object); + } + else + { + return Value; + } + } + + public Type Type + { + get + { + if (Property != null) + { + return Property.PropertyType; + } + else if (Field != null) + { + return Field.FieldType; + } + else + { + return Value?.GetType(); + } + } + } + + public bool CanWrite + { + get + { + if (Property != null) + { + return Property.CanWrite; + } + else + { + return Field != null; + } + } + } + + public bool CanRead + { + get + { + if (Property != null) + { + return Property.CanRead; + } + else + { + return Field != null || Value != null; + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Proxima/Runtime/ProximaCommandHelpers.cs.meta b/Assets/Proxima/Runtime/ProximaCommandHelpers.cs.meta new file mode 100644 index 0000000..91d3a1d --- /dev/null +++ b/Assets/Proxima/Runtime/ProximaCommandHelpers.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1e0f703866146ad4d9d9ef9f598eb95f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/ProximaComponentCommands.cs b/Assets/Proxima/Runtime/ProximaComponentCommands.cs new file mode 100644 index 0000000..0a45ad2 --- /dev/null +++ b/Assets/Proxima/Runtime/ProximaComponentCommands.cs @@ -0,0 +1,785 @@ +using System; +using System.Linq; +using System.Collections; +using System.Collections.Generic; +using System.Reflection; +using UnityEngine; +using UnityEngine.Scripting; + +namespace Proxima +{ + internal delegate void PropertySetter(object obj, object value); + internal delegate object PropertyGetter(object obj); + internal delegate bool PropertyUpdater(object obj, ref object value); + + internal class ProximaComponentCommands + { + [Serializable] + internal class ButtonInfo + { + public string Id; + public string Text; + + [NonSerialized] + public MethodInfo Method; + } + + [Serializable] + internal class PropertyInfo + { + public string Name; + public string Type; + + [SerializeIf("ShouldSerializeValue")] + public object Value; + + [Preserve] + public bool ShouldSerializeValue() + { + return Children == null; + } + + public object Children; + public List<PropertyInfo> ChildProps => (List<PropertyInfo>)Children; + + [NonSerialized] + public PropertySetter Setter; + + [NonSerialized] + public PropertyGetter Getter; + + [NonSerialized] + public PropertyUpdater Updater; + + [NonSerialized] + public Type PropertyType; + } + + [Serializable] + internal class ComponentInfo + { + public int Id; + public int Order; + public string Name; + public object Properties; + public List<PropertyInfo> Props => (List<PropertyInfo>)Properties; + public object Buttons; + public List<ButtonInfo> Btns => (List<ButtonInfo>)Buttons; + + [NonSerialized] + public Component Component; + + [NonSerialized] + public bool Temp; + } + + [Serializable] + internal class ComponentList + { + public object Components = new List<ComponentInfo>(); + public List<ComponentInfo> Comps => (List<ComponentInfo>)Components; + public List<int> Destroyed = new List<int>(); + } + + private static Dictionary<int, ComponentStream> _goToStream; + private static Dictionary<string, ComponentStream> _streams; + private static Dictionary<int, ComponentInfo> _idToComponentInfo; + public static Dictionary<int, ComponentInfo> IdToComponentInfo => _idToComponentInfo; + + private static List<ComponentInfo> _pool = new List<ComponentInfo>(); + private static readonly int _poolSize = 25; + + internal static Action<Component, ComponentInfo> ProHook_CreateComponentButtons; + + private static ComponentInfo GetFromPool(int id, string name, Component component, bool temp) + { + ComponentInfo info; + if (_pool.Count > 0) + { + info = _pool[_pool.Count - 1]; + _pool.RemoveAt(_pool.Count - 1); + } + else + { + info = new ComponentInfo { + Properties = new List<PropertyInfo>(), + Buttons = new List<ButtonInfo>() + }; + } + + info.Id = id; + info.Name = name; + info.Component = component; + info.Temp = temp; + return info; + } + + private static void ReturnToPool(ComponentInfo info) + { + if (_pool.Count >= _poolSize) + { + return; + } + + info.Id = 0; + info.Name = null; + info.Component = null; + info.Props.Clear(); + info.Btns.Clear(); + _pool.Add(info); + } + + private static bool AreEqual(object lhs, object rhs) + { + if (lhs == null && rhs == null) + { + return true; + } + + if (lhs == null || rhs == null) + { + return false; + } + + return lhs.Equals(rhs); + } + + [ProximaInitialize] + public static void Init() + { + _goToStream = new Dictionary<int, ComponentStream>(); + _streams = new Dictionary<string, ComponentStream>(); + _idToComponentInfo = new Dictionary<int, ComponentInfo>(); + } + + [ProximaTeardown] + public static void Teardown() + { + foreach (var stream in _streams.Values) + { + stream.Cleanup(); + } + + _goToStream.Clear(); + _streams.Clear(); + _idToComponentInfo.Clear(); + } + + private class ComponentStream + { + public HashSet<string> ActiveStreamIds = new HashSet<string>(); + public HashSet<string> PendingStreamIds = new HashSet<string>(); + public int GameObjectId; + + private List<Component> _components = new List<Component>(); + private ComponentList _componentList = new ComponentList(); + private ComponentList _changeList = new ComponentList(); + private int _lastUpdateFrame; + private int _lastUpdatedIndex; + + public ComponentList Update(string id) + { + UpdateChangeList(); + + if (PendingStreamIds.Contains(id)) + { + PendingStreamIds.Remove(id); + ActiveStreamIds.Add(id); + return _componentList; + } + + bool changed = _changeList.Comps.Count > 0 || _changeList.Destroyed.Count > 0; + return changed ? _changeList : null; + } + + public void Cleanup() + { + foreach (var ci in _componentList.Comps) + { + _idToComponentInfo.Remove(ci.Id); + ReturnToPool(ci); + } + } + + private void UpdateChangeList() + { + if (_lastUpdateFrame == Time.frameCount) + { + return; + } + + _lastUpdateFrame = Time.frameCount; + + var cis = _changeList.Comps; + for (int i = 0 ; i < cis.Count; i++) + { + if (cis[i].Temp) + { + ReturnToPool(cis[i]); + } + } + + _changeList.Comps.Clear(); + _changeList.Destroyed.Clear(); + + if (!ProximaGameObjectCommands.IdToGameObject.TryGetValue(GameObjectId, out var go) || !go) + { + return; + } + + go.GetComponents(_components); + UpdateDeletedComponents(); + + if (_lastUpdatedIndex >= _components.Count) + { + if (_lastUpdatedIndex < ProximaInspector.MaxComponentUpdateFrequency) + { + _lastUpdatedIndex++; + return; + } + else + { + _lastUpdatedIndex = 0; + } + } + + UpdateComponentInfo(_components[_lastUpdatedIndex], _lastUpdatedIndex); + _lastUpdatedIndex++; + } + + private bool ShouldHide(Component component) + { + return !ProximaGameObjectCommands.ShowHidden && component.hideFlags.HasFlag(HideFlags.HideInInspector); + } + + private void UpdateDeletedComponents() + { + for (int i = _componentList.Comps.Count - 1; i >= 0; i--) + { + var ci = _componentList.Comps[i]; + if (!ci.Component || ShouldHide(ci.Component)) + { + _idToComponentInfo.Remove(ci.Id); + _componentList.Comps.RemoveAt(i); + _changeList.Destroyed.Add(ci.Id); + ReturnToPool(ci); + } + } + } + + private void UpdateComponentInfo(Component component, int order) + { + if (ShouldHide(component)) + { + return; + } + + var id = component.GetInstanceID(); + if (!_idToComponentInfo.TryGetValue(id, out var ci)) + { + ci = GetFromPool(id, component.GetType().Name, component, false); + ci.Order = order; + _componentList.Comps.Add(ci); + _idToComponentInfo.Add(component.GetInstanceID(), ci); + CreateComponentProperties(component, ci); + ProHook_CreateComponentButtons?.Invoke(component, ci); + _changeList.Comps.Add(ci); + } + else + { + UpdateProperties(ci, order); + } + } + + private bool CallUpdater(object parent, PropertyInfo property) + { + return property.Updater(parent, ref property.Value); + } + + private bool UpdatePropertyValue(object parent, PropertyInfo property, bool force) + { + if (force && property.Getter != null) + { + property.Value = property.Getter(parent); + return true; + } + else if (property.Updater != null) + { + return CallUpdater(parent, property); + } + else if (property.Getter != null) + { + var value = property.Getter(parent); + if (!AreEqual(value, property.Value)) + { + property.Value = value; + return true; + } + } + + return false; + } + + private bool UpdateProperty(object parent, PropertyInfo property) + { + bool changed = UpdatePropertyValue(parent, property, false); + if (property.Value != null && property.Children != null) + { + if (ArrayOrList.IsArrayOrList(property.PropertyType)) + { + changed = UpdateArrayItemProperties(property) || changed; + } + + if (property.ChildProps != null) + { + foreach (var child in property.ChildProps) + { + changed = UpdateProperty(property.Value, child) || changed; + } + } + } + + return changed; + } + + private void UpdateProperties(ComponentInfo ci, int order) + { + ComponentInfo clci = null; + for (int i = 0; i < ci.Props.Count; i++) + { + var property = ci.Props[i]; + if (UpdateProperty(ci.Component, property)) + { + if (clci == null) + { + clci = GetFromPool(ci.Id, ci.Name, ci.Component, true); + _changeList.Comps.Add(clci); + } + + clci.Props.Add(property); + } + } + + if (ci.Order != order) + { + ci.Order = order; + if (clci == null) + { + clci = GetFromPool(ci.Id, ci.Name, ci.Component, true); + _changeList.Comps.Add(clci); + } + + clci.Order = order; + } + } + + private void UpdateChildProperties(PropertyGetter parentGetter, List<PropertyInfo> list) + { + var parent = parentGetter(null); + if (parent != null) + { + foreach (var property in list) + { + UpdatePropertyValue(parent, property, false); + } + } + } + + private void CreateComponentProperties(Component component, ComponentInfo ci) + { + ci.Properties = new List<PropertyInfo>(); + var type = component.GetType(); + + if (ProximaReflection_Generated.Properties.TryGetValue(component.GetType().FullName, out var props)) + { + CreatePropertiesFromOverride(ci, props); + } + else if (component is MonoBehaviour) + { + CreatePropertiesForMonoBehaviour(component, ci); + } + else + { + CreatePropertiesForNativeObject(component, ci); + } + } + + private void CreatePropertiesFromOverride(ComponentInfo ci, PropertyInfo[] props) + { + foreach (var prop in props) + { + AddPropertyRecursively(ci.Component, ci.Props, prop.Name, prop.PropertyType, prop.Setter, prop.Getter, prop.Updater); + } + } + + private PropertyInfo AddPropertyToList(object parent, List<PropertyInfo> list, string name, Type type, PropertySetter setter, PropertyGetter getter, PropertyUpdater updater) + { + var propInfo = new PropertyInfo { + Name = name, + Type = ProximaSerialization.GetSerializedTypeName(type), + PropertyType = type, + Setter = setter, + Getter = getter, + Updater = updater + }; + + UpdatePropertyValue(parent, propInfo, true); + list.Add(propInfo); + return propInfo; + } + + private PropertyGetter GetPropertyGetter(System.Reflection.PropertyInfo property, FieldInfo field) + { + if (property != null && property.CanRead) + { + return property.GetValue; + } + else if (field != null) + { + return field.GetValue; + } + + return null; + } + + private PropertySetter GetPropertySetter(System.Reflection.PropertyInfo property, FieldInfo field) + { + if (property != null && property.CanWrite) + { + return property.SetValue; + } + else if (field != null) + { + return field.SetValue; + } + + return null; + } + + private bool UpdateArrayItemProperties(PropertyInfo property) + { + if (property.Value == null) + { + if (property.Children != null) + { + property.Children = null; + return true; + } + + return false; + } + + if (property.Children == null) + { + property.Children = new List<PropertyInfo>(); + } + + var length = ArrayOrList.Count(property.Value); + var oldLength = property.ChildProps.Count; + + if (length < oldLength) + { + property.ChildProps.RemoveRange(length, oldLength - length); + return true; + } + + if (length > oldLength) + { + var elementType = ArrayOrList.GetElementType(property.PropertyType); + while (length > oldLength) + { + var index = oldLength; + PropertySetter setter = (o, v) => ArrayOrList.Set(o, index, v); + PropertyGetter getter = (o) => ArrayOrList.Get(o, index); + AddPropertyRecursively(property.Value, property.ChildProps, index.ToString(), elementType, setter, getter); + oldLength++; + } + + return true; + } + + return false; + } + + private void AddPropertyRecursively(object parent, List<PropertyInfo> list, string name, Type type, PropertySetter setter, PropertyGetter getter, PropertyUpdater updater = null) + { + if (HasEditor(type)) + { + AddPropertyToList(parent, list, name, type, setter, getter, updater); + } + else if (ArrayOrList.IsArrayOrList(type)) + { + var propInfo = AddPropertyToList(parent, list, name, type, setter, getter, updater); + UpdateArrayItemProperties(propInfo); + } + else + { + var propInfo = AddPropertyToList(parent, list, name, type, setter, getter, updater); + propInfo.Children = new List<PropertyInfo>(); + if (propInfo.Value != null) + { + AddChildProperties(propInfo.Value, type, propInfo.ChildProps); + } + } + } + + private void AddPropertyRecursively(object parent, List<PropertyInfo> list, string name, System.Reflection.PropertyInfo property, FieldInfo field) + { + var type = property != null ? property.PropertyType : field.FieldType; + var setter = GetPropertySetter(property, field); + var getter = GetPropertyGetter(property, field); + AddPropertyRecursively(parent, list, name, type, setter, getter); + } + + private void AddEnabledProperty(ComponentInfo ci) + { + PropertySetter setter = (c, v) => ((MonoBehaviour)c).enabled = (bool)v; + PropertyGetter getter = c => ((MonoBehaviour)c).enabled; + PropertyUpdater updater = (object o, ref object v) => { var x = ((MonoBehaviour)o).enabled; if (!x.Equals((System.Boolean)v)) { v = x; return true; } return false; }; + AddPropertyToList(ci.Component, ci.Props, "enabled", typeof(bool), setter, getter, updater); + } + + private static List<Type> _nativeSerializedTypes = new List<Type>() { + typeof(Gradient), + // These types are problematic because Gradient returns a new array copy in the getter. + // typeof(GradientColorKey), typeof(GradientAlphaKey), +#if UNITY_PHYSICS + typeof(SoftJointLimit), typeof(SoftJointLimitSpring), + typeof(JointDrive), typeof(JointMotor), typeof(JointSpring), + typeof(JointLimits), typeof(WheelFrictionCurve), +#endif +#if UNITY_PHYSICS_2D + typeof(JointAngleLimits2D), typeof(JointTranslationLimits2D), + typeof(JointMotor2D), typeof(JointSuspension2D), +#endif +#if UNITY_UI + typeof(RectOffset), +#endif + }; + + private void AddChildProperties(object parent, Type type, List<PropertyInfo> list) + { + foreach (var field in type.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)) + { + if ((field.IsPublic || field.GetCustomAttribute<SerializeField>() != null) && + field.GetCustomAttribute<HideInInspector>() == null) + { + // If there's a custom editor, often just changing a field will have no effect. + // Search for a corresponding property we can use instead. + // https://docs.unity3d.com/Manual/VariablesAndTheInspector.html + var fieldWithoutPrefix = + field.Name.StartsWith("m_") ? field.Name.Substring(2) : + // field.Name.StartsWith("k") ? field.Name.Substring(1) : // This isn't true... + field.Name.StartsWith("_") ? field.Name.Substring(1) : + field.Name; + + var fieldWithoutPrefixUpperCase = fieldWithoutPrefix[0].ToString().ToUpper() + fieldWithoutPrefix.Substring(1); + var property = type.GetProperties().FirstOrDefault(p => p.Name == fieldWithoutPrefix || p.Name == fieldWithoutPrefixUpperCase); + if (property != null && property.PropertyType == field.FieldType && ShouldUseProperty(property)) + { + AddPropertyRecursively(parent, list, property.Name, property, field); + } + else if (ShouldUseField(field)) + { + AddPropertyRecursively(parent, list, field.Name, null, field); + } + } + } + + if (_nativeSerializedTypes.Contains(type)) + { + foreach (var property in type.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)) + { + if (property.CanWrite && ShouldUseProperty(property)) + { + AddPropertyRecursively(parent, list, property.Name, property, null); + } + } + } + } + + private void CreatePropertiesForMonoBehaviour(Component component, ComponentInfo ci) + { + AddEnabledProperty(ci); + AddChildProperties(component, component.GetType(), ci.Props); + } + + private static HashSet<string> _propertySkipList = new HashSet<string> + { + "name", "tag", "hideFlags", "gameObject", "transform", + "camera", "light", "meshFilter", "meshRenderer", "boxCollider", "scene", + "material", "mesh" + }; + + private static HashSet<string> _typesWithEditor = new HashSet<string> + { + typeof(string).Name, typeof(bool).Name, typeof(byte).Name, typeof(sbyte).Name, + typeof(short).Name, typeof(ushort).Name, + typeof(int).Name, typeof(uint).Name, typeof(long).Name, typeof(ulong).Name, + typeof(float).Name, typeof(double).Name, + typeof(Vector2).Name, typeof(Vector3).Name, typeof(Vector4).Name, + typeof(Vector2Int).Name, typeof(Vector3Int).Name, typeof(Quaternion).Name, + typeof(Rect).Name, typeof(RectInt).Name, typeof(Bounds).Name, typeof(BoundsInt).Name, + typeof(Color).Name, typeof(LayerMask).Name + }; + + private static HashSet<string> _disallowedAttrs = new HashSet<string> + { + "HideInInspector", "ObsoleteAttribute", "NativeConditionalAttribute", "EditorBrowsableAttribute" + }; + + private bool HasEditor(Type type) + { + return _typesWithEditor.Contains(type.Name) || + type.IsEnum || + type.IsSubclassOf(typeof(UnityEngine.Object)); + } + + private bool ShouldUseType(Type type) + { + if (!type.IsArray && type.IsSerializable) + { + return true; + } + + if (HasEditor(type)) + { + return true; + } + + if (type.IsArray && ShouldUseType(type.GetElementType())) + { + return true; + } + + if (typeof(IList).IsAssignableFrom(type) && type.IsGenericType && ShouldUseType(type.GetGenericArguments()[0])) + { + return true; + } + + if (_nativeSerializedTypes.Contains(type)) + { + return true; + } + + return false; + } + + private bool ShouldUse(IEnumerable<Attribute> attributes, string name, Type type) + { + var attrs = attributes.Select(a => a.GetType().Name); + return + !_propertySkipList.Contains(name) && + ShouldUseType(type) && + !attrs.Intersect(_disallowedAttrs).Any(); + } + + private bool ShouldUseProperty(System.Reflection.PropertyInfo property) + { + return ShouldUse(property.GetCustomAttributes(), property.Name, property.PropertyType); + } + + private bool ShouldUseField(FieldInfo field) + { + return ShouldUse(field.GetCustomAttributes(), field.Name, field.FieldType); + } + + private void CreatePropertiesForNativeObject(Component component, ComponentInfo ci) + { + // Fallback to just enumerating public properties. This works well for some components. + foreach (var property in component.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public)) + { + if (ShouldUseProperty(property)) + { + AddPropertyRecursively(ci.Component, ci.Props, property.Name, property, null); + } + } + } + } + + [ProximaStreamStart("Components")] + public static void StartStream(string id, int gameObjectId) + { + if (!_goToStream.TryGetValue(gameObjectId, out var stream)) + { + stream = new ComponentStream(); + stream.GameObjectId = gameObjectId; + _goToStream.Add(gameObjectId, stream); + } + + stream.PendingStreamIds.Add(id); + _streams.Add(id, stream); + } + + [ProximaStreamUpdate("Components")] + public static ComponentList UpdateStream(string id) + { + if (_streams.TryGetValue(id, out var stream)) + { + return stream.Update(id); + } + + return null; + } + + [ProximaStreamStop("Components")] + public static void StopStream(string id) + { + if (_streams.TryGetValue(id, out var stream)) + { + stream.PendingStreamIds.Remove(id); + stream.ActiveStreamIds.Remove(id); + if (stream.PendingStreamIds.Count == 0 && stream.ActiveStreamIds.Count == 0) + { + stream.Cleanup(); + _goToStream.Remove(stream.GameObjectId); + } + } + + _streams.Remove(id); + } + + [ProximaCommand("Internal")] + public static void DestroyComponent(int id) + { + if (!_idToComponentInfo.TryGetValue(id, out var ci)) + { + Log.Warning($"DestroyComponent: Component with id {id} not found"); + return; + } + + if (ci.Component) + { + UnityEngine.Object.DestroyImmediate(ci.Component); + } + } + + public static object GetPropertyValueForTest(int componentId, string name) + { + if (_idToComponentInfo.TryGetValue(componentId, out var ci)) + { + var prop = ci.Props.Find(p => p.Name == name); + if (prop != null) + { + return prop.Getter(ci.Component); + } + } + + return null; + } + + public static Type GetPropertyTypeForTest(int componentId, string name) + { + if (_idToComponentInfo.TryGetValue(componentId, out var ci)) + { + var prop = ci.Props.Find(p => p.Name == name); + if (prop != null) + { + return prop.PropertyType; + } + } + + return null; + } + } +} \ No newline at end of file diff --git a/Assets/Proxima/Runtime/ProximaComponentCommands.cs.meta b/Assets/Proxima/Runtime/ProximaComponentCommands.cs.meta new file mode 100644 index 0000000..e8895f1 --- /dev/null +++ b/Assets/Proxima/Runtime/ProximaComponentCommands.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0f7284d77cab99b45a8412399566627f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/ProximaConnectUI.cs b/Assets/Proxima/Runtime/ProximaConnectUI.cs new file mode 100644 index 0000000..f55e969 --- /dev/null +++ b/Assets/Proxima/Runtime/ProximaConnectUI.cs @@ -0,0 +1,229 @@ +#if UNITY_TMPRO + +using TMPro; +using UnityEngine; +using UnityEngine.EventSystems; +using UnityEngine.UI; + +namespace Proxima +{ + [HelpURL("https://www.unityproxima.com/docs")] + public class ProximaConnectUI : MonoBehaviour + { + // Insepctor to start and stop. + [SerializeField] + private ProximaInspector _proximaInspector; + public ProximaInspector ProximaInspector + { + get => _proximaInspector; + set => _proximaInspector = value; + } + + // Input field to enter the display name. + [SerializeField] + private TMP_InputField _displayNameInputField; + public TMP_InputField DisplayNameInputField + { + get => _displayNameInputField; + set => _displayNameInputField = value; + } + + // Input field to enter the password. + [SerializeField] + private TMP_InputField _passwordInputField; + public TMP_InputField PasswordInputField + { + get => _passwordInputField; + set => _passwordInputField = value; + } + + // Text to display errors. + [SerializeField] + private TMP_Text _errorLabel; + public TMP_Text ErrorLabel + { + get => _errorLabel; + set => _errorLabel = value; + } + + // Button to start Proxima. + [SerializeField] + private Button _startButton; + public Button StartButton + { + get => _startButton; + set => _startButton = value; + } + + // Button to open Proxima in the browser. + [SerializeField] + private Button _openButton; + public Button OpenButton + { + get => _openButton; + set => _openButton = value; + } + + // Button to stop Proxima. + [SerializeField] + private Button _stopButton; + public Button StopButton + { + get => _stopButton; + set => _stopButton = value; + } + + // GameObject to show when Proxima is not started. + [SerializeField] + private GameObject _connectUIRoot; + public GameObject ConnectUIRoot + { + get => _connectUIRoot; + set => _connectUIRoot = value; + } + + // GameObject to show when Proxima is started. + [SerializeField] + private GameObject _startedUIRoot; + public GameObject StartedUIRoot + { + get => _startedUIRoot; + set => _startedUIRoot = value; + } + + // Button to show/hide the UI. + [SerializeField] + private Button _showHideButton; + public Button ShowHideButton + { + get => _showHideButton; + set => _showHideButton = value; + } + + void Start() + { + if (EventSystem.current == null) + { + gameObject.AddComponent<EventSystem>(); + gameObject.AddComponent<StandaloneInputModule>(); + } + + _proximaInspector.Status.Changed += OnStatusChanged; + _displayNameInputField.text = _proximaInspector.DisplayName; + _displayNameInputField.onSubmit.AddListener((s) => _passwordInputField.Select()); + _startButton.onClick.AddListener(OnStartButtonClicked); + + if (_openButton) + { + #if UNITY_WEBGL && !UNITY_EDITOR + var trigger = _openButton.gameObject.AddComponent<EventTrigger>(); + var pointerDown = new EventTrigger.Entry(); + pointerDown.eventID = EventTriggerType.PointerDown; + pointerDown.callback.AddListener((e) => { + ProximaWebGLConnection.OpenOnMouseUp(_proximaInspector.Status.ConnectInfo); + }); + trigger.triggers.Add(pointerDown); + #else + _openButton.onClick.AddListener(() => { + Application.OpenURL(_proximaInspector.Status.ConnectInfo); + }); + #endif + } + + _stopButton.onClick.AddListener(OnStopButtonClicked); + _showHideButton.onClick.AddListener(TogglePanel); + _passwordInputField.onSubmit.AddListener((s) => OnStartButtonClicked()); + + OnStatusChanged(); + } + + private void OnDestroy() + { + if (_proximaInspector) + { + _proximaInspector.Status.Changed -= OnStatusChanged; + } + } + + private void OnStatusChanged() + { + _startButton.interactable = !_proximaInspector.Status.IsRunning; + + if (_proximaInspector.Status.Listening) + { + _startedUIRoot.SetActive(true); + _connectUIRoot.SetActive(false); + } + else + { + _startedUIRoot.SetActive(false); + _connectUIRoot.SetActive(true); + } + + if (_errorLabel != null) + { + _errorLabel.text = _proximaInspector.Status.Error; + _errorLabel.gameObject.SetActive(!string.IsNullOrWhiteSpace(_proximaInspector.Status.Error)); + } + } + + private void OnStartButtonClicked() + { + if (_proximaInspector != null && + _passwordInputField != null && + _displayNameInputField != null && + !_proximaInspector.Status.IsRunning) + { + _proximaInspector.Password = _passwordInputField.text; + _proximaInspector.DisplayName = _displayNameInputField.text; + _proximaInspector.Run(); + } + } + + private void OnStopButtonClicked() + { + if (_proximaInspector != null) + { + _proximaInspector.Stop(); + } + } + + private void Update() + { + if (Input.GetKeyDown(KeyCode.Escape)) + { + HidePanel(); + } + } + + public void ShowPanel() + { + var panel = transform.GetChild(0).gameObject; + panel.SetActive(true); + } + + public void HidePanel() + { + var panel = transform.GetChild(0).gameObject; + panel.SetActive(false); + } + + public void TogglePanel() + { + var panel = transform.GetChild(0).gameObject; + panel.SetActive(!panel.activeSelf); + } + } +} + +#else + +namespace Proxima +{ + public class ProximaConnectUI : UnityEngine.MonoBehaviour + { + public ProximaInspector ProximaInspector; + } +} + +#endif \ No newline at end of file diff --git a/Assets/Proxima/Runtime/ProximaConnectUI.cs.meta b/Assets/Proxima/Runtime/ProximaConnectUI.cs.meta new file mode 100644 index 0000000..3ae3416 --- /dev/null +++ b/Assets/Proxima/Runtime/ProximaConnectUI.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d20fb960dcd6aee4c91d76796c4e489a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/ProximaConnection.cs b/Assets/Proxima/Runtime/ProximaConnection.cs new file mode 100644 index 0000000..15d6fb1 --- /dev/null +++ b/Assets/Proxima/Runtime/ProximaConnection.cs @@ -0,0 +1,10 @@ +using System.IO; + +namespace Proxima +{ + internal interface ProximaConnection + { + bool Open { get; } + void SendMessage(MemoryStream data); + } +} \ No newline at end of file diff --git a/Assets/Proxima/Runtime/ProximaConnection.cs.meta b/Assets/Proxima/Runtime/ProximaConnection.cs.meta new file mode 100644 index 0000000..b9b71dc --- /dev/null +++ b/Assets/Proxima/Runtime/ProximaConnection.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 191b8b0b4ac76204b84195265c432cd3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/ProximaDispatcher.cs b/Assets/Proxima/Runtime/ProximaDispatcher.cs new file mode 100644 index 0000000..090ded3 --- /dev/null +++ b/Assets/Proxima/Runtime/ProximaDispatcher.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections; +using System.Collections.Concurrent; +using UnityEngine; + +namespace Proxima +{ + internal class ProximaDispatcher + { + private ConcurrentQueue<Action> _queue = new ConcurrentQueue<Action>(); + private MonoBehaviour _coroutineRunner; + + public ProximaDispatcher(MonoBehaviour coroutineRunner) + { + _coroutineRunner = coroutineRunner; + } + + public void Dispatch(Action action) + { + _queue.Enqueue(action); + } + + public void InvokeAll() + { + while (_queue.TryDequeue(out var action)) + { + try + { + action(); + } + catch (Exception e) + { + Log.Exception(e); + } + } + } + + public void StartCoroutine(IEnumerator coroutine) + { + if (_coroutineRunner) + { + _coroutineRunner.StartCoroutine(coroutine); + } + } + } +} \ No newline at end of file diff --git a/Assets/Proxima/Runtime/ProximaDispatcher.cs.meta b/Assets/Proxima/Runtime/ProximaDispatcher.cs.meta new file mode 100644 index 0000000..5b2bd32 --- /dev/null +++ b/Assets/Proxima/Runtime/ProximaDispatcher.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: eada919c535fd264ab8d40736ba71513 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/ProximaFeatures.cs b/Assets/Proxima/Runtime/ProximaFeatures.cs new file mode 100644 index 0000000..158b352 --- /dev/null +++ b/Assets/Proxima/Runtime/ProximaFeatures.cs @@ -0,0 +1,62 @@ +using System.Collections.Generic; +using System.Reflection; + +namespace Proxima +{ + internal class ProximaFeatures + { + [ProximaCommand("Internal")] + public static List<string> GetInstalledFeatures() + { + var features = new List<string>(); + var assembly = Assembly.GetAssembly(typeof(ProximaInspector)); + + if (assembly.GetType("Proxima.ProximaConsoleCommands") != null) + { + features.Add("console"); + } + + if (assembly.GetType("Proxima.ProximaProComponentCommands") != null) + { + features.Add("inspectorEdit"); + } + + if (assembly.GetType("Proxima.ProximaProfilerCommands") != null) + { + features.Add("profiler"); + } + + return features; + } + + public static void RegisterProFeatures() + { + ProximaInspector.RegisterCommands<ProximaFeatures>(); + + var assembly = Assembly.GetAssembly(typeof(ProximaInspector)); + + var consoleCommands = assembly.GetType("Proxima.ProximaConsoleCommands"); + if (consoleCommands != null) + { + ProximaInspector.RegisterCommands(consoleCommands); + } + + var proComponentCommands = assembly.GetType("Proxima.ProximaProComponentCommands"); + if (proComponentCommands != null) + { + ProximaInspector.RegisterCommands(proComponentCommands); + } + + var profilerCommands = assembly.GetType("Proxima.ProximaProfilerCommands"); + if (profilerCommands != null) + { + ProximaInspector.RegisterCommands(profilerCommands); + } + } + + public static bool AllFeaturesInstalled() + { + return GetInstalledFeatures().Count == 3; + } + } +} \ No newline at end of file diff --git a/Assets/Proxima/Runtime/ProximaFeatures.cs.meta b/Assets/Proxima/Runtime/ProximaFeatures.cs.meta new file mode 100644 index 0000000..f389735 --- /dev/null +++ b/Assets/Proxima/Runtime/ProximaFeatures.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 04e66cb66bc0fa94995a4e0fd4c81ef1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/ProximaGameObjectCommands.cs b/Assets/Proxima/Runtime/ProximaGameObjectCommands.cs new file mode 100644 index 0000000..78c5f52 --- /dev/null +++ b/Assets/Proxima/Runtime/ProximaGameObjectCommands.cs @@ -0,0 +1,534 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +using UnityEngine.SceneManagement; + +namespace Proxima +{ + internal class ProximaGameObjectCommands + { + [Serializable] + internal class GameObjectInfo + { + public int Id; + public string Name; + public bool ActiveSelf; + public int Parent; + public int Depth; + public int SiblingIndex; + public int ChildCount; + public int Order; + public int Layer; + public string Tag; + public string Scene; + } + + [Serializable] + internal class GameObjectList + { + public List<GameObjectInfo> GameObjects = new List<GameObjectInfo>(); + public string[] Layers; + public List<int> Destroyed = new List<int>(); + } + + private static Dictionary<int, GameObject> _idToGameObject; + public static Dictionary<int, GameObject> IdToGameObject => _idToGameObject; + private static List<GameObject> _rootGameObjects; + private static GameObjectList _gameObjects; + private static GameObjectList _changeList; + private static Dictionary<int, GameObjectInfo> _gameObjectToInfo; + private static int _lastUpdate; + private static int _order; + private static GameObject _lastUpdatedGameObject; + private static int _lastDeleteCheckedGameObjectInfo = -1; + private static Scene _dontDestroyOnLoadScene; + private static HashSet<string> _pendingStreamIds; + private static bool _showHidden; + public static bool ShowHidden => _showHidden; + + [ProximaInitialize] + public static void Init() + { + _idToGameObject = new Dictionary<int, GameObject>(); + _rootGameObjects = new List<GameObject>(); + _gameObjects = new GameObjectList(); + _gameObjects.Layers = Enumerable.Range(0, 31).Select(index => LayerMask.LayerToName(index)).ToArray(); + _changeList = new GameObjectList(); + _gameObjectToInfo = new Dictionary<int, GameObjectInfo>(); + _lastUpdate = -1; + _pendingStreamIds = new HashSet<string>(); + + var ddolGO = new GameObject("Proxima DDOL"); + GameObject.DontDestroyOnLoad(ddolGO); + _dontDestroyOnLoadScene = ddolGO.scene; + GameObject.Destroy(ddolGO); + } + + [ProximaTeardown] + public static void Teardown() + { + _idToGameObject = null; + _rootGameObjects = null; + _gameObjects = null; + _changeList = null; + _gameObjectToInfo = null; + _lastUpdate = -1; + _pendingStreamIds = null; + _order = 0; + _lastUpdatedGameObject = null; + _lastDeleteCheckedGameObjectInfo = -1; + _dontDestroyOnLoadScene = default; + } + + [ProximaCommand("Internal")] + public static void SetParent(int id, int parentId, int index) + { + if (_idToGameObject.TryGetValue(id, out var go)) + { + _idToGameObject.TryGetValue(parentId, out var parentGo); + go.transform.SetParent(parentGo?.transform, true); + go.transform.SetSiblingIndex(index); + } + else + { + Log.Warning($"SetParent: GameObject with id {id} not found"); + } + } + + [ProximaCommand("Internal")] + public static void SetScene(int id, int sceneIndex, int index) + { + if (_idToGameObject.TryGetValue(id, out var go)) + { + if (sceneIndex < SceneManager.sceneCount) + { + go.transform.SetParent(null, true); + SceneManager.MoveGameObjectToScene(go, SceneManager.GetSceneAt(sceneIndex)); + go.transform.SetSiblingIndex(index); + } + } + else + { + Log.Warning($"SetScene: GameObject with id {id} not found"); + } + } + + [ProximaCommand("Internal")] + public static void SetActive(int id, bool active) + { + if (_idToGameObject.TryGetValue(id, out var go)) + { + go.SetActive(active); + } + else + { + Log.Warning($"SetActive: GameObject with id {id} not found"); + } + } + + [ProximaCommand("Internal")] + public static void SetName(int id, string name) + { + if (_idToGameObject.TryGetValue(id, out var go)) + { + go.name = name; + } + else + { + Log.Warning($"SetName: GameObject with id {id} not found"); + } + } + + [ProximaCommand("Internal")] + public static void SetLayer(int id, int layer) + { + if (_idToGameObject.TryGetValue(id, out var go)) + { + go.layer = layer; + } + else + { + Log.Warning($"SetLayer: GameObject with id {id} not found"); + } + } + + [ProximaCommand("Internal")] + public static void SetTag(int id, string tag) + { + if (_idToGameObject.TryGetValue(id, out var go)) + { + go.tag = tag; + } + else + { + Log.Warning($"SetTag: GameObject with id {id} not found"); + } + } + + [ProximaCommand("Internal")] + public static void CreateGameObject(int parentId) + { + var go = new GameObject(); + if (_idToGameObject.TryGetValue(parentId, out var parentGo)) + { + go.transform.SetParent(parentGo.transform, true); + } + } + + [ProximaCommand("Internal")] + public static void DuplicateGameObject(int id) + { + if (!_idToGameObject.TryGetValue(id, out var go)) + { + Log.Warning($"DuplicateGameObject: GameObject with id {id} not found"); + + } + + GameObject.Instantiate(go, go.transform.parent); + } + + [ProximaCommand("Internal")] + public static void DestroyGameObject(int id) + { + if (_idToGameObject.TryGetValue(id, out var go) && go) + { + GameObject.Destroy(go); + } + else + { + Log.Warning($"DestroyGameObject: GameObject with id {id} not found"); + } + } + + [ProximaCommand("Internal")] + public static void AddGameObjectComponent(int id, string component) + { + if (!_idToGameObject.TryGetValue(id, out var go)) + { + Log.Warning($"AddComponent: GameObject with id {id} not found"); + return; + } + + var componentType = ProximaCommandHelpers.FindFirstComponentType(component); + if (componentType == null) + { + throw new Exception($"Component type {component} not found."); + } + + go.AddComponent(componentType); + } + + [ProximaCommand("Internal")] + public static void SetShowHidden(bool showHidden) + { + _showHidden = showHidden; + } + + [ProximaStreamStart("GameObjects")] + public static void StartStream(string id) + { + _pendingStreamIds.Add(id); + } + + [ProximaStreamUpdate("GameObjects")] + public static GameObjectList UpdateStream(string id) + { + UpdateInfoLists(); + + if (_pendingStreamIds.Contains(id)) + { + _pendingStreamIds.Remove(id); + return _gameObjects; + } + + bool changed = _changeList.Destroyed.Count > 0 || _changeList.GameObjects.Count > 0; + return changed ? _changeList : null; + } + + [ProximaStreamStop("GameObjects")] + public static void StopStream(string id) + { + _pendingStreamIds.Remove(id); + } + + public static void UpdateInfoLists() + { + if (_lastUpdate == Time.frameCount) + { + return; + } + + _lastUpdate = Time.frameCount; + _changeList.GameObjects.Clear(); + _changeList.Destroyed.Clear(); + + if (!_lastUpdatedGameObject) + { + _lastUpdatedGameObject = null; + } + + var updates = 0; + while (updates <= ProximaInspector.MaxGameObjectUpdatesPerFrame && UpdateNextGameObjectInfo()) + { + updates++; + } + + var deleteUpdates = 0; + while (deleteUpdates <= ProximaInspector.MaxGameObjectUpdatesPerFrame && UpdateNextDeletedGameObjectInfo()) + { + deleteUpdates++; + } + } + + private static bool UpdateNextGameObjectInfo() + { + _lastUpdatedGameObject = GetNextGameObject(_lastUpdatedGameObject); + if (_lastUpdatedGameObject != null) + { + UpdateGameObjectInfo(_lastUpdatedGameObject); + return true; + } + + return false; + } + + private static bool ShouldHide(GameObject go) + { + return !_showHidden && go.hideFlags.HasFlag(HideFlags.HideInHierarchy); + } + + private static GameObject GetNextChildGameObject(Transform t) + { + for (int i = 0; i < t.childCount; i++) + { + var child = t.GetChild(i); + if (!ShouldHide(child.gameObject)) + { + return child.gameObject; + } + } + + return null; + } + + private static GameObject GetNextSiblingGameObject(Transform parent, Transform t) + { + var nextSiblingIndex = t.GetSiblingIndex() + 1; + while (nextSiblingIndex < parent.childCount) + { + var nextSibling = parent.GetChild(nextSiblingIndex); + var go = nextSibling.gameObject; + if (!ShouldHide(go)) + { + return go; + } + + nextSiblingIndex++; + } + + return null; + } + + private static GameObject GetNextRootGameObject(GameObject go) + { + var rootIndex = _rootGameObjects.IndexOf(go); + if (rootIndex >= 0) + { + return GetNextRootGameObject(rootIndex + 1); + } + + return null; + } + + private static GameObject GetNextRootGameObject(int rootIndex) + { + while (rootIndex < _rootGameObjects.Count) + { + var nextRoot = _rootGameObjects[rootIndex]; + if (nextRoot && !ShouldHide(nextRoot)) + { + return nextRoot; + } + + rootIndex++; + } + + return null; + } + + private static GameObject GetNextSceneGameObject(Scene? currentScene) + { + var nextSceneIndex = 0; + for (int i = 0; i < SceneManager.sceneCount; i++) + { + if (SceneManager.GetSceneAt(i) == currentScene) + { + nextSceneIndex = i + 1; + } + } + + if (nextSceneIndex == 0) + { + _order = 0; + } + + while (nextSceneIndex < SceneManager.sceneCount) + { + var nextScene = SceneManager.GetSceneAt(nextSceneIndex); + if (nextScene.isLoaded) + { + nextScene.GetRootGameObjects(_rootGameObjects); + var nextRoot = GetNextRootGameObject(0); + if (nextRoot != null) + { + return nextRoot; + } + } + + nextSceneIndex++; + } + + if (_dontDestroyOnLoadScene != null && currentScene != _dontDestroyOnLoadScene) + { + _dontDestroyOnLoadScene.GetRootGameObjects(_rootGameObjects); + var nextRoot = GetNextRootGameObject(0); + if (nextRoot != null) + { + return nextRoot; + } + } + + return null; + } + + private static GameObject GetNextGameObject(GameObject go) + { + if (go == null) + { + return GetNextSceneGameObject(null); + } + + _order++; + + var t = go.transform; + var nextChild = GetNextChildGameObject(t); + if (nextChild != null) + { + return nextChild; + } + + var parent = t.parent; + while (parent != null) + { + var nextSibling = GetNextSiblingGameObject(parent, t); + if (nextSibling != null) + { + return nextSibling; + } + + t = parent; + parent = t.parent; + } + + go = t.gameObject; + go.scene.GetRootGameObjects(_rootGameObjects); + var nextRoot = GetNextRootGameObject(go); + if (nextRoot != null) + { + return nextRoot; + } + + return GetNextSceneGameObject(go.scene); + } + + private static bool FastStringEqual(string lhs, string rhs) + { + return lhs.Length == rhs.Length && lhs[0] == rhs[0] && lhs[lhs.Length - 1] == rhs[rhs.Length - 1]; + } + + private static void UpdateGameObjectInfo(GameObject go) + { + var id = go.GetInstanceID(); + var parentId = go.transform.parent ? go.transform.parent.gameObject.GetInstanceID() : 0; + var siblingIndex = go.transform.GetSiblingIndex(); + + int depth = 0; + if (go.transform.parent) + { + if (_gameObjectToInfo.TryGetValue(parentId, out var parentGoi)) + { + depth = parentGoi.Depth + 1; + } + } + + if (!_gameObjectToInfo.TryGetValue(id, out var goi)) + { + goi = new GameObjectInfo { + Id = id, + Name = go.name, + ActiveSelf = go.activeSelf, + Parent = parentId, + Depth = depth, + SiblingIndex = siblingIndex, + ChildCount = go.transform.childCount, + Order = _order, + Tag = go.tag, + Layer = go.layer, + Scene = depth == 0 ? go.scene.name + "#" + go.scene.handle : null + }; + + _gameObjects.GameObjects.Add(goi); + _gameObjectToInfo.Add(id, goi); + _idToGameObject.Add(id, go); + _changeList.GameObjects.Add(goi); + } + else + { + if (!FastStringEqual(goi.Name, go.name) || + goi.ActiveSelf != go.activeSelf || + goi.Parent != parentId || + goi.Depth != depth || + goi.SiblingIndex != siblingIndex || + goi.ChildCount != go.transform.childCount || + goi.Order != _order || + !FastStringEqual(goi.Tag, go.tag) || + goi.Layer != go.layer) + { + goi.Name = go.name; + goi.ActiveSelf = go.activeSelf; + goi.Parent = parentId; + goi.Depth = depth; + goi.SiblingIndex = siblingIndex; + goi.ChildCount = go.transform.childCount; + goi.Order = _order; + goi.Tag = go.tag; + goi.Layer = go.layer; + goi.Scene = depth == 0 ? go.scene.name + "#" + go.scene.handle : null; + _changeList.GameObjects.Add(goi); + } + } + } + + private static bool UpdateNextDeletedGameObjectInfo() + { + if (_gameObjects.GameObjects.Count == 0) + { + return false; + } + + _lastDeleteCheckedGameObjectInfo = (_lastDeleteCheckedGameObjectInfo + 1) % _gameObjects.GameObjects.Count; + var goi = _gameObjects.GameObjects[_lastDeleteCheckedGameObjectInfo]; + var go = _idToGameObject[goi.Id]; + if (!go || ShouldHide(go)) + { + _gameObjectToInfo.Remove(goi.Id); + _gameObjects.GameObjects.RemoveAt(_lastDeleteCheckedGameObjectInfo); + _changeList.Destroyed.Add(goi.Id); + _idToGameObject.Remove(goi.Id); + } + + return true; + } + } +} \ No newline at end of file diff --git a/Assets/Proxima/Runtime/ProximaGameObjectCommands.cs.meta b/Assets/Proxima/Runtime/ProximaGameObjectCommands.cs.meta new file mode 100644 index 0000000..dcc207e --- /dev/null +++ b/Assets/Proxima/Runtime/ProximaGameObjectCommands.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f423de30373ae9147ad4d6f2b9a13a6f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/ProximaInitialize.cs b/Assets/Proxima/Runtime/ProximaInitialize.cs new file mode 100644 index 0000000..61413ba --- /dev/null +++ b/Assets/Proxima/Runtime/ProximaInitialize.cs @@ -0,0 +1,16 @@ + +using System; +using UnityEngine.Scripting; + +namespace Proxima +{ + [AttributeUsage(AttributeTargets.Method)] + internal class ProximaInitializeAttribute : PreserveAttribute + { + } + + [AttributeUsage(AttributeTargets.Method)] + internal class ProximaTeardownAttribute : PreserveAttribute + { + } +} \ No newline at end of file diff --git a/Assets/Proxima/Runtime/ProximaInitialize.cs.meta b/Assets/Proxima/Runtime/ProximaInitialize.cs.meta new file mode 100644 index 0000000..58142bf --- /dev/null +++ b/Assets/Proxima/Runtime/ProximaInitialize.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d0bb0da2a2865e54f8fa5372774fc723 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/ProximaInspector.cs b/Assets/Proxima/Runtime/ProximaInspector.cs new file mode 100644 index 0000000..3ecb276 --- /dev/null +++ b/Assets/Proxima/Runtime/ProximaInspector.cs @@ -0,0 +1,728 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Reflection; +using UnityEngine; + +namespace Proxima +{ + /// Proxima Inspector enables remote inspecting, debugging, and control of a Unity application. + [HelpURL("https://www.unityproxima.com/docs")] + public class ProximaInspector : MonoBehaviour + { + // The name displayed to show in the browser when connected. + [SerializeField] + private string _displayName; + public string DisplayName + { + get => _displayName; + set => _displayName = value; + } + + // The port number to host the embedded Proxima server. + [SerializeField] + private int _port = 7759; + public int Port + { + get => _port; + set => _port = value; + } + + // The password required to connect to Proxima. See unityproxima.com/docs/security for more information. + [SerializeField] + private string _password = ""; + public string Password + { + get => _password; + set => _password = value; + } + + // Enables and disables HTTPS for encryption. See unityproxima.com/docs/security for more information. + [SerializeField] + private bool _useHttps = false; + public bool UseHttps + { + get => _useHttps; + set => _useHttps = value; + } + + // Optional TLS certificate. By default Proxima uses Proxima/Resources/Proxima/ProximaEmbeddedCert.pfx. + [SerializeField] + private PfxAsset _certificate; + public PfxAsset Certificate + { + get => _certificate; + set => _certificate = value; + } + + // Password for the TLS certificate. + [SerializeField] + private string _certificatePassword; + public string CertificatePassword + { + get => _certificatePassword; + set => _certificatePassword = value; + } + + // Automatically starts the Proxima server when this component is enabled. + [SerializeField] + private bool _runOnEnable = true; + public bool StartOnEnable + { + get => _runOnEnable; + set => _runOnEnable = value; + } + + // Maximum number of log messages to keep in memory. + [SerializeField] + private int _logBufferSize = 1000; + public int LogBufferSize + { + get => _logBufferSize; + set => ProximaLogCommands.SetLogCapacity(value); + } + + // Instantiates Proxima/Resources/Proxima/ProximaStatusUI.prefab on startup. + // This UI lets you see the current status of Proxima at the bottom of your screen. + [SerializeField] + private bool _instantiateStatusUI = true; + public bool InstantiateStatusUI + { + get => _instantiateStatusUI; + set => _instantiateStatusUI = value; + } + + // Instantiates Proxima/Resources/Proxima/ProximaConnectUI.prefab on startup. + // This UI appears when the user presses F2 and allows the user to start and stop the server + // with a display name and password. + [SerializeField] + private bool _instantiateConnectUI = false; + public bool InstantiateConnectUI + { + get => _instantiateConnectUI; + set => _instantiateConnectUI = value; + } + + // Adds the gameObject with the Proxima Inspector to the DontDestroyOnLoad scene, + // which keeps connections alive when transitioning between scenes. + [SerializeField] + private bool _dontDestroyOnLoad = true; + + // When Proxima starts, sets Application.runInBackground to true. When Proxima stops, + // sets Application.runInBackground back to its previous value. This allows Proxima + // to work when connecting from a browseer on the same device, since normally Unity + // will pause the app when focus is set to the browser. + [SerializeField] + private bool _setRunInBackground = true; + + // Stores the current status of Proxima and raises events when it changes. + public ProximaStatus Status = new ProximaStatus(); + + public enum ServerTypes + { + Remote, + Embedded, +#if PROXIMA_DEMO + Demo +#endif + } + + // Is the Proxima server embedded or hosted remotely? + // This feature is a work in progress, and so is disabled. + [SerializeField, HideInInspector] + private ServerTypes _serverType = ServerTypes.Embedded; + public ServerTypes ServerType + { + get => _serverType; + set => _serverType = value; + } + + /// URL of the remote Proxima Server. + [SerializeField, HideInInspector] + private string _serverUrl = ""; + public string ServerUrl + { + get => _serverUrl; + set => _serverUrl = value; + } + + // Performance options + public static int MaxGameObjectUpdatesPerFrame = 10; + public static int MaxComponentUpdateFrequency = 10; + + private struct OpenStream + { + public ProximaConnection Connection; + public string Id; + public string Guid; + public StreamInfo Info; + } + + private class StreamInfo + { + public MethodInfo StartMethod; + public MethodInfo StopMethod; + public MethodInfo UpdateMethod; + } + + private ProximaServer _server; + private static List<MethodInfo> _inits = new List<MethodInfo>(); + private static List<MethodInfo> _teardowns = new List<MethodInfo>(); + private static Dictionary<string, MethodInfo> _commands = new Dictionary<string, MethodInfo>(StringComparer.OrdinalIgnoreCase); + public static Dictionary<string, MethodInfo> Commands => _commands; + private static bool _staticInitialized; + + private static Dictionary<string, StreamInfo> _streams = new Dictionary<string, StreamInfo>(StringComparer.OrdinalIgnoreCase); + private Dictionary<string, List<OpenStream>> _openStreams; + + private ProximaDispatcher _dispatcher; + private ProximaStatusUI _statusUI; + private ProximaConnectUI _connectUI; + private bool _wasRunInBackgroundSet; + + void Awake() + { + if (!_staticInitialized) + { + RegisterBuiltInCommands(); + ProximaLogCommands.SetLogCapacity(_logBufferSize); + _staticInitialized = true; + } + + _dispatcher = new ProximaDispatcher(this); + + if (string.IsNullOrEmpty(_displayName)) + { + _displayName = Application.companyName + "." + Application.productName + "." + Application.version; + } + } + + void OnEnable() + { + if (_dontDestroyOnLoad) + { + DontDestroyOnLoad(gameObject); + } + + if (_runOnEnable) + { + Run(); + } + + if (_instantiateStatusUI) + { + _statusUI = Instantiate(Resources.Load<ProximaStatusUI>("Proxima/ProximaStatusUI")); + _statusUI.ProximaInspector = this; + _statusUI.transform.SetParent(transform); + } + + if (_instantiateConnectUI) + { + _connectUI = Instantiate(Resources.Load<ProximaConnectUI>("Proxima/ProximaConnectUI")); + _connectUI.ProximaInspector = this; + _connectUI.GetComponent<ProximaStatusUI>().ProximaInspector = this; + _connectUI.transform.SetParent(transform); + } + } + + void OnApplicationQuit() + { + Stop(); + } + + void OnDestroy() + { + Stop(); + } + + void OnDisable() + { + Stop(); + + if (_statusUI) + { + Destroy(_statusUI.gameObject); + _statusUI = null; + } + + if (_connectUI) + { + Destroy(_connectUI.gameObject); + _connectUI = null; + } + } + + // Starts the Proxima Server with the current configuration. + public void Run() + { + if (_server != null) + { + Log.Warning("Run was called, but Proxima is already running."); + return; + } + + if (string.IsNullOrWhiteSpace(_displayName)) + { + Status.SetError("Display name is required to start Proxima."); + Log.Error("Display name is required to start Proxima."); + return; + } + + if (string.IsNullOrWhiteSpace(_password)) + { + Status.SetError("Password is required to start Proxima."); + Log.Error("Password is required to start Proxima."); + return; + } + + foreach (var method in _inits) + { + method.Invoke(null, null); + } + + if (_setRunInBackground) + { + _wasRunInBackgroundSet = Application.runInBackground; + Application.runInBackground = true; + } + + Status.Reset(); + Status.SetRunning(true); + + var remoteServerType = Type.GetType("Proxima.ProximaRemoteServer"); + var demoServerType = Type.GetType("Proxima.ProximaDemoServer"); + if (remoteServerType != null && _serverType == ServerTypes.Remote) + { + _server = (ProximaServer)Activator.CreateInstance(remoteServerType, _dispatcher, Status, _serverUrl); + } +#if PROXIMA_DEMO + else if (demoServerType != null && _serverType == ServerTypes.Demo) + { + _server = (ProximaServer)Activator.CreateInstance(demoServerType, _dispatcher, Status); + } +#endif + else + { +#if UNITY_WEBGL && !UNITY_EDITOR + _server = new ProximaWebGLServer(_dispatcher, Status); +#else + _server = new ProximaEmbeddedServer(_dispatcher, Status, _port, _useHttps, _certificate, _certificatePassword); +#endif + } + + try + { + _server.Start(_displayName, _password); + } + catch (Exception e) + { + if (e.InnerException != null) + { + e = e.InnerException; + } + + Log.Exception(e); + Status.SetError(e.Message); + Status.SetRunning(false); + Cleanup(); + } + } + + // Stops the Proxima Server, closing any connections. + public void Stop() + { + if (_server != null) + { + Log.Info("Proxima shutting down."); + foreach (var method in _teardowns) + { + method.Invoke(null, null); + } + } + + _server?.Stop(); + Status.Reset(); + Cleanup(); + } + + private void Cleanup() + { + if (_server != null && _setRunInBackground) + { + Application.runInBackground = _wasRunInBackgroundSet; + } + + _server = null; + _openStreams = null; + } + + void Update() + { + _dispatcher?.InvokeAll(); + + if (_server == null) + { + return; + } + + if (_server.TryGetMessage(out var item)) + { + var (connection, message) = item; + var response = HandleMessage(connection, message); + if (response != null) + { + connection.SendMessage(response); + } + } + + UpdateStreams(); + } + + private MemoryStream HandleMessage(ProximaConnection connection, string message) + { + ProximaRequest request; + + try + { + request = JsonUtility.FromJson<ProximaRequest>(message); + } + catch (Exception ex) + { + Log.Error("Failed to parse request: " + ex.Message); + return ProximaSerialization.ErrorResponse(message, "Invalid request."); + } + + if (request.Type == ProximaRequestType.StartStream) + { + return HandleStreamStartRequest(connection, request); + } + else if (request.Type == ProximaRequestType.StopStream) + { + return HandleStreamStopRequest(connection, request); + } + else if (request.Type == ProximaRequestType.Command) + { + return HandleCommand(request); + } + else if (request.Type == ProximaRequestType.List) + { + return ProximaSerialization.DataResponse(request, ""); + } + else if (request.Type == ProximaRequestType.Select) + { + return ProximaSerialization.ErrorResponse(request, "Already selected."); + } + else + { + return ProximaSerialization.ErrorResponse(request, "Invalid request type."); + } + } + + private MemoryStream HandleStreamStartRequest(ProximaConnection connection, ProximaRequest request) + { + var stream = request.Cmd; + if (!_streams.TryGetValue(stream, out var streamInfo)) + { + return ProximaSerialization.ErrorResponse(request, "Invalid stream."); + } + + if (_openStreams == null) + { + _openStreams = new Dictionary<string, List<OpenStream>>(StringComparer.OrdinalIgnoreCase); + } + + if (!_openStreams.ContainsKey(stream)) + { + _openStreams.Add(stream, new List<OpenStream>()); + } + + var guid = Guid.NewGuid().ToString(); + if (streamInfo.StartMethod != null) + { + var args = new string[request.Args.Length + 1]; + args[0] = guid; + Array.Copy(request.Args, 0, args, 1, request.Args.Length); + if (!TryInvoke(streamInfo.StartMethod, args, out var data, out var error)) + { + return ProximaSerialization.ErrorResponse(request, error); + } + } + + var openStream = new OpenStream { + Connection = connection, + Id = request.Id, + Guid = guid, + Info = streamInfo + }; + + _openStreams[stream].Add(openStream); + return null; + } + + private MemoryStream HandleStreamStopRequest(ProximaConnection connection, ProximaRequest request) + { + var stream = request.Cmd; + if (!_streams.TryGetValue(stream, out var streamInfo)) + { + return ProximaSerialization.ErrorResponse(request, "Invalid stream name."); + } + + if (_openStreams == null) + { + return ProximaSerialization.ErrorResponse(request, "Stream not open. (A)"); + } + + if (!_openStreams.TryGetValue(stream, out var listeners)) + { + return ProximaSerialization.ErrorResponse(request, "Stream not open. (B)"); + } + + var idx = listeners.FindIndex(os => os.Connection == connection && os.Id == request.Id); + if (idx < 0) + { + return ProximaSerialization.ErrorResponse(request, "Stream not open. (C)"); + } + + var guid = listeners[idx].Guid; + listeners.RemoveAt(idx); + + if (!TryInvoke(streamInfo.StopMethod, new string[] { guid }, out var result, out var error)) + { + return ProximaSerialization.ErrorResponse(request, error); + } + + return ProximaSerialization.DataResponse(request, "<STREAM-END>"); + } + + private MemoryStream HandleCommand(ProximaRequest request) + { + if (!_commands.TryGetValue(request.Cmd, out var method)) + { + return ProximaSerialization.ErrorResponse(request, $"Method {request.Cmd} not found."); + } + + if (!TryInvoke(method, request.Args, out var data, out var error)) + { + return ProximaSerialization.ErrorResponse(request, error); + } + + return ProximaSerialization.DataResponse(request, data); + } + + private static StreamInfo GetOrCreateStreamInfo(string name) + { + if (!_streams.TryGetValue(name, out var streamInfo)) + { + streamInfo = new StreamInfo(); + _streams.Add(name, streamInfo); + } + + return streamInfo; + } + + private void RegisterBuiltInCommands() + { + RegisterCommands<ProximaInternalCommands>(); + RegisterCommands<ProximaGameObjectCommands>(); + RegisterCommands<ProximaComponentCommands>(); + RegisterCommands<ProximaLogCommands>(); + ProximaFeatures.RegisterProFeatures(); + } + + public static void RegisterCommands<T>() + { + RegisterCommands(typeof(T)); + } + + public static void RegisterCommands(Type type) + { + foreach (var method in type.GetRuntimeMethods()) + { + if (!method.IsStatic) continue; + + var initAttribute = method.GetCustomAttribute<ProximaInitializeAttribute>(); + if (initAttribute != null) + { + Log.Verbose("Found init: " + type.Name + "." + method.Name); + _inits.Add(method); + } + + var teardownAttribute = method.GetCustomAttribute<ProximaTeardownAttribute>(); + if (teardownAttribute != null) + { + Log.Verbose("Found teardown: " + type.Name + "." + method.Name); + _teardowns.Add(method); + } + + var commandAttribute = method.GetCustomAttribute<ProximaCommandAttribute>(); + if (commandAttribute != null) + { + if (_commands.ContainsKey(method.Name)) + { + throw new Exception($"Multiple Proxima commands found with name {type.Name}.{method.Name}."); + } + + Log.Verbose("Found command: " + type.Name + "." + method.Name); + _commands.Add(method.Name, method); + if (!string.IsNullOrWhiteSpace(commandAttribute.Alias)) + { + Log.Verbose("Found command alias: " + commandAttribute.Alias); + _commands.Add(commandAttribute.Alias, method); + } + } + + var streamStart = method.GetCustomAttribute<ProximaStreamStartAttribute>(); + if (streamStart != null) + { + var streamInfo = GetOrCreateStreamInfo(streamStart.Name); + if (streamInfo.StartMethod != null) + { + throw new Exception($"Multiple Proxima stream start methods found for stream {type.Name}.{streamStart.Name}."); + } + + Log.Verbose($"Found stream start: {type.Name}.{streamStart.Name}"); + streamInfo.StartMethod = method; + } + + var streamStop = method.GetCustomAttribute<ProximaStreamStopAttribute>(); + if (streamStop != null) + { + var streamInfo = GetOrCreateStreamInfo(streamStop.Name); + if (streamInfo.StopMethod != null) + { + throw new Exception($"Multiple Proxima stream stop methods found for stream {type.Name}.{streamStop.Name}."); + } + + Log.Verbose($"Found stream stop: {type.Name}.{streamStop.Name}"); + streamInfo.StopMethod = method; + } + + var streamUpdate = method.GetCustomAttribute<ProximaStreamUpdateAttribute>(); + if (streamUpdate != null) + { + var streamInfo = GetOrCreateStreamInfo(streamUpdate.Name); + if (streamInfo.UpdateMethod != null) + { + throw new Exception($"Multiple Proxima stream update methods found for stream {type.Name}.{streamUpdate.Name}."); + } + + Log.Verbose($"Found stream update: {type.Name}.{streamUpdate.Name}"); + streamInfo.UpdateMethod = method; + + } + } + } + + private void UpdateStreams() + { + if (_openStreams != null) + { + foreach (var stream in _openStreams) + { + var listeners = stream.Value; + + // Close streams that disconnected + foreach (var listener in listeners) + { + if (!listener.Connection.Open) + { + TryInvoke(listener.Info.StopMethod, new string[] { listener.Guid }); + } + } + + listeners.RemoveAll(os => !os.Connection.Open); + + foreach (var listener in listeners) + { + object data = null; + string error = null; + + try + { + data = listener.Info.UpdateMethod?.Invoke(null, new object[] { listener.Guid }); + } + catch (Exception e) + { + Debug.LogException(e); + error = e.Message; + } + + if (!string.IsNullOrEmpty(error)) + { + listener.Connection.SendMessage(ProximaSerialization.ErrorResponse(listener.Id, error)); + } + else if (data != null) + { + listener.Connection.SendMessage(ProximaSerialization.DataResponse(listener.Id, data)); + } + } + } + } + } + + private bool TryInvoke(MethodInfo method, string[] args) + { + return TryInvoke(method, args, out var result, out var error); + } + + private bool TryInvoke(MethodInfo method, string[] args, out object result, out string error) + { + result = null; + error = string.Empty; + if (method == null) return true; + + var parameters = method.GetParameters(); + var values = new object[parameters.Length]; + for (int i = 0; i < parameters.Length; i++) + { + var parameter = parameters[i]; + if (args == null || args.Length <= i) + { + if (parameters[i].HasDefaultValue) + { + values[i] = parameters[i].DefaultValue; + continue; + } + + error = $"Required argument {parameter.Name} not found."; + return false; + } + + if (typeof(IPropertyOrValue).IsAssignableFrom(parameter.ParameterType)) + { + values[i] = Activator.CreateInstance(parameter.ParameterType, new object[] { args[i] }); + continue; + } + + if (ProximaSerialization.TryDeserialize(parameter.ParameterType, args[i], out var value)) + { + values[i] = value; + continue; + } + + error = $"Unable to deserialize argument {parameter.Name} as {parameter.ParameterType.Name}."; + return false; + } + + try + { + if (method.ReturnType == typeof(void)) + { + method.Invoke(null, values); + } + else + { + result = method.Invoke(null, values); + } + } + catch (Exception e) + { + Log.Exception(e); + error = e.InnerException.Message; + return false; + } + + return true; + } + } +} \ No newline at end of file diff --git a/Assets/Proxima/Runtime/ProximaInspector.cs.meta b/Assets/Proxima/Runtime/ProximaInspector.cs.meta new file mode 100644 index 0000000..d489ef2 --- /dev/null +++ b/Assets/Proxima/Runtime/ProximaInspector.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e277581af68d4604da056e460b819656 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/ProximaInternalCommands.cs b/Assets/Proxima/Runtime/ProximaInternalCommands.cs new file mode 100644 index 0000000..baa26cb --- /dev/null +++ b/Assets/Proxima/Runtime/ProximaInternalCommands.cs @@ -0,0 +1,288 @@ +using System; +using System.Collections.Generic; +using System.Reflection; +using System.Text; +using UnityEngine; +using UnityEngine.SceneManagement; + +namespace Proxima +{ + internal class ProximaInternalCommands + { + [Serializable] + private struct CommandsDump + { + public List<CommandDump> Commands; + } + + [Serializable] + private struct CommandDump + { + public string Name; + public string Category; + public string Alias; + public string Description; + public string ExampleInput; + public string ExampleOutput; + public List<ParameterDump> Parameters; + } + + [Serializable] + private struct ParameterDump + { + public string Name; + public string Type; + public string Default; + } + + private static bool _paused; + private static float _timeScale; + + private static string HelpCommand(string command) + { + if (!ProximaInspector.Commands.TryGetValue(command, out var method)) + { + return "Unknown command: " + command; + } + + var attr = method.GetCustomAttribute<ProximaCommandAttribute>(); + var sb = new StringBuilder(); + sb.AppendLine(method.Name); + sb.AppendLine("Category: " + attr.Category); + if (!string.IsNullOrWhiteSpace(attr.Alias)) + { + sb.AppendLine("Alias: " + attr.Alias); + } + + if (!string.IsNullOrWhiteSpace(attr.Description)) + { + sb.AppendLine("Description: " + attr.Description); + } + + var parameters = method.GetParameters(); + if (parameters.Length > 0) + { + sb.AppendLine("Parameters:"); + } + + for (int i = 0; i < parameters.Length; i++) + { + var parameter = parameters[i]; + + sb.Append(" "); + + var type = parameter.ParameterType; + var def = parameter.HasDefaultValue ? parameter.DefaultValue : null; + if (typeof(IPropertyOrValue).IsAssignableFrom(parameter.ParameterType)) + { + type = parameter.ParameterType.GetGenericArguments()[0]; + def = type.IsValueType ? Activator.CreateInstance(type) : "null"; + } + + sb.Append(parameter.Name); + sb.Append(": "); + sb.Append(type.Name); + + if (parameter.HasDefaultValue) + { + sb.Append(" (default: "); + sb.Append(def); + sb.Append(")"); + } + + sb.AppendLine(); + } + + if (!string.IsNullOrWhiteSpace(attr.ExampleInput)) + { + sb.AppendLine(); + sb.AppendLine("Example:"); + sb.AppendLine(" > " + attr.ExampleInput); + + if (!string.IsNullOrWhiteSpace(attr.ExampleOutput)) + { + sb.AppendLine(" " + attr.ExampleOutput.Replace("\n", "\n ")); + } + } + + return sb.ToString(); + } + + private static string HelpAll() + { + var sb = new StringBuilder(); + var categorizedCommands = new Dictionary<string, List<(string, MethodInfo)>>(); + foreach (var kv in ProximaInspector.Commands) + { + var command = kv.Key; + var method = kv.Value; + var attr = method.GetCustomAttribute<ProximaCommandAttribute>(); + if (attr.Alias == command || attr.Category == "Internal") + { + continue; + } + + if (!categorizedCommands.TryGetValue(attr.Category, out var commands)) + { + commands = new List<(string, MethodInfo)>(); + categorizedCommands.Add(attr.Category, commands); + } + + commands.Add((command, method)); + } + + var sortedCategories = new List<string>(categorizedCommands.Keys); + sortedCategories.Sort(); + foreach (var category in sortedCategories) + { + var commands = categorizedCommands[category]; + commands.Sort((a, b) => a.Item1.CompareTo(b.Item1)); + + sb.AppendLine(category + " Commands:"); + foreach (var (command, method) in commands) + { + var attr = method.GetCustomAttribute<ProximaCommandAttribute>(); + + var parameters = method.GetParameters(); + sb.Append(" "); + sb.Append(command); + sb.Append(" "); + + if (!string.IsNullOrEmpty(attr.Alias)) + { + sb.Append("("); + sb.Append(attr.Alias); + sb.Append(") "); + } + + for (int i = 0; i < parameters.Length; i++) + { + var parameter = parameters[i]; + + if (parameter.HasDefaultValue) + { + sb.Append("<"); + sb.Append(parameter.Name); + sb.Append(">"); + } + else + { + sb.Append(parameter.Name); + } + + if (i < parameters.Length - 1) + { + sb.Append(" "); + } + } + + sb.AppendLine(); + } + } + + return sb.ToString(); + } + + [ProximaCommand("Internal", "?")] + public static string Help(string command = null) + { + if (!string.IsNullOrWhiteSpace(command)) + { + return HelpCommand(command); + } + else + { + return HelpAll(); + } + } + + [ProximaCommand("Internal")] + public static string Ping() + { + return "Pong"; + } + + [ProximaCommand("Internal")] + public static bool IsPaused() + { + return _paused; + } + + [ProximaCommand("Internal")] + public static string Pause() + { + if (!_paused) + { + _timeScale = Time.timeScale; + Time.timeScale = 0; + _paused = true; + return "Paused."; + } + + return "Already paused."; + } + + [ProximaCommand("Internal")] + public static string Resume() + { + if (_paused) + { + Time.timeScale = _timeScale; + _paused = false; + return "Resumed."; + } + + return "Already resume."; + } + + [ProximaCommand("Internal")] + public static object DumpCommands() + { + var dump = new CommandsDump { + Commands = new List<CommandDump>() + }; + + foreach (var kv in ProximaInspector.Commands) + { + var name = kv.Key; + var method = kv.Value; + var attr = method.GetCustomAttribute<ProximaCommandAttribute>(); + if (attr.Category == "Internal") continue; + if (attr.Alias == name) continue; + + var cd = new CommandDump { + Name = method.Name, + Category = attr.Category, + Alias = attr.Alias, + Description = attr.Description, + ExampleInput = attr.ExampleInput, + ExampleOutput = attr.ExampleOutput, + Parameters = new List<ParameterDump>() + }; + + var parameters = method.GetParameters(); + for (int i = 0; i < parameters.Length; i++) + { + var parameter = parameters[i]; + var type = parameter.ParameterType; + var def = parameter.HasDefaultValue ? parameter.DefaultValue : null; + if (typeof(IPropertyOrValue).IsAssignableFrom(parameter.ParameterType)) + { + type = parameter.ParameterType.GetGenericArguments()[0]; + def = type.IsValueType ? Activator.CreateInstance(type) : "null"; + } + + cd.Parameters.Add(new ParameterDump { + Name = parameter.Name, + Type = type.Name, + Default = def != null ? ProximaSerialization.Serialize(def) : null + }); + } + + dump.Commands.Add(cd); + } + + return dump; + } + } +} \ No newline at end of file diff --git a/Assets/Proxima/Runtime/ProximaInternalCommands.cs.meta b/Assets/Proxima/Runtime/ProximaInternalCommands.cs.meta new file mode 100644 index 0000000..b1c797e --- /dev/null +++ b/Assets/Proxima/Runtime/ProximaInternalCommands.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5631c2ba32970104590d7fa32d88dd45 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/ProximaLog.cs b/Assets/Proxima/Runtime/ProximaLog.cs new file mode 100644 index 0000000..6f5c180 --- /dev/null +++ b/Assets/Proxima/Runtime/ProximaLog.cs @@ -0,0 +1,33 @@ +using System.Diagnostics; + +namespace Proxima +{ + internal class Log + { + [Conditional("PROXIMA_LOG_VERBOSE")] + public static void Verbose(string message) + { + UnityEngine.Debug.Log("PXV: " + message); + } + + public static void Info(string message) + { + UnityEngine.Debug.Log("PX: " + message); + } + + public static void Warning(string message) + { + UnityEngine.Debug.LogWarning("PX: " + message); + } + + public static void Error(string message) + { + UnityEngine.Debug.LogError("PX: " + message); + } + + public static void Exception(System.Exception e) + { + UnityEngine.Debug.LogException(e); + } + } +} \ No newline at end of file diff --git a/Assets/Proxima/Runtime/ProximaLog.cs.meta b/Assets/Proxima/Runtime/ProximaLog.cs.meta new file mode 100644 index 0000000..d4d5d7b --- /dev/null +++ b/Assets/Proxima/Runtime/ProximaLog.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 02714c12f1904514a8b943bb91117463 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/ProximaLogCommands.cs b/Assets/Proxima/Runtime/ProximaLogCommands.cs new file mode 100644 index 0000000..a9640ef --- /dev/null +++ b/Assets/Proxima/Runtime/ProximaLogCommands.cs @@ -0,0 +1,147 @@ +using System; +using System.IO; +using System.Collections.Generic; +using UnityEngine; +using System.Collections; + +namespace Proxima +{ + internal class ProximaLogCommands + { + [Serializable] + public struct LogInfo + { + public long LogTime; + public string LogString; + public string StackTrace; + public LogType Type; + } + + private static HashSet<string> _pendingStreamIds; + private static CircularList<LogInfo> _logs; + private static IEnumerable<LogInfo> _streamLogs; + private static int _streamIndex = 0; + private static int _lastUpdateFrame; + + public static void SetLogCapacity(int capacity) + { + _logs = new CircularList<LogInfo>(capacity); + } + + [ProximaInitialize] + public static void Initialize() + { + _pendingStreamIds = new HashSet<string>(); + Application.logMessageReceived += OnLogMessageReceived; + } + + [ProximaTeardown] + public static void Teardown() + { + _pendingStreamIds = null; + Application.logMessageReceived -= OnLogMessageReceived; + } + + [ProximaStreamStart("LogStream")] + public static void StartStream(string id) + { + _pendingStreamIds.Add(id); + } + + [ProximaStreamUpdate("LogStream")] + public static IEnumerable<LogInfo> UpdateStream(string id) + { + if (_lastUpdateFrame != Time.frameCount) + { + _lastUpdateFrame = Time.frameCount; + bool hasUpdate = _streamIndex != _logs.ItemsAdded; + _streamLogs = hasUpdate ? _logs.GetRange(_streamIndex) : null; + _streamIndex = _logs.ItemsAdded; + } + + if (_pendingStreamIds.Contains(id)) + { + _pendingStreamIds.Remove(id); + return _logs.ItemsAdded > 0 ? _logs : null; + } + + return _streamLogs; + } + + [ProximaStreamStop("LogStream")] + public static void StopStream(string id) + { + _pendingStreamIds.Remove(id); + } + + private static void OnLogMessageReceived(string message, string stackTrace, LogType type) + { + #if PROXIMA_LOG_VERBOSE + if (message.StartsWith("PXV:")) + { + return; + } + #endif + + var logInfo = new LogInfo + { + LogTime = (long) System.DateTime.UtcNow.Subtract(new System.DateTime(1970, 1, 1)).TotalMilliseconds, + LogString = message, + StackTrace = stackTrace, + Type = type + }; + + _logs.Add(logInfo); + } + + [ProximaCommand("Internal")] + public static string GetLogFile() + { + if (string.IsNullOrEmpty(Application.consoleLogPath)) + { + throw new Exception("Log file not available"); + } + + try + { + // If we just try to open the file we'll get a sharing violation, so need to copy it first. + var temp = Path.Combine(Application.temporaryCachePath, Path.GetTempFileName()); + File.Copy(Application.consoleLogPath, temp, true); + var result = File.ReadAllText(temp); + File.Delete(temp); + return result; + } + catch (Exception e) + { + Log.Error("Failed to get log file: " + e.Message); + return "Failed to get log file: " + e.Message; + } + } + + [ProximaCommand("Internal")] + public static string GetPreviousLogFile() + { + if (string.IsNullOrEmpty(Application.consoleLogPath)) + { + throw new Exception("Log file not available"); + } + + try + { + var path = Application.consoleLogPath.Replace(".log", "-prev.log"); + return File.ReadAllText(path); + } + catch (Exception e) + { + Log.Error("Failed to get previous log file: " + e.Message); + return "Failed to get previous log file: " + e.Message; + } + } + + [ProximaCommand("Internal")] + public static bool GetLogFilesAvailable() + { + return !string.IsNullOrEmpty(Application.consoleLogPath) && File.Exists(Application.consoleLogPath); + } + } +} \ No newline at end of file diff --git a/Assets/Proxima/Runtime/ProximaLogCommands.cs.meta b/Assets/Proxima/Runtime/ProximaLogCommands.cs.meta new file mode 100644 index 0000000..1dd12b3 --- /dev/null +++ b/Assets/Proxima/Runtime/ProximaLogCommands.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cd9d69ce3bb609948a7a44e254094c6d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/ProximaMimeTypes.cs b/Assets/Proxima/Runtime/ProximaMimeTypes.cs new file mode 100644 index 0000000..7f75d1c --- /dev/null +++ b/Assets/Proxima/Runtime/ProximaMimeTypes.cs @@ -0,0 +1,95 @@ +using System.Collections.Generic; + +namespace Proxima +{ + internal static class ProximaMimeTypes + { + private static Dictionary<string, string> MimeTypes = new Dictionary<string, string>() + { + { ".aac", "audio/aac" }, + { ".abw", "application/x-abiword" }, + { ".arc", "application/x-freearc" }, + { ".avi", "video/x-msvideo" }, + { ".azw", "application/vnd.amazon.ebook" }, + { ".bin", "application/octet-stream" }, + { ".bmp", "image/bmp" }, + { ".bz", "application/x-bzip" }, + { ".bz2", "application/x-bzip2" }, + { ".csh", "application/x-csh" }, + { ".css", "text/css" }, + { ".csv", "text/csv" }, + { ".doc", "application/msword" }, + { ".docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document" }, + { ".eot", "application/vnd.ms-fontobject" }, + { ".epub", "application/epub+zip" }, + { ".gz", "application/gzip" }, + { ".gif", "image/gif" }, + { ".htm", "text/html" }, + { ".html", "text/html" }, + { ".ico", "image/vnd.microsoft.icon" }, + { ".ics", "text/calendar" }, + { ".jar", "application/java-archive" }, + { ".jpeg", "image/jpeg" }, + { ".jpg", "image/jpeg" }, + { ".js", "text/javascript" }, + { ".json", "application/json" }, + { ".jsonld", "application/ld+json" }, + { ".mid", "audio/midi" }, + { ".midi", "audio/midi" }, + { ".mjs", "text/javascript" }, + { ".mp3", "audio/mpeg" }, + { ".mpeg", "video/mpeg" }, + { ".mpkg", "application/vnd.apple.installer+xml" }, + { ".odp", "application/vnd.oasis.opendocument.presentation" }, + { ".ods", "application/vnd.oasis.opendocument.spreadsheet" }, + { ".odt", "application/vnd.oasis.opendocument.text" }, + { ".oga", "audio/ogg" }, + { ".ogv", "video/ogg" }, + { ".ogx", "application/ogg" }, + { ".opus", "audio/opus" }, + { ".otf", "font/otf" }, + { ".png", "image/png" }, + { ".pdf", "application/pdf" }, + { ".php", "application/x-httpd-php" }, + { ".ppt", "application/vnd.ms-powerpoint" }, + { ".pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation" }, + { ".rar", "application/vnd.rar" }, + { ".rtf", "application/rtf" }, + { ".sh", "application/x-sh" }, + { ".svg", "image/svg+xml" }, + { ".swf", "application/x-shockwave-flash" }, + { ".tar", "application/x-tar" }, + { ".tif", "image/tiff" }, + { ".tiff", "image/tiff" }, + { ".ts", "video/mp2t" }, + { ".ttf", "font/ttf" }, + { ".txt", "text/plain" }, + { ".vsd", "application/vnd.visio" }, + { ".wav", "audio/wav" }, + { ".weba", "audio/webm" }, + { ".webm", "video/webm" }, + { ".webp", "image/webp" }, + { ".woff", "font/woff" }, + { ".woff2", "font/woff2" }, + { ".xhtml", "application/xhtml+xml" }, + { ".xls", "application/vnd.ms-excel" }, + { ".xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }, + { ".xml", "application/xml" }, + { ".xul", "application/vnd.mozilla.xul+xml" }, + { ".zip", "application/zip" }, + { ".3gp", "video/3gpp" }, + { ".3g2", "video/3gpp2" }, + { ".7z", "application/x-7z-compressed" }, + }; + + public static string Get(string extension) + { + if (MimeTypes.TryGetValue(extension, out var mimeType)) + { + return mimeType; + } + + return "application/octet-stream"; + } + } +} \ No newline at end of file diff --git a/Assets/Proxima/Runtime/ProximaMimeTypes.cs.meta b/Assets/Proxima/Runtime/ProximaMimeTypes.cs.meta new file mode 100644 index 0000000..209f301 --- /dev/null +++ b/Assets/Proxima/Runtime/ProximaMimeTypes.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 515a81d2e925f9c4ca6315349af8e00b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/ProximaSerialization.cs b/Assets/Proxima/Runtime/ProximaSerialization.cs new file mode 100644 index 0000000..0609f0d --- /dev/null +++ b/Assets/Proxima/Runtime/ProximaSerialization.cs @@ -0,0 +1,618 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Reflection; +using System.Security.Cryptography; +using System.Text; +using UnityEngine; + +namespace Proxima +{ + [Serializable] + internal enum ProximaRequestType + { + Command = 0, + StartStream = 1, + StopStream = 2, + List = 3, + Select = 4 + } + + [Serializable] + internal class ProximaRequest + { + public string Id; + public ProximaRequestType Type; + public string Cmd; + public string[] Args; + } + + [Serializable] + internal class ProximaDataResponse + { + public string Id; + public object Data; + } + + [Serializable] + internal class ProximaErrorResponse + { + public string Id; + public string Error; + } + + [System.Serializable] + internal struct ProximaInstanceHello + { + public string DisplayName; + public string InstanceId; + public string ProductName; + public string CompanyName; + public string Platform; + public string ProductVersion; + public string ProximaVersion; + public string ConnectionId; + public string Password; + } + + public static class ProximaSerialization + { + internal static readonly string VERSION = "1.0.0"; + + public static string Serialize(object data, bool pretty = false) + { + var stream = FastJson.Serialize(data, pretty); + if (stream == null) + { + return null; + } + + return Encoding.UTF8.GetString(stream.GetBuffer(), 0, (int)stream.Length); + } + + internal static MemoryStream DataResponse(ProximaRequest request, object data) + { + return DataResponse(request.Id, data); + } + + internal static MemoryStream DataResponse(string id, object data) + { + return FastJson.Serialize(new ProximaDataResponse { Id = id, Data = data }); + } + + internal static MemoryStream ErrorResponse(ProximaRequest request, string error) + { + return ErrorResponse(request.Id, error); + } + + internal static MemoryStream ErrorResponse(string id, string error) + { + return FastJson.Serialize(new ProximaErrorResponse { Id = id, Error = error }); + } + + internal static string HashPassword(string password, string connectionId) + { + SHA256 hash = SHA256.Create(); + byte[] bytes = hash.ComputeHash(Encoding.UTF8.GetBytes(password + connectionId)); + var hashedPassword = Convert.ToBase64String(bytes); + return hashedPassword; + } + + internal static ProximaInstanceHello CreateHello(string displayName, string password = "") + { + var hello = new ProximaInstanceHello(); + hello.DisplayName = displayName; + hello.InstanceId = displayName.GetHashCode().ToString() + "_" + VERSION; + hello.ProductName = Application.productName; + hello.CompanyName = Application.companyName; + hello.Platform = Enum.GetName(typeof(RuntimePlatform), Application.platform); + hello.ProductVersion = Application.version; + hello.ProximaVersion = VERSION; + hello.ConnectionId = Guid.NewGuid().ToString(); + + if (!string.IsNullOrEmpty(password)) + { + hello.Password = HashPassword(password, hello.ConnectionId); + } + + return hello; + } + + private static bool TrySplitArray(string arrayString, out List<string> elements) + { + elements = null; + + if (arrayString.Length < 2) + { + return false; + } + + if (arrayString[0] != '[') + { + return false; + } + + if (arrayString[arrayString.Length - 1] != ']') + { + return false; + } + + elements = new List<string>(); + int b = 0; + bool q = false; + bool bs = false; + var sb = new StringBuilder(); + for (int i = 1; i < arrayString.Length - 1; i++) + { + var c = arrayString[i]; + if (!q && b == 0 && c == ',') { + elements.Add(sb.ToString()); + sb.Clear(); + continue; + } + + sb.Append(c); + + if (bs) + { + bs = false; + } + else if (c == '\\') + { + bs = true; + } + else if (c == '"') + { + q = !q; + } + else if (c == '[') + { + b++; + } + else if (c == ']') + { + b--; + } + } + + if (sb.Length > 0) + { + elements.Add(sb.ToString()); + } + + return true; + } + + internal static IList MakeListOf(Type elementType) + { + var list = (IList)Activator.CreateInstance(typeof(List<>).MakeGenericType(elementType)); + return list; + } + + internal static IList MakeList(Type listType) + { + return MakeListOf(listType.GetGenericArguments()[0]); + } + + internal static IList CopyList(IList list) + { + var newList = MakeList(list.GetType()); + foreach (var item in list) + { + newList.Add(item); + } + + return newList; + } + + internal static Array MakeArrayOf(Type elementType, int length) + { + return Array.CreateInstance(elementType, length); + } + + internal static Array MakeArray(Type arrayType, int length) + { + return MakeArrayOf(arrayType.GetElementType(), length); + } + + internal static Array CopyArray(Array array) + { + var newArray = MakeArray(array.GetType(), array.Length); + Array.Copy(array, newArray, array.Length); + return newArray; + } + + internal static Array ResizeArray(Array array, int size) + { + var newArray = MakeArray(array.GetType(), size); + Array.Copy(array, newArray, Math.Min(array.Length, size)); + return newArray; + } + + private static bool TryDeserializeList(Type listType, string arrayString, out IList values) + { + if (!TrySplitArray(arrayString, out var elements)) + { + values = null; + return false; + } + + var elementType = listType.GetGenericArguments()[0]; + values = MakeListOf(elementType); + for (int i = 0; i < elements.Count; i++) + { + if (!TryDeserialize(elementType, elements[i].Trim('"'), out var obj)) + { + values = null; + return false; + } + + values.Add(obj); + } + + return true; + } + + private static bool TryDeserializeArray(Type elementType, string arrayString, out Array values) + { + if (!TrySplitArray(arrayString, out var elements)) + { + values = null; + return false; + } + + values = MakeArrayOf(elementType, elements.Count); + for (int i = 0; i < elements.Count; i++) + { + if (!TryDeserialize(elementType, elements[i].Trim('"'), out var obj)) + { + values = null; + return false; + } + + values.SetValue(obj, i); + } + + return true; + } + + private static bool TryDeserializeArray<T>(string arrayString, out T[] values) + { + if (TryDeserializeArray(typeof(T), arrayString, out var array)) + { + values = (T[])array; + return true; + } + + values = null; + return false; + } + + private static bool TryDeserializeArray<T>(string arrayString, int count, out T[] values) + { + if (!TryDeserializeArray<T>(arrayString, out values)) + { + return false; + } + + if (values.Length != count) + { + values = null; + return false; + } + + return true; + } + + internal static bool TryDeserialize<T>(string value, out T result) + { + if (TryDeserialize(typeof(T), value, out var obj)) + { + result = (T)obj; + return true; + } + + result = default(T); + return false; + } + + // This does NOT do full JSON deserialization. It just deserializes single values + // or arrays of values, which is all the inspector needs. + internal static bool TryDeserialize(Type type, string value, out object result) + { + if (type == typeof(string)) + { + result = value; + return true; + } + else if (type == typeof(float)) + { + if (float.TryParse(value, NumberStyles.Float, CultureInfo.InvariantCulture, out var floatValue)) + { + result = floatValue; + return true; + } + } + else if (type == typeof(double)) + { + if (double.TryParse(value, out var doubleValue)) + { + result = doubleValue; + return true; + } + } + else if (type == typeof(byte)) + { + if (byte.TryParse(value, out var byteValue)) + { + result = byteValue; + return true; + } + } + else if (type == typeof(sbyte)) + { + if (sbyte.TryParse(value, out var sbyteValue)) + { + result = sbyteValue; + return true; + } + } + else if (type == typeof(short)) + { + if (short.TryParse(value, out var shortValue)) + { + result = shortValue; + return true; + } + } + else if (type == typeof(ushort)) + { + if (ushort.TryParse(value, out var ushortValue)) + { + result = ushortValue; + return true; + } + } + else if (type == typeof(int)) + { + if (int.TryParse(value, out var intValue)) + { + result = intValue; + return true; + } + } + else if (type == typeof(uint)) + { + if (uint.TryParse(value, out var uintValue)) + { + result = uintValue; + return true; + } + } + else if (type == typeof(long)) + { + if (long.TryParse(value, out var longValue)) + { + result = longValue; + return true; + } + } + else if (type == typeof(ulong)) + { + if (ulong.TryParse(value, out var ulongValue)) + { + result = ulongValue; + return true; + } + } + else if (type == typeof(bool)) + { + result = (value == "true"); + return true; + } + else if (type == typeof(Vector2)) + { + if (TryDeserializeArray<float>(value, 2, out var v)) + { + result = new Vector2(v[0], v[1]); + return true; + } + } + else if (type == typeof(Vector3)) + { + if (TryDeserializeArray<float>(value, 3, out var v)) + { + result = new Vector3(v[0], v[1], v[2]); + return true; + } + } + else if (type == typeof(Vector4)) + { + if (TryDeserializeArray<float>(value, 4, out var v)) + { + result = new Vector4(v[0], v[1], v[2], v[3]); + return true; + } + } + else if (type == typeof(Vector2Int)) + { + if (TryDeserializeArray<int>(value, 2, out var v)) + { + result = new Vector2Int(v[0], v[1]); + return true; + } + } + else if (type == typeof(Vector3Int)) + { + if (TryDeserializeArray<int>(value, 3, out var v)) + { + result = new Vector3Int(v[0], v[1], v[2]); + return true; + } + } + else if (type == typeof(Quaternion)) + { + if (TryDeserializeArray<float>(value, 3, out var v)) + { + result = Quaternion.Euler(v[0], v[1], v[2]); + return true; + } + } + else if (type == typeof(Rect)) + { + if (TryDeserializeArray<float>(value, 4, out var v)) + { + result = new Rect(v[0], v[1], v[2], v[3]); + return true; + } + } + else if (type == typeof(RectInt)) + { + if (TryDeserializeArray<int>(value, 4, out var v)) + { + result = new RectInt(v[0], v[1], v[2], v[3]); + return true; + } + } + else if (type == typeof(Bounds)) + { + if (TryDeserializeArray<float>(value, 6, out var v)) + { + result = new Bounds(new Vector3(v[0], v[1], v[2]), new Vector3(v[3], v[4], v[5])); + return true; + } + } + else if (type == typeof(BoundsInt)) + { + if (TryDeserializeArray<int>(value, 6, out var v)) + { + result = new BoundsInt(new Vector3Int(v[0], v[1], v[2]), new Vector3Int(v[3], v[4], v[5])); + return true; + } + } + else if (type == typeof(Color)) + { + if (ColorUtility.TryParseHtmlString(value, out var color)) + { + result = color; + return true; + } + } + else if (type == typeof(LayerMask)) + { + if (int.TryParse(value, out var intValue)) + { + result = new LayerMask() { value = intValue }; + return true; + } + } + else if (type.IsEnum) + { + if (int.TryParse(value, out var enumValue)) + { + result = enumValue; + return true; + } + } + else if (type.IsArray) + { + if (TryDeserializeArray(type.GetElementType(), value, out var array)) + { + result = array; + return true; + } + } + else if (typeof(IList).IsAssignableFrom(type)) + { + if (TryDeserializeList(type, value, out var list)) + { + result = list; + return true; + } + } + + result = null; + return false; + } + + internal static object Deserialize(Type t, string value) + { + if (TryDeserialize(t, value, out var result)) + { + return result; + } + + throw new Exception("Failed to deserialize value: " + value + " as type: " + t.Name); + } + + internal static T Deserialize<T>(string value) + { + return (T)Deserialize(typeof(T), value); + } + + private static List<Type> _nativeFlags = new List<Type>() { +#if UNITY_PHYSICS + typeof(RigidbodyConstraints) +#endif + }; + + internal static string GetSerializedTypeName(Type propertyType) + { + if (propertyType.IsEnum) + { + var sb = new StringBuilder(); + var values = Enum.GetValues(propertyType); + var names = propertyType.GetEnumNames(); + var underlyingType = Enum.GetUnderlyingType(propertyType); + + bool nativeFlag = _nativeFlags.Contains(propertyType); + if (nativeFlag || propertyType.GetCustomAttribute(typeof(FlagsAttribute)) != null) + { + sb.Append("Flags"); + } + else + { + sb.Append("Enum"); + } + + if (values.Length > 0) + { + sb.Append(" "); + } + + for (int i = 0; i < values.Length; i++) + { + if (i > 0) + { + sb.Append(","); + } + + sb.Append(names[i]); + sb.Append(":"); + sb.Append(Convert.ChangeType(values.GetValue(i), underlyingType)); + } + + return sb.ToString(); + } + + if (propertyType.IsArray) + { + return "Array " + GetSerializedTypeName(propertyType.GetElementType()); + } + + if (typeof(IList).IsAssignableFrom(propertyType)) + { + return "Array " + GetSerializedTypeName(propertyType.GetGenericArguments()[0]); + } + + if (propertyType.IsSubclassOf(typeof(UnityEngine.Object))) + { + return "Object " + propertyType.Name; + } + + return propertyType.Name; + } + } +} \ No newline at end of file diff --git a/Assets/Proxima/Runtime/ProximaSerialization.cs.meta b/Assets/Proxima/Runtime/ProximaSerialization.cs.meta new file mode 100644 index 0000000..458a9c8 --- /dev/null +++ b/Assets/Proxima/Runtime/ProximaSerialization.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 201053f9f6c9b184a90c145b9e3733cd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/ProximaServer.cs b/Assets/Proxima/Runtime/ProximaServer.cs new file mode 100644 index 0000000..fc1e4ba --- /dev/null +++ b/Assets/Proxima/Runtime/ProximaServer.cs @@ -0,0 +1,9 @@ +namespace Proxima +{ + internal interface ProximaServer + { + void Start(string displayName, string password); + void Stop(); + bool TryGetMessage(out (ProximaConnection, string) message); + } +} \ No newline at end of file diff --git a/Assets/Proxima/Runtime/ProximaServer.cs.meta b/Assets/Proxima/Runtime/ProximaServer.cs.meta new file mode 100644 index 0000000..37abd6e --- /dev/null +++ b/Assets/Proxima/Runtime/ProximaServer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d0eba2327bf45a14ca7165f1058269b1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/ProximaStatus.cs b/Assets/Proxima/Runtime/ProximaStatus.cs new file mode 100644 index 0000000..b591527 --- /dev/null +++ b/Assets/Proxima/Runtime/ProximaStatus.cs @@ -0,0 +1,75 @@ +using System; + +namespace Proxima +{ + public class ProximaStatus + { + // Is Proxima running? + private bool _isRunning; + public bool IsRunning => _isRunning; + + // Information for how to connect to Proxima. + private string _connectInfo; + public string ConnectInfo => _connectInfo; + + // True if Proxima is listening for connections. + private bool _listening; + public bool Listening => _listening; + + // Number of active connections which have entered the correct password. + private int _connections; + public int Connections => _connections; + + // Error message to display to the user. + private string _error; + public string Error => _error; + + // Event which is fired when any of the above properties change. + public event Action Changed; + + internal void Reset() + { + _isRunning = false; + _connectInfo = null; + _listening = false; + _connections = 0; + _error = null; + Changed?.Invoke(); + } + + internal void SetRunning(bool running) + { + _isRunning = running; + Changed?.Invoke(); + } + + internal void SetConnectInfo(string info) + { + _connectInfo = info; + _listening = true; + _error = null; + Changed?.Invoke(); + } + + internal void SetError(string error) + { + _error = error; + Changed?.Invoke(); + } + + internal void IncrementConnections() + { + _connections++; + Changed?.Invoke(); + } + + internal void DecrementConnections() + { + if (_connections > 0) + { + _connections--; + Changed?.Invoke(); + } + } + } +} \ No newline at end of file diff --git a/Assets/Proxima/Runtime/ProximaStatus.cs.meta b/Assets/Proxima/Runtime/ProximaStatus.cs.meta new file mode 100644 index 0000000..5998aaf --- /dev/null +++ b/Assets/Proxima/Runtime/ProximaStatus.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 99dc7c2f70983554c864c7aaac5267dd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/ProximaStatusUI.cs b/Assets/Proxima/Runtime/ProximaStatusUI.cs new file mode 100644 index 0000000..f58e995 --- /dev/null +++ b/Assets/Proxima/Runtime/ProximaStatusUI.cs @@ -0,0 +1,122 @@ +#if UNITY_TMPRO + +using TMPro; +using UnityEngine; + +namespace Proxima +{ + [HelpURL("https://www.unityproxima.com/docs")] + public class ProximaStatusUI : MonoBehaviour + { + // The inspector to monitor status from. + [SerializeField] + private ProximaInspector _proximaInspector; + public ProximaInspector ProximaInspector + { + get => _proximaInspector; + set => _proximaInspector = value; + } + + // GameObject to show when Proxima is enabled. + [SerializeField] + private GameObject _uiRoot; + public GameObject UIRoot + { + get => _uiRoot; + set => _uiRoot = value; + } + + // Label to show address to connect to Proxima. + [SerializeField] + private TMP_InputField _connectInfoLabel; + public TMP_InputField ConnectInfoLabel + { + get => _connectInfoLabel; + set => _connectInfoLabel = value; + } + + // Label to show the current status and errors. + [SerializeField] + private TMP_Text _statusLabel; + public TMP_Text StatusLabel + { + get => _statusLabel; + set => _statusLabel = value; + } + + private bool _isPortrait; + + void Start() + { + _proximaInspector.Status.Changed += UpdateUI; + UpdateUI(); + } + + void OnDestroy() + { + if (_proximaInspector) + { + _proximaInspector.Status.Changed -= UpdateUI; + } + } + + private void UpdateUI() + { + if (_uiRoot) + { + _uiRoot.SetActive(_proximaInspector.Status.Listening); + } + + if (_connectInfoLabel) + { + _connectInfoLabel.text = _proximaInspector.Status.ConnectInfo; + } + + if (_statusLabel) + { + if (_proximaInspector.Status.Connections > 0) + { + if (_isPortrait) + { + _statusLabel.text = "Connected: " + _proximaInspector.Status.Connections; + } + else + { + _statusLabel.text = "Proxima connected to " + _proximaInspector.Status.Connections + + (_proximaInspector.Status.Connections > 1 ? " clients." : " client."); + } + } + else if (_proximaInspector.Status.Error != null) + { + _statusLabel.text = _proximaInspector.Status.Error; + } + else if (_proximaInspector.Status.Listening) + { + _statusLabel.text = _isPortrait ? "Listening" : "Proxima is listening for connections."; + } + } + } + + void Update() + { + bool isPortrait = (float)Screen.width / (float)Screen.height < 0.75f; + if (_isPortrait != isPortrait) + { + _isPortrait = isPortrait; + UpdateUI(); + } + } + } +} + +#else + +namespace Proxima +{ + public class ProximaStatusUI : UnityEngine.MonoBehaviour + { + public ProximaInspector ProximaInspector; + } +} + +#endif \ No newline at end of file diff --git a/Assets/Proxima/Runtime/ProximaStatusUI.cs.meta b/Assets/Proxima/Runtime/ProximaStatusUI.cs.meta new file mode 100644 index 0000000..77718dc --- /dev/null +++ b/Assets/Proxima/Runtime/ProximaStatusUI.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f8a779904589bf645b974624adf18491 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/ProximaStream.cs b/Assets/Proxima/Runtime/ProximaStream.cs new file mode 100644 index 0000000..69862ef --- /dev/null +++ b/Assets/Proxima/Runtime/ProximaStream.cs @@ -0,0 +1,39 @@ + +using System; +using UnityEngine.Scripting; + +namespace Proxima +{ + [AttributeUsage(AttributeTargets.Method)] + internal class ProximaStreamStartAttribute : PreserveAttribute + { + public string Name; + + public ProximaStreamStartAttribute(string name, bool hidden = false) + { + Name = name; + } + } + + [AttributeUsage(AttributeTargets.Method)] + internal class ProximaStreamStopAttribute : PreserveAttribute + { + public string Name; + + public ProximaStreamStopAttribute(string name, bool hidden = false) + { + Name = name; + } + } + + [AttributeUsage(AttributeTargets.Method)] + internal class ProximaStreamUpdateAttribute : PreserveAttribute + { + public string Name; + + public ProximaStreamUpdateAttribute(string name, bool hidden = false) + { + Name = name; + } + } +} \ No newline at end of file diff --git a/Assets/Proxima/Runtime/ProximaStream.cs.meta b/Assets/Proxima/Runtime/ProximaStream.cs.meta new file mode 100644 index 0000000..7b0e961 --- /dev/null +++ b/Assets/Proxima/Runtime/ProximaStream.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 52a8003bd3ff1f74ca735d2b68d69135 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/UnityComponents.json b/Assets/Proxima/Runtime/UnityComponents.json new file mode 100644 index 0000000..bbc4bbc --- /dev/null +++ b/Assets/Proxima/Runtime/UnityComponents.json @@ -0,0 +1,127 @@ +{ + "UNITY_ANIMATION:UnityEngine.Animations.AimConstraint": ["constraintActive", "weight", "aimVector", "upVector", "worldUpType", "worldUpVector", "worldUpObject", "locked", "rotationAtRest", "rotationOffset", "rotationAxis"], + "UNITY_ANIMATION:Animation": ["clip", "playAutomatically", "animatePhysics", "cullingType"], + "UNITY_ANIMATION:Animator": ["runtimeAnimatorController", "avatar", "applyRootMotion", "updateMode", "cullingMode"], + "UNITY_PHYSICS_2D:AreaEffector2D": ["useColliderMask", "colliderMask", "useGlobalAngle", "forceAngle", "forceMagnitude", "forceVariation", "forceTarget", "drag", "angularDrag"], + "UNITY_2020_3_OR_NEWER && UNITY_PHYSICS:ArticulationBody": ["mass", "useGravity", "immovable", "linearDamping", "angularDamping", "collisionDetectionMode"], + "UNITY_AUDIO:AudioChorusFilter": ["dryMix", "wetMix1", "wetMix2", "wetMix3", "delay", "rate", "depth"], + "UNITY_AUDIO:AudioDistortionFilter": ["distortionLevel"], + "UNITY_AUDIO:AudioEchoFilter": ["delay", "decayRatio", "dryMix", "wetMix"], + "UNITY_AUDIO:AudioHighPassFilter": ["cutoffFrequency", "highpassResonanceQ"], + "UNITY_AUDIO:AudioLowPassFilter": ["cutoffFrequency", "lowpassResonanceQ"], + "UNITY_AUDIO:AudioReverbFilter": ["reverbPreset", "dryLevel", "room", "roomHF", "roomLF", "decayTime", "decayHFRatio", "reflectionsLevel", "reflectionsDelay", "reverbLevel", "reverbDelay", "hfReference", "lfReference", "diffusion", "density"], + "UNITY_AUDIO:AudioReverbZone": ["minDistance", "maxDistance", "reverbPreset", "room", "roomHF", "roomLF", "decayTime", "decayHFRatio", "reflections", "reflectionsDelay", "reverb", "reverbDelay", "HFReference", "LFReference", "diffusion", "density"], + "UNITY_AUDIO:AudioSource": ["clip", "outputAudioMixerGroup", "mute", "bypassEffects", "bypassListenerEffects", "bypassReverbZones", "playOnAwake", "loop", "priority", "volume", "pitch", "panStereo", "spatialBlend", "reverbZoneMix", "dopplerLevel", "spread", "rolloffMode", "minDistance", "maxDistance"], + "UNITY_PHYSICS:BoxCollider": ["isTrigger", "sharedMaterial", "center", "size"], + "UNITY_PHYSICS_2D:BoxCollider2D": ["sharedMaterial", "isTrigger", "usedByEffector", "!UNITY_2023_1_OR_NEWER:usedByComposite", "UNITY_2023_1_OR_NEWER:compositeOperation", "offset", "autoTiling", "size", "edgeRadius"], + "BillboardRenderer": ["billboard", "shadowCastingMode", "receiveShadows", "lightProbeUsage", "reflectionProbeUsage", "motionVectorGenerationMode", "allowOcclusionWhenDynamic"], + "UNITY_PHYSICS_2D:BuoyancyEffector2D": ["useColliderMask", "colliderMask", "density", "surfaceLevel", "linearDrag", "angularDrag", "flowAngle", "flowMagnitude", "flowVariation"], + "UNITY_GUI:UnityEngine.UI.Button": ["interactable", "transition", "targetGraphic", "colors", "navigation"], + "Camera": ["clearFlags", "backgroundColor", "cullingMask", "orthographic", "fieldOfView", "usePhysicalProperties", "nearClipPlane", "farClipPlane", "rect", "depth", "renderingPath", "targetTexture", "useOcclusionCulling", "allowHDR", "allowMSAA", "allowDynamicResolution", "targetDisplay"], + "UNITY_UI:Canvas": ["renderMode", "worldCamera", "pixelPerfect", "sortingOrder", "targetDisplay", "additionalShaderChannels"], + "UNITY_UI:CanvasGroup": ["alpha", "interactable", "blocksRaycasts", "ignoreParentGroups"], + "UNITY_UI:CanvasRenderer": ["cullTransparentMesh"], + "UNITY_GUI:UnityEngine.UI.CanvasScaler": ["uiScaleMode", "scaleFactor", "referenceResolution", "screenMatchMode", "physicalUnit", "fallbackScreenDPI", "defaultSpriteDPI", "referencePixelsPerUnit"], + "UNITY_PHYSICS:CapsuleCollider": ["isTrigger", "sharedMaterial", "center", "radius", "height", "direction"], + "UNITY_PHYSICS_2D:CapsuleCollider2D": ["sharedMaterial", "isTrigger", "usedByEffector", "!UNITY_2023_1_OR_NEWER:usedByComposite", "UNITY_2023_1_OR_NEWER:compositeOperation", "offset", "size", "direction"], + "UNITY_PHYSICS:CharacterController": ["slopeLimit", "stepOffset", "skinWidth", "minMoveDistance", "center", "radius", "height"], + "UNITY_PHYSICS:CharacterJoint": ["connectedBody", "UNITY_2020_2_OR_NEWER:connectedArticulationBody", "anchor", "axis", "autoConfigureConnectedAnchor", "connectedAnchor", "swingAxis", "twistLimitSpring", "lowTwistLimit", "highTwistLimit", "swingLimitSpring", "swing1Limit", "swing2Limit", "enableProjection", "projectionDistance", "projectionAngle", "breakForce", "breakTorque", "enableCollision", "enablePreprocessing", "massScale", "connectedMassScale"], + "UNITY_PHYSICS_2D:CircleCollider2D": ["sharedMaterial", "isTrigger", "usedByEffector", "!UNITY_2023_1_OR_NEWER:usedByComposite", "UNITY_2023_1_OR_NEWER:compositeOperation", "offset", "radius"], + "UNITY_CLOTH:Cloth": ["stretchingStiffness", "bendingStiffness", "useTethers", "useGravity", "damping", "externalAcceleration", "randomAcceleration", "worldVelocityScale", "worldAccelerationScale", "friction", "collisionMassScale", "enableContinuousCollision", "useVirtualParticles", "clothSolverFrequency", "sleepThreshold", "capsuleColliders", "sphereColliders"], + "UNITY_PHYSICS_2D:CompositeCollider2D": ["sharedMaterial", "isTrigger", "usedByEffector", "!UNITY_2023_1_OR_NEWER:usedByComposite", "UNITY_2023_1_OR_NEWER:compositeOperation", "offset", "geometryType", "generationType", "vertexDistance", "offsetDistance", "edgeRadius"], + "UNITY_PHYSICS:ConfigurableJoint": ["connectedBody", "UNITY_2020_2_OR_NEWER:connectedArticulationBody", "anchor", "axis", "autoConfigureConnectedAnchor", "connectedAnchor", "xMotion", "yMotion", "zMotion", "angularXMotion", "angularYMotion", "angularZMotion", "linearLimitSpring", "linearLimit", "angularXLimitSpring", "lowAngularXLimit", "highAngularXLimit", "angularYZLimitSpring", "angularYLimit", "angularZLimit", "targetPosition", "targetVelocity", "xDrive", "yDrive", "zDrive", "targetRotation", "targetAngularVelocity", "rotationDriveMode", "angularXDrive", "angularYZDrive", "slerpDrive", "projectionMode", "projectionDistance", "projectionAngle", "configuredInWorldSpace", "swapBodies", "breakForce", "breakTorque", "enableCollision", "enablePreprocessing", "massScale", "connectedMassScale"], + "UNITY_PHYSICS:ConstantForce": ["force", "relativeForce", "torque", "relativeTorque"], + "UNITY_PHYSICS_2D:ConstantForce2D": ["force", "relativeForce", "torque"], + "UNITY_GUI:UnityEngine.UI.ContentSizeFitter": ["horizontalFit", "verticalFit"], + "UNITY_PHYSICS_2D:DistanceJoint2D": ["enableCollision", "connectedBody", "autoConfigureConnectedAnchor", "anchor", "connectedAnchor", "autoConfigureDistance", "distance", "maxDistanceOnly", "breakForce"], + "UNITY_GUI:UnityEngine.UI.Dropdown": ["interactable", "transition", "targetGraphic", "colors", "navigation", "template", "captionText", "captionImage", "itemText", "itemImage", "value", "alphaFadeSpeed", "options"], + "UNITY_PHYSICS_2D:EdgeCollider2D": ["sharedMaterial", "isTrigger", "usedByEffector", "!UNITY_2023_1_OR_NEWER:usedByComposite", "UNITY_2023_1_OR_NEWER:compositeOperation", "offset", "edgeRadius", "points", "UNITY_2020_1_OR_NEWER:useAdjacentStartPoint", "UNITY_2020_1_OR_NEWER:useAdjacentEndPoint"], + "UNITY_GUI:UnityEngine.EventSystems.EventSystem": ["firstSelectedGameObject", "sendNavigationEvents", "pixelDragThreshold"], + "UNITY_PHYSICS_2D:FixedJoint2D": ["enableCollision", "connectedBody", "autoConfigureConnectedAnchor", "anchor", "connectedAnchor", "dampingRatio", "frequency", "breakForce", "breakTorque"], + "UNITY_PHYSICS_2D:FrictionJoint2D": ["enableCollision", "connectedBody", "autoConfigureConnectedAnchor", "anchor", "connectedAnchor", "maxForce", "maxTorque", "breakForce", "breakTorque"], + "UNITY_GUI:UnityEngine.UI.GraphicRaycaster": ["ignoreReversedGraphics", "blockingObjects", "UNITY_2020_2_OR_NEWER:blockingMask"], + "Grid": ["cellSize", "cellGap", "cellLayout", "cellSwizzle"], + "UNITY_GUI:UnityEngine.UI.GridLayoutGroup": ["padding", "cellSize", "spacing", "startCorner", "startAxis", "childAlignment", "constraint"], + "UNITY_PHYSICS:HingeJoint": ["connectedBody", "UNITY_2020_2_OR_NEWER:connectedArticulationBody", "anchor", "axis", "autoConfigureConnectedAnchor", "connectedAnchor", "useSpring", "spring", "useMotor", "motor", "useLimits", "limits", "breakForce", "breakTorque", "enableCollision", "enablePreprocessing", "massScale", "connectedMassScale"], + "UNITY_PHYSICS_2D:HingeJoint2D": ["enableCollision", "connectedBody", "autoConfigureConnectedAnchor", "anchor", "connectedAnchor", "useMotor", "motor", "useLimits", "limits", "breakForce", "breakTorque"], + "UNITY_GUI:UnityEngine.UI.HorizontalLayoutGroup": ["padding", "spacing", "childAlignment", "childControlWidth", "childControlHeight", "childScaleWidth", "childScaleHeight", "childForceExpandWidth", "childForceExpandHeight"], + "UNITY_GUI:UnityEngine.UI.VerticalLayoutGroup": ["padding", "spacing", "childAlignment", "childControlWidth", "childControlHeight", "childScaleWidth", "childScaleHeight", "childForceExpandWidth", "childForceExpandHeight"], + "UNITY_GUI:UnityEngine.UI.Image": ["sprite", "material", "color", "raycastTarget", "UNITY_2020_1_OR_NEWER:raycastPadding", "maskable"], + "UNITY_GUI:UnityEngine.UI.InputField": ["interactable", "transition", "targetGraphic", "colors", "navigation", "textComponent", "text", "characterLimit", "contentType", "lineType", "placeholder", "caretBlinkRate", "caretWidth", "customCaretColor", "selectionColor", "shouldHideMobileInput", "readOnly", "UNITY_2020_3_OR_NEWER:shouldActivateOnSelect"], + "UNITY_GUI:UnityEngine.UI.LayoutElement": ["ignoreLayout", "minWidth", "minHeight", "preferredWidth", "preferredHeight", "flexibleWidth", "flexibleHeight", "layoutPriority"], + "LensFlare": ["flare", "color", "brightness", "fadeSpeed"], + "Light": ["type", "range", "spotAngle", "color", "intensity", "bounceIntensity", "shadows", "cookie", "flare", "renderMode", "cullingMask"], + "LightProbeProxyVolume": ["refreshMode", "qualityMode", "UNITY_2020_2_OR_NEWER:dataFormat", "boundingBoxMode", "resolutionMode", "probeDensity", "probePositionMode"], + "LineRenderer": ["loop", "startColor", "endColor", "numCornerVertices", "numCapVertices", "alignment", "textureMode", "shadowBias", "generateLightingData", "useWorldSpace", "sharedMaterials", "shadowCastingMode", "receiveShadows", "lightProbeUsage", "reflectionProbeUsage", "motionVectorGenerationMode", "allowOcclusionWhenDynamic", "sortingLayerID", "sortingOrder"], + "UNITY_ANIMATION:UnityEngine.Animations.LookAtConstraint": ["constraintActive", "weight", "useUpObject", "roll", "worldUpObject", "locked", "rotationAtRest", "rotationOffset"], + "UNITY_GUI:UnityEngine.UI.Mask": ["showMaskGraphic"], + "UNITY_PHYSICS:MeshCollider": ["convex", "isTrigger", "cookingOptions", "sharedMaterial", "sharedMesh"], + "MeshFilter": ["sharedMesh"], + "MeshRenderer": ["sharedMaterials", "shadowCastingMode", "receiveShadows", "lightProbeUsage", "reflectionProbeUsage", "probeAnchor", "motionVectorGenerationMode", "allowOcclusionWhenDynamic"], + "UNITY_AI:UnityEngine.AI.NavMeshAgent": ["agentTypeID", "baseOffset", "speed", "angularSpeed", "acceleration", "stoppingDistance", "autoBraking", "radius", "height", "obstacleAvoidanceType", "avoidancePriority", "autoTraverseOffMeshLink", "autoRepath", "areaMask"], + "UNITY_AI:UnityEngine.AI.NavMeshObstacle": ["shape", "center", "size", "carving"], + "OcclusionArea": ["size", "center"], + "OcclusionPortal": ["open"], + "UNITY_AI && !UNITY_2023_2_OR_NEWER:UnityEngine.AI.OffMeshLink": ["startTransform", "endTransform", "costOverride", "biDirectional", "activated", "autoUpdatePositions", "area"], + "UNITY_GUI:UnityEngine.UI.Outline": ["effectColor", "effectDistance", "useGraphicAlpha"], + "UNITY_ANIMATION:UnityEngine.Animations.ParentConstraint": ["constraintActive", "weight", "locked", "translationAtRest", "rotationAtRest", "translationOffsets", "rotationOffsets", "translationAxis", "rotationAxis"], + "UNITY_PARTICLE_SYSTEM:ParticleSystemForceField": ["shape", "startRange", "endRange", "directionX", "directionY", "directionZ", "gravity", "gravityFocus", "rotationSpeed", "rotationAttraction", "rotationRandomness", "drag", "multiplyDragByParticleSize", "multiplyDragByParticleVelocity", "vectorField", "vectorFieldSpeed", "vectorFieldAttraction", "UNITY_2021_3_OR_NEWER:enabled"], + "UNITY_GUI:UnityEngine.EventSystems.Physics2DRaycaster": ["eventMask", "maxRayIntersections"], + "UNITY_GUI:UnityEngine.EventSystems.PhysicsRaycaster": ["eventMask", "maxRayIntersections"], + "UNITY_PHYSICS_2D:PlatformEffector2D": ["useColliderMask", "colliderMask", "rotationalOffset", "useOneWay", "useOneWayGrouping", "surfaceArc", "useSideFriction", "useSideBounce", "sideArc"], + "UNITY_DIRECTOR:UnityEngine.Playables.PlayableDirector": ["playableAsset", "timeUpdateMode", "playOnAwake", "extrapolationMode", "initialTime", "time"], + "UNITY_PHYSICS_2D:PointEffector2D": ["useColliderMask", "colliderMask", "forceMagnitude", "forceVariation", "distanceScale", "forceSource", "forceTarget", "forceMode", "drag", "angularDrag"], + "UNITY_PHYSICS_2D:PolygonCollider2D": ["sharedMaterial", "isTrigger", "usedByEffector", "!UNITY_2023_1_OR_NEWER:usedByComposite", "UNITY_2023_1_OR_NEWER:compositeOperation", "autoTiling", "offset", "pathCount", "points"], + "UNITY_ANIMATION:UnityEngine.Animations.PositionConstraint": ["constraintActive", "weight", "locked", "translationAtRest", "translationOffset", "translationAxis"], + "Projector": ["nearClipPlane", "farClipPlane", "fieldOfView", "aspectRatio", "orthographic", "orthographicSize", "material", "ignoreLayers"], + "UNITY_GUI:UnityEngine.UI.RawImage": ["texture", "color", "raycastTarget", "UNITY_2020_1_OR_NEWER:raycastPadding", "maskable", "uvRect"], + "UNITY_GUI:UnityEngine.UI.RectMask2D": ["padding", "softness"], + "RectTransform": ["localPosition", "sizeDelta", "anchorMin", "anchorMax", "localRotation", "localScale"], + "ReflectionProbe": ["mode", "importance", "intensity", "boxProjection", "blendDistance", "size", "center", "resolution", "hdr", "shadowDistance", "clearFlags", "backgroundColor", "cullingMask", "nearClipPlane", "farClipPlane"], + "UNITY_PHYSICS_2D:RelativeJoint2D": ["enableCollision", "connectedBody", "maxForce", "maxTorque", "correctionScale", "autoConfigureOffset", "linearOffset", "angularOffset", "breakForce", "breakTorque"], + "UNITY_PHYSICS:Rigidbody": ["mass", "drag", "angularDrag", "useGravity", "isKinematic", "interpolation", "collisionDetectionMode", "constraints"], + "UNITY_PHYSICS_2D:Rigidbody2D": ["bodyType", "simulated", "useAutoMass", "mass", "drag", "angularDrag", "gravityScale", "collisionDetectionMode", "sleepMode", "interpolation", "constraints"], + "UNITY_ANIMATION:UnityEngine.Animations.RotationConstraint": ["constraintActive", "weight", "locked", "rotationAtRest", "rotationOffset", "rotationAxis"], + "UNITY_ANIMATION:UnityEngine.Animations.ScaleConstraint": ["constraintActive", "weight", "locked", "scaleAtRest", "scaleOffset", "scalingAxis"], + "UNITY_GUI:UnityEngine.UI.Scrollbar": ["interactable", "transition", "targetGraphic", "colors", "navigation", "handleRect", "direction", "value", "size", "numberOfSteps"], + "UNITY_GUI:UnityEngine.UI.ScrollRect": ["content", "horizontal", "vertical", "movementType", "elasticity", "inertia", "decelerationRate", "scrollSensitivity", "viewport", "horizontalScrollbar", "verticalScrollbar"], + "UNITY_GUI:UnityEngine.UI.Shadow": ["effectColor", "effectDistance", "useGraphicAlpha"], + "SkinnedMeshRenderer": ["UNITY_2021_2_OR_NEWER:bounds", "quality", "updateWhenOffscreen", "sharedMesh", "rootBone", "sharedMaterials", "shadowCastingMode", "receiveShadows", "lightProbeUsage", "reflectionProbeUsage", "motionVectorGenerationMode", "allowOcclusionWhenDynamic"], + "Skybox": ["material"], + "UNITY_GUI:UnityEngine.UI.Slider": ["interactable", "transition", "targetGraphic", "colors", "navigation", "fillRect", "handleRect", "direction", "minValue", "maxValue", "wholeNumbers", "value"], + "UNITY_PHYSICS_2D:SliderJoint2D": ["enableCollision", "connectedBody", "autoConfigureConnectedAnchor", "anchor", "connectedAnchor", "autoConfigureAngle", "angle", "useMotor", "motor", "useLimits", "limits", "breakForce", "breakTorque"], + "UnityEngine.Rendering.SortingGroup": ["sortingLayerID", "sortingOrder"], + "UNITY_PHYSICS:SphereCollider": ["isTrigger", "sharedMaterial", "center", "radius"], + "UNITY_PHYSICS:SpringJoint": ["connectedBody", "UNITY_2020_2_OR_NEWER:connectedArticulationBody", "anchor", "axis", "autoConfigureConnectedAnchor", "connectedAnchor", "spring", "damper", "minDistance", "maxDistance", "tolerance", "breakForce", "breakTorque", "enableCollision", "enablePreprocessing", "massScale", "connectedMassScale"], + "UNITY_PHYSICS_2D:SpringJoint2D": ["enableCollision", "connectedBody", "autoConfigureConnectedAnchor", "anchor", "connectedAnchor", "autoConfigureDistance", "distance", "dampingRatio", "frequency", "breakForce"], + "SpriteMask": ["sprite", "alphaCutoff", "isCustomRangeActive", "frontSortingOrder"], + "SpriteRenderer": ["sprite", "color", "flipX", "flipY", "drawMode", "maskInteraction", "spriteSortPoint", "sharedMaterials", "sortingLayerID", "sortingOrder"], + "UNITY_UI:UnityEngine.U2D.SpriteShapeRenderer": ["color", "maskInteraction", "sharedMaterials", "sortingLayerID", "sortingOrder"], + "UNITY_GUI:UnityEngine.EventSystems.StandaloneInputModule": ["horizontalAxis", "verticalAxis", "submitButton", "cancelButton", "inputActionsPerSecond", "repeatDelay"], + "StreamingController": ["streamingMipmapBias"], + "UNITY_PHYSICS_2D:SurfaceEffector2D": ["useColliderMask", "colliderMask", "speed", "speedVariation", "forceScale", "useContactForce", "useFriction", "useBounce"], + "UNITY_PHYSICS_2D:TargetJoint2D": ["anchor", "target", "autoConfigureTarget", "maxForce", "dampingRatio", "frequency", "breakForce"], + "UNITY_TERRAIN_PHYSICS:TerrainCollider": ["isTrigger", "sharedMaterial", "terrainData"], + "UNITY_GUI:UnityEngine.UI.Text": ["text", "font", "fontStyle", "fontSize", "lineSpacing", "supportRichText", "alignment", "alignByGeometry", "horizontalOverflow", "verticalOverflow", "resizeTextForBestFit", "color", "raycastTarget", "UNITY_2020_1_OR_NEWER:raycastPadding", "maskable"], + "UNITY_TMPRO:TMPro.TextContainer": ["anchorPosition", "width", "height", "margins"], + "TextMesh": ["text", "offsetZ", "characterSize", "lineSpacing", "anchor", "alignment", "tabSize", "fontSize", "fontStyle", "richText", "font", "color"], + "UNITY_TMPRO:TMPro.TextMeshPro": ["text", "font", "fontStyle", "fontSize", "autoSizeTextContainer", "color", "colorGradientPreset", "colorGradient", "overrideColorTags", "characterSpacing", "wordSpacing", "lineSpacing", "paragraphSpacing", "alignment", "enableWordWrapping", "overflowMode", "horizontalMapping", "verticalMapping", "margin", "sortingLayerID", "sortingOrder", "geometrySortingOrder", "isTextObjectScaleStatic", "isOrthographic", "richText", "parseCtrlCharacters", "useMaxVisibleDescender", "spriteAsset", "styleSheet", "enableKerning", "extraPadding"], + "UNITY_TMPRO:TMPro.TextMeshProUGUI": ["text", "font", "fontStyle", "fontSize", "autoSizeTextContainer", "color", "colorGradientPreset", "colorGradient", "overrideColorTags", "characterSpacing", "wordSpacing", "lineSpacing", "paragraphSpacing", "alignment", "enableWordWrapping", "overflowMode", "horizontalMapping", "verticalMapping", "margin", "geometrySortingOrder", "isTextObjectScaleStatic", "isOrthographic", "richText", "parseCtrlCharacters", "useMaxVisibleDescender", "spriteAsset", "styleSheet", "enableKerning", "extraPadding"], + "UNITY_TILEMAP:UnityEngine.Tilemaps.Tilemap": ["animationFrameRate", "color", "tileAnchor", "orientation"], + "UNITY_TILEMAP:UnityEngine.Tilemaps.TilemapCollider2D": ["maximumTileChangeCount", "extrusionFactor", "sharedMaterial", "isTrigger", "usedByEffector", "!UNITY_2023_1_OR_NEWER:usedByComposite", "UNITY_2023_1_OR_NEWER:compositeOperation", "offset"], + "UNITY_TILEMAP:UnityEngine.Tilemaps.TilemapRenderer": ["sortOrder", "mode", "detectChunkCullingBounds", "chunkCullingBounds", "maskInteraction", "sharedMaterials", "sortingLayerID", "sortingOrder"], + "UNITY_TMPRO:TMPro.TMP_Dropdown": ["template", "captionText", "captionImage", "placeholder", "itemText", "itemImage", "value", "alphaFadeSpeed", "options"], + "UNITY_TMPRO:TMPro.TMP_InputField": ["interactable", "transition", "targetGraphic", "colors", "navigation", "textViewport", "textComponent", "text", "fontAsset", "pointSize", "characterLimit", "contentType", "lineType", "placeholder", "verticalScrollbar", "caretBlinkRate", "caretWidth", "customCaretColor", "selectionColor", "onFocusSelectAll", "resetOnDeActivation", "restoreOriginalTextOnEscape", "shouldHideSoftKeyboard", "shouldHideMobileInput", "readOnly", "richText", "isRichTextEditingAllowed"], + "UNITY_TMPRO:TMPro.TMP_ScrollbarEventHandler": ["isSelected"], + "UNITY_TMPRO:TMPro.TMP_SubMesh": ["fontAsset", "spriteAsset"], + "UNITY_TMPRO:TMPro.TMP_SubMeshUI": ["fontAsset", "spriteAsset"], + "UNITY_GUI:UnityEngine.UI.Toggle": ["interactable", "transition", "targetGraphic", "colors", "navigation", "isOn", "toggleTransition", "graphic", "group"], + "UNITY_GUI:UnityEngine.UI.ToggleGroup": ["allowSwitchOff"], + "TrailRenderer": ["time", "minVertexDistance", "autodestruct", "emitting", "colorGradient", "numCornerVertices", "numCapVertices", "alignment", "textureMode", "generateLightingData", "shadowBias", "sharedMaterials", "shadowCastingMode", "receiveShadows", "lightProbeUsage", "reflectionProbeUsage", "motionVectorGenerationMode", "allowOcclusionWhenDynamic", "sortingLayerID", "sortingOrder"], + "Transform": ["localPosition", "localRotation", "localScale"], + "UNITY_2021_2_OR_NEWER && UNITY_UIELEMENTS:UnityEngine.UIElements.UIDocument": ["panelSettings", "visualTreeAsset", "sortingOrder"], + "UNITY_VIDEO:UnityEngine.Video.VideoPlayer": ["source", "clip", "url", "playOnAwake", "waitForFirstFrame", "isLooping", "skipOnDrop", "playbackSpeed", "renderMode", "targetCamera", "targetCameraAlpha", "targetCamera3DLayout", "aspectRatio", "audioOutputMode", "controlledAudioTrackCount"], + "UNITY_VEHICLES:WheelCollider": ["mass", "radius", "wheelDampingRate", "suspensionDistance", "forceAppPointDistance", "center", "suspensionSpring", "forwardFriction", "sidewaysFriction"], + "UNITY_PHYSICS_2D:WheelJoint2D": ["enableCollision", "connectedBody", "autoConfigureConnectedAnchor", "anchor", "connectedAnchor", "suspension", "useMotor", "motor", "breakForce", "breakTorque"], + "UNITY_WIND:WindZone": ["mode", "windMain", "windTurbulence", "windPulseMagnitude", "windPulseFrequency"] +} diff --git a/Assets/Proxima/Runtime/UnityComponents.json.meta b/Assets/Proxima/Runtime/UnityComponents.json.meta new file mode 100644 index 0000000..21fa190 --- /dev/null +++ b/Assets/Proxima/Runtime/UnityComponents.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d6f93b674e30e4fc0bfa22e0880c4c87 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/WebGL.meta b/Assets/Proxima/Runtime/WebGL.meta new file mode 100644 index 0000000..8ac0be2 --- /dev/null +++ b/Assets/Proxima/Runtime/WebGL.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 65bd8c67802efd14abb7aead9681ea6d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/WebGL/ProximaWebGL.jslib b/Assets/Proxima/Runtime/WebGL/ProximaWebGL.jslib new file mode 100644 index 0000000..f632b07 --- /dev/null +++ b/Assets/Proxima/Runtime/WebGL/ProximaWebGL.jslib @@ -0,0 +1,113 @@ +const ProximaWebGLLib = { + $channels: {}, + + ProximaWebGLCreate: function(displayName, instanceId, productName, companyName, platform, productVersion, proximaVersion, connectionId, messageCb, closeCB) { + const connId = UTF8ToString(connectionId); + const instId = UTF8ToString(instanceId); + const inChannel = new BroadcastChannel('proxima-' + connId + '-in'); + const outChannel = new BroadcastChannel('proxima-' + connId + '-out'); + + const conIdUtf8Length = lengthBytesUTF8(connId) + 1; + const connIdUtf8 = _malloc(conIdUtf8Length); + stringToUTF8(connId, connIdUtf8, conIdUtf8Length); + + inChannel.onmessage = function(e) { + if (e.data === 'close') { + Module.dynCall_vi(closeCB, connIdUtf8); + return; + } + + const size = lengthBytesUTF8(e.data) + 1; + const buffer = _malloc(size); + stringToUTF8(e.data, buffer, size); + + try { + Module.dynCall_vii(messageCb, connIdUtf8, buffer); + } finally { + _free(buffer); + } + }; + + const channel = { + out: outChannel, + in: inChannel, + connIdUtf8: connIdUtf8, + }; + + channels[connId] = channel; + + const connections = [{ + DisplayName: UTF8ToString(displayName), + InstanceId: instId, + ProductName: UTF8ToString(productName), + CompanyName: UTF8ToString(companyName), + Platform: UTF8ToString(platform), + ProductVersion: UTF8ToString(productVersion), + ProximaVersion: UTF8ToString(proximaVersion), + ConnectionId: connId + }]; + + // Avoid hanging onto old connections in localStorage by clearing it out + window.localStorage.setItem('proxima-connections', JSON.stringify(connections)); + + window.addEventListener('pagehide', function() { + if (channel.out) { + const connections = window.localStorage.getItem('proxima-connections'); + if (connections && connections.includes(connId)) { + window.localStorage.setItem('proxima-connections', '[]'); + } + + channel.out.postMessage('close'); + } + }); + }, + + ProximaWebGLSelected: function(connectionId) { + window.localStorage.setItem('proxima-connections', '[]'); + }, + + ProximaWebGLOpenOnMouseUp: function(url) { + const urlString = UTF8ToString(url); + function openUrl() { + window.open(urlString, '_blank'); + document.removeEventListener('mouseup', openUrl); + } + + document.addEventListener('mouseup', openUrl); + }, + + ProximaWebGLDestroy: function(connectionId) { + const connId = UTF8ToString(connectionId); + + const outChannel = channels[connId].out; + if (outChannel) { + outChannel.postMessage('close'); + outChannel.close(); + } + + const inChannel = channels[connId].in; + if (inChannel) { + inChannel.close(); + } + + const connIdUtf8 = channels[connId].connIdUtf8; + if (connIdUtf8) { + _free(connIdUtf8); + } + + const connections = window.localStorage.getItem('proxima-connections'); + if (connections && connections.includes(connId)) { + window.localStorage.setItem('proxima-connections', '[]'); + } + + delete channels[connId]; + }, + + ProximaWebGLSend: function(connectionId, data) { + const connId = UTF8ToString(connectionId); + channels[connId].out.postMessage(UTF8ToString(data)); + } +} + +autoAddDeps(ProximaWebGLLib, '$channels'); +mergeInto(LibraryManager.library, ProximaWebGLLib); \ No newline at end of file diff --git a/Assets/Proxima/Runtime/WebGL/ProximaWebGL.jslib.meta b/Assets/Proxima/Runtime/WebGL/ProximaWebGL.jslib.meta new file mode 100644 index 0000000..e9b14df --- /dev/null +++ b/Assets/Proxima/Runtime/WebGL/ProximaWebGL.jslib.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 0a66e2f15d6d7b441ba16ebb86095440 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + WebGL: WebGL + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/WebGL/ProximaWebGLConnection.cs b/Assets/Proxima/Runtime/WebGL/ProximaWebGLConnection.cs new file mode 100644 index 0000000..5d80804 --- /dev/null +++ b/Assets/Proxima/Runtime/WebGL/ProximaWebGLConnection.cs @@ -0,0 +1,195 @@ +#if UNITY_WEBGL + +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.IO; +using System.Runtime.InteropServices; +using AOT; +using UnityEngine; + +namespace Proxima +{ + internal class ProximaWebGLConnection : ProximaConnection, IDisposable + { + public bool Open => _open; + + public event Action OnConnect; + public event Action OnClose; + + private ConcurrentQueue<(ProximaConnection, string)> _receiveQueue; + + private string _password; + private bool _passwordProvided = false; + private ProximaInstanceHello _hello; + private DateTime _lastListTime; + private DateTime _lastSelectTime; + private ProximaStatus _status; + private ProximaDispatcher _dispatcher; + private bool _open; + + private static Dictionary<string, ProximaWebGLConnection> _connections = new Dictionary<string, ProximaWebGLConnection>(); + + [DllImport("__Internal")] + private static extern void ProximaWebGLCreate( + string displayName, + string instanceId, + string productName, + string companyName, + string platform, + string productVersion, + string proximaVersion, + string connectionId, + Action<string, string> messageCb, + Action<string> closeCB); + + [DllImport("__Internal")] + private static extern void ProximaWebGLSelected(string connectionId); + + [DllImport("__Internal")] + private static extern void ProximaWebGLOpenOnMouseUp(string url); + + [DllImport("__Internal")] + private static extern void ProximaWebGLSend(string connectionId, string message); + + [DllImport("__Internal")] + private static extern void ProximaWebGLDestroy(string connectionId); + + public ProximaWebGLConnection(string displayName, string password, ProximaDispatcher dispatcher, ProximaStatus status, ConcurrentQueue<(ProximaConnection, string)> queue) + { + _receiveQueue = queue; + _dispatcher = dispatcher; + _status = status; + + _hello = ProximaSerialization.CreateHello(displayName); + _password = ProximaSerialization.HashPassword(password, _hello.ConnectionId); + + _connections.Add(_hello.ConnectionId, this); + + ProximaWebGLCreate( + _hello.DisplayName, + _hello.InstanceId, + _hello.ProductName, + _hello.CompanyName, + _hello.Platform, + _hello.ProductVersion, + _hello.ProximaVersion, + _hello.ConnectionId, + OnMessageStatic, + OnCloseStatic); + } + + public static void OpenOnMouseUp(string url) + { + ProximaWebGLOpenOnMouseUp(url); + } + + [MonoPInvokeCallback(typeof(Action<string, string>))] + public static void OnMessageStatic(string connectionId, string message) + { + try + { + _connections[connectionId].OnMessageInstance(message); + } + catch (Exception e) + { + Log.Exception(e); + } + } + + [MonoPInvokeCallback(typeof(Action<string>))] + public static void OnCloseStatic(string connectionId) + { + try + { + _connections[connectionId].OnCloseInstance(); + } + catch (Exception e) + { + Log.Exception(e); + } + } + + private void OnCloseInstance() + { + _open = false; + _dispatcher.Dispatch(() => { + if (_passwordProvided) + { + OnClose?.Invoke(); + } + }); + } + + public void SendMessage(MemoryStream data) + { + var message = System.Text.Encoding.UTF8.GetString(data.GetBuffer(), 0, (int)data.Length); + Log.Verbose("Sending: " + message); + ProximaWebGLSend(_hello.ConnectionId, message); + } + + private void OnMessageInstance(string message) + { + Log.Verbose("Received: " + message); + + if (_passwordProvided) + { + _receiveQueue.Enqueue((this, message)); + } + else + { + ProximaRequest request; + + try + { + request = JsonUtility.FromJson<ProximaRequest>(message); + } + catch (Exception ex) + { + Log.Error("Failed to parse request: " + ex.Message); + return; + } + + if (request.Type == ProximaRequestType.Select) + { + if (_lastSelectTime != null && DateTime.Now - _lastSelectTime < TimeSpan.FromSeconds(1)) + { + SendMessage(ProximaSerialization.ErrorResponse(request, "Too many requests.")); + return; + } + + MemoryStream response; + if (request.Cmd != _hello.InstanceId) + { + response = ProximaSerialization.ErrorResponse(request, "Invalid selection."); + } + else if (request.Args.Length != 1 || request.Args[0] != _password) + { + response = ProximaSerialization.ErrorResponse(request, "Invalid password."); + } + else + { + response = ProximaSerialization.DataResponse(request, "OK"); + _open = true; + _passwordProvided = true; + _dispatcher.Dispatch(() => OnConnect?.Invoke()); + } + + SendMessage(response); + _lastSelectTime = DateTime.Now; + } + else + { + Log.Info("Unknown request: " + request.Type); + } + } + } + + public void Dispose() + { + ProximaWebGLDestroy(_hello.ConnectionId); + } + } +} + +#endif \ No newline at end of file diff --git a/Assets/Proxima/Runtime/WebGL/ProximaWebGLConnection.cs.meta b/Assets/Proxima/Runtime/WebGL/ProximaWebGLConnection.cs.meta new file mode 100644 index 0000000..00212a6 --- /dev/null +++ b/Assets/Proxima/Runtime/WebGL/ProximaWebGLConnection.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 86c13c40d96ce6c4ebd1ef78ca0ec678 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/WebGL/ProximaWebGLServer.cs b/Assets/Proxima/Runtime/WebGL/ProximaWebGLServer.cs new file mode 100644 index 0000000..ac461eb --- /dev/null +++ b/Assets/Proxima/Runtime/WebGL/ProximaWebGLServer.cs @@ -0,0 +1,121 @@ +#if UNITY_WEBGL + +using System.Collections; +using System.Collections.Concurrent; +using System.Collections.Generic; +using UnityEngine; + +namespace Proxima +{ + internal class ProximaWebGLServer : ProximaServer + { + private ConcurrentQueue<(ProximaConnection, string)> _receiveQueue; + private ProximaDispatcher _dispatcher; + private WaitForSeconds _wait = new WaitForSeconds(1); + private ProximaStatus _status; + private ProximaWebGLConnection _pendingConnection; + private List<ProximaWebGLConnection> _activeConnections = new List<ProximaWebGLConnection>(); + private string _displayName; + private string _password; + + public ProximaWebGLServer(ProximaDispatcher dispatcher, ProximaStatus status) + { + _dispatcher = dispatcher; + _status = status; + } + + public void Start(string displayName, string password) + { + Log.Info("Proxima Inspector started for WebGL."); + _displayName = displayName; + _password = password; + _receiveQueue = new ConcurrentQueue<(ProximaConnection, string)>(); + _status.SetConnectInfo(Application.streamingAssetsPath + "/proxima/index.html"); + CreateNewConnection(); + } + + private IEnumerator CreateNewConnectionCoroutine() + { + yield return _wait; + if (_pendingConnection != null) + { + yield break; + } + + try + { + + Log.Verbose("Opening new Proxima WebGL connection: "); + var conn = new ProximaWebGLConnection(_displayName, _password, _dispatcher, _status, _receiveQueue); + + conn.OnConnect += () => { + Log.Verbose("Connected."); + _activeConnections.Add(conn); + _status.IncrementConnections(); + CreateNewConnection(); + }; + + conn.OnClose += () => { + Log.Verbose("Disconnected."); + conn.Dispose(); + + if (conn == _pendingConnection) + { + if (_receiveQueue != null) + { + Log.Verbose("Failed to create WebGL connection. Check for JavaScript errors."); + _status.SetError("Failed to create WebGL connection. Check for JavaScript errors."); + } + } + else + { + _activeConnections.Remove(conn); + _status.DecrementConnections(); + } + }; + + _pendingConnection = conn; + } + catch (System.Exception e) + { + Log.Exception(e); + } + } + + private void CreateNewConnection() + { + _pendingConnection = null; + if (_receiveQueue != null && _dispatcher != null) + { + _dispatcher.StartCoroutine(CreateNewConnectionCoroutine()); + } + } + + public void Stop() + { + foreach (var connection in _activeConnections) + { + connection.Dispose(); + } + + _activeConnections.Clear(); + _pendingConnection?.Dispose(); + _receiveQueue = null; + } + + public bool TryGetMessage(out (ProximaConnection, string) message) + { + if (_receiveQueue != null) + { + return _receiveQueue.TryDequeue(out message); + } + else + { + message = (null, ""); + return false; + } + } + } +} + +#endif \ No newline at end of file diff --git a/Assets/Proxima/Runtime/WebGL/ProximaWebGLServer.cs.meta b/Assets/Proxima/Runtime/WebGL/ProximaWebGLServer.cs.meta new file mode 100644 index 0000000..6c58d4e --- /dev/null +++ b/Assets/Proxima/Runtime/WebGL/ProximaWebGLServer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f38bbfdc4fcaa7448bdbaf5c6eb4c6fd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Runtime/csc.rsp b/Assets/Proxima/Runtime/csc.rsp new file mode 100644 index 0000000..349a1e2 --- /dev/null +++ b/Assets/Proxima/Runtime/csc.rsp @@ -0,0 +1 @@ +-r:System.Web.dll \ No newline at end of file diff --git a/Assets/Proxima/Runtime/csc.rsp.meta b/Assets/Proxima/Runtime/csc.rsp.meta new file mode 100644 index 0000000..d63520a --- /dev/null +++ b/Assets/Proxima/Runtime/csc.rsp.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 65378d4b1a0f3004082b228aa7a3dca1 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Scenes.meta b/Assets/Proxima/Scenes.meta new file mode 100644 index 0000000..9ea7bcb --- /dev/null +++ b/Assets/Proxima/Scenes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5b35b2d7756994647929b3f5f3361927 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Scenes/BasicProximaSetup.unity b/Assets/Proxima/Scenes/BasicProximaSetup.unity new file mode 100644 index 0000000..aeabbda --- /dev/null +++ b/Assets/Proxima/Scenes/BasicProximaSetup.unity @@ -0,0 +1,636 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &129971643 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 129971645} + - component: {fileID: 129971644} + m_Layer: 0 + m_Name: Proxima + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &129971644 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 129971643} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e277581af68d4604da056e460b819656, type: 3} + m_Name: + m_EditorClassIdentifier: + _displayName: My App + _port: 7759 + _password: + _useHttps: 0 + _certificate: {fileID: 0} + _certificatePassword: + _runOnEnable: 0 + _logBufferSize: 1000 + _instantiateStatusUI: 1 + _instantiateConnectUI: 1 + _dontDestroyOnLoad: 1 + _serverType: 1 + _serverUrl: +--- !u!4 &129971645 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 129971643} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &408310171 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 408310174} + - component: {fileID: 408310173} + - component: {fileID: 408310172} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &408310172 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 408310171} + m_Enabled: 1 +--- !u!20 &408310173 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 408310171} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &408310174 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 408310171} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &502782348 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 502782352} + - component: {fileID: 502782351} + - component: {fileID: 502782350} + - component: {fileID: 502782349} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!65 &502782349 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 502782348} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &502782350 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 502782348} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &502782351 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 502782348} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &502782352 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 502782348} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1162993644 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1162993646} + - component: {fileID: 1162993645} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1162993645 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1162993644} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1162993646 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1162993644} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &1290094354 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1290094357} + - component: {fileID: 1290094356} + - component: {fileID: 1290094355} + m_Layer: 0 + m_Name: Instructions + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1290094355 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1290094354} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: '1. Play this scene + + 2. Press Proxima Icon, set display name and password + + 3. + In your browser, visit 127.0.0.1:7759 + + 4. Learn more at unityproxima.com' + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 4 + m_fontSizeBase: 4 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 1290094356} + m_maskType: 0 +--- !u!23 &1290094356 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1290094354} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!224 &1290094357 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1290094354} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 2.43} + m_SizeDelta: {x: 10.13, y: 5} + m_Pivot: {x: 0.5, y: 0.5} diff --git a/Assets/Proxima/Scenes/BasicProximaSetup.unity.meta b/Assets/Proxima/Scenes/BasicProximaSetup.unity.meta new file mode 100644 index 0000000..c6a93b6 --- /dev/null +++ b/Assets/Proxima/Scenes/BasicProximaSetup.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8f5fd60ea70bf0243ac3e32c81becef6 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Sprites.meta b/Assets/Proxima/Sprites.meta new file mode 100644 index 0000000..c8dd1a5 --- /dev/null +++ b/Assets/Proxima/Sprites.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2b20e0d4eb6a26846917fb941ab3162f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Sprites/flexalon-logo.png b/Assets/Proxima/Sprites/flexalon-logo.png new file mode 100644 index 0000000..d3fff5b Binary files /dev/null and b/Assets/Proxima/Sprites/flexalon-logo.png differ diff --git a/Assets/Proxima/Sprites/flexalon-logo.png.meta b/Assets/Proxima/Sprites/flexalon-logo.png.meta new file mode 100644 index 0000000..a8b6720 --- /dev/null +++ b/Assets/Proxima/Sprites/flexalon-logo.png.meta @@ -0,0 +1,158 @@ +fileFormatVersion: 2 +guid: 9c4086f38f8e37949978f4861eee5e47 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + 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 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Windows Store Apps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Sprites/proxima_icon_32x32.png b/Assets/Proxima/Sprites/proxima_icon_32x32.png new file mode 100644 index 0000000..0e274fe Binary files /dev/null and b/Assets/Proxima/Sprites/proxima_icon_32x32.png differ diff --git a/Assets/Proxima/Sprites/proxima_icon_32x32.png.meta b/Assets/Proxima/Sprites/proxima_icon_32x32.png.meta new file mode 100644 index 0000000..8b5780b --- /dev/null +++ b/Assets/Proxima/Sprites/proxima_icon_32x32.png.meta @@ -0,0 +1,146 @@ +fileFormatVersion: 2 +guid: 84dd31c6b1180460789ddc5fc0620856 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + 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 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Sprites/proxima_logo.png b/Assets/Proxima/Sprites/proxima_logo.png new file mode 100644 index 0000000..ec7e00e Binary files /dev/null and b/Assets/Proxima/Sprites/proxima_logo.png differ diff --git a/Assets/Proxima/Sprites/proxima_logo.png.meta b/Assets/Proxima/Sprites/proxima_logo.png.meta new file mode 100644 index 0000000..8f4722e --- /dev/null +++ b/Assets/Proxima/Sprites/proxima_logo.png.meta @@ -0,0 +1,158 @@ +fileFormatVersion: 2 +guid: 834e6e3f5b2f6fd479051cdddf01f4b1 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + 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 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/Third-Party Notices.txt b/Assets/Proxima/Third-Party Notices.txt new file mode 100644 index 0000000..c78dc78 --- /dev/null +++ b/Assets/Proxima/Third-Party Notices.txt @@ -0,0 +1,14 @@ +Proxima uses third party code under their own +respective licenses: + +Proxima/Runtime/HttpDateParse.cs: + + https://github.com/dotnet/runtime/blob/main/src/libraries/Common/src/System/Net/HttpDateParser.cs + Copyright (c) .NET Foundation and Contributors + MIT License + +Proxima/WebSocketSharp + + https://github.com/sta/websocket-sharp + Copyright (c) 2010-2023 sta.blockhead + MIT License \ No newline at end of file diff --git a/Assets/Proxima/Third-Party Notices.txt.meta b/Assets/Proxima/Third-Party Notices.txt.meta new file mode 100644 index 0000000..8466d50 --- /dev/null +++ b/Assets/Proxima/Third-Party Notices.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 665ad43a4b3704868b3ad4406c5c3d5b +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/WebSocketSharp.meta b/Assets/Proxima/WebSocketSharp.meta new file mode 100644 index 0000000..f3d5063 --- /dev/null +++ b/Assets/Proxima/WebSocketSharp.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 487bb2dde2973534d95874cd2990307b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/WebSocketSharp/LICENSE.txt b/Assets/Proxima/WebSocketSharp/LICENSE.txt new file mode 100644 index 0000000..577a452 --- /dev/null +++ b/Assets/Proxima/WebSocketSharp/LICENSE.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2010-2023 sta.blockhead + +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. \ No newline at end of file diff --git a/Assets/Proxima/WebSocketSharp/LICENSE.txt.meta b/Assets/Proxima/WebSocketSharp/LICENSE.txt.meta new file mode 100644 index 0000000..37cb04f --- /dev/null +++ b/Assets/Proxima/WebSocketSharp/LICENSE.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3adce1a9bc62b4515979022e003e9e6b +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/WebSocketSharp/README.txt b/Assets/Proxima/WebSocketSharp/README.txt new file mode 100644 index 0000000..274a3ba --- /dev/null +++ b/Assets/Proxima/WebSocketSharp/README.txt @@ -0,0 +1,12 @@ +This is a modified fork of the open source WebSocketSharp library: + +https://github.com/sta/websocket-sharp + +If you need access to the modified source, email support@virtualmaker.net. + +Modifications: +- Prefixed all namespaces with 'Proxima' to avoid collisions. +- Previously, if HttpServer was initialized as 'secure', it would fail for HTTP requests. Now, it will handle HTTP requests by redirecting to HTTPS. +- Updated targeted .NET version to 4.7.1. +- Added default parameter to SslStrema constructor, to avoid failure on older Unity versions. +- Added SendAsTextAsync to avoid some memory allocation and send MemoryStream directly as string. \ No newline at end of file diff --git a/Assets/Proxima/WebSocketSharp/README.txt.meta b/Assets/Proxima/WebSocketSharp/README.txt.meta new file mode 100644 index 0000000..35eae7b --- /dev/null +++ b/Assets/Proxima/WebSocketSharp/README.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1a87c93370d624c58b4383aa0fa31ed7 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/WebSocketSharp/proxima-websocket-sharp.dll b/Assets/Proxima/WebSocketSharp/proxima-websocket-sharp.dll new file mode 100644 index 0000000..01f9225 Binary files /dev/null and b/Assets/Proxima/WebSocketSharp/proxima-websocket-sharp.dll differ diff --git a/Assets/Proxima/WebSocketSharp/proxima-websocket-sharp.dll.meta b/Assets/Proxima/WebSocketSharp/proxima-websocket-sharp.dll.meta new file mode 100644 index 0000000..2a1a5ba --- /dev/null +++ b/Assets/Proxima/WebSocketSharp/proxima-websocket-sharp.dll.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: 9baed5fd89595c948b35d6068d0764bf +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/Assets/Proxima/link.xml b/Assets/Proxima/link.xml new file mode 100644 index 0000000..68b81db --- /dev/null +++ b/Assets/Proxima/link.xml @@ -0,0 +1,8 @@ +<linker> + <assembly fullname="System.Configuration"> + <type fullname="System.Configuration.ExeConfigurationHost" preserve="all" /> + </assembly> + <assembly fullname="System"> + <type fullname="System.Net.Configuration.*" preserve="all" /> + </assembly> +</linker> \ No newline at end of file diff --git a/Assets/Proxima/link.xml.meta b/Assets/Proxima/link.xml.meta new file mode 100644 index 0000000..6011a2a --- /dev/null +++ b/Assets/Proxima/link.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: cc0f737b215c72d4494952f595bd1ed3 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Proxima/package.json b/Assets/Proxima/package.json new file mode 100644 index 0000000..fa466dd --- /dev/null +++ b/Assets/Proxima/package.json @@ -0,0 +1,8 @@ +{ + "displayName": "Proxima Inspector", + "description": "Inspect your game's components, logs, performance, and more from the web browser.", + "name": "com.virtualmaker.proxima", + "unity": "2019.4", + "version": "1.3.1", + "category": "utilities" +} \ No newline at end of file diff --git a/Assets/Proxima/package.json.meta b/Assets/Proxima/package.json.meta new file mode 100644 index 0000000..70695c7 --- /dev/null +++ b/Assets/Proxima/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 55a7fa332ffadb5489464312015b3ea8 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SharedSpatialAnchors/Scenes/SharedSpatialAnchors.unity b/Assets/SharedSpatialAnchors/Scenes/SharedSpatialAnchors.unity index 285319d..3d9c1da 100644 --- a/Assets/SharedSpatialAnchors/Scenes/SharedSpatialAnchors.unity +++ b/Assets/SharedSpatialAnchors/Scenes/SharedSpatialAnchors.unity @@ -4095,6 +4095,11 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1038098150} m_CullTransparentMesh: 1 +--- !u!1 &1075346024 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 988491626994134724, guid: 60fa00281e83b294583adc31df520fbe, type: 3} + m_PrefabInstance: {fileID: 2982998299393685461} + m_PrefabAsset: {fileID: 0} --- !u!1 &1109088824 GameObject: m_ObjectHideFlags: 0 @@ -5840,6 +5845,64 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1496496565} m_CullTransparentMesh: 1 +--- !u!1 &1501354727 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1501354729} + - component: {fileID: 1501354728} + m_Layer: 0 + m_Name: Proxima + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1501354728 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1501354727} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e277581af68d4604da056e460b819656, type: 3} + m_Name: + m_EditorClassIdentifier: + _displayName: TwinTurbine + _port: 7759 + _password: 123456 + _useHttps: 1 + _certificate: {fileID: 0} + _certificatePassword: + _runOnEnable: 1 + _logBufferSize: 1000 + _instantiateStatusUI: 1 + _instantiateConnectUI: 0 + _dontDestroyOnLoad: 1 + _setRunInBackground: 1 + _serverType: 1 + _serverUrl: +--- !u!4 &1501354729 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1501354727} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.69282347, y: -1.4099673, z: -0.2268675} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1515478303 GameObject: m_ObjectHideFlags: 0 @@ -9298,6 +9361,25 @@ PrefabInstance: objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 8754aa5f3d45cec4980f02029a881f7d, type: 3} +--- !u!1 &5361334261533984053 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 8661891273527454774, guid: 8754aa5f3d45cec4980f02029a881f7d, type: 3} + m_PrefabInstance: {fileID: 5361334261533984052} + m_PrefabAsset: {fileID: 0} +--- !u!114 &5361334261533984054 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5361334261533984053} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4357a20539a2184997fc22358044a5f, type: 3} + m_Name: + m_EditorClassIdentifier: + prefab: {fileID: 5361334261533984053} + previewPrefab: {fileID: 1075346024} --- !u!4 &7079690333416248134 stripped Transform: m_CorrespondingSourceObject: {fileID: 5414912244175512723, guid: 60fa00281e83b294583adc31df520fbe, type: 3} diff --git a/Assets/SharedSpatialAnchors/Scripts/PrefabSpawnner.cs b/Assets/SharedSpatialAnchors/Scripts/PrefabSpawnner.cs new file mode 100644 index 0000000..a69cf79 --- /dev/null +++ b/Assets/SharedSpatialAnchors/Scripts/PrefabSpawnner.cs @@ -0,0 +1,31 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class PrefabSpawnner : MonoBehaviour +{ + public GameObject prefab; + public GameObject previewPrefab; + private GameObject currentPreview; + // Start is called before the first frame update + void Start() + { + currentPreview = Instantiate(previewPrefab); + } + + // Update is called once per frame + void Update() + { + Ray ray = new Ray(OVRInput.GetLocalControllerPosition(OVRInput.Controller.RTouch), OVRInput.GetLocalControllerRotation(OVRInput.Controller.RTouch) * Vector3.forward); + if(Physics.Raycast(ray,out RaycastHit hit)) + { + currentPreview.transform.position = hit.point; + currentPreview.transform.rotation = Quaternion.FromToRotation(Vector3.up, hit.normal); + + if (OVRInput.GetDown(OVRInput.Button.One)) + { + Instantiate(prefab, hit.point, Quaternion.FromToRotation(Vector3.up, hit.normal)); + } + } + } +} diff --git a/Assets/SharedSpatialAnchors/Scripts/PrefabSpawnner.cs.meta b/Assets/SharedSpatialAnchors/Scripts/PrefabSpawnner.cs.meta new file mode 100644 index 0000000..aab27ec --- /dev/null +++ b/Assets/SharedSpatialAnchors/Scripts/PrefabSpawnner.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f4357a20539a2184997fc22358044a5f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SharedSpatialAnchors/Scripts/SharedAnchorControlPanel.cs b/Assets/SharedSpatialAnchors/Scripts/SharedAnchorControlPanel.cs index af6b0e9..e17efde 100644 --- a/Assets/SharedSpatialAnchors/Scripts/SharedAnchorControlPanel.cs +++ b/Assets/SharedSpatialAnchors/Scripts/SharedAnchorControlPanel.cs @@ -28,6 +28,7 @@ using PhotonRealtime = Photon.Realtime; public class SharedAnchorControlPanel : MonoBehaviour { + [SerializeField] private Transform referencePoint;