├── LICENSE
├── README.md
├── UnityProject
├── .gitignore
├── .idea
│ └── .idea.UnityProject
│ │ └── .idea
│ │ ├── .gitignore
│ │ ├── encodings.xml
│ │ ├── indexLayout.xml
│ │ ├── misc.xml
│ │ └── vcs.xml
├── Assets
│ ├── FastMeshCopy.meta
│ ├── FastMeshCopy
│ │ ├── Resources.meta
│ │ ├── Resources
│ │ │ ├── TestMaterial.mat
│ │ │ └── TestMaterial.mat.meta
│ │ ├── Runtime.meta
│ │ ├── Runtime
│ │ │ ├── Constants.cs
│ │ │ ├── Constants.cs.meta
│ │ │ ├── FastMeshCopy.cs
│ │ │ ├── FastMeshCopy.cs.meta
│ │ │ ├── HelperFunctions.cs
│ │ │ ├── HelperFunctions.cs.meta
│ │ │ ├── HelperJobs.cs
│ │ │ ├── HelperJobs.cs.meta
│ │ │ ├── ULC.Tools.FastMeshCopy.Runtime.asmdef
│ │ │ ├── ULC.Tools.FastMeshCopy.Runtime.asmdef.meta
│ │ │ ├── UnsafeUtility.cs
│ │ │ └── UnsafeUtility.cs.meta
│ │ ├── Tests.meta
│ │ ├── Tests
│ │ │ ├── MeshCopyExample.cs
│ │ │ ├── MeshCopyExample.cs.meta
│ │ │ ├── ULC.Tools.FastMeshCopy.Tests.asmdef
│ │ │ └── ULC.Tools.FastMeshCopy.Tests.asmdef.meta
│ │ ├── package.json
│ │ └── package.json.meta
│ ├── Scenes.meta
│ └── Scenes
│ │ ├── SampleScene.unity
│ │ └── SampleScene.unity.meta
├── Packages
│ ├── manifest.json
│ └── packages-lock.json
├── ProjectSettings
│ ├── AudioManager.asset
│ ├── ClusterInputManager.asset
│ ├── DynamicsManager.asset
│ ├── EditorBuildSettings.asset
│ ├── EditorSettings.asset
│ ├── GraphicsSettings.asset
│ ├── InputManager.asset
│ ├── NavMeshAreas.asset
│ ├── PackageManagerSettings.asset
│ ├── Physics2DSettings.asset
│ ├── PresetManager.asset
│ ├── ProjectSettings.asset
│ ├── ProjectVersion.txt
│ ├── QualitySettings.asset
│ ├── TagManager.asset
│ ├── TimeManager.asset
│ ├── UnityConnectSettings.asset
│ ├── VFXManager.asset
│ ├── VersionControlSettings.asset
│ └── XRSettings.asset
└── UserSettings
│ └── EditorUserSettings.asset
└── img
└── profiler_result.jpg
/LICENSE:
--------------------------------------------------------------------------------
1 | GNU GENERAL PUBLIC LICENSE
2 | Version 3, 29 June 2007
3 |
4 | Copyright (C) 2007 Free Software Foundation, Inc.
5 | Everyone is permitted to copy and distribute verbatim copies
6 | of this license document, but changing it is not allowed.
7 |
8 | Preamble
9 |
10 | The GNU General Public License is a free, copyleft license for
11 | software and other kinds of works.
12 |
13 | The licenses for most software and other practical works are designed
14 | to take away your freedom to share and change the works. By contrast,
15 | the GNU General Public License is intended to guarantee your freedom to
16 | share and change all versions of a program--to make sure it remains free
17 | software for all its users. We, the Free Software Foundation, use the
18 | GNU General Public License for most of our software; it applies also to
19 | any other work released this way by its authors. You can apply it to
20 | your programs, too.
21 |
22 | When we speak of free software, we are referring to freedom, not
23 | price. Our General Public Licenses are designed to make sure that you
24 | have the freedom to distribute copies of free software (and charge for
25 | them if you wish), that you receive source code or can get it if you
26 | want it, that you can change the software or use pieces of it in new
27 | free programs, and that you know you can do these things.
28 |
29 | To protect your rights, we need to prevent others from denying you
30 | these rights or asking you to surrender the rights. Therefore, you have
31 | certain responsibilities if you distribute copies of the software, or if
32 | you modify it: responsibilities to respect the freedom of others.
33 |
34 | For example, if you distribute copies of such a program, whether
35 | gratis or for a fee, you must pass on to the recipients the same
36 | freedoms that you received. You must make sure that they, too, receive
37 | or can get the source code. And you must show them these terms so they
38 | know their rights.
39 |
40 | Developers that use the GNU GPL protect your rights with two steps:
41 | (1) assert copyright on the software, and (2) offer you this License
42 | giving you legal permission to copy, distribute and/or modify it.
43 |
44 | For the developers' and authors' protection, the GPL clearly explains
45 | that there is no warranty for this free software. For both users' and
46 | authors' sake, the GPL requires that modified versions be marked as
47 | changed, so that their problems will not be attributed erroneously to
48 | authors of previous versions.
49 |
50 | Some devices are designed to deny users access to install or run
51 | modified versions of the software inside them, although the manufacturer
52 | can do so. This is fundamentally incompatible with the aim of
53 | protecting users' freedom to change the software. The systematic
54 | pattern of such abuse occurs in the area of products for individuals to
55 | use, which is precisely where it is most unacceptable. Therefore, we
56 | have designed this version of the GPL to prohibit the practice for those
57 | products. If such problems arise substantially in other domains, we
58 | stand ready to extend this provision to those domains in future versions
59 | of the GPL, as needed to protect the freedom of users.
60 |
61 | Finally, every program is threatened constantly by software patents.
62 | States should not allow patents to restrict development and use of
63 | software on general-purpose computers, but in those that do, we wish to
64 | avoid the special danger that patents applied to a free program could
65 | make it effectively proprietary. To prevent this, the GPL assures that
66 | patents cannot be used to render the program non-free.
67 |
68 | The precise terms and conditions for copying, distribution and
69 | modification follow.
70 |
71 | TERMS AND CONDITIONS
72 |
73 | 0. Definitions.
74 |
75 | "This License" refers to version 3 of the GNU General Public License.
76 |
77 | "Copyright" also means copyright-like laws that apply to other kinds of
78 | works, such as semiconductor masks.
79 |
80 | "The Program" refers to any copyrightable work licensed under this
81 | License. Each licensee is addressed as "you". "Licensees" and
82 | "recipients" may be individuals or organizations.
83 |
84 | To "modify" a work means to copy from or adapt all or part of the work
85 | in a fashion requiring copyright permission, other than the making of an
86 | exact copy. The resulting work is called a "modified version" of the
87 | earlier work or a work "based on" the earlier work.
88 |
89 | A "covered work" means either the unmodified Program or a work based
90 | on the Program.
91 |
92 | To "propagate" a work means to do anything with it that, without
93 | permission, would make you directly or secondarily liable for
94 | infringement under applicable copyright law, except executing it on a
95 | computer or modifying a private copy. Propagation includes copying,
96 | distribution (with or without modification), making available to the
97 | public, and in some countries other activities as well.
98 |
99 | To "convey" a work means any kind of propagation that enables other
100 | parties to make or receive copies. Mere interaction with a user through
101 | a computer network, with no transfer of a copy, is not conveying.
102 |
103 | An interactive user interface displays "Appropriate Legal Notices"
104 | to the extent that it includes a convenient and prominently visible
105 | feature that (1) displays an appropriate copyright notice, and (2)
106 | tells the user that there is no warranty for the work (except to the
107 | extent that warranties are provided), that licensees may convey the
108 | work under this License, and how to view a copy of this License. If
109 | the interface presents a list of user commands or options, such as a
110 | menu, a prominent item in the list meets this criterion.
111 |
112 | 1. Source Code.
113 |
114 | The "source code" for a work means the preferred form of the work
115 | for making modifications to it. "Object code" means any non-source
116 | form of a work.
117 |
118 | A "Standard Interface" means an interface that either is an official
119 | standard defined by a recognized standards body, or, in the case of
120 | interfaces specified for a particular programming language, one that
121 | is widely used among developers working in that language.
122 |
123 | The "System Libraries" of an executable work include anything, other
124 | than the work as a whole, that (a) is included in the normal form of
125 | packaging a Major Component, but which is not part of that Major
126 | Component, and (b) serves only to enable use of the work with that
127 | Major Component, or to implement a Standard Interface for which an
128 | implementation is available to the public in source code form. A
129 | "Major Component", in this context, means a major essential component
130 | (kernel, window system, and so on) of the specific operating system
131 | (if any) on which the executable work runs, or a compiler used to
132 | produce the work, or an object code interpreter used to run it.
133 |
134 | The "Corresponding Source" for a work in object code form means all
135 | the source code needed to generate, install, and (for an executable
136 | work) run the object code and to modify the work, including scripts to
137 | control those activities. However, it does not include the work's
138 | System Libraries, or general-purpose tools or generally available free
139 | programs which are used unmodified in performing those activities but
140 | which are not part of the work. For example, Corresponding Source
141 | includes interface definition files associated with source files for
142 | the work, and the source code for shared libraries and dynamically
143 | linked subprograms that the work is specifically designed to require,
144 | such as by intimate data communication or control flow between those
145 | subprograms and other parts of the work.
146 |
147 | The Corresponding Source need not include anything that users
148 | can regenerate automatically from other parts of the Corresponding
149 | Source.
150 |
151 | The Corresponding Source for a work in source code form is that
152 | same work.
153 |
154 | 2. Basic Permissions.
155 |
156 | All rights granted under this License are granted for the term of
157 | copyright on the Program, and are irrevocable provided the stated
158 | conditions are met. This License explicitly affirms your unlimited
159 | permission to run the unmodified Program. The output from running a
160 | covered work is covered by this License only if the output, given its
161 | content, constitutes a covered work. This License acknowledges your
162 | rights of fair use or other equivalent, as provided by copyright law.
163 |
164 | You may make, run and propagate covered works that you do not
165 | convey, without conditions so long as your license otherwise remains
166 | in force. You may convey covered works to others for the sole purpose
167 | of having them make modifications exclusively for you, or provide you
168 | with facilities for running those works, provided that you comply with
169 | the terms of this License in conveying all material for which you do
170 | not control copyright. Those thus making or running the covered works
171 | for you must do so exclusively on your behalf, under your direction
172 | and control, on terms that prohibit them from making any copies of
173 | your copyrighted material outside their relationship with you.
174 |
175 | Conveying under any other circumstances is permitted solely under
176 | the conditions stated below. Sublicensing is not allowed; section 10
177 | makes it unnecessary.
178 |
179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
180 |
181 | No covered work shall be deemed part of an effective technological
182 | measure under any applicable law fulfilling obligations under article
183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or
184 | similar laws prohibiting or restricting circumvention of such
185 | measures.
186 |
187 | When you convey a covered work, you waive any legal power to forbid
188 | circumvention of technological measures to the extent such circumvention
189 | is effected by exercising rights under this License with respect to
190 | the covered work, and you disclaim any intention to limit operation or
191 | modification of the work as a means of enforcing, against the work's
192 | users, your or third parties' legal rights to forbid circumvention of
193 | technological measures.
194 |
195 | 4. Conveying Verbatim Copies.
196 |
197 | You may convey verbatim copies of the Program's source code as you
198 | receive it, in any medium, provided that you conspicuously and
199 | appropriately publish on each copy an appropriate copyright notice;
200 | keep intact all notices stating that this License and any
201 | non-permissive terms added in accord with section 7 apply to the code;
202 | keep intact all notices of the absence of any warranty; and give all
203 | recipients a copy of this License along with the Program.
204 |
205 | You may charge any price or no price for each copy that you convey,
206 | and you may offer support or warranty protection for a fee.
207 |
208 | 5. Conveying Modified Source Versions.
209 |
210 | You may convey a work based on the Program, or the modifications to
211 | produce it from the Program, in the form of source code under the
212 | terms of section 4, provided that you also meet all of these conditions:
213 |
214 | a) The work must carry prominent notices stating that you modified
215 | it, and giving a relevant date.
216 |
217 | b) The work must carry prominent notices stating that it is
218 | released under this License and any conditions added under section
219 | 7. This requirement modifies the requirement in section 4 to
220 | "keep intact all notices".
221 |
222 | c) You must license the entire work, as a whole, under this
223 | License to anyone who comes into possession of a copy. This
224 | License will therefore apply, along with any applicable section 7
225 | additional terms, to the whole of the work, and all its parts,
226 | regardless of how they are packaged. This License gives no
227 | permission to license the work in any other way, but it does not
228 | invalidate such permission if you have separately received it.
229 |
230 | d) If the work has interactive user interfaces, each must display
231 | Appropriate Legal Notices; however, if the Program has interactive
232 | interfaces that do not display Appropriate Legal Notices, your
233 | work need not make them do so.
234 |
235 | A compilation of a covered work with other separate and independent
236 | works, which are not by their nature extensions of the covered work,
237 | and which are not combined with it such as to form a larger program,
238 | in or on a volume of a storage or distribution medium, is called an
239 | "aggregate" if the compilation and its resulting copyright are not
240 | used to limit the access or legal rights of the compilation's users
241 | beyond what the individual works permit. Inclusion of a covered work
242 | in an aggregate does not cause this License to apply to the other
243 | parts of the aggregate.
244 |
245 | 6. Conveying Non-Source Forms.
246 |
247 | You may convey a covered work in object code form under the terms
248 | of sections 4 and 5, provided that you also convey the
249 | machine-readable Corresponding Source under the terms of this License,
250 | in one of these ways:
251 |
252 | a) Convey the object code in, or embodied in, a physical product
253 | (including a physical distribution medium), accompanied by the
254 | Corresponding Source fixed on a durable physical medium
255 | customarily used for software interchange.
256 |
257 | b) Convey the object code in, or embodied in, a physical product
258 | (including a physical distribution medium), accompanied by a
259 | written offer, valid for at least three years and valid for as
260 | long as you offer spare parts or customer support for that product
261 | model, to give anyone who possesses the object code either (1) a
262 | copy of the Corresponding Source for all the software in the
263 | product that is covered by this License, on a durable physical
264 | medium customarily used for software interchange, for a price no
265 | more than your reasonable cost of physically performing this
266 | conveying of source, or (2) access to copy the
267 | Corresponding Source from a network server at no charge.
268 |
269 | c) Convey individual copies of the object code with a copy of the
270 | written offer to provide the Corresponding Source. This
271 | alternative is allowed only occasionally and noncommercially, and
272 | only if you received the object code with such an offer, in accord
273 | with subsection 6b.
274 |
275 | d) Convey the object code by offering access from a designated
276 | place (gratis or for a charge), and offer equivalent access to the
277 | Corresponding Source in the same way through the same place at no
278 | further charge. You need not require recipients to copy the
279 | Corresponding Source along with the object code. If the place to
280 | copy the object code is a network server, the Corresponding Source
281 | may be on a different server (operated by you or a third party)
282 | that supports equivalent copying facilities, provided you maintain
283 | clear directions next to the object code saying where to find the
284 | Corresponding Source. Regardless of what server hosts the
285 | Corresponding Source, you remain obligated to ensure that it is
286 | available for as long as needed to satisfy these requirements.
287 |
288 | e) Convey the object code using peer-to-peer transmission, provided
289 | you inform other peers where the object code and Corresponding
290 | Source of the work are being offered to the general public at no
291 | charge under subsection 6d.
292 |
293 | A separable portion of the object code, whose source code is excluded
294 | from the Corresponding Source as a System Library, need not be
295 | included in conveying the object code work.
296 |
297 | A "User Product" is either (1) a "consumer product", which means any
298 | tangible personal property which is normally used for personal, family,
299 | or household purposes, or (2) anything designed or sold for incorporation
300 | into a dwelling. In determining whether a product is a consumer product,
301 | doubtful cases shall be resolved in favor of coverage. For a particular
302 | product received by a particular user, "normally used" refers to a
303 | typical or common use of that class of product, regardless of the status
304 | of the particular user or of the way in which the particular user
305 | actually uses, or expects or is expected to use, the product. A product
306 | is a consumer product regardless of whether the product has substantial
307 | commercial, industrial or non-consumer uses, unless such uses represent
308 | the only significant mode of use of the product.
309 |
310 | "Installation Information" for a User Product means any methods,
311 | procedures, authorization keys, or other information required to install
312 | and execute modified versions of a covered work in that User Product from
313 | a modified version of its Corresponding Source. The information must
314 | suffice to ensure that the continued functioning of the modified object
315 | code is in no case prevented or interfered with solely because
316 | modification has been made.
317 |
318 | If you convey an object code work under this section in, or with, or
319 | specifically for use in, a User Product, and the conveying occurs as
320 | part of a transaction in which the right of possession and use of the
321 | User Product is transferred to the recipient in perpetuity or for a
322 | fixed term (regardless of how the transaction is characterized), the
323 | Corresponding Source conveyed under this section must be accompanied
324 | by the Installation Information. But this requirement does not apply
325 | if neither you nor any third party retains the ability to install
326 | modified object code on the User Product (for example, the work has
327 | been installed in ROM).
328 |
329 | The requirement to provide Installation Information does not include a
330 | requirement to continue to provide support service, warranty, or updates
331 | for a work that has been modified or installed by the recipient, or for
332 | the User Product in which it has been modified or installed. Access to a
333 | network may be denied when the modification itself materially and
334 | adversely affects the operation of the network or violates the rules and
335 | protocols for communication across the network.
336 |
337 | Corresponding Source conveyed, and Installation Information provided,
338 | in accord with this section must be in a format that is publicly
339 | documented (and with an implementation available to the public in
340 | source code form), and must require no special password or key for
341 | unpacking, reading or copying.
342 |
343 | 7. Additional Terms.
344 |
345 | "Additional permissions" are terms that supplement the terms of this
346 | License by making exceptions from one or more of its conditions.
347 | Additional permissions that are applicable to the entire Program shall
348 | be treated as though they were included in this License, to the extent
349 | that they are valid under applicable law. If additional permissions
350 | apply only to part of the Program, that part may be used separately
351 | under those permissions, but the entire Program remains governed by
352 | this License without regard to the additional permissions.
353 |
354 | When you convey a copy of a covered work, you may at your option
355 | remove any additional permissions from that copy, or from any part of
356 | it. (Additional permissions may be written to require their own
357 | removal in certain cases when you modify the work.) You may place
358 | additional permissions on material, added by you to a covered work,
359 | for which you have or can give appropriate copyright permission.
360 |
361 | Notwithstanding any other provision of this License, for material you
362 | add to a covered work, you may (if authorized by the copyright holders of
363 | that material) supplement the terms of this License with terms:
364 |
365 | a) Disclaiming warranty or limiting liability differently from the
366 | terms of sections 15 and 16 of this License; or
367 |
368 | b) Requiring preservation of specified reasonable legal notices or
369 | author attributions in that material or in the Appropriate Legal
370 | Notices displayed by works containing it; or
371 |
372 | c) Prohibiting misrepresentation of the origin of that material, or
373 | requiring that modified versions of such material be marked in
374 | reasonable ways as different from the original version; or
375 |
376 | d) Limiting the use for publicity purposes of names of licensors or
377 | authors of the material; or
378 |
379 | e) Declining to grant rights under trademark law for use of some
380 | trade names, trademarks, or service marks; or
381 |
382 | f) Requiring indemnification of licensors and authors of that
383 | material by anyone who conveys the material (or modified versions of
384 | it) with contractual assumptions of liability to the recipient, for
385 | any liability that these contractual assumptions directly impose on
386 | those licensors and authors.
387 |
388 | All other non-permissive additional terms are considered "further
389 | restrictions" within the meaning of section 10. If the Program as you
390 | received it, or any part of it, contains a notice stating that it is
391 | governed by this License along with a term that is a further
392 | restriction, you may remove that term. If a license document contains
393 | a further restriction but permits relicensing or conveying under this
394 | License, you may add to a covered work material governed by the terms
395 | of that license document, provided that the further restriction does
396 | not survive such relicensing or conveying.
397 |
398 | If you add terms to a covered work in accord with this section, you
399 | must place, in the relevant source files, a statement of the
400 | additional terms that apply to those files, or a notice indicating
401 | where to find the applicable terms.
402 |
403 | Additional terms, permissive or non-permissive, may be stated in the
404 | form of a separately written license, or stated as exceptions;
405 | the above requirements apply either way.
406 |
407 | 8. Termination.
408 |
409 | You may not propagate or modify a covered work except as expressly
410 | provided under this License. Any attempt otherwise to propagate or
411 | modify it is void, and will automatically terminate your rights under
412 | this License (including any patent licenses granted under the third
413 | paragraph of section 11).
414 |
415 | However, if you cease all violation of this License, then your
416 | license from a particular copyright holder is reinstated (a)
417 | provisionally, unless and until the copyright holder explicitly and
418 | finally terminates your license, and (b) permanently, if the copyright
419 | holder fails to notify you of the violation by some reasonable means
420 | prior to 60 days after the cessation.
421 |
422 | Moreover, your license from a particular copyright holder is
423 | reinstated permanently if the copyright holder notifies you of the
424 | violation by some reasonable means, this is the first time you have
425 | received notice of violation of this License (for any work) from that
426 | copyright holder, and you cure the violation prior to 30 days after
427 | your receipt of the notice.
428 |
429 | Termination of your rights under this section does not terminate the
430 | licenses of parties who have received copies or rights from you under
431 | this License. If your rights have been terminated and not permanently
432 | reinstated, you do not qualify to receive new licenses for the same
433 | material under section 10.
434 |
435 | 9. Acceptance Not Required for Having Copies.
436 |
437 | You are not required to accept this License in order to receive or
438 | run a copy of the Program. Ancillary propagation of a covered work
439 | occurring solely as a consequence of using peer-to-peer transmission
440 | to receive a copy likewise does not require acceptance. However,
441 | nothing other than this License grants you permission to propagate or
442 | modify any covered work. These actions infringe copyright if you do
443 | not accept this License. Therefore, by modifying or propagating a
444 | covered work, you indicate your acceptance of this License to do so.
445 |
446 | 10. Automatic Licensing of Downstream Recipients.
447 |
448 | Each time you convey a covered work, the recipient automatically
449 | receives a license from the original licensors, to run, modify and
450 | propagate that work, subject to this License. You are not responsible
451 | for enforcing compliance by third parties with this License.
452 |
453 | An "entity transaction" is a transaction transferring control of an
454 | organization, or substantially all assets of one, or subdividing an
455 | organization, or merging organizations. If propagation of a covered
456 | work results from an entity transaction, each party to that
457 | transaction who receives a copy of the work also receives whatever
458 | licenses to the work the party's predecessor in interest had or could
459 | give under the previous paragraph, plus a right to possession of the
460 | Corresponding Source of the work from the predecessor in interest, if
461 | the predecessor has it or can get it with reasonable efforts.
462 |
463 | You may not impose any further restrictions on the exercise of the
464 | rights granted or affirmed under this License. For example, you may
465 | not impose a license fee, royalty, or other charge for exercise of
466 | rights granted under this License, and you may not initiate litigation
467 | (including a cross-claim or counterclaim in a lawsuit) alleging that
468 | any patent claim is infringed by making, using, selling, offering for
469 | sale, or importing the Program or any portion of it.
470 |
471 | 11. Patents.
472 |
473 | A "contributor" is a copyright holder who authorizes use under this
474 | License of the Program or a work on which the Program is based. The
475 | work thus licensed is called the contributor's "contributor version".
476 |
477 | A contributor's "essential patent claims" are all patent claims
478 | owned or controlled by the contributor, whether already acquired or
479 | hereafter acquired, that would be infringed by some manner, permitted
480 | by this License, of making, using, or selling its contributor version,
481 | but do not include claims that would be infringed only as a
482 | consequence of further modification of the contributor version. For
483 | purposes of this definition, "control" includes the right to grant
484 | patent sublicenses in a manner consistent with the requirements of
485 | this License.
486 |
487 | Each contributor grants you a non-exclusive, worldwide, royalty-free
488 | patent license under the contributor's essential patent claims, to
489 | make, use, sell, offer for sale, import and otherwise run, modify and
490 | propagate the contents of its contributor version.
491 |
492 | In the following three paragraphs, a "patent license" is any express
493 | agreement or commitment, however denominated, not to enforce a patent
494 | (such as an express permission to practice a patent or covenant not to
495 | sue for patent infringement). To "grant" such a patent license to a
496 | party means to make such an agreement or commitment not to enforce a
497 | patent against the party.
498 |
499 | If you convey a covered work, knowingly relying on a patent license,
500 | and the Corresponding Source of the work is not available for anyone
501 | to copy, free of charge and under the terms of this License, through a
502 | publicly available network server or other readily accessible means,
503 | then you must either (1) cause the Corresponding Source to be so
504 | available, or (2) arrange to deprive yourself of the benefit of the
505 | patent license for this particular work, or (3) arrange, in a manner
506 | consistent with the requirements of this License, to extend the patent
507 | license to downstream recipients. "Knowingly relying" means you have
508 | actual knowledge that, but for the patent license, your conveying the
509 | covered work in a country, or your recipient's use of the covered work
510 | in a country, would infringe one or more identifiable patents in that
511 | country that you have reason to believe are valid.
512 |
513 | If, pursuant to or in connection with a single transaction or
514 | arrangement, you convey, or propagate by procuring conveyance of, a
515 | covered work, and grant a patent license to some of the parties
516 | receiving the covered work authorizing them to use, propagate, modify
517 | or convey a specific copy of the covered work, then the patent license
518 | you grant is automatically extended to all recipients of the covered
519 | work and works based on it.
520 |
521 | A patent license is "discriminatory" if it does not include within
522 | the scope of its coverage, prohibits the exercise of, or is
523 | conditioned on the non-exercise of one or more of the rights that are
524 | specifically granted under this License. You may not convey a covered
525 | work if you are a party to an arrangement with a third party that is
526 | in the business of distributing software, under which you make payment
527 | to the third party based on the extent of your activity of conveying
528 | the work, and under which the third party grants, to any of the
529 | parties who would receive the covered work from you, a discriminatory
530 | patent license (a) in connection with copies of the covered work
531 | conveyed by you (or copies made from those copies), or (b) primarily
532 | for and in connection with specific products or compilations that
533 | contain the covered work, unless you entered into that arrangement,
534 | or that patent license was granted, prior to 28 March 2007.
535 |
536 | Nothing in this License shall be construed as excluding or limiting
537 | any implied license or other defenses to infringement that may
538 | otherwise be available to you under applicable patent law.
539 |
540 | 12. No Surrender of Others' Freedom.
541 |
542 | If conditions are imposed on you (whether by court order, agreement or
543 | otherwise) that contradict the conditions of this License, they do not
544 | excuse you from the conditions of this License. If you cannot convey a
545 | covered work so as to satisfy simultaneously your obligations under this
546 | License and any other pertinent obligations, then as a consequence you may
547 | not convey it at all. For example, if you agree to terms that obligate you
548 | to collect a royalty for further conveying from those to whom you convey
549 | the Program, the only way you could satisfy both those terms and this
550 | License would be to refrain entirely from conveying the Program.
551 |
552 | 13. Use with the GNU Affero General Public License.
553 |
554 | Notwithstanding any other provision of this License, you have
555 | permission to link or combine any covered work with a work licensed
556 | under version 3 of the GNU Affero General Public License into a single
557 | combined work, and to convey the resulting work. The terms of this
558 | License will continue to apply to the part which is the covered work,
559 | but the special requirements of the GNU Affero General Public License,
560 | section 13, concerning interaction through a network will apply to the
561 | combination as such.
562 |
563 | 14. Revised Versions of this License.
564 |
565 | The Free Software Foundation may publish revised and/or new versions of
566 | the GNU General Public License from time to time. Such new versions will
567 | be similar in spirit to the present version, but may differ in detail to
568 | address new problems or concerns.
569 |
570 | Each version is given a distinguishing version number. If the
571 | Program specifies that a certain numbered version of the GNU General
572 | Public License "or any later version" applies to it, you have the
573 | option of following the terms and conditions either of that numbered
574 | version or of any later version published by the Free Software
575 | Foundation. If the Program does not specify a version number of the
576 | GNU General Public License, you may choose any version ever published
577 | by the Free Software Foundation.
578 |
579 | If the Program specifies that a proxy can decide which future
580 | versions of the GNU General Public License can be used, that proxy's
581 | public statement of acceptance of a version permanently authorizes you
582 | to choose that version for the Program.
583 |
584 | Later license versions may give you additional or different
585 | permissions. However, no additional obligations are imposed on any
586 | author or copyright holder as a result of your choosing to follow a
587 | later version.
588 |
589 | 15. Disclaimer of Warranty.
590 |
591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
599 |
600 | 16. Limitation of Liability.
601 |
602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
610 | SUCH DAMAGES.
611 |
612 | 17. Interpretation of Sections 15 and 16.
613 |
614 | If the disclaimer of warranty and limitation of liability provided
615 | above cannot be given local legal effect according to their terms,
616 | reviewing courts shall apply local law that most closely approximates
617 | an absolute waiver of all civil liability in connection with the
618 | Program, unless a warranty or assumption of liability accompanies a
619 | copy of the Program in return for a fee.
620 |
621 | END OF TERMS AND CONDITIONS
622 |
623 | How to Apply These Terms to Your New Programs
624 |
625 | If you develop a new program, and you want it to be of the greatest
626 | possible use to the public, the best way to achieve this is to make it
627 | free software which everyone can redistribute and change under these terms.
628 |
629 | To do so, attach the following notices to the program. It is safest
630 | to attach them to the start of each source file to most effectively
631 | state the exclusion of warranty; and each file should have at least
632 | the "copyright" line and a pointer to where the full notice is found.
633 |
634 |
635 | Copyright (C)
636 |
637 | This program is free software: you can redistribute it and/or modify
638 | it under the terms of the GNU General Public License as published by
639 | the Free Software Foundation, either version 3 of the License, or
640 | (at your option) any later version.
641 |
642 | This program is distributed in the hope that it will be useful,
643 | but WITHOUT ANY WARRANTY; without even the implied warranty of
644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
645 | GNU General Public License for more details.
646 |
647 | You should have received a copy of the GNU General Public License
648 | along with this program. If not, see .
649 |
650 | Also add information on how to contact you by electronic and paper mail.
651 |
652 | If the program does terminal interaction, make it output a short
653 | notice like this when it starts in an interactive mode:
654 |
655 | Copyright (C)
656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
657 | This is free software, and you are welcome to redistribute it
658 | under certain conditions; type `show c' for details.
659 |
660 | The hypothetical commands `show w' and `show c' should show the appropriate
661 | parts of the General Public License. Of course, your program's commands
662 | might be different; for a GUI interface, you would use an "about box".
663 |
664 | You should also get your employer (if you work as a programmer) or school,
665 | if any, to sign a "copyright disclaimer" for the program, if necessary.
666 | For more information on this, and how to apply and follow the GNU GPL, see
667 | .
668 |
669 | The GNU General Public License does not permit incorporating your program
670 | into proprietary programs. If your program is a subroutine library, you
671 | may consider it more useful to permit linking proprietary applications with
672 | the library. If this is what you want to do, use the GNU Lesser General
673 | Public License instead of this License. But first, please read
674 | .
675 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # FastMeshCopy
2 | Zero-allocation copying of Meshes using the new [**MeshData**](https://docs.unity3d.com/2020.1/Documentation/ScriptReference/Mesh.AllocateWritableMeshData.html) functionality in Unity **2020.1+**.
3 |
4 | The code comes in the form of the static class [`FastMeshCopy`](UnityProject/Assets/FastMeshCopy/Runtime/FastMeshCopy.cs) with the
5 | ```csharp
6 | public static void CopyTo(this Mesh inMesh, ref Mesh outMesh){...}
7 | ```
8 | and
9 | ```csharp
10 | public static Mesh CopyReplicate(this Mesh mesh, NativeArray matrices) {...}
11 | ```
12 | extension methods.
13 | Simply call this method on a Mesh instance to perform either a **Single Copy**, or a **Multi-Copy** based on an array of transformations + **Merge**.
14 |
15 | ## Add as a Unity Package
16 | Add this line to your `Packages/manifest.json` file
17 | ```js
18 | "ulc-tools-fastmeshcopy": "https://github.com/GeorgeAdamon/FastMeshCopy.git?path=/UnityProject/Assets/FastMeshCopy#master",
19 | ```
20 |
21 | ## Usage of the Single Copy example
22 | - Attach the [MeshCopyExample.cs](FastMeshCopy/MeshCopyExample.cs) to a GameObject, and reference a Mesh in the inMesh field.
23 | - Run the game, and press the **Spacebar** to perform the mesh copy.
24 |
25 |
26 | ## Limitations
27 | Accessing BlendShapes and BoneWeights without GC allocations is not supported by Unity's API, so this zero-allocation effort **ignores** them for the time being. See the [**discussion**](https://forum.unity.com/threads/feedback-wanted-mesh-scripting-api-improvements.684670/page-3#post-5800297)
28 |
29 | ## Performance Example
30 | Copying of a 98 MB mesh, creating only 80 Bytes of allocations for the Garbage Collector to clean-up.
31 | 
32 |
33 |
34 |
--------------------------------------------------------------------------------
/UnityProject/.gitignore:
--------------------------------------------------------------------------------
1 | # This .gitignore file should be placed at the root of your Unity project directory
2 | #
3 | # Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore
4 | #
5 | /[Ll]ibrary/
6 | /[Tt]emp/
7 | /[Oo]bj/
8 | /[Bb]uild/
9 | /[Bb]uilds/
10 | /[Ll]ogs/
11 | /[Mm]emoryCaptures/
12 |
13 | # Asset meta data should only be ignored when the corresponding asset is also ignored
14 | !/[Aa]ssets/**/*.meta
15 |
16 | # Uncomment this line if you wish to ignore the asset store tools plugin
17 | # /[Aa]ssets/AssetStoreTools*
18 |
19 | # Autogenerated Jetbrains Rider plugin
20 | [Aa]ssets/Plugins/Editor/JetBrains*
21 |
22 | # Visual Studio cache directory
23 | .vs/
24 |
25 | # Gradle cache directory
26 | .gradle/
27 |
28 | # Autogenerated VS/MD/Consulo solution and project files
29 | ExportedObj/
30 | .consulo/
31 | *.csproj
32 | *.unityproj
33 | *.sln
34 | *.suo
35 | *.tmp
36 | *.user
37 | *.userprefs
38 | *.pidb
39 | *.booproj
40 | *.svd
41 | *.pdb
42 | *.mdb
43 | *.opendb
44 | *.VC.db
45 |
46 | # Unity3D generated meta files
47 | *.pidb.meta
48 | *.pdb.meta
49 | *.mdb.meta
50 |
51 | # Unity3D generated file on crash reports
52 | sysinfo.txt
53 |
54 | # Builds
55 | *.apk
56 | *.unitypackage
57 |
58 | # Crashlytics generated file
59 | crashlytics-build.properties
60 |
61 |
--------------------------------------------------------------------------------
/UnityProject/.idea/.idea.UnityProject/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 | # Rider ignored files
5 | /contentModel.xml
6 | /modules.xml
7 | /projectSettingsUpdater.xml
8 | /.idea.UnityProject.iml
9 | # Datasource local storage ignored files
10 | /dataSources/
11 | /dataSources.local.xml
12 | # Editor-based HTTP Client requests
13 | /httpRequests/
14 |
--------------------------------------------------------------------------------
/UnityProject/.idea/.idea.UnityProject/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/UnityProject/.idea/.idea.UnityProject/.idea/indexLayout.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Library/PackageCache/com.unity.collab-proxy@1.3.8
7 | Library/PackageCache/com.unity.ext.nunit@1.0.0
8 | Library/PackageCache/com.unity.ide.rider@1.2.1
9 | Library/PackageCache/com.unity.ide.visualstudio@2.0.2
10 | Library/PackageCache/com.unity.ide.vscode@1.2.1
11 | Library/PackageCache/com.unity.test-framework@1.1.16
12 | Library/PackageCache/com.unity.textmeshpro@3.0.1
13 | Library/PackageCache/com.unity.timeline@1.3.4
14 | Packages
15 | ProjectSettings
16 |
17 |
18 | .idea
19 | Library
20 | Logs
21 | UserSettings
22 | obj
23 |
24 |
25 |
--------------------------------------------------------------------------------
/UnityProject/.idea/.idea.UnityProject/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/UnityProject/.idea/.idea.UnityProject/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/UnityProject/Assets/FastMeshCopy.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 5dbda0db4b5f18043b442022ea0d4b92
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/UnityProject/Assets/FastMeshCopy/Resources.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 848c7708a255cdf478e37025eec31ab7
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/UnityProject/Assets/FastMeshCopy/Resources/TestMaterial.mat:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!21 &2100000
4 | Material:
5 | serializedVersion: 6
6 | m_ObjectHideFlags: 0
7 | m_CorrespondingSourceObject: {fileID: 0}
8 | m_PrefabInstance: {fileID: 0}
9 | m_PrefabAsset: {fileID: 0}
10 | m_Name: TestMaterial
11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
12 | m_ShaderKeywords:
13 | m_LightmapFlags: 4
14 | m_EnableInstancingVariants: 0
15 | m_DoubleSidedGI: 0
16 | m_CustomRenderQueue: -1
17 | stringTagMap: {}
18 | disabledShaderPasses: []
19 | m_SavedProperties:
20 | serializedVersion: 3
21 | m_TexEnvs:
22 | - _BumpMap:
23 | m_Texture: {fileID: 0}
24 | m_Scale: {x: 1, y: 1}
25 | m_Offset: {x: 0, y: 0}
26 | - _DetailAlbedoMap:
27 | m_Texture: {fileID: 0}
28 | m_Scale: {x: 1, y: 1}
29 | m_Offset: {x: 0, y: 0}
30 | - _DetailMask:
31 | m_Texture: {fileID: 0}
32 | m_Scale: {x: 1, y: 1}
33 | m_Offset: {x: 0, y: 0}
34 | - _DetailNormalMap:
35 | m_Texture: {fileID: 0}
36 | m_Scale: {x: 1, y: 1}
37 | m_Offset: {x: 0, y: 0}
38 | - _EmissionMap:
39 | m_Texture: {fileID: 0}
40 | m_Scale: {x: 1, y: 1}
41 | m_Offset: {x: 0, y: 0}
42 | - _MainTex:
43 | m_Texture: {fileID: 0}
44 | m_Scale: {x: 1, y: 1}
45 | m_Offset: {x: 0, y: 0}
46 | - _MetallicGlossMap:
47 | m_Texture: {fileID: 0}
48 | m_Scale: {x: 1, y: 1}
49 | m_Offset: {x: 0, y: 0}
50 | - _OcclusionMap:
51 | m_Texture: {fileID: 0}
52 | m_Scale: {x: 1, y: 1}
53 | m_Offset: {x: 0, y: 0}
54 | - _ParallaxMap:
55 | m_Texture: {fileID: 0}
56 | m_Scale: {x: 1, y: 1}
57 | m_Offset: {x: 0, y: 0}
58 | m_Floats:
59 | - _BumpScale: 1
60 | - _Cutoff: 0.5
61 | - _DetailNormalMapScale: 1
62 | - _DstBlend: 0
63 | - _GlossMapScale: 1
64 | - _Glossiness: 0.5
65 | - _GlossyReflections: 1
66 | - _Metallic: 0
67 | - _Mode: 0
68 | - _OcclusionStrength: 1
69 | - _Parallax: 0.02
70 | - _SmoothnessTextureChannel: 0
71 | - _SpecularHighlights: 1
72 | - _SrcBlend: 1
73 | - _UVSec: 0
74 | - _ZWrite: 1
75 | m_Colors:
76 | - _Color: {r: 1, g: 1, b: 1, a: 1}
77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
78 | m_BuildTextureStacks: []
79 |
--------------------------------------------------------------------------------
/UnityProject/Assets/FastMeshCopy/Resources/TestMaterial.mat.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 157eea6bf50b5334698405063a44cdea
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 0
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/UnityProject/Assets/FastMeshCopy/Runtime.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8c62f0c801944a5449691d715bea29b4
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/UnityProject/Assets/FastMeshCopy/Runtime/Constants.cs:
--------------------------------------------------------------------------------
1 | namespace UnchartedLimbo.Tools.FastMeshCopy.Runtime
2 | {
3 | ///
4 | /// Author: George Adamopoulos
5 | /// Version: 2.0.0
6 | /// Date: 2021-06-15
7 | /// License: GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007
8 | ///
9 | public static class Constants
10 | {
11 | public const int SHORT_SIZE = 2;
12 | public const int INT_SIZE = 4;
13 | public const int FLOAT_SIZE = 4;
14 | public const int FLOAT2_SIZE = 8;
15 | public const int FLOAT3_SIZE = 12;
16 | public const int FLOAT4_SIZE = 16;
17 |
18 | }
19 | }
--------------------------------------------------------------------------------
/UnityProject/Assets/FastMeshCopy/Runtime/Constants.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: fb2571d3dff244a1873f32c66932354f
3 | timeCreated: 1623797457
--------------------------------------------------------------------------------
/UnityProject/Assets/FastMeshCopy/Runtime/FastMeshCopy.cs:
--------------------------------------------------------------------------------
1 | #define USE_UNSAFE // Comment this line to use the "safe" version of copying.
2 |
3 | using Unity.Collections;
4 | using Unity.Collections.LowLevel.Unsafe;
5 | using UnityUnsafeUtility = Unity.Collections.LowLevel.Unsafe.UnsafeUtility;
6 | using Unity.Jobs;
7 | using Unity.Mathematics;
8 | using UnityEngine;
9 | using UnityEngine.Rendering;
10 | using static UnchartedLimbo.Tools.FastMeshCopy.Runtime.Constants;
11 |
12 | namespace UnchartedLimbo.Tools.FastMeshCopy.Runtime
13 | {
14 | ///
15 | /// Author: George Adamopoulos
16 | /// Version: 2.0.0
17 | /// Date: 2020-05-03
18 | /// License: GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007
19 | ///
20 | public static class FastMeshCopyUtility
21 | {
22 | #if UNITY_2020_1_OR_NEWER
23 | ///
24 | /// Attempts to copy the data of the current to another one, as fast as possible,
25 | /// with minimal allocations (a few tens of bytes in scenarios with very large meshes).
26 | ///
27 | public static void CopyTo(this Mesh inMesh, ref Mesh outMesh)
28 | {
29 | if (inMesh == null) return;
30 |
31 | if (outMesh == null)
32 | {
33 | outMesh = new Mesh();
34 | }
35 | else
36 | {
37 | outMesh.Clear();
38 | }
39 |
40 | outMesh.name = inMesh.name;
41 | outMesh.bounds = inMesh.bounds;
42 |
43 | using (var readArray = Mesh.AcquireReadOnlyMeshData(inMesh))
44 | {
45 | //-------------------------------------------------------------
46 | // INPUT INFO
47 | //-------------------------------------------------------------
48 | var readData = readArray[0];
49 |
50 | // Formats
51 | var vertexFormat = inMesh.GetVertexAttributes();
52 | var indexFormat = inMesh.indexFormat;
53 | var isIndexShort = indexFormat == IndexFormat.UInt16;
54 |
55 | // Counts
56 | var vertexCount = readData.vertexCount;
57 | var indexCount =
58 | isIndexShort ? readData.GetIndexData().Length : readData.GetIndexData().Length;
59 |
60 | // Element Size in bytes
61 | var indexSize = isIndexShort ? SHORT_SIZE : INT_SIZE;
62 | var vertexSize = 0;
63 |
64 | for (var i = 0; i < vertexFormat.Length; i++)
65 | {
66 | // 4 bytes per component by default
67 | var size = FLOAT_SIZE;
68 |
69 | switch (vertexFormat[i].format)
70 | {
71 | case VertexAttributeFormat.Float16:
72 | case VertexAttributeFormat.UNorm16:
73 | case VertexAttributeFormat.SNorm16:
74 | case VertexAttributeFormat.UInt16:
75 | case VertexAttributeFormat.SInt16:
76 | size = 2;
77 | break;
78 | case VertexAttributeFormat.UNorm8:
79 | case VertexAttributeFormat.SNorm8:
80 | case VertexAttributeFormat.UInt8:
81 | case VertexAttributeFormat.SInt8:
82 | size = 1;
83 | break;
84 | }
85 |
86 | vertexSize += vertexFormat[i].dimension * size;
87 | }
88 |
89 |
90 | //-------------------------------------------------------------
91 | // OUTPUT SETUP
92 | //-------------------------------------------------------------
93 | var writeArray = Mesh.AllocateWritableMeshData(1);
94 | var writeData = writeArray[0];
95 | writeData.SetVertexBufferParams(vertexCount, vertexFormat);
96 | writeData.SetIndexBufferParams(indexCount, indexFormat);
97 |
98 | //-------------------------------------------------------------
99 | // MEMORY COPYING
100 | //-------------------------------------------------------------
101 | NativeArray inData;
102 | NativeArray outData;
103 |
104 | // Vertices
105 | inData = readData.GetVertexData();
106 | outData = writeData.GetVertexData();
107 |
108 | #if USE_UNSAFE
109 | unsafe
110 | {
111 | UnityUnsafeUtility.MemCpy(outData.GetUnsafePtr(), inData.GetUnsafeReadOnlyPtr(),
112 | vertexCount * vertexSize);
113 | }
114 | #else
115 | inData.CopyTo(outData);
116 | #endif
117 |
118 |
119 | // Indices
120 | inData = readData.GetIndexData();
121 | outData = writeData.GetIndexData();
122 |
123 | #if USE_UNSAFE
124 | unsafe
125 | {
126 | UnityUnsafeUtility.MemCpy(outData.GetUnsafePtr(), inData.GetUnsafeReadOnlyPtr(),
127 | indexCount * indexSize);
128 | }
129 | #else
130 | inData.CopyTo(outData);
131 | #endif
132 |
133 | //-------------------------------------------------------------
134 | // FINALIZATION
135 | //-------------------------------------------------------------
136 | writeData.subMeshCount = inMesh.subMeshCount;
137 |
138 | // Set all sub-meshes
139 | for (var i = 0; i < inMesh.subMeshCount; i++)
140 | {
141 | writeData.SetSubMesh(i,
142 | new SubMeshDescriptor((int) inMesh.GetIndexStart(i),
143 | (int) inMesh.GetIndexCount(i)));
144 | }
145 |
146 |
147 | Mesh.ApplyAndDisposeWritableMeshData(writeArray, outMesh);
148 | }
149 | }
150 |
151 | ///
152 | /// Combine transformed instances of a mesh.
153 | ///
154 | public static Mesh CopyReplicate(this Mesh mesh, NativeArray matrices)
155 | {
156 | using (var readArray = Mesh.AcquireReadOnlyMeshData(mesh))
157 | {
158 | var m = new Mesh
159 | {
160 | subMeshCount = 1,
161 | indexFormat = IndexFormat.UInt32
162 | };
163 |
164 | //-------------------------------------------------------------
165 | // COLLECT ALL NECESSARY INPUT INFO
166 | //-------------------------------------------------------------
167 | // Source -----------------------------------------------------
168 | var readData = readArray[0];
169 |
170 | // Formats
171 | var sourceVertexSize = mesh.SizeOfVertex();
172 | var sourceIndexFormat = mesh.indexFormat;
173 |
174 | // Counts
175 | var sourceVertexCount = readData.vertexCount;
176 | var sourceIndexCount = readData.GetIndexCount();
177 |
178 | // Destination -----------------------------------------------------
179 | var destIndexFormat = IndexFormat.UInt32;
180 | var destVertexFormat = mesh.CopyVertexFormat(0, 1);
181 | var destIndexCount = sourceIndexCount * matrices.Length;
182 | var destVertexCount = sourceVertexCount * matrices.Length;
183 |
184 | var hasStream1 = !mesh.IsVertexPositionOnly();
185 |
186 |
187 | //-------------------------------------------------------------
188 | // OUTPUT SETUP
189 | //-------------------------------------------------------------
190 | var writeArray = Mesh.AllocateWritableMeshData(1);
191 | var writeData = writeArray[0];
192 |
193 | writeData.SetVertexBufferParams(destVertexCount, destVertexFormat);
194 | writeData.SetIndexBufferParams(destIndexCount, destIndexFormat);
195 |
196 | //-------------------------------------------------------------
197 | // MEMORY COPYING
198 | //-------------------------------------------------------------
199 | // Replicate every other vertex attribute ---------------------
200 | // Essentially skip the first 12 bytes (= 3 floats) of every vertex,
201 | // because we know they represent position, and we handled this above.
202 | // Everything that is not VertexPosition will be written to stream 1 !
203 | unsafe
204 | {
205 | if (hasStream1)
206 | {
207 | var inData = readData.GetVertexData();
208 | var outData = writeData.GetVertexData(1); // Notice that we write to stream 1!
209 |
210 | var destElementSize = sourceVertexSize - FLOAT3_SIZE;
211 | var source =
212 | FLOAT3_SIZE +
213 | (byte*) inData.GetUnsafeReadOnlyPtr(); // Begin after the first vertex = first 12 bytes
214 | var copies = matrices.Length;
215 |
216 | var noPosition =
217 | new NativeArray(destElementSize * readData.vertexCount, Allocator.TempJob);
218 |
219 | // REMOVE POSITIONS FROM ORIGINAL MESH STREAM
220 | Unity.Collections.LowLevel.Unsafe.UnsafeUtility
221 | .MemCpyStride(destination: noPosition.GetUnsafePtr(),
222 | destinationStride: destElementSize,
223 | source: source,
224 | sourceStride: sourceVertexSize,
225 | elementSize: destElementSize,
226 | count: readData.vertexCount);
227 |
228 | // REPLICATE NORMALS,COLORS,UV ETC INTO THE MERGED MESH
229 | UnsafeUtility.MemCpyReplicate(destination: outData, source: noPosition, count: copies);
230 |
231 | noPosition.Dispose();
232 | }
233 |
234 |
235 | // Transform Vertices ----------------------------------------
236 | var inVertices = new NativeArray(sourceVertexCount, Allocator.TempJob);
237 | var outVertices = writeData.GetVertexData(0);
238 |
239 | readData.GetVertices(inVertices);
240 |
241 | new HelperJobs.TransformVerticesJob
242 | {
243 | inputVertices = inVertices.Reinterpret(),
244 | matrices = matrices,
245 | outputVertices = outVertices
246 | }.Schedule(destVertexCount, 128).Complete();
247 |
248 |
249 | //Indices ---------------------------------------------------
250 | var inData2 = readData.GetIndexData().GetUnsafeReadOnlyPtr();
251 | var outData2 = writeData.GetIndexData();
252 |
253 | if (sourceIndexFormat == IndexFormat.UInt16)
254 | {
255 | new HelperJobs.OffsetReplicateIndicesJob
256 | {
257 | inputIndices = inData2,
258 | outputIndices = outData2,
259 | originalVertexCount = sourceVertexCount,
260 | originalIndexCount = sourceIndexCount
261 | }.Schedule(destIndexCount, 128).Complete();
262 | }
263 | else
264 | {
265 | new HelperJobs.OffsetReplicateIndicesJob
266 | {
267 | inputIndices = inData2,
268 | outputIndices = outData2,
269 | originalVertexCount = sourceVertexCount,
270 | originalIndexCount = sourceIndexCount
271 | }.Schedule(destIndexCount, 128).Complete();
272 | }
273 |
274 | inVertices.Dispose();
275 | }
276 |
277 | writeData.subMeshCount = 1;
278 | writeData.SetSubMesh(0, new SubMeshDescriptor(0, destIndexCount, mesh.GetTopology(0)));
279 | Mesh.ApplyAndDisposeWritableMeshData(writeArray, m);
280 | m.RecalculateBounds();
281 |
282 | return m;
283 | }
284 |
285 | #else
286 | ///
287 | /// Attempts to copy the data of the current to another one, as fast as possible,
288 | /// with minimal allocations (a few tens of bytes in scenarios with very large meshes).
289 | ///
290 | public static void CopyTo(this Mesh inMesh, ref Mesh outMesh)
291 | {
292 | // PRE-UNITY 2020 WAY OF COPYING
293 | outMesh.indexFormat = inMesh.indexFormat;
294 | outMesh.SetVertices(inMesh.vertices);
295 | outMesh.SetNormals(inMesh.normals);
296 | outMesh.SetUVs(0,inMesh.uv);
297 | outMesh.SetIndices(inMesh.GetIndices(0), inMesh.GetTopology(0), 0);
298 | outMesh.SetColors(inMesh.colors);
299 | }
300 | #endif
301 | }
302 | }
303 | }
--------------------------------------------------------------------------------
/UnityProject/Assets/FastMeshCopy/Runtime/FastMeshCopy.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: da9d2ce9e6cd48e4e9de9f5c97680e9b
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/UnityProject/Assets/FastMeshCopy/Runtime/HelperFunctions.cs:
--------------------------------------------------------------------------------
1 | using UnityEngine;
2 | using UnityEngine.Rendering;
3 | using static UnchartedLimbo.Tools.FastMeshCopy.Runtime.Constants;
4 |
5 |
6 | namespace UnchartedLimbo.Tools.FastMeshCopy.Runtime
7 | {
8 | ///
9 | /// Author: George Adamopoulos
10 | /// Version: 2.0.0
11 | /// Date: 2021-06-15
12 | /// License: GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007
13 | ///
14 | public static class HelperFunctions
15 | {
16 | ///
17 | /// Returns the real size of a vertex in bytes.
18 | /// This size is determined by the amount, dimensionality and precision of the VertexAttributes describing the
19 | /// vertices of the mesh.
20 | ///
21 | public static int SizeOfVertex(this Mesh mesh)
22 | {
23 | var sourceVertexFormat = mesh.GetVertexAttributes();
24 | var sourceVertexSize = 0;
25 |
26 | for (var i = 0; i < sourceVertexFormat.Length; i++)
27 | {
28 | // FIGURE OUT THE VERTEX SIZE
29 | var size = FLOAT_SIZE;
30 |
31 | switch (sourceVertexFormat[i].format)
32 | {
33 | case VertexAttributeFormat.Float16:
34 | case VertexAttributeFormat.UNorm16:
35 | case VertexAttributeFormat.SNorm16:
36 | case VertexAttributeFormat.UInt16:
37 | case VertexAttributeFormat.SInt16:
38 | size = 2;
39 | break;
40 | case VertexAttributeFormat.UNorm8:
41 | case VertexAttributeFormat.SNorm8:
42 | case VertexAttributeFormat.UInt8:
43 | case VertexAttributeFormat.SInt8:
44 | size = 1;
45 | break;
46 | }
47 |
48 | sourceVertexSize += sourceVertexFormat[i].dimension * size;
49 | }
50 |
51 | return sourceVertexSize;
52 | }
53 |
54 | ///
55 | /// Checks whether 2 objects have an identical Vertex format.
56 | ///
57 | public static bool EqualsVertexFormat(this Mesh mesh, Mesh other)
58 | {
59 | var format = mesh.GetVertexAttributes();
60 | var format2 = other.GetVertexAttributes();
61 |
62 | if (format.Length != format2.Length)
63 | return false;
64 |
65 | for (int i = 0; i < format.Length; i++)
66 | {
67 | var a = format[i];
68 | var b = format2[i];
69 |
70 | if (a != b)
71 | return false;
72 | }
73 |
74 | return true;
75 | }
76 |
77 | ///
78 | /// Extract the of a by optionally storing
79 | /// every attribute that is NOT position in a separate vertex stream.
80 | ///
81 | public static VertexAttributeDescriptor[] CopyVertexFormat(this Mesh mesh, int positionStream = 0, int otherStream = 1)
82 | {
83 | var sourceVertexFormat = mesh.GetVertexAttributes();
84 | var destVertexFormat = new VertexAttributeDescriptor[sourceVertexFormat.Length];
85 |
86 | for (var i = 0; i < sourceVertexFormat.Length; i++)
87 | {
88 |
89 | // CREATE THE NEW VERTEX FORMAT
90 | // Assign stream 0 only to VertexPosition, and stream 1 to everything else
91 | var stream = sourceVertexFormat[i].attribute == VertexAttribute.Position ?
92 | positionStream : otherStream;
93 |
94 | destVertexFormat[i] = new VertexAttributeDescriptor(sourceVertexFormat[i].attribute,
95 | sourceVertexFormat[i].format,
96 | sourceVertexFormat[i].dimension, stream);
97 | }
98 |
99 | return destVertexFormat;
100 | }
101 |
102 | ///
103 | /// Checks whether the vertices of a only store the position attribute.
104 | ///
105 | public static bool IsVertexPositionOnly(this Mesh mesh)
106 | {
107 | var sourceVertexFormat = mesh.GetVertexAttributes();
108 |
109 | var positionOnly = true;
110 |
111 | for (var i = 0; i < sourceVertexFormat.Length; i++)
112 | {
113 | if (sourceVertexFormat[i].attribute != VertexAttribute.Position)
114 | {
115 | positionOnly = false;
116 | break;
117 | }
118 | }
119 |
120 | return positionOnly;
121 |
122 | }
123 |
124 | ///
125 | /// Get the actual index count of a object.
126 | ///
127 | public static int GetIndexCount(this Mesh.MeshData md)
128 | {
129 | return md.indexFormat == IndexFormat.UInt16
130 | ? md.GetIndexData().Length
131 | : md.GetIndexData().Length;
132 | }
133 | }
134 | }
--------------------------------------------------------------------------------
/UnityProject/Assets/FastMeshCopy/Runtime/HelperFunctions.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: daad3225bdf34ddca046d064ef935d27
3 | timeCreated: 1623794852
--------------------------------------------------------------------------------
/UnityProject/Assets/FastMeshCopy/Runtime/HelperJobs.cs:
--------------------------------------------------------------------------------
1 | using Unity.Burst;
2 | using Unity.Collections;
3 | using Unity.Collections.LowLevel.Unsafe;
4 | using Unity.Jobs;
5 | using Unity.Mathematics;
6 |
7 | namespace UnchartedLimbo.Tools.FastMeshCopy.Runtime
8 | {
9 | ///
10 | /// Author: George Adamopoulos
11 | /// Version: 2.0.0
12 | /// Date: 2021-06-15
13 | /// License: GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007
14 | ///
15 | public static class HelperJobs
16 | {
17 | ///
18 | /// Transform an initial collection of Np points with Nm matrices, generating a total of Np x Nm points.
19 | ///
20 | [BurstCompile]
21 | public struct TransformVerticesJob : IJobParallelFor
22 | {
23 | ///
24 | /// Vertices of original mesh
25 | ///
26 | [ReadOnly]
27 | public NativeArray inputVertices;
28 |
29 | ///
30 | /// Transformation matrices
31 | ///
32 | [ReadOnly]
33 | public NativeArray matrices;
34 |
35 | ///
36 | /// Big array of all the transformed vertices
37 | ///
38 | [WriteOnly]
39 | [NativeDisableParallelForRestriction]
40 | public NativeArray outputVertices;
41 |
42 | public void Execute(int index)
43 | {
44 | var vertex = inputVertices[index % inputVertices.Length];
45 |
46 | outputVertices[index] = math.mul(matrices[index / inputVertices.Length], new float4(vertex.xyz, 1)).xyz;
47 | }
48 | }
49 |
50 |
51 | ///
52 | /// Replicate a collection of indices, while incrementing each batch
53 | ///
54 | [BurstCompile]
55 | public unsafe struct OffsetReplicateIndicesJob : IJobParallelFor where T:unmanaged
56 | {
57 | [NativeDisableUnsafePtrRestriction]
58 | public void* inputIndices;
59 |
60 | public int originalIndexCount;
61 |
62 | public int originalVertexCount;
63 |
64 | [WriteOnly]
65 | public NativeArray outputIndices;
66 |
67 | public void Execute(int index)
68 | {
69 | var offset = (index / originalIndexCount) * originalVertexCount;
70 | var originalIndex = index % originalIndexCount;
71 |
72 | var inputIndex = index;
73 |
74 | switch (sizeof(T))
75 | {
76 | case 4:
77 | inputIndex = (int) *((uint*) inputIndices + originalIndex) + offset;
78 | break;
79 | case 2:
80 | inputIndex = *((ushort*) inputIndices + originalIndex) + offset;
81 | break;
82 | }
83 |
84 | outputIndices[index] = inputIndex;
85 | }
86 | }
87 |
88 | }
89 | }
--------------------------------------------------------------------------------
/UnityProject/Assets/FastMeshCopy/Runtime/HelperJobs.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c1c18066ee634c98bc2cdf66ca0d461e
3 | timeCreated: 1623796646
--------------------------------------------------------------------------------
/UnityProject/Assets/FastMeshCopy/Runtime/ULC.Tools.FastMeshCopy.Runtime.asmdef:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ULC.Tools.FastMeshCopy.Runtime",
3 | "rootNamespace": "",
4 | "references": [
5 | "Unity.Mathematics",
6 | "Unity.Burst"
7 | ],
8 | "includePlatforms": [],
9 | "excludePlatforms": [],
10 | "allowUnsafeCode": true,
11 | "overrideReferences": false,
12 | "precompiledReferences": [],
13 | "autoReferenced": true,
14 | "defineConstraints": [],
15 | "versionDefines": [],
16 | "noEngineReferences": false
17 | }
--------------------------------------------------------------------------------
/UnityProject/Assets/FastMeshCopy/Runtime/ULC.Tools.FastMeshCopy.Runtime.asmdef.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 0cd2acaf7c308174f84c55241253f210
3 | AssemblyDefinitionImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/UnityProject/Assets/FastMeshCopy/Runtime/UnsafeUtility.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Unity.Burst;
3 | using Unity.Collections;
4 | using Unity.Collections.LowLevel.Unsafe;
5 | using UnityUnsafeUtility = Unity.Collections.LowLevel.Unsafe.UnsafeUtility;
6 |
7 | using Unity.Jobs;
8 |
9 | namespace UnchartedLimbo.Tools.FastMeshCopy.Runtime
10 | {
11 | ///
12 | /// Author: George Adamopoulos
13 | /// Version: 2.0.0
14 | /// Date: 2021-06-15
15 | /// License: GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007
16 | ///
17 | public static class UnsafeUtility
18 | {
19 | ///
20 | /// Parallel version of
21 | ///
22 | public static unsafe void MemCpyReplicate(NativeArray destination, NativeArray source, int count) where T:unmanaged
23 | {
24 | if (destination.Length < source.Length * count)
25 | {
26 | throw new
27 | IndexOutOfRangeException($"The destination array cannot fit more than {destination.Length / source.Length} copies of the source array." +
28 | $"You attempted to shove {count} copies, and this would lead to an immediate and fatal crash. Aborted.");
29 | }
30 | new MemCpyReplicateJob
31 | {
32 | sourcePtr = (T*) source.GetUnsafeReadOnlyPtr(),
33 | destPtr = (T*) destination.GetUnsafePtr(),
34 | sourceLength = source.Length
35 |
36 | }.Schedule(count, 64).Complete();
37 | }
38 |
39 | [BurstCompile]
40 | private unsafe struct MemCpyReplicateJob : IJobParallelFor where T:unmanaged
41 | {
42 | [NativeDisableUnsafePtrRestriction]
43 | public T* sourcePtr;
44 |
45 | [NativeDisableUnsafePtrRestriction]
46 | public T* destPtr;
47 |
48 | public int sourceLength;
49 |
50 | public void Execute(int index)
51 | {
52 | UnityUnsafeUtility.MemCpy(destPtr + index * sourceLength, sourcePtr, sourceLength * UnityUnsafeUtility.SizeOf());
53 | }
54 | }
55 | }
56 | }
--------------------------------------------------------------------------------
/UnityProject/Assets/FastMeshCopy/Runtime/UnsafeUtility.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 84695e7627a9424c86cb96b7daf181a7
3 | timeCreated: 1623796800
--------------------------------------------------------------------------------
/UnityProject/Assets/FastMeshCopy/Tests.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 75efbaaa0ef70c2438410aa87f81fb72
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/UnityProject/Assets/FastMeshCopy/Tests/MeshCopyExample.cs:
--------------------------------------------------------------------------------
1 | using UnityEngine;
2 | using UnchartedLimbo.Tools.FastMeshCopy.Runtime;
3 |
4 | namespace UnchartedLimbo.Tools.FastMeshCopy.Tests
5 | {
6 | [RequireComponent(typeof(MeshFilter), typeof(MeshRenderer))]
7 | public class MeshCopyExample : MonoBehaviour
8 | {
9 | public Mesh inMesh;
10 | public Mesh outMesh;
11 | private MeshFilter mf;
12 |
13 | private void Start()
14 | {
15 | mf = GetComponent();
16 | outMesh = new Mesh {name = "Empty Mesh"};
17 | mf.sharedMesh = outMesh;
18 |
19 |
20 | }
21 |
22 | private void Update()
23 | {
24 | if (!Input.GetKeyDown(KeyCode.Space))
25 | return;
26 |
27 | inMesh.CopyTo(ref outMesh);
28 | mf.sharedMesh.name = $"Copy of [{inMesh.name}]";
29 | }
30 | }
31 | }
32 |
33 |
--------------------------------------------------------------------------------
/UnityProject/Assets/FastMeshCopy/Tests/MeshCopyExample.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 2466bd5e36647134983b058169e64ab9
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/UnityProject/Assets/FastMeshCopy/Tests/ULC.Tools.FastMeshCopy.Tests.asmdef:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ULC.Tools.FastMeshCopy.Tests",
3 | "references": [
4 | "GUID:0cd2acaf7c308174f84c55241253f210"
5 | ],
6 | "includePlatforms": [],
7 | "excludePlatforms": [],
8 | "allowUnsafeCode": false,
9 | "overrideReferences": false,
10 | "precompiledReferences": [],
11 | "autoReferenced": true,
12 | "defineConstraints": [],
13 | "versionDefines": [],
14 | "noEngineReferences": false
15 | }
--------------------------------------------------------------------------------
/UnityProject/Assets/FastMeshCopy/Tests/ULC.Tools.FastMeshCopy.Tests.asmdef.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 9aa837da71cec1743bcd5ce8b4e652fb
3 | AssemblyDefinitionImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/UnityProject/Assets/FastMeshCopy/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ulc-tools-fastmeshcopy" ,
3 | "version": "1.0.0" ,
4 | "displayName": "Fast Mesh Copy" ,
5 | "description": "Zero-allocation copying of Meshes using the new MeshData functionality in Unity 2020.1+" ,
6 | "unity": "2020.1" ,
7 | "keywords": [
8 | "Mesh" ,
9 | "MeshData" ,
10 | "Native"
11 | ] ,
12 | "dependencies": {
13 | "com.unity.mathematics": "1.2.1",
14 | "com.unity.burst": "1.5.4"
15 | } ,
16 | "author": {
17 | "name": "George Adamopoulos" ,
18 | "email": "ga.adamon@gmail.com" ,
19 | "url": "https://github.com/GeorgeAdamon/FastMeshCopy"
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/UnityProject/Assets/FastMeshCopy/package.json.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: fda6790a972443044b6547eba25eed81
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/UnityProject/Assets/Scenes.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b82d6da4d999bfd4baf4b7e73eda67ea
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/UnityProject/Assets/Scenes/SampleScene.unity:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!29 &1
4 | OcclusionCullingSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_OcclusionBakeSettings:
8 | smallestOccluder: 5
9 | smallestHole: 0.25
10 | backfaceThreshold: 100
11 | m_SceneGUID: 00000000000000000000000000000000
12 | m_OcclusionCullingData: {fileID: 0}
13 | --- !u!104 &2
14 | RenderSettings:
15 | m_ObjectHideFlags: 0
16 | serializedVersion: 9
17 | m_Fog: 0
18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
19 | m_FogMode: 3
20 | m_FogDensity: 0.01
21 | m_LinearFogStart: 0
22 | m_LinearFogEnd: 300
23 | m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
26 | m_AmbientIntensity: 1
27 | m_AmbientMode: 0
28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
29 | m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
30 | m_HaloStrength: 0.5
31 | m_FlareStrength: 1
32 | m_FlareFadeSpeed: 3
33 | m_HaloTexture: {fileID: 0}
34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
35 | m_DefaultReflectionMode: 0
36 | m_DefaultReflectionResolution: 128
37 | m_ReflectionBounces: 1
38 | m_ReflectionIntensity: 1
39 | m_CustomReflection: {fileID: 0}
40 | m_Sun: {fileID: 705507994}
41 | m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
42 | m_UseRadianceAmbientProbe: 0
43 | --- !u!157 &3
44 | LightmapSettings:
45 | m_ObjectHideFlags: 0
46 | serializedVersion: 12
47 | m_GIWorkflowMode: 1
48 | m_GISettings:
49 | serializedVersion: 2
50 | m_BounceScale: 1
51 | m_IndirectOutputScale: 1
52 | m_AlbedoBoost: 1
53 | m_EnvironmentLightingMode: 0
54 | m_EnableBakedLightmaps: 1
55 | m_EnableRealtimeLightmaps: 0
56 | m_LightmapEditorSettings:
57 | serializedVersion: 12
58 | m_Resolution: 2
59 | m_BakeResolution: 40
60 | m_AtlasSize: 1024
61 | m_AO: 0
62 | m_AOMaxDistance: 1
63 | m_CompAOExponent: 1
64 | m_CompAOExponentDirect: 0
65 | m_ExtractAmbientOcclusion: 0
66 | m_Padding: 2
67 | m_LightmapParameters: {fileID: 0}
68 | m_LightmapsBakeMode: 1
69 | m_TextureCompression: 1
70 | m_FinalGather: 0
71 | m_FinalGatherFiltering: 1
72 | m_FinalGatherRayCount: 256
73 | m_ReflectionCompression: 2
74 | m_MixedBakeMode: 2
75 | m_BakeBackend: 1
76 | m_PVRSampling: 1
77 | m_PVRDirectSampleCount: 32
78 | m_PVRSampleCount: 500
79 | m_PVRBounces: 2
80 | m_PVREnvironmentSampleCount: 500
81 | m_PVREnvironmentReferencePointCount: 2048
82 | m_PVRFilteringMode: 2
83 | m_PVRDenoiserTypeDirect: 0
84 | m_PVRDenoiserTypeIndirect: 0
85 | m_PVRDenoiserTypeAO: 0
86 | m_PVRFilterTypeDirect: 0
87 | m_PVRFilterTypeIndirect: 0
88 | m_PVRFilterTypeAO: 0
89 | m_PVREnvironmentMIS: 0
90 | m_PVRCulling: 1
91 | m_PVRFilteringGaussRadiusDirect: 1
92 | m_PVRFilteringGaussRadiusIndirect: 5
93 | m_PVRFilteringGaussRadiusAO: 2
94 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5
95 | m_PVRFilteringAtrousPositionSigmaIndirect: 2
96 | m_PVRFilteringAtrousPositionSigmaAO: 1
97 | m_ExportTrainingData: 0
98 | m_TrainingDataDestination: TrainingData
99 | m_LightProbeSampleCountMultiplier: 4
100 | m_LightingDataAsset: {fileID: 0}
101 | m_LightingSettings: {fileID: 1703693785}
102 | --- !u!196 &4
103 | NavMeshSettings:
104 | serializedVersion: 2
105 | m_ObjectHideFlags: 0
106 | m_BuildSettings:
107 | serializedVersion: 2
108 | agentTypeID: 0
109 | agentRadius: 0.5
110 | agentHeight: 2
111 | agentSlope: 45
112 | agentClimb: 0.4
113 | ledgeDropHeight: 0
114 | maxJumpAcrossDistance: 0
115 | minRegionArea: 2
116 | manualCellSize: 0
117 | cellSize: 0.16666667
118 | manualTileSize: 0
119 | tileSize: 256
120 | accuratePlacement: 0
121 | maxJobWorkers: 0
122 | preserveTilesOutsideBounds: 0
123 | debug:
124 | m_Flags: 0
125 | m_NavMeshData: {fileID: 0}
126 | --- !u!1 &705507993
127 | GameObject:
128 | m_ObjectHideFlags: 0
129 | m_CorrespondingSourceObject: {fileID: 0}
130 | m_PrefabInstance: {fileID: 0}
131 | m_PrefabAsset: {fileID: 0}
132 | serializedVersion: 6
133 | m_Component:
134 | - component: {fileID: 705507995}
135 | - component: {fileID: 705507994}
136 | m_Layer: 0
137 | m_Name: Directional Light
138 | m_TagString: Untagged
139 | m_Icon: {fileID: 0}
140 | m_NavMeshLayer: 0
141 | m_StaticEditorFlags: 0
142 | m_IsActive: 1
143 | --- !u!108 &705507994
144 | Light:
145 | m_ObjectHideFlags: 0
146 | m_CorrespondingSourceObject: {fileID: 0}
147 | m_PrefabInstance: {fileID: 0}
148 | m_PrefabAsset: {fileID: 0}
149 | m_GameObject: {fileID: 705507993}
150 | m_Enabled: 1
151 | serializedVersion: 10
152 | m_Type: 1
153 | m_Shape: 0
154 | m_Color: {r: 1, g: 1, b: 1, a: 1}
155 | m_Intensity: 1
156 | m_Range: 10
157 | m_SpotAngle: 30
158 | m_InnerSpotAngle: 21.80208
159 | m_CookieSize: 10
160 | m_Shadows:
161 | m_Type: 2
162 | m_Resolution: -1
163 | m_CustomResolution: -1
164 | m_Strength: 1
165 | m_Bias: 0.05
166 | m_NormalBias: 0.4
167 | m_NearPlane: 0.2
168 | m_CullingMatrixOverride:
169 | e00: 1
170 | e01: 0
171 | e02: 0
172 | e03: 0
173 | e10: 0
174 | e11: 1
175 | e12: 0
176 | e13: 0
177 | e20: 0
178 | e21: 0
179 | e22: 1
180 | e23: 0
181 | e30: 0
182 | e31: 0
183 | e32: 0
184 | e33: 1
185 | m_UseCullingMatrixOverride: 0
186 | m_Cookie: {fileID: 0}
187 | m_DrawHalo: 0
188 | m_Flare: {fileID: 0}
189 | m_RenderMode: 0
190 | m_CullingMask:
191 | serializedVersion: 2
192 | m_Bits: 4294967295
193 | m_RenderingLayerMask: 1
194 | m_Lightmapping: 1
195 | m_LightShadowCasterMode: 0
196 | m_AreaSize: {x: 1, y: 1}
197 | m_BounceIntensity: 1
198 | m_ColorTemperature: 6570
199 | m_UseColorTemperature: 0
200 | m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
201 | m_UseBoundingSphereOverride: 0
202 | m_ShadowRadius: 0
203 | m_ShadowAngle: 0
204 | --- !u!4 &705507995
205 | Transform:
206 | m_ObjectHideFlags: 0
207 | m_CorrespondingSourceObject: {fileID: 0}
208 | m_PrefabInstance: {fileID: 0}
209 | m_PrefabAsset: {fileID: 0}
210 | m_GameObject: {fileID: 705507993}
211 | m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
212 | m_LocalPosition: {x: 0, y: 3, z: 0}
213 | m_LocalScale: {x: 1, y: 1, z: 1}
214 | m_Children: []
215 | m_Father: {fileID: 0}
216 | m_RootOrder: 1
217 | m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
218 | --- !u!1 &963194225
219 | GameObject:
220 | m_ObjectHideFlags: 0
221 | m_CorrespondingSourceObject: {fileID: 0}
222 | m_PrefabInstance: {fileID: 0}
223 | m_PrefabAsset: {fileID: 0}
224 | serializedVersion: 6
225 | m_Component:
226 | - component: {fileID: 963194228}
227 | - component: {fileID: 963194227}
228 | - component: {fileID: 963194226}
229 | m_Layer: 0
230 | m_Name: Main Camera
231 | m_TagString: MainCamera
232 | m_Icon: {fileID: 0}
233 | m_NavMeshLayer: 0
234 | m_StaticEditorFlags: 0
235 | m_IsActive: 1
236 | --- !u!81 &963194226
237 | AudioListener:
238 | m_ObjectHideFlags: 0
239 | m_CorrespondingSourceObject: {fileID: 0}
240 | m_PrefabInstance: {fileID: 0}
241 | m_PrefabAsset: {fileID: 0}
242 | m_GameObject: {fileID: 963194225}
243 | m_Enabled: 1
244 | --- !u!20 &963194227
245 | Camera:
246 | m_ObjectHideFlags: 0
247 | m_CorrespondingSourceObject: {fileID: 0}
248 | m_PrefabInstance: {fileID: 0}
249 | m_PrefabAsset: {fileID: 0}
250 | m_GameObject: {fileID: 963194225}
251 | m_Enabled: 1
252 | serializedVersion: 2
253 | m_ClearFlags: 2
254 | m_BackGroundColor: {r: 0.2830189, g: 0.2830189, b: 0.2830189, a: 0}
255 | m_projectionMatrixMode: 1
256 | m_GateFitMode: 2
257 | m_FOVAxisMode: 0
258 | m_SensorSize: {x: 36, y: 24}
259 | m_LensShift: {x: 0, y: 0}
260 | m_FocalLength: 50
261 | m_NormalizedViewPortRect:
262 | serializedVersion: 2
263 | x: 0
264 | y: 0
265 | width: 1
266 | height: 1
267 | near clip plane: 0.3
268 | far clip plane: 1000
269 | field of view: 60
270 | orthographic: 0
271 | orthographic size: 5
272 | m_Depth: -1
273 | m_CullingMask:
274 | serializedVersion: 2
275 | m_Bits: 4294967295
276 | m_RenderingPath: -1
277 | m_TargetTexture: {fileID: 0}
278 | m_TargetDisplay: 0
279 | m_TargetEye: 3
280 | m_HDR: 1
281 | m_AllowMSAA: 1
282 | m_AllowDynamicResolution: 0
283 | m_ForceIntoRT: 0
284 | m_OcclusionCulling: 1
285 | m_StereoConvergence: 10
286 | m_StereoSeparation: 0.022
287 | --- !u!4 &963194228
288 | Transform:
289 | m_ObjectHideFlags: 0
290 | m_CorrespondingSourceObject: {fileID: 0}
291 | m_PrefabInstance: {fileID: 0}
292 | m_PrefabAsset: {fileID: 0}
293 | m_GameObject: {fileID: 963194225}
294 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
295 | m_LocalPosition: {x: 0, y: 1, z: -10}
296 | m_LocalScale: {x: 1, y: 1, z: 1}
297 | m_Children: []
298 | m_Father: {fileID: 0}
299 | m_RootOrder: 0
300 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
301 | --- !u!1 &1109630816
302 | GameObject:
303 | m_ObjectHideFlags: 0
304 | m_CorrespondingSourceObject: {fileID: 0}
305 | m_PrefabInstance: {fileID: 0}
306 | m_PrefabAsset: {fileID: 0}
307 | serializedVersion: 6
308 | m_Component:
309 | - component: {fileID: 1109630820}
310 | - component: {fileID: 1109630819}
311 | - component: {fileID: 1109630818}
312 | - component: {fileID: 1109630817}
313 | m_Layer: 0
314 | m_Name: MeshCopy
315 | m_TagString: Untagged
316 | m_Icon: {fileID: 0}
317 | m_NavMeshLayer: 0
318 | m_StaticEditorFlags: 0
319 | m_IsActive: 1
320 | --- !u!114 &1109630817
321 | MonoBehaviour:
322 | m_ObjectHideFlags: 0
323 | m_CorrespondingSourceObject: {fileID: 0}
324 | m_PrefabInstance: {fileID: 0}
325 | m_PrefabAsset: {fileID: 0}
326 | m_GameObject: {fileID: 1109630816}
327 | m_Enabled: 1
328 | m_EditorHideFlags: 0
329 | m_Script: {fileID: 11500000, guid: 2466bd5e36647134983b058169e64ab9, type: 3}
330 | m_Name:
331 | m_EditorClassIdentifier:
332 | inMesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0}
333 | outMesh: {fileID: 0}
334 | --- !u!23 &1109630818
335 | MeshRenderer:
336 | m_ObjectHideFlags: 0
337 | m_CorrespondingSourceObject: {fileID: 0}
338 | m_PrefabInstance: {fileID: 0}
339 | m_PrefabAsset: {fileID: 0}
340 | m_GameObject: {fileID: 1109630816}
341 | m_Enabled: 1
342 | m_CastShadows: 1
343 | m_ReceiveShadows: 1
344 | m_DynamicOccludee: 1
345 | m_MotionVectors: 1
346 | m_LightProbeUsage: 1
347 | m_ReflectionProbeUsage: 1
348 | m_RayTracingMode: 2
349 | m_RayTraceProcedural: 0
350 | m_RenderingLayerMask: 1
351 | m_RendererPriority: 0
352 | m_Materials:
353 | - {fileID: 2100000, guid: 157eea6bf50b5334698405063a44cdea, type: 2}
354 | m_StaticBatchInfo:
355 | firstSubMesh: 0
356 | subMeshCount: 0
357 | m_StaticBatchRoot: {fileID: 0}
358 | m_ProbeAnchor: {fileID: 0}
359 | m_LightProbeVolumeOverride: {fileID: 0}
360 | m_ScaleInLightmap: 1
361 | m_ReceiveGI: 1
362 | m_PreserveUVs: 0
363 | m_IgnoreNormalsForChartDetection: 0
364 | m_ImportantGI: 0
365 | m_StitchLightmapSeams: 1
366 | m_SelectedEditorRenderState: 3
367 | m_MinimumChartSize: 4
368 | m_AutoUVMaxDistance: 0.5
369 | m_AutoUVMaxAngle: 89
370 | m_LightmapParameters: {fileID: 0}
371 | m_SortingLayerID: 0
372 | m_SortingLayer: 0
373 | m_SortingOrder: 0
374 | m_AdditionalVertexStreams: {fileID: 0}
375 | --- !u!33 &1109630819
376 | MeshFilter:
377 | m_ObjectHideFlags: 0
378 | m_CorrespondingSourceObject: {fileID: 0}
379 | m_PrefabInstance: {fileID: 0}
380 | m_PrefabAsset: {fileID: 0}
381 | m_GameObject: {fileID: 1109630816}
382 | m_Mesh: {fileID: 0}
383 | --- !u!4 &1109630820
384 | Transform:
385 | m_ObjectHideFlags: 0
386 | m_CorrespondingSourceObject: {fileID: 0}
387 | m_PrefabInstance: {fileID: 0}
388 | m_PrefabAsset: {fileID: 0}
389 | m_GameObject: {fileID: 1109630816}
390 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
391 | m_LocalPosition: {x: 0, y: 0, z: 0}
392 | m_LocalScale: {x: 1, y: 1, z: 1}
393 | m_Children: []
394 | m_Father: {fileID: 0}
395 | m_RootOrder: 2
396 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
397 | --- !u!850595691 &1703693785
398 | LightingSettings:
399 | m_ObjectHideFlags: 0
400 | m_CorrespondingSourceObject: {fileID: 0}
401 | m_PrefabInstance: {fileID: 0}
402 | m_PrefabAsset: {fileID: 0}
403 | m_Name: Settings.lighting
404 | serializedVersion: 2
405 | m_GIWorkflowMode: 1
406 | m_EnableBakedLightmaps: 1
407 | m_EnableRealtimeLightmaps: 0
408 | m_RealtimeEnvironmentLighting: 1
409 | m_BounceScale: 1
410 | m_AlbedoBoost: 1
411 | m_IndirectOutputScale: 1
412 | m_UsingShadowmask: 1
413 | m_BakeBackend: 1
414 | m_LightmapMaxSize: 1024
415 | m_BakeResolution: 40
416 | m_Padding: 2
417 | m_TextureCompression: 1
418 | m_AO: 0
419 | m_AOMaxDistance: 1
420 | m_CompAOExponent: 1
421 | m_CompAOExponentDirect: 0
422 | m_ExtractAO: 0
423 | m_MixedBakeMode: 2
424 | m_LightmapsBakeMode: 1
425 | m_FilterMode: 1
426 | m_LightmapParameters: {fileID: 0}
427 | m_ExportTrainingData: 0
428 | m_TrainingDataDestination: TrainingData
429 | m_RealtimeResolution: 2
430 | m_ForceWhiteAlbedo: 0
431 | m_ForceUpdates: 0
432 | m_FinalGather: 0
433 | m_FinalGatherRayCount: 256
434 | m_FinalGatherFiltering: 1
435 | m_PVRCulling: 1
436 | m_PVRSampling: 1
437 | m_PVRDirectSampleCount: 32
438 | m_PVRSampleCount: 500
439 | m_PVREnvironmentSampleCount: 500
440 | m_PVREnvironmentReferencePointCount: 2048
441 | m_LightProbeSampleCountMultiplier: 4
442 | m_PVRBounces: 2
443 | m_PVRRussianRouletteStartBounce: 2
444 | m_PVREnvironmentMIS: 0
445 | m_PVRFilteringMode: 2
446 | m_PVRDenoiserTypeDirect: 0
447 | m_PVRDenoiserTypeIndirect: 0
448 | m_PVRDenoiserTypeAO: 0
449 | m_PVRFilterTypeDirect: 0
450 | m_PVRFilterTypeIndirect: 0
451 | m_PVRFilterTypeAO: 0
452 | m_PVRFilteringGaussRadiusDirect: 1
453 | m_PVRFilteringGaussRadiusIndirect: 5
454 | m_PVRFilteringGaussRadiusAO: 2
455 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5
456 | m_PVRFilteringAtrousPositionSigmaIndirect: 2
457 | m_PVRFilteringAtrousPositionSigmaAO: 1
458 |
--------------------------------------------------------------------------------
/UnityProject/Assets/Scenes/SampleScene.unity.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 9fc0d4010bbf28b4594072e72b8655ab
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/UnityProject/Packages/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "dependencies": {
3 | "com.unity.burst": "1.5.4",
4 | "com.unity.collab-proxy": "1.3.9",
5 | "com.unity.ide.rider": "2.0.7",
6 | "com.unity.ide.visualstudio": "2.0.7",
7 | "com.unity.ide.vscode": "1.2.3",
8 | "com.unity.mathematics": "1.2.1",
9 | "com.unity.test-framework": "1.1.24",
10 | "com.unity.textmeshpro": "3.0.6",
11 | "com.unity.timeline": "1.4.8",
12 | "com.unity.ugui": "1.0.0",
13 | "com.unity.modules.ai": "1.0.0",
14 | "com.unity.modules.androidjni": "1.0.0",
15 | "com.unity.modules.animation": "1.0.0",
16 | "com.unity.modules.assetbundle": "1.0.0",
17 | "com.unity.modules.audio": "1.0.0",
18 | "com.unity.modules.cloth": "1.0.0",
19 | "com.unity.modules.director": "1.0.0",
20 | "com.unity.modules.imageconversion": "1.0.0",
21 | "com.unity.modules.imgui": "1.0.0",
22 | "com.unity.modules.jsonserialize": "1.0.0",
23 | "com.unity.modules.particlesystem": "1.0.0",
24 | "com.unity.modules.physics": "1.0.0",
25 | "com.unity.modules.physics2d": "1.0.0",
26 | "com.unity.modules.screencapture": "1.0.0",
27 | "com.unity.modules.terrain": "1.0.0",
28 | "com.unity.modules.terrainphysics": "1.0.0",
29 | "com.unity.modules.tilemap": "1.0.0",
30 | "com.unity.modules.ui": "1.0.0",
31 | "com.unity.modules.uielements": "1.0.0",
32 | "com.unity.modules.umbra": "1.0.0",
33 | "com.unity.modules.unityanalytics": "1.0.0",
34 | "com.unity.modules.unitywebrequest": "1.0.0",
35 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
36 | "com.unity.modules.unitywebrequestaudio": "1.0.0",
37 | "com.unity.modules.unitywebrequesttexture": "1.0.0",
38 | "com.unity.modules.unitywebrequestwww": "1.0.0",
39 | "com.unity.modules.vehicles": "1.0.0",
40 | "com.unity.modules.video": "1.0.0",
41 | "com.unity.modules.vr": "1.0.0",
42 | "com.unity.modules.wind": "1.0.0",
43 | "com.unity.modules.xr": "1.0.0"
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/UnityProject/Packages/packages-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "dependencies": {
3 | "com.unity.burst": {
4 | "version": "1.5.4",
5 | "depth": 0,
6 | "source": "registry",
7 | "dependencies": {
8 | "com.unity.mathematics": "1.2.1"
9 | },
10 | "url": "https://packages.unity.com"
11 | },
12 | "com.unity.collab-proxy": {
13 | "version": "1.3.9",
14 | "depth": 0,
15 | "source": "registry",
16 | "dependencies": {},
17 | "url": "https://packages.unity.com"
18 | },
19 | "com.unity.ext.nunit": {
20 | "version": "1.0.6",
21 | "depth": 1,
22 | "source": "registry",
23 | "dependencies": {},
24 | "url": "https://packages.unity.com"
25 | },
26 | "com.unity.ide.rider": {
27 | "version": "2.0.7",
28 | "depth": 0,
29 | "source": "registry",
30 | "dependencies": {
31 | "com.unity.test-framework": "1.1.1"
32 | },
33 | "url": "https://packages.unity.com"
34 | },
35 | "com.unity.ide.visualstudio": {
36 | "version": "2.0.7",
37 | "depth": 0,
38 | "source": "registry",
39 | "dependencies": {
40 | "com.unity.test-framework": "1.1.9"
41 | },
42 | "url": "https://packages.unity.com"
43 | },
44 | "com.unity.ide.vscode": {
45 | "version": "1.2.3",
46 | "depth": 0,
47 | "source": "registry",
48 | "dependencies": {},
49 | "url": "https://packages.unity.com"
50 | },
51 | "com.unity.mathematics": {
52 | "version": "1.2.1",
53 | "depth": 0,
54 | "source": "registry",
55 | "dependencies": {},
56 | "url": "https://packages.unity.com"
57 | },
58 | "com.unity.test-framework": {
59 | "version": "1.1.24",
60 | "depth": 0,
61 | "source": "registry",
62 | "dependencies": {
63 | "com.unity.ext.nunit": "1.0.6",
64 | "com.unity.modules.imgui": "1.0.0",
65 | "com.unity.modules.jsonserialize": "1.0.0"
66 | },
67 | "url": "https://packages.unity.com"
68 | },
69 | "com.unity.textmeshpro": {
70 | "version": "3.0.6",
71 | "depth": 0,
72 | "source": "registry",
73 | "dependencies": {
74 | "com.unity.ugui": "1.0.0"
75 | },
76 | "url": "https://packages.unity.com"
77 | },
78 | "com.unity.timeline": {
79 | "version": "1.4.8",
80 | "depth": 0,
81 | "source": "registry",
82 | "dependencies": {
83 | "com.unity.modules.director": "1.0.0",
84 | "com.unity.modules.animation": "1.0.0",
85 | "com.unity.modules.audio": "1.0.0",
86 | "com.unity.modules.particlesystem": "1.0.0"
87 | },
88 | "url": "https://packages.unity.com"
89 | },
90 | "com.unity.ugui": {
91 | "version": "1.0.0",
92 | "depth": 0,
93 | "source": "builtin",
94 | "dependencies": {
95 | "com.unity.modules.ui": "1.0.0",
96 | "com.unity.modules.imgui": "1.0.0"
97 | }
98 | },
99 | "com.unity.modules.ai": {
100 | "version": "1.0.0",
101 | "depth": 0,
102 | "source": "builtin",
103 | "dependencies": {}
104 | },
105 | "com.unity.modules.androidjni": {
106 | "version": "1.0.0",
107 | "depth": 0,
108 | "source": "builtin",
109 | "dependencies": {}
110 | },
111 | "com.unity.modules.animation": {
112 | "version": "1.0.0",
113 | "depth": 0,
114 | "source": "builtin",
115 | "dependencies": {}
116 | },
117 | "com.unity.modules.assetbundle": {
118 | "version": "1.0.0",
119 | "depth": 0,
120 | "source": "builtin",
121 | "dependencies": {}
122 | },
123 | "com.unity.modules.audio": {
124 | "version": "1.0.0",
125 | "depth": 0,
126 | "source": "builtin",
127 | "dependencies": {}
128 | },
129 | "com.unity.modules.cloth": {
130 | "version": "1.0.0",
131 | "depth": 0,
132 | "source": "builtin",
133 | "dependencies": {
134 | "com.unity.modules.physics": "1.0.0"
135 | }
136 | },
137 | "com.unity.modules.director": {
138 | "version": "1.0.0",
139 | "depth": 0,
140 | "source": "builtin",
141 | "dependencies": {
142 | "com.unity.modules.audio": "1.0.0",
143 | "com.unity.modules.animation": "1.0.0"
144 | }
145 | },
146 | "com.unity.modules.imageconversion": {
147 | "version": "1.0.0",
148 | "depth": 0,
149 | "source": "builtin",
150 | "dependencies": {}
151 | },
152 | "com.unity.modules.imgui": {
153 | "version": "1.0.0",
154 | "depth": 0,
155 | "source": "builtin",
156 | "dependencies": {}
157 | },
158 | "com.unity.modules.jsonserialize": {
159 | "version": "1.0.0",
160 | "depth": 0,
161 | "source": "builtin",
162 | "dependencies": {}
163 | },
164 | "com.unity.modules.particlesystem": {
165 | "version": "1.0.0",
166 | "depth": 0,
167 | "source": "builtin",
168 | "dependencies": {}
169 | },
170 | "com.unity.modules.physics": {
171 | "version": "1.0.0",
172 | "depth": 0,
173 | "source": "builtin",
174 | "dependencies": {}
175 | },
176 | "com.unity.modules.physics2d": {
177 | "version": "1.0.0",
178 | "depth": 0,
179 | "source": "builtin",
180 | "dependencies": {}
181 | },
182 | "com.unity.modules.screencapture": {
183 | "version": "1.0.0",
184 | "depth": 0,
185 | "source": "builtin",
186 | "dependencies": {
187 | "com.unity.modules.imageconversion": "1.0.0"
188 | }
189 | },
190 | "com.unity.modules.subsystems": {
191 | "version": "1.0.0",
192 | "depth": 1,
193 | "source": "builtin",
194 | "dependencies": {
195 | "com.unity.modules.jsonserialize": "1.0.0"
196 | }
197 | },
198 | "com.unity.modules.terrain": {
199 | "version": "1.0.0",
200 | "depth": 0,
201 | "source": "builtin",
202 | "dependencies": {}
203 | },
204 | "com.unity.modules.terrainphysics": {
205 | "version": "1.0.0",
206 | "depth": 0,
207 | "source": "builtin",
208 | "dependencies": {
209 | "com.unity.modules.physics": "1.0.0",
210 | "com.unity.modules.terrain": "1.0.0"
211 | }
212 | },
213 | "com.unity.modules.tilemap": {
214 | "version": "1.0.0",
215 | "depth": 0,
216 | "source": "builtin",
217 | "dependencies": {
218 | "com.unity.modules.physics2d": "1.0.0"
219 | }
220 | },
221 | "com.unity.modules.ui": {
222 | "version": "1.0.0",
223 | "depth": 0,
224 | "source": "builtin",
225 | "dependencies": {}
226 | },
227 | "com.unity.modules.uielements": {
228 | "version": "1.0.0",
229 | "depth": 0,
230 | "source": "builtin",
231 | "dependencies": {
232 | "com.unity.modules.ui": "1.0.0",
233 | "com.unity.modules.imgui": "1.0.0",
234 | "com.unity.modules.jsonserialize": "1.0.0",
235 | "com.unity.modules.uielementsnative": "1.0.0"
236 | }
237 | },
238 | "com.unity.modules.uielementsnative": {
239 | "version": "1.0.0",
240 | "depth": 1,
241 | "source": "builtin",
242 | "dependencies": {
243 | "com.unity.modules.ui": "1.0.0",
244 | "com.unity.modules.imgui": "1.0.0",
245 | "com.unity.modules.jsonserialize": "1.0.0"
246 | }
247 | },
248 | "com.unity.modules.umbra": {
249 | "version": "1.0.0",
250 | "depth": 0,
251 | "source": "builtin",
252 | "dependencies": {}
253 | },
254 | "com.unity.modules.unityanalytics": {
255 | "version": "1.0.0",
256 | "depth": 0,
257 | "source": "builtin",
258 | "dependencies": {
259 | "com.unity.modules.unitywebrequest": "1.0.0",
260 | "com.unity.modules.jsonserialize": "1.0.0"
261 | }
262 | },
263 | "com.unity.modules.unitywebrequest": {
264 | "version": "1.0.0",
265 | "depth": 0,
266 | "source": "builtin",
267 | "dependencies": {}
268 | },
269 | "com.unity.modules.unitywebrequestassetbundle": {
270 | "version": "1.0.0",
271 | "depth": 0,
272 | "source": "builtin",
273 | "dependencies": {
274 | "com.unity.modules.assetbundle": "1.0.0",
275 | "com.unity.modules.unitywebrequest": "1.0.0"
276 | }
277 | },
278 | "com.unity.modules.unitywebrequestaudio": {
279 | "version": "1.0.0",
280 | "depth": 0,
281 | "source": "builtin",
282 | "dependencies": {
283 | "com.unity.modules.unitywebrequest": "1.0.0",
284 | "com.unity.modules.audio": "1.0.0"
285 | }
286 | },
287 | "com.unity.modules.unitywebrequesttexture": {
288 | "version": "1.0.0",
289 | "depth": 0,
290 | "source": "builtin",
291 | "dependencies": {
292 | "com.unity.modules.unitywebrequest": "1.0.0",
293 | "com.unity.modules.imageconversion": "1.0.0"
294 | }
295 | },
296 | "com.unity.modules.unitywebrequestwww": {
297 | "version": "1.0.0",
298 | "depth": 0,
299 | "source": "builtin",
300 | "dependencies": {
301 | "com.unity.modules.unitywebrequest": "1.0.0",
302 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
303 | "com.unity.modules.unitywebrequestaudio": "1.0.0",
304 | "com.unity.modules.audio": "1.0.0",
305 | "com.unity.modules.assetbundle": "1.0.0",
306 | "com.unity.modules.imageconversion": "1.0.0"
307 | }
308 | },
309 | "com.unity.modules.vehicles": {
310 | "version": "1.0.0",
311 | "depth": 0,
312 | "source": "builtin",
313 | "dependencies": {
314 | "com.unity.modules.physics": "1.0.0"
315 | }
316 | },
317 | "com.unity.modules.video": {
318 | "version": "1.0.0",
319 | "depth": 0,
320 | "source": "builtin",
321 | "dependencies": {
322 | "com.unity.modules.audio": "1.0.0",
323 | "com.unity.modules.ui": "1.0.0",
324 | "com.unity.modules.unitywebrequest": "1.0.0"
325 | }
326 | },
327 | "com.unity.modules.vr": {
328 | "version": "1.0.0",
329 | "depth": 0,
330 | "source": "builtin",
331 | "dependencies": {
332 | "com.unity.modules.jsonserialize": "1.0.0",
333 | "com.unity.modules.physics": "1.0.0",
334 | "com.unity.modules.xr": "1.0.0"
335 | }
336 | },
337 | "com.unity.modules.wind": {
338 | "version": "1.0.0",
339 | "depth": 0,
340 | "source": "builtin",
341 | "dependencies": {}
342 | },
343 | "com.unity.modules.xr": {
344 | "version": "1.0.0",
345 | "depth": 0,
346 | "source": "builtin",
347 | "dependencies": {
348 | "com.unity.modules.physics": "1.0.0",
349 | "com.unity.modules.jsonserialize": "1.0.0",
350 | "com.unity.modules.subsystems": "1.0.0"
351 | }
352 | }
353 | }
354 | }
355 |
--------------------------------------------------------------------------------
/UnityProject/ProjectSettings/AudioManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!11 &1
4 | AudioManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_Volume: 1
8 | Rolloff Scale: 1
9 | Doppler Factor: 1
10 | Default Speaker Mode: 2
11 | m_SampleRate: 0
12 | m_DSPBufferSize: 1024
13 | m_VirtualVoiceCount: 512
14 | m_RealVoiceCount: 32
15 | m_SpatializerPlugin:
16 | m_AmbisonicDecoderPlugin:
17 | m_DisableAudio: 0
18 | m_VirtualizeEffects: 1
19 | m_RequestedDSPBufferSize: 1024
20 |
--------------------------------------------------------------------------------
/UnityProject/ProjectSettings/ClusterInputManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!236 &1
4 | ClusterInputManager:
5 | m_ObjectHideFlags: 0
6 | m_Inputs: []
7 |
--------------------------------------------------------------------------------
/UnityProject/ProjectSettings/DynamicsManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!55 &1
4 | PhysicsManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 11
7 | m_Gravity: {x: 0, y: -9.81, z: 0}
8 | m_DefaultMaterial: {fileID: 0}
9 | m_BounceThreshold: 2
10 | m_SleepThreshold: 0.005
11 | m_DefaultContactOffset: 0.01
12 | m_DefaultSolverIterations: 6
13 | m_DefaultSolverVelocityIterations: 1
14 | m_QueriesHitBackfaces: 0
15 | m_QueriesHitTriggers: 1
16 | m_EnableAdaptiveForce: 0
17 | m_ClothInterCollisionDistance: 0
18 | m_ClothInterCollisionStiffness: 0
19 | m_ContactsGeneration: 1
20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
21 | m_AutoSimulation: 1
22 | m_AutoSyncTransforms: 0
23 | m_ReuseCollisionCallbacks: 1
24 | m_ClothInterCollisionSettingsToggle: 0
25 | m_ContactPairsMode: 0
26 | m_BroadphaseType: 0
27 | m_WorldBounds:
28 | m_Center: {x: 0, y: 0, z: 0}
29 | m_Extent: {x: 250, y: 250, z: 250}
30 | m_WorldSubdivisions: 8
31 | m_FrictionType: 0
32 | m_EnableEnhancedDeterminism: 0
33 | m_EnableUnifiedHeightmaps: 1
34 | m_DefaultMaxAngluarSpeed: 7
35 |
--------------------------------------------------------------------------------
/UnityProject/ProjectSettings/EditorBuildSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1045 &1
4 | EditorBuildSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_Scenes: []
8 | m_configObjects: {}
9 |
--------------------------------------------------------------------------------
/UnityProject/ProjectSettings/EditorSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!159 &1
4 | EditorSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 11
7 | m_ExternalVersionControlSupport: Visible Meta Files
8 | m_SerializationMode: 2
9 | m_LineEndingsForNewScripts: 0
10 | m_DefaultBehaviorMode: 0
11 | m_PrefabRegularEnvironment: {fileID: 0}
12 | m_PrefabUIEnvironment: {fileID: 0}
13 | m_SpritePackerMode: 0
14 | m_SpritePackerPaddingPower: 1
15 | m_EtcTextureCompressorBehavior: 1
16 | m_EtcTextureFastCompressor: 1
17 | m_EtcTextureNormalCompressor: 2
18 | m_EtcTextureBestCompressor: 4
19 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp;asmref
20 | m_ProjectGenerationRootNamespace:
21 | m_CollabEditorSettings:
22 | inProgressEnabled: 1
23 | m_EnableTextureStreamingInEditMode: 1
24 | m_EnableTextureStreamingInPlayMode: 1
25 | m_AsyncShaderCompilation: 1
26 | m_EnterPlayModeOptionsEnabled: 0
27 | m_EnterPlayModeOptions: 3
28 | m_ShowLightmapResolutionOverlay: 1
29 | m_UseLegacyProbeSampleCount: 0
30 | m_SerializeInlineMappingsOnOneLine: 1
--------------------------------------------------------------------------------
/UnityProject/ProjectSettings/GraphicsSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!30 &1
4 | GraphicsSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 13
7 | m_Deferred:
8 | m_Mode: 1
9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0}
10 | m_DeferredReflections:
11 | m_Mode: 1
12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0}
13 | m_ScreenSpaceShadows:
14 | m_Mode: 1
15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0}
16 | m_LegacyDeferred:
17 | m_Mode: 1
18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0}
19 | m_DepthNormals:
20 | m_Mode: 1
21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0}
22 | m_MotionVectors:
23 | m_Mode: 1
24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0}
25 | m_LightHalo:
26 | m_Mode: 1
27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0}
28 | m_LensFlare:
29 | m_Mode: 1
30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0}
31 | m_AlwaysIncludedShaders:
32 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}
33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0}
34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0}
35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0}
36 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0}
37 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}
38 | m_PreloadedShaders: []
39 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000,
40 | type: 0}
41 | m_CustomRenderPipeline: {fileID: 0}
42 | m_TransparencySortMode: 0
43 | m_TransparencySortAxis: {x: 0, y: 0, z: 1}
44 | m_DefaultRenderingPath: 1
45 | m_DefaultMobileRenderingPath: 1
46 | m_TierSettings: []
47 | m_LightmapStripping: 0
48 | m_FogStripping: 0
49 | m_InstancingStripping: 0
50 | m_LightmapKeepPlain: 1
51 | m_LightmapKeepDirCombined: 1
52 | m_LightmapKeepDynamicPlain: 1
53 | m_LightmapKeepDynamicDirCombined: 1
54 | m_LightmapKeepShadowMask: 1
55 | m_LightmapKeepSubtractive: 1
56 | m_FogKeepLinear: 1
57 | m_FogKeepExp: 1
58 | m_FogKeepExp2: 1
59 | m_AlbedoSwatchInfos: []
60 | m_LightsUseLinearIntensity: 0
61 | m_LightsUseColorTemperature: 0
62 | m_LogWhenShaderIsCompiled: 0
63 | m_AllowEnlightenSupportForUpgradedProject: 0
64 |
--------------------------------------------------------------------------------
/UnityProject/ProjectSettings/InputManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!13 &1
4 | InputManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_Axes:
8 | - serializedVersion: 3
9 | m_Name: Horizontal
10 | descriptiveName:
11 | descriptiveNegativeName:
12 | negativeButton: left
13 | positiveButton: right
14 | altNegativeButton: a
15 | altPositiveButton: d
16 | gravity: 3
17 | dead: 0.001
18 | sensitivity: 3
19 | snap: 1
20 | invert: 0
21 | type: 0
22 | axis: 0
23 | joyNum: 0
24 | - serializedVersion: 3
25 | m_Name: Vertical
26 | descriptiveName:
27 | descriptiveNegativeName:
28 | negativeButton: down
29 | positiveButton: up
30 | altNegativeButton: s
31 | altPositiveButton: w
32 | gravity: 3
33 | dead: 0.001
34 | sensitivity: 3
35 | snap: 1
36 | invert: 0
37 | type: 0
38 | axis: 0
39 | joyNum: 0
40 | - serializedVersion: 3
41 | m_Name: Fire1
42 | descriptiveName:
43 | descriptiveNegativeName:
44 | negativeButton:
45 | positiveButton: left ctrl
46 | altNegativeButton:
47 | altPositiveButton: mouse 0
48 | gravity: 1000
49 | dead: 0.001
50 | sensitivity: 1000
51 | snap: 0
52 | invert: 0
53 | type: 0
54 | axis: 0
55 | joyNum: 0
56 | - serializedVersion: 3
57 | m_Name: Fire2
58 | descriptiveName:
59 | descriptiveNegativeName:
60 | negativeButton:
61 | positiveButton: left alt
62 | altNegativeButton:
63 | altPositiveButton: mouse 1
64 | gravity: 1000
65 | dead: 0.001
66 | sensitivity: 1000
67 | snap: 0
68 | invert: 0
69 | type: 0
70 | axis: 0
71 | joyNum: 0
72 | - serializedVersion: 3
73 | m_Name: Fire3
74 | descriptiveName:
75 | descriptiveNegativeName:
76 | negativeButton:
77 | positiveButton: left shift
78 | altNegativeButton:
79 | altPositiveButton: mouse 2
80 | gravity: 1000
81 | dead: 0.001
82 | sensitivity: 1000
83 | snap: 0
84 | invert: 0
85 | type: 0
86 | axis: 0
87 | joyNum: 0
88 | - serializedVersion: 3
89 | m_Name: Jump
90 | descriptiveName:
91 | descriptiveNegativeName:
92 | negativeButton:
93 | positiveButton: space
94 | altNegativeButton:
95 | altPositiveButton:
96 | gravity: 1000
97 | dead: 0.001
98 | sensitivity: 1000
99 | snap: 0
100 | invert: 0
101 | type: 0
102 | axis: 0
103 | joyNum: 0
104 | - serializedVersion: 3
105 | m_Name: Mouse X
106 | descriptiveName:
107 | descriptiveNegativeName:
108 | negativeButton:
109 | positiveButton:
110 | altNegativeButton:
111 | altPositiveButton:
112 | gravity: 0
113 | dead: 0
114 | sensitivity: 0.1
115 | snap: 0
116 | invert: 0
117 | type: 1
118 | axis: 0
119 | joyNum: 0
120 | - serializedVersion: 3
121 | m_Name: Mouse Y
122 | descriptiveName:
123 | descriptiveNegativeName:
124 | negativeButton:
125 | positiveButton:
126 | altNegativeButton:
127 | altPositiveButton:
128 | gravity: 0
129 | dead: 0
130 | sensitivity: 0.1
131 | snap: 0
132 | invert: 0
133 | type: 1
134 | axis: 1
135 | joyNum: 0
136 | - serializedVersion: 3
137 | m_Name: Mouse ScrollWheel
138 | descriptiveName:
139 | descriptiveNegativeName:
140 | negativeButton:
141 | positiveButton:
142 | altNegativeButton:
143 | altPositiveButton:
144 | gravity: 0
145 | dead: 0
146 | sensitivity: 0.1
147 | snap: 0
148 | invert: 0
149 | type: 1
150 | axis: 2
151 | joyNum: 0
152 | - serializedVersion: 3
153 | m_Name: Horizontal
154 | descriptiveName:
155 | descriptiveNegativeName:
156 | negativeButton:
157 | positiveButton:
158 | altNegativeButton:
159 | altPositiveButton:
160 | gravity: 0
161 | dead: 0.19
162 | sensitivity: 1
163 | snap: 0
164 | invert: 0
165 | type: 2
166 | axis: 0
167 | joyNum: 0
168 | - serializedVersion: 3
169 | m_Name: Vertical
170 | descriptiveName:
171 | descriptiveNegativeName:
172 | negativeButton:
173 | positiveButton:
174 | altNegativeButton:
175 | altPositiveButton:
176 | gravity: 0
177 | dead: 0.19
178 | sensitivity: 1
179 | snap: 0
180 | invert: 1
181 | type: 2
182 | axis: 1
183 | joyNum: 0
184 | - serializedVersion: 3
185 | m_Name: Fire1
186 | descriptiveName:
187 | descriptiveNegativeName:
188 | negativeButton:
189 | positiveButton: joystick button 0
190 | altNegativeButton:
191 | altPositiveButton:
192 | gravity: 1000
193 | dead: 0.001
194 | sensitivity: 1000
195 | snap: 0
196 | invert: 0
197 | type: 0
198 | axis: 0
199 | joyNum: 0
200 | - serializedVersion: 3
201 | m_Name: Fire2
202 | descriptiveName:
203 | descriptiveNegativeName:
204 | negativeButton:
205 | positiveButton: joystick button 1
206 | altNegativeButton:
207 | altPositiveButton:
208 | gravity: 1000
209 | dead: 0.001
210 | sensitivity: 1000
211 | snap: 0
212 | invert: 0
213 | type: 0
214 | axis: 0
215 | joyNum: 0
216 | - serializedVersion: 3
217 | m_Name: Fire3
218 | descriptiveName:
219 | descriptiveNegativeName:
220 | negativeButton:
221 | positiveButton: joystick button 2
222 | altNegativeButton:
223 | altPositiveButton:
224 | gravity: 1000
225 | dead: 0.001
226 | sensitivity: 1000
227 | snap: 0
228 | invert: 0
229 | type: 0
230 | axis: 0
231 | joyNum: 0
232 | - serializedVersion: 3
233 | m_Name: Jump
234 | descriptiveName:
235 | descriptiveNegativeName:
236 | negativeButton:
237 | positiveButton: joystick button 3
238 | altNegativeButton:
239 | altPositiveButton:
240 | gravity: 1000
241 | dead: 0.001
242 | sensitivity: 1000
243 | snap: 0
244 | invert: 0
245 | type: 0
246 | axis: 0
247 | joyNum: 0
248 | - serializedVersion: 3
249 | m_Name: Submit
250 | descriptiveName:
251 | descriptiveNegativeName:
252 | negativeButton:
253 | positiveButton: return
254 | altNegativeButton:
255 | altPositiveButton: joystick button 0
256 | gravity: 1000
257 | dead: 0.001
258 | sensitivity: 1000
259 | snap: 0
260 | invert: 0
261 | type: 0
262 | axis: 0
263 | joyNum: 0
264 | - serializedVersion: 3
265 | m_Name: Submit
266 | descriptiveName:
267 | descriptiveNegativeName:
268 | negativeButton:
269 | positiveButton: enter
270 | altNegativeButton:
271 | altPositiveButton: space
272 | gravity: 1000
273 | dead: 0.001
274 | sensitivity: 1000
275 | snap: 0
276 | invert: 0
277 | type: 0
278 | axis: 0
279 | joyNum: 0
280 | - serializedVersion: 3
281 | m_Name: Cancel
282 | descriptiveName:
283 | descriptiveNegativeName:
284 | negativeButton:
285 | positiveButton: escape
286 | altNegativeButton:
287 | altPositiveButton: joystick button 1
288 | gravity: 1000
289 | dead: 0.001
290 | sensitivity: 1000
291 | snap: 0
292 | invert: 0
293 | type: 0
294 | axis: 0
295 | joyNum: 0
296 |
--------------------------------------------------------------------------------
/UnityProject/ProjectSettings/NavMeshAreas.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!126 &1
4 | NavMeshProjectSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | areas:
8 | - name: Walkable
9 | cost: 1
10 | - name: Not Walkable
11 | cost: 1
12 | - name: Jump
13 | cost: 2
14 | - name:
15 | cost: 1
16 | - name:
17 | cost: 1
18 | - name:
19 | cost: 1
20 | - name:
21 | cost: 1
22 | - name:
23 | cost: 1
24 | - name:
25 | cost: 1
26 | - name:
27 | cost: 1
28 | - name:
29 | cost: 1
30 | - name:
31 | cost: 1
32 | - name:
33 | cost: 1
34 | - name:
35 | cost: 1
36 | - name:
37 | cost: 1
38 | - name:
39 | cost: 1
40 | - name:
41 | cost: 1
42 | - name:
43 | cost: 1
44 | - name:
45 | cost: 1
46 | - name:
47 | cost: 1
48 | - name:
49 | cost: 1
50 | - name:
51 | cost: 1
52 | - name:
53 | cost: 1
54 | - name:
55 | cost: 1
56 | - name:
57 | cost: 1
58 | - name:
59 | cost: 1
60 | - name:
61 | cost: 1
62 | - name:
63 | cost: 1
64 | - name:
65 | cost: 1
66 | - name:
67 | cost: 1
68 | - name:
69 | cost: 1
70 | - name:
71 | cost: 1
72 | m_LastAgentTypeID: -887442657
73 | m_Settings:
74 | - serializedVersion: 2
75 | agentTypeID: 0
76 | agentRadius: 0.5
77 | agentHeight: 2
78 | agentSlope: 45
79 | agentClimb: 0.75
80 | ledgeDropHeight: 0
81 | maxJumpAcrossDistance: 0
82 | minRegionArea: 2
83 | manualCellSize: 0
84 | cellSize: 0.16666667
85 | manualTileSize: 0
86 | tileSize: 256
87 | accuratePlacement: 0
88 | debug:
89 | m_Flags: 0
90 | m_SettingNames:
91 | - Humanoid
92 |
--------------------------------------------------------------------------------
/UnityProject/ProjectSettings/PackageManagerSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &1
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 61
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0}
13 | m_Name:
14 | m_EditorClassIdentifier:
15 | m_EnablePreviewPackages: 0
16 | m_EnablePackageDependencies: 0
17 | m_AdvancedSettingsExpanded: 1
18 | m_ScopedRegistriesSettingsExpanded: 1
19 | oneTimeWarningShown: 0
20 | m_Registries:
21 | - m_Id: main
22 | m_Name:
23 | m_Url: https://packages.unity.com
24 | m_Scopes: []
25 | m_IsDefault: 1
26 | m_Capabilities: 7
27 | m_UserSelectedRegistryName:
28 | m_UserAddingNewScopedRegistry: 0
29 | m_RegistryInfoDraft:
30 | m_ErrorMessage:
31 | m_Original:
32 | m_Id:
33 | m_Name:
34 | m_Url:
35 | m_Scopes: []
36 | m_IsDefault: 0
37 | m_Capabilities: 0
38 | m_Modified: 0
39 | m_Name:
40 | m_Url:
41 | m_Scopes:
42 | -
43 | m_SelectedScopeIndex: 0
44 |
--------------------------------------------------------------------------------
/UnityProject/ProjectSettings/Physics2DSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!19 &1
4 | Physics2DSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 4
7 | m_Gravity: {x: 0, y: -9.81}
8 | m_DefaultMaterial: {fileID: 0}
9 | m_VelocityIterations: 8
10 | m_PositionIterations: 3
11 | m_VelocityThreshold: 1
12 | m_MaxLinearCorrection: 0.2
13 | m_MaxAngularCorrection: 8
14 | m_MaxTranslationSpeed: 100
15 | m_MaxRotationSpeed: 360
16 | m_BaumgarteScale: 0.2
17 | m_BaumgarteTimeOfImpactScale: 0.75
18 | m_TimeToSleep: 0.5
19 | m_LinearSleepTolerance: 0.01
20 | m_AngularSleepTolerance: 2
21 | m_DefaultContactOffset: 0.01
22 | m_JobOptions:
23 | serializedVersion: 2
24 | useMultithreading: 0
25 | useConsistencySorting: 0
26 | m_InterpolationPosesPerJob: 100
27 | m_NewContactsPerJob: 30
28 | m_CollideContactsPerJob: 100
29 | m_ClearFlagsPerJob: 200
30 | m_ClearBodyForcesPerJob: 200
31 | m_SyncDiscreteFixturesPerJob: 50
32 | m_SyncContinuousFixturesPerJob: 50
33 | m_FindNearestContactsPerJob: 100
34 | m_UpdateTriggerContactsPerJob: 100
35 | m_IslandSolverCostThreshold: 100
36 | m_IslandSolverBodyCostScale: 1
37 | m_IslandSolverContactCostScale: 10
38 | m_IslandSolverJointCostScale: 10
39 | m_IslandSolverBodiesPerJob: 50
40 | m_IslandSolverContactsPerJob: 50
41 | m_AutoSimulation: 1
42 | m_QueriesHitTriggers: 1
43 | m_QueriesStartInColliders: 1
44 | m_CallbacksOnDisable: 1
45 | m_ReuseCollisionCallbacks: 1
46 | m_AutoSyncTransforms: 0
47 | m_AlwaysShowColliders: 0
48 | m_ShowColliderSleep: 1
49 | m_ShowColliderContacts: 0
50 | m_ShowColliderAABB: 0
51 | m_ContactArrowScale: 0.2
52 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412}
53 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432}
54 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745}
55 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804}
56 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
57 |
--------------------------------------------------------------------------------
/UnityProject/ProjectSettings/PresetManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1386491679 &1
4 | PresetManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_DefaultPresets: {}
8 |
--------------------------------------------------------------------------------
/UnityProject/ProjectSettings/ProjectSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!129 &1
4 | PlayerSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 20
7 | productGUID: e68dc85e1ff2e2d49b4035d0fb17bf46
8 | AndroidProfiler: 0
9 | AndroidFilterTouchesWhenObscured: 0
10 | AndroidEnableSustainedPerformanceMode: 0
11 | defaultScreenOrientation: 4
12 | targetDevice: 2
13 | useOnDemandResources: 0
14 | accelerometerFrequency: 60
15 | companyName: DefaultCompany
16 | productName: UnityProject
17 | defaultCursor: {fileID: 0}
18 | cursorHotspot: {x: 0, y: 0}
19 | m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1}
20 | m_ShowUnitySplashScreen: 1
21 | m_ShowUnitySplashLogo: 1
22 | m_SplashScreenOverlayOpacity: 1
23 | m_SplashScreenAnimation: 1
24 | m_SplashScreenLogoStyle: 1
25 | m_SplashScreenDrawMode: 0
26 | m_SplashScreenBackgroundAnimationZoom: 1
27 | m_SplashScreenLogoAnimationZoom: 1
28 | m_SplashScreenBackgroundLandscapeAspect: 1
29 | m_SplashScreenBackgroundPortraitAspect: 1
30 | m_SplashScreenBackgroundLandscapeUvs:
31 | serializedVersion: 2
32 | x: 0
33 | y: 0
34 | width: 1
35 | height: 1
36 | m_SplashScreenBackgroundPortraitUvs:
37 | serializedVersion: 2
38 | x: 0
39 | y: 0
40 | width: 1
41 | height: 1
42 | m_SplashScreenLogos: []
43 | m_VirtualRealitySplashScreen: {fileID: 0}
44 | m_HolographicTrackingLossScreen: {fileID: 0}
45 | defaultScreenWidth: 1024
46 | defaultScreenHeight: 768
47 | defaultScreenWidthWeb: 960
48 | defaultScreenHeightWeb: 600
49 | m_StereoRenderingPath: 0
50 | m_ActiveColorSpace: 0
51 | m_MTRendering: 1
52 | mipStripping: 0
53 | numberOfMipsStripped: 0
54 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000
55 | iosShowActivityIndicatorOnLoading: -1
56 | androidShowActivityIndicatorOnLoading: -1
57 | iosUseCustomAppBackgroundBehavior: 0
58 | iosAllowHTTPDownload: 1
59 | allowedAutorotateToPortrait: 1
60 | allowedAutorotateToPortraitUpsideDown: 1
61 | allowedAutorotateToLandscapeRight: 1
62 | allowedAutorotateToLandscapeLeft: 1
63 | useOSAutorotation: 1
64 | use32BitDisplayBuffer: 1
65 | preserveFramebufferAlpha: 0
66 | disableDepthAndStencilBuffers: 0
67 | androidStartInFullscreen: 1
68 | androidRenderOutsideSafeArea: 1
69 | androidUseSwappy: 1
70 | androidBlitType: 0
71 | defaultIsNativeResolution: 1
72 | macRetinaSupport: 1
73 | runInBackground: 1
74 | captureSingleScreen: 0
75 | muteOtherAudioSources: 0
76 | Prepare IOS For Recording: 0
77 | Force IOS Speakers When Recording: 0
78 | deferSystemGesturesMode: 0
79 | hideHomeButton: 0
80 | submitAnalytics: 1
81 | usePlayerLog: 1
82 | bakeCollisionMeshes: 0
83 | forceSingleInstance: 0
84 | useFlipModelSwapchain: 1
85 | resizableWindow: 0
86 | useMacAppStoreValidation: 0
87 | macAppStoreCategory: public.app-category.games
88 | gpuSkinning: 1
89 | xboxPIXTextureCapture: 0
90 | xboxEnableAvatar: 0
91 | xboxEnableKinect: 0
92 | xboxEnableKinectAutoTracking: 0
93 | xboxEnableFitness: 0
94 | visibleInBackground: 1
95 | allowFullscreenSwitch: 1
96 | fullscreenMode: 1
97 | xboxSpeechDB: 0
98 | xboxEnableHeadOrientation: 0
99 | xboxEnableGuest: 0
100 | xboxEnablePIXSampling: 0
101 | metalFramebufferOnly: 0
102 | xboxOneResolution: 0
103 | xboxOneSResolution: 0
104 | xboxOneXResolution: 3
105 | xboxOneMonoLoggingLevel: 0
106 | xboxOneLoggingLevel: 1
107 | xboxOneDisableEsram: 0
108 | xboxOneEnableTypeOptimization: 0
109 | xboxOnePresentImmediateThreshold: 0
110 | switchQueueCommandMemory: 0
111 | switchQueueControlMemory: 16384
112 | switchQueueComputeMemory: 262144
113 | switchNVNShaderPoolsGranularity: 33554432
114 | switchNVNDefaultPoolsGranularity: 16777216
115 | switchNVNOtherPoolsGranularity: 16777216
116 | switchNVNMaxPublicTextureIDCount: 0
117 | switchNVNMaxPublicSamplerIDCount: 0
118 | stadiaPresentMode: 0
119 | stadiaTargetFramerate: 0
120 | vulkanNumSwapchainBuffers: 3
121 | vulkanEnableSetSRGBWrite: 0
122 | m_SupportedAspectRatios:
123 | 4:3: 1
124 | 5:4: 1
125 | 16:10: 1
126 | 16:9: 1
127 | Others: 1
128 | bundleVersion: 0.1
129 | preloadedAssets: []
130 | metroInputSource: 0
131 | wsaTransparentSwapchain: 0
132 | m_HolographicPauseOnTrackingLoss: 1
133 | xboxOneDisableKinectGpuReservation: 1
134 | xboxOneEnable7thCore: 1
135 | vrSettings:
136 | cardboard:
137 | depthFormat: 0
138 | enableTransitionView: 0
139 | daydream:
140 | depthFormat: 0
141 | useSustainedPerformanceMode: 0
142 | enableVideoLayer: 0
143 | useProtectedVideoMemory: 0
144 | minimumSupportedHeadTracking: 0
145 | maximumSupportedHeadTracking: 1
146 | hololens:
147 | depthFormat: 1
148 | depthBufferSharingEnabled: 1
149 | lumin:
150 | depthFormat: 0
151 | frameTiming: 2
152 | enableGLCache: 0
153 | glCacheMaxBlobSize: 524288
154 | glCacheMaxFileSize: 8388608
155 | oculus:
156 | sharedDepthBuffer: 1
157 | dashSupport: 1
158 | lowOverheadMode: 0
159 | protectedContext: 0
160 | v2Signing: 1
161 | enable360StereoCapture: 0
162 | isWsaHolographicRemotingEnabled: 0
163 | enableFrameTimingStats: 0
164 | useHDRDisplay: 0
165 | D3DHDRBitDepth: 0
166 | m_ColorGamuts: 00000000
167 | targetPixelDensity: 30
168 | resolutionScalingMode: 0
169 | androidSupportedAspectRatio: 1
170 | androidMaxAspectRatio: 2.1
171 | applicationIdentifier: {}
172 | buildNumber: {}
173 | AndroidBundleVersionCode: 1
174 | AndroidMinSdkVersion: 19
175 | AndroidTargetSdkVersion: 0
176 | AndroidPreferredInstallLocation: 1
177 | aotOptions:
178 | stripEngineCode: 1
179 | iPhoneStrippingLevel: 0
180 | iPhoneScriptCallOptimization: 0
181 | ForceInternetPermission: 0
182 | ForceSDCardPermission: 0
183 | CreateWallpaper: 0
184 | APKExpansionFiles: 0
185 | keepLoadedShadersAlive: 0
186 | StripUnusedMeshComponents: 1
187 | VertexChannelCompressionMask: 4054
188 | iPhoneSdkVersion: 988
189 | iOSTargetOSVersionString: 11.0
190 | tvOSSdkVersion: 0
191 | tvOSRequireExtendedGameController: 0
192 | tvOSTargetOSVersionString: 11.0
193 | uIPrerenderedIcon: 0
194 | uIRequiresPersistentWiFi: 0
195 | uIRequiresFullScreen: 1
196 | uIStatusBarHidden: 1
197 | uIExitOnSuspend: 0
198 | uIStatusBarStyle: 0
199 | appleTVSplashScreen: {fileID: 0}
200 | appleTVSplashScreen2x: {fileID: 0}
201 | tvOSSmallIconLayers: []
202 | tvOSSmallIconLayers2x: []
203 | tvOSLargeIconLayers: []
204 | tvOSLargeIconLayers2x: []
205 | tvOSTopShelfImageLayers: []
206 | tvOSTopShelfImageLayers2x: []
207 | tvOSTopShelfImageWideLayers: []
208 | tvOSTopShelfImageWideLayers2x: []
209 | iOSLaunchScreenType: 0
210 | iOSLaunchScreenPortrait: {fileID: 0}
211 | iOSLaunchScreenLandscape: {fileID: 0}
212 | iOSLaunchScreenBackgroundColor:
213 | serializedVersion: 2
214 | rgba: 0
215 | iOSLaunchScreenFillPct: 100
216 | iOSLaunchScreenSize: 100
217 | iOSLaunchScreenCustomXibPath:
218 | iOSLaunchScreeniPadType: 0
219 | iOSLaunchScreeniPadImage: {fileID: 0}
220 | iOSLaunchScreeniPadBackgroundColor:
221 | serializedVersion: 2
222 | rgba: 0
223 | iOSLaunchScreeniPadFillPct: 100
224 | iOSLaunchScreeniPadSize: 100
225 | iOSLaunchScreeniPadCustomXibPath:
226 | iOSUseLaunchScreenStoryboard: 0
227 | iOSLaunchScreenCustomStoryboardPath:
228 | iOSDeviceRequirements: []
229 | iOSURLSchemes: []
230 | iOSBackgroundModes: 0
231 | iOSMetalForceHardShadows: 0
232 | metalEditorSupport: 1
233 | metalAPIValidation: 1
234 | iOSRenderExtraFrameOnPause: 0
235 | appleDeveloperTeamID:
236 | iOSManualSigningProvisioningProfileID:
237 | tvOSManualSigningProvisioningProfileID:
238 | iOSManualSigningProvisioningProfileType: 0
239 | tvOSManualSigningProvisioningProfileType: 0
240 | appleEnableAutomaticSigning: 0
241 | iOSRequireARKit: 0
242 | iOSAutomaticallyDetectAndAddCapabilities: 1
243 | appleEnableProMotion: 0
244 | clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea
245 | templatePackageId: com.unity.template.3d@5.0.3
246 | templateDefaultScene: Assets/Scenes/SampleScene.unity
247 | AndroidTargetArchitectures: 1
248 | AndroidSplashScreenScale: 0
249 | androidSplashScreen: {fileID: 0}
250 | AndroidKeystoreName:
251 | AndroidKeyaliasName:
252 | AndroidBuildApkPerCpuArchitecture: 0
253 | AndroidTVCompatibility: 0
254 | AndroidIsGame: 1
255 | AndroidEnableTango: 0
256 | androidEnableBanner: 1
257 | androidUseLowAccuracyLocation: 0
258 | androidUseCustomKeystore: 0
259 | m_AndroidBanners:
260 | - width: 320
261 | height: 180
262 | banner: {fileID: 0}
263 | androidGamepadSupportLevel: 0
264 | AndroidMinifyWithR8: 0
265 | AndroidMinifyRelease: 0
266 | AndroidMinifyDebug: 0
267 | AndroidValidateAppBundleSize: 1
268 | AndroidAppBundleSizeToValidate: 150
269 | m_BuildTargetIcons: []
270 | m_BuildTargetPlatformIcons: []
271 | m_BuildTargetBatching:
272 | - m_BuildTarget: Standalone
273 | m_StaticBatching: 1
274 | m_DynamicBatching: 0
275 | - m_BuildTarget: tvOS
276 | m_StaticBatching: 1
277 | m_DynamicBatching: 0
278 | - m_BuildTarget: Android
279 | m_StaticBatching: 1
280 | m_DynamicBatching: 0
281 | - m_BuildTarget: iPhone
282 | m_StaticBatching: 1
283 | m_DynamicBatching: 0
284 | - m_BuildTarget: WebGL
285 | m_StaticBatching: 0
286 | m_DynamicBatching: 0
287 | m_BuildTargetGraphicsJobs:
288 | - m_BuildTarget: MacStandaloneSupport
289 | m_GraphicsJobs: 0
290 | - m_BuildTarget: Switch
291 | m_GraphicsJobs: 1
292 | - m_BuildTarget: MetroSupport
293 | m_GraphicsJobs: 1
294 | - m_BuildTarget: AppleTVSupport
295 | m_GraphicsJobs: 0
296 | - m_BuildTarget: BJMSupport
297 | m_GraphicsJobs: 1
298 | - m_BuildTarget: LinuxStandaloneSupport
299 | m_GraphicsJobs: 1
300 | - m_BuildTarget: PS4Player
301 | m_GraphicsJobs: 1
302 | - m_BuildTarget: iOSSupport
303 | m_GraphicsJobs: 0
304 | - m_BuildTarget: WindowsStandaloneSupport
305 | m_GraphicsJobs: 1
306 | - m_BuildTarget: XboxOnePlayer
307 | m_GraphicsJobs: 1
308 | - m_BuildTarget: LuminSupport
309 | m_GraphicsJobs: 0
310 | - m_BuildTarget: AndroidPlayer
311 | m_GraphicsJobs: 0
312 | - m_BuildTarget: WebGLSupport
313 | m_GraphicsJobs: 0
314 | m_BuildTargetGraphicsJobMode:
315 | - m_BuildTarget: PS4Player
316 | m_GraphicsJobMode: 0
317 | - m_BuildTarget: XboxOnePlayer
318 | m_GraphicsJobMode: 0
319 | m_BuildTargetGraphicsAPIs:
320 | - m_BuildTarget: AndroidPlayer
321 | m_APIs: 150000000b000000
322 | m_Automatic: 0
323 | - m_BuildTarget: iOSSupport
324 | m_APIs: 10000000
325 | m_Automatic: 1
326 | - m_BuildTarget: AppleTVSupport
327 | m_APIs: 10000000
328 | m_Automatic: 0
329 | - m_BuildTarget: WebGLSupport
330 | m_APIs: 0b000000
331 | m_Automatic: 1
332 | m_BuildTargetVRSettings:
333 | - m_BuildTarget: Standalone
334 | m_Enabled: 0
335 | m_Devices:
336 | - Oculus
337 | - OpenVR
338 | openGLRequireES31: 0
339 | openGLRequireES31AEP: 0
340 | openGLRequireES32: 0
341 | m_TemplateCustomTags: {}
342 | mobileMTRendering:
343 | Android: 1
344 | iPhone: 1
345 | tvOS: 1
346 | m_BuildTargetGroupLightmapEncodingQuality: []
347 | m_BuildTargetGroupLightmapSettings: []
348 | playModeTestRunnerEnabled: 0
349 | runPlayModeTestAsEditModeTest: 0
350 | actionOnDotNetUnhandledException: 1
351 | enableInternalProfiler: 0
352 | logObjCUncaughtExceptions: 1
353 | enableCrashReportAPI: 0
354 | cameraUsageDescription:
355 | locationUsageDescription:
356 | microphoneUsageDescription:
357 | switchNMETAOverride:
358 | switchNetLibKey:
359 | switchSocketMemoryPoolSize: 6144
360 | switchSocketAllocatorPoolSize: 128
361 | switchSocketConcurrencyLimit: 14
362 | switchScreenResolutionBehavior: 2
363 | switchUseCPUProfiler: 0
364 | switchUseGOLDLinker: 0
365 | switchApplicationID: 0x01004b9000490000
366 | switchNSODependencies:
367 | switchTitleNames_0:
368 | switchTitleNames_1:
369 | switchTitleNames_2:
370 | switchTitleNames_3:
371 | switchTitleNames_4:
372 | switchTitleNames_5:
373 | switchTitleNames_6:
374 | switchTitleNames_7:
375 | switchTitleNames_8:
376 | switchTitleNames_9:
377 | switchTitleNames_10:
378 | switchTitleNames_11:
379 | switchTitleNames_12:
380 | switchTitleNames_13:
381 | switchTitleNames_14:
382 | switchPublisherNames_0:
383 | switchPublisherNames_1:
384 | switchPublisherNames_2:
385 | switchPublisherNames_3:
386 | switchPublisherNames_4:
387 | switchPublisherNames_5:
388 | switchPublisherNames_6:
389 | switchPublisherNames_7:
390 | switchPublisherNames_8:
391 | switchPublisherNames_9:
392 | switchPublisherNames_10:
393 | switchPublisherNames_11:
394 | switchPublisherNames_12:
395 | switchPublisherNames_13:
396 | switchPublisherNames_14:
397 | switchIcons_0: {fileID: 0}
398 | switchIcons_1: {fileID: 0}
399 | switchIcons_2: {fileID: 0}
400 | switchIcons_3: {fileID: 0}
401 | switchIcons_4: {fileID: 0}
402 | switchIcons_5: {fileID: 0}
403 | switchIcons_6: {fileID: 0}
404 | switchIcons_7: {fileID: 0}
405 | switchIcons_8: {fileID: 0}
406 | switchIcons_9: {fileID: 0}
407 | switchIcons_10: {fileID: 0}
408 | switchIcons_11: {fileID: 0}
409 | switchIcons_12: {fileID: 0}
410 | switchIcons_13: {fileID: 0}
411 | switchIcons_14: {fileID: 0}
412 | switchSmallIcons_0: {fileID: 0}
413 | switchSmallIcons_1: {fileID: 0}
414 | switchSmallIcons_2: {fileID: 0}
415 | switchSmallIcons_3: {fileID: 0}
416 | switchSmallIcons_4: {fileID: 0}
417 | switchSmallIcons_5: {fileID: 0}
418 | switchSmallIcons_6: {fileID: 0}
419 | switchSmallIcons_7: {fileID: 0}
420 | switchSmallIcons_8: {fileID: 0}
421 | switchSmallIcons_9: {fileID: 0}
422 | switchSmallIcons_10: {fileID: 0}
423 | switchSmallIcons_11: {fileID: 0}
424 | switchSmallIcons_12: {fileID: 0}
425 | switchSmallIcons_13: {fileID: 0}
426 | switchSmallIcons_14: {fileID: 0}
427 | switchManualHTML:
428 | switchAccessibleURLs:
429 | switchLegalInformation:
430 | switchMainThreadStackSize: 1048576
431 | switchPresenceGroupId:
432 | switchLogoHandling: 0
433 | switchReleaseVersion: 0
434 | switchDisplayVersion: 1.0.0
435 | switchStartupUserAccount: 0
436 | switchTouchScreenUsage: 0
437 | switchSupportedLanguagesMask: 0
438 | switchLogoType: 0
439 | switchApplicationErrorCodeCategory:
440 | switchUserAccountSaveDataSize: 0
441 | switchUserAccountSaveDataJournalSize: 0
442 | switchApplicationAttribute: 0
443 | switchCardSpecSize: -1
444 | switchCardSpecClock: -1
445 | switchRatingsMask: 0
446 | switchRatingsInt_0: 0
447 | switchRatingsInt_1: 0
448 | switchRatingsInt_2: 0
449 | switchRatingsInt_3: 0
450 | switchRatingsInt_4: 0
451 | switchRatingsInt_5: 0
452 | switchRatingsInt_6: 0
453 | switchRatingsInt_7: 0
454 | switchRatingsInt_8: 0
455 | switchRatingsInt_9: 0
456 | switchRatingsInt_10: 0
457 | switchRatingsInt_11: 0
458 | switchRatingsInt_12: 0
459 | switchLocalCommunicationIds_0:
460 | switchLocalCommunicationIds_1:
461 | switchLocalCommunicationIds_2:
462 | switchLocalCommunicationIds_3:
463 | switchLocalCommunicationIds_4:
464 | switchLocalCommunicationIds_5:
465 | switchLocalCommunicationIds_6:
466 | switchLocalCommunicationIds_7:
467 | switchParentalControl: 0
468 | switchAllowsScreenshot: 1
469 | switchAllowsVideoCapturing: 1
470 | switchAllowsRuntimeAddOnContentInstall: 0
471 | switchDataLossConfirmation: 0
472 | switchUserAccountLockEnabled: 0
473 | switchSystemResourceMemory: 16777216
474 | switchSupportedNpadStyles: 22
475 | switchNativeFsCacheSize: 32
476 | switchIsHoldTypeHorizontal: 0
477 | switchSupportedNpadCount: 8
478 | switchSocketConfigEnabled: 0
479 | switchTcpInitialSendBufferSize: 32
480 | switchTcpInitialReceiveBufferSize: 64
481 | switchTcpAutoSendBufferSizeMax: 256
482 | switchTcpAutoReceiveBufferSizeMax: 256
483 | switchUdpSendBufferSize: 9
484 | switchUdpReceiveBufferSize: 42
485 | switchSocketBufferEfficiency: 4
486 | switchSocketInitializeEnabled: 1
487 | switchNetworkInterfaceManagerInitializeEnabled: 1
488 | switchPlayerConnectionEnabled: 1
489 | ps4NPAgeRating: 12
490 | ps4NPTitleSecret:
491 | ps4NPTrophyPackPath:
492 | ps4ParentalLevel: 11
493 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000
494 | ps4Category: 0
495 | ps4MasterVersion: 01.00
496 | ps4AppVersion: 01.00
497 | ps4AppType: 0
498 | ps4ParamSfxPath:
499 | ps4VideoOutPixelFormat: 0
500 | ps4VideoOutInitialWidth: 1920
501 | ps4VideoOutBaseModeInitialWidth: 1920
502 | ps4VideoOutReprojectionRate: 60
503 | ps4PronunciationXMLPath:
504 | ps4PronunciationSIGPath:
505 | ps4BackgroundImagePath:
506 | ps4StartupImagePath:
507 | ps4StartupImagesFolder:
508 | ps4IconImagesFolder:
509 | ps4SaveDataImagePath:
510 | ps4SdkOverride:
511 | ps4BGMPath:
512 | ps4ShareFilePath:
513 | ps4ShareOverlayImagePath:
514 | ps4PrivacyGuardImagePath:
515 | ps4ExtraSceSysFile:
516 | ps4NPtitleDatPath:
517 | ps4RemotePlayKeyAssignment: -1
518 | ps4RemotePlayKeyMappingDir:
519 | ps4PlayTogetherPlayerCount: 0
520 | ps4EnterButtonAssignment: 1
521 | ps4ApplicationParam1: 0
522 | ps4ApplicationParam2: 0
523 | ps4ApplicationParam3: 0
524 | ps4ApplicationParam4: 0
525 | ps4DownloadDataSize: 0
526 | ps4GarlicHeapSize: 2048
527 | ps4ProGarlicHeapSize: 2560
528 | playerPrefsMaxSize: 32768
529 | ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ
530 | ps4pnSessions: 1
531 | ps4pnPresence: 1
532 | ps4pnFriends: 1
533 | ps4pnGameCustomData: 1
534 | playerPrefsSupport: 0
535 | enableApplicationExit: 0
536 | resetTempFolder: 1
537 | restrictedAudioUsageRights: 0
538 | ps4UseResolutionFallback: 0
539 | ps4ReprojectionSupport: 0
540 | ps4UseAudio3dBackend: 0
541 | ps4UseLowGarlicFragmentationMode: 1
542 | ps4SocialScreenEnabled: 0
543 | ps4ScriptOptimizationLevel: 0
544 | ps4Audio3dVirtualSpeakerCount: 14
545 | ps4attribCpuUsage: 0
546 | ps4PatchPkgPath:
547 | ps4PatchLatestPkgPath:
548 | ps4PatchChangeinfoPath:
549 | ps4PatchDayOne: 0
550 | ps4attribUserManagement: 0
551 | ps4attribMoveSupport: 0
552 | ps4attrib3DSupport: 0
553 | ps4attribShareSupport: 0
554 | ps4attribExclusiveVR: 0
555 | ps4disableAutoHideSplash: 0
556 | ps4videoRecordingFeaturesUsed: 0
557 | ps4contentSearchFeaturesUsed: 0
558 | ps4CompatibilityPS5: 0
559 | ps4GPU800MHz: 1
560 | ps4attribEyeToEyeDistanceSettingVR: 0
561 | ps4IncludedModules: []
562 | ps4attribVROutputEnabled: 0
563 | monoEnv:
564 | splashScreenBackgroundSourceLandscape: {fileID: 0}
565 | splashScreenBackgroundSourcePortrait: {fileID: 0}
566 | blurSplashScreenBackground: 1
567 | spritePackerPolicy:
568 | webGLMemorySize: 16
569 | webGLExceptionSupport: 1
570 | webGLNameFilesAsHashes: 0
571 | webGLDataCaching: 1
572 | webGLDebugSymbols: 0
573 | webGLEmscriptenArgs:
574 | webGLModulesDirectory:
575 | webGLTemplate: APPLICATION:Default
576 | webGLAnalyzeBuildSize: 0
577 | webGLUseEmbeddedResources: 0
578 | webGLCompressionFormat: 1
579 | webGLWasmArithmeticExceptions: 0
580 | webGLLinkerTarget: 1
581 | webGLThreadsSupport: 0
582 | webGLDecompressionFallback: 0
583 | scriptingDefineSymbols: {}
584 | platformArchitecture: {}
585 | scriptingBackend: {}
586 | il2cppCompilerConfiguration: {}
587 | managedStrippingLevel: {}
588 | incrementalIl2cppBuild: {}
589 | allowUnsafeCode: 0
590 | useDeterministicCompilation: 1
591 | additionalIl2CppArgs:
592 | scriptingRuntimeVersion: 1
593 | gcIncremental: 1
594 | gcWBarrierValidation: 0
595 | apiCompatibilityLevelPerPlatform: {}
596 | m_RenderingPath: 1
597 | m_MobileRenderingPath: 1
598 | metroPackageName: Template_3D
599 | metroPackageVersion:
600 | metroCertificatePath:
601 | metroCertificatePassword:
602 | metroCertificateSubject:
603 | metroCertificateIssuer:
604 | metroCertificateNotAfter: 0000000000000000
605 | metroApplicationDescription: Template_3D
606 | wsaImages: {}
607 | metroTileShortName:
608 | metroTileShowName: 0
609 | metroMediumTileShowName: 0
610 | metroLargeTileShowName: 0
611 | metroWideTileShowName: 0
612 | metroSupportStreamingInstall: 0
613 | metroLastRequiredScene: 0
614 | metroDefaultTileSize: 1
615 | metroTileForegroundText: 2
616 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0}
617 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, a: 1}
618 | metroSplashScreenUseBackgroundColor: 0
619 | platformCapabilities: {}
620 | metroTargetDeviceFamilies: {}
621 | metroFTAName:
622 | metroFTAFileTypes: []
623 | metroProtocolName:
624 | XboxOneProductId:
625 | XboxOneUpdateKey:
626 | XboxOneSandboxId:
627 | XboxOneContentId:
628 | XboxOneTitleId:
629 | XboxOneSCId:
630 | XboxOneGameOsOverridePath:
631 | XboxOnePackagingOverridePath:
632 | XboxOneAppManifestOverridePath:
633 | XboxOneVersion: 1.0.0.0
634 | XboxOnePackageEncryption: 0
635 | XboxOnePackageUpdateGranularity: 2
636 | XboxOneDescription:
637 | XboxOneLanguage:
638 | - enus
639 | XboxOneCapability: []
640 | XboxOneGameRating: {}
641 | XboxOneIsContentPackage: 0
642 | XboxOneEnableGPUVariability: 1
643 | XboxOneSockets: {}
644 | XboxOneSplashScreen: {fileID: 0}
645 | XboxOneAllowedProductIds: []
646 | XboxOnePersistentLocalStorageSize: 0
647 | XboxOneXTitleMemory: 8
648 | XboxOneOverrideIdentityName:
649 | XboxOneOverrideIdentityPublisher:
650 | vrEditorSettings:
651 | daydream:
652 | daydreamIconForeground: {fileID: 0}
653 | daydreamIconBackground: {fileID: 0}
654 | cloudServicesEnabled:
655 | UNet: 1
656 | luminIcon:
657 | m_Name:
658 | m_ModelFolderPath:
659 | m_PortalFolderPath:
660 | luminCert:
661 | m_CertPath:
662 | m_SignPackage: 1
663 | luminIsChannelApp: 0
664 | luminVersion:
665 | m_VersionCode: 1
666 | m_VersionName:
667 | apiCompatibilityLevel: 6
668 | cloudProjectId:
669 | framebufferDepthMemorylessMode: 0
670 | projectName:
671 | organizationId:
672 | cloudEnabled: 0
673 | enableNativePlatformBackendsForNewInputSystem: 0
674 | disableOldInputManagerSupport: 0
675 | legacyClampBlendShapeWeights: 0
676 | virtualTexturingSupportEnabled: 0
677 |
--------------------------------------------------------------------------------
/UnityProject/ProjectSettings/ProjectVersion.txt:
--------------------------------------------------------------------------------
1 | m_EditorVersion: 2020.3.9f1
2 | m_EditorVersionWithRevision: 2020.3.9f1 (108be757e447)
3 |
--------------------------------------------------------------------------------
/UnityProject/ProjectSettings/QualitySettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!47 &1
4 | QualitySettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 5
7 | m_CurrentQuality: 5
8 | m_QualitySettings:
9 | - serializedVersion: 2
10 | name: Very Low
11 | pixelLightCount: 0
12 | shadows: 0
13 | shadowResolution: 0
14 | shadowProjection: 1
15 | shadowCascades: 1
16 | shadowDistance: 15
17 | shadowNearPlaneOffset: 3
18 | shadowCascade2Split: 0.33333334
19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
20 | shadowmaskMode: 0
21 | blendWeights: 1
22 | textureQuality: 1
23 | anisotropicTextures: 0
24 | antiAliasing: 0
25 | softParticles: 0
26 | softVegetation: 0
27 | realtimeReflectionProbes: 0
28 | billboardsFaceCameraPosition: 0
29 | vSyncCount: 0
30 | lodBias: 0.3
31 | maximumLODLevel: 0
32 | streamingMipmapsActive: 0
33 | streamingMipmapsAddAllCameras: 1
34 | streamingMipmapsMemoryBudget: 512
35 | streamingMipmapsRenderersPerFrame: 512
36 | streamingMipmapsMaxLevelReduction: 2
37 | streamingMipmapsMaxFileIORequests: 1024
38 | particleRaycastBudget: 4
39 | asyncUploadTimeSlice: 2
40 | asyncUploadBufferSize: 16
41 | asyncUploadPersistentBuffer: 1
42 | resolutionScalingFixedDPIFactor: 1
43 | excludedTargetPlatforms: []
44 | - serializedVersion: 2
45 | name: Low
46 | pixelLightCount: 0
47 | shadows: 0
48 | shadowResolution: 0
49 | shadowProjection: 1
50 | shadowCascades: 1
51 | shadowDistance: 20
52 | shadowNearPlaneOffset: 3
53 | shadowCascade2Split: 0.33333334
54 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
55 | shadowmaskMode: 0
56 | blendWeights: 2
57 | textureQuality: 0
58 | anisotropicTextures: 0
59 | antiAliasing: 0
60 | softParticles: 0
61 | softVegetation: 0
62 | realtimeReflectionProbes: 0
63 | billboardsFaceCameraPosition: 0
64 | vSyncCount: 0
65 | lodBias: 0.4
66 | maximumLODLevel: 0
67 | streamingMipmapsActive: 0
68 | streamingMipmapsAddAllCameras: 1
69 | streamingMipmapsMemoryBudget: 512
70 | streamingMipmapsRenderersPerFrame: 512
71 | streamingMipmapsMaxLevelReduction: 2
72 | streamingMipmapsMaxFileIORequests: 1024
73 | particleRaycastBudget: 16
74 | asyncUploadTimeSlice: 2
75 | asyncUploadBufferSize: 16
76 | asyncUploadPersistentBuffer: 1
77 | resolutionScalingFixedDPIFactor: 1
78 | excludedTargetPlatforms: []
79 | - serializedVersion: 2
80 | name: Medium
81 | pixelLightCount: 1
82 | shadows: 1
83 | shadowResolution: 0
84 | shadowProjection: 1
85 | shadowCascades: 1
86 | shadowDistance: 20
87 | shadowNearPlaneOffset: 3
88 | shadowCascade2Split: 0.33333334
89 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
90 | shadowmaskMode: 0
91 | blendWeights: 2
92 | textureQuality: 0
93 | anisotropicTextures: 1
94 | antiAliasing: 0
95 | softParticles: 0
96 | softVegetation: 0
97 | realtimeReflectionProbes: 0
98 | billboardsFaceCameraPosition: 0
99 | vSyncCount: 1
100 | lodBias: 0.7
101 | maximumLODLevel: 0
102 | streamingMipmapsActive: 0
103 | streamingMipmapsAddAllCameras: 1
104 | streamingMipmapsMemoryBudget: 512
105 | streamingMipmapsRenderersPerFrame: 512
106 | streamingMipmapsMaxLevelReduction: 2
107 | streamingMipmapsMaxFileIORequests: 1024
108 | particleRaycastBudget: 64
109 | asyncUploadTimeSlice: 2
110 | asyncUploadBufferSize: 16
111 | asyncUploadPersistentBuffer: 1
112 | resolutionScalingFixedDPIFactor: 1
113 | excludedTargetPlatforms: []
114 | - serializedVersion: 2
115 | name: High
116 | pixelLightCount: 2
117 | shadows: 2
118 | shadowResolution: 1
119 | shadowProjection: 1
120 | shadowCascades: 2
121 | shadowDistance: 40
122 | shadowNearPlaneOffset: 3
123 | shadowCascade2Split: 0.33333334
124 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
125 | shadowmaskMode: 1
126 | blendWeights: 2
127 | textureQuality: 0
128 | anisotropicTextures: 1
129 | antiAliasing: 0
130 | softParticles: 0
131 | softVegetation: 1
132 | realtimeReflectionProbes: 1
133 | billboardsFaceCameraPosition: 1
134 | vSyncCount: 1
135 | lodBias: 1
136 | maximumLODLevel: 0
137 | streamingMipmapsActive: 0
138 | streamingMipmapsAddAllCameras: 1
139 | streamingMipmapsMemoryBudget: 512
140 | streamingMipmapsRenderersPerFrame: 512
141 | streamingMipmapsMaxLevelReduction: 2
142 | streamingMipmapsMaxFileIORequests: 1024
143 | particleRaycastBudget: 256
144 | asyncUploadTimeSlice: 2
145 | asyncUploadBufferSize: 16
146 | asyncUploadPersistentBuffer: 1
147 | resolutionScalingFixedDPIFactor: 1
148 | excludedTargetPlatforms: []
149 | - serializedVersion: 2
150 | name: Very High
151 | pixelLightCount: 3
152 | shadows: 2
153 | shadowResolution: 2
154 | shadowProjection: 1
155 | shadowCascades: 2
156 | shadowDistance: 70
157 | shadowNearPlaneOffset: 3
158 | shadowCascade2Split: 0.33333334
159 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
160 | shadowmaskMode: 1
161 | blendWeights: 4
162 | textureQuality: 0
163 | anisotropicTextures: 2
164 | antiAliasing: 2
165 | softParticles: 1
166 | softVegetation: 1
167 | realtimeReflectionProbes: 1
168 | billboardsFaceCameraPosition: 1
169 | vSyncCount: 1
170 | lodBias: 1.5
171 | maximumLODLevel: 0
172 | streamingMipmapsActive: 0
173 | streamingMipmapsAddAllCameras: 1
174 | streamingMipmapsMemoryBudget: 512
175 | streamingMipmapsRenderersPerFrame: 512
176 | streamingMipmapsMaxLevelReduction: 2
177 | streamingMipmapsMaxFileIORequests: 1024
178 | particleRaycastBudget: 1024
179 | asyncUploadTimeSlice: 2
180 | asyncUploadBufferSize: 16
181 | asyncUploadPersistentBuffer: 1
182 | resolutionScalingFixedDPIFactor: 1
183 | excludedTargetPlatforms: []
184 | - serializedVersion: 2
185 | name: Ultra
186 | pixelLightCount: 4
187 | shadows: 2
188 | shadowResolution: 2
189 | shadowProjection: 1
190 | shadowCascades: 4
191 | shadowDistance: 150
192 | shadowNearPlaneOffset: 3
193 | shadowCascade2Split: 0.33333334
194 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
195 | shadowmaskMode: 1
196 | blendWeights: 4
197 | textureQuality: 0
198 | anisotropicTextures: 2
199 | antiAliasing: 2
200 | softParticles: 1
201 | softVegetation: 1
202 | realtimeReflectionProbes: 1
203 | billboardsFaceCameraPosition: 1
204 | vSyncCount: 1
205 | lodBias: 2
206 | maximumLODLevel: 0
207 | streamingMipmapsActive: 0
208 | streamingMipmapsAddAllCameras: 1
209 | streamingMipmapsMemoryBudget: 512
210 | streamingMipmapsRenderersPerFrame: 512
211 | streamingMipmapsMaxLevelReduction: 2
212 | streamingMipmapsMaxFileIORequests: 1024
213 | particleRaycastBudget: 4096
214 | asyncUploadTimeSlice: 2
215 | asyncUploadBufferSize: 16
216 | asyncUploadPersistentBuffer: 1
217 | resolutionScalingFixedDPIFactor: 1
218 | excludedTargetPlatforms: []
219 | m_PerPlatformDefaultQuality:
220 | Android: 2
221 | Lumin: 5
222 | Nintendo 3DS: 5
223 | Nintendo Switch: 5
224 | PS4: 5
225 | PSP2: 2
226 | Stadia: 5
227 | Standalone: 5
228 | WebGL: 3
229 | Windows Store Apps: 5
230 | XboxOne: 5
231 | iPhone: 2
232 | tvOS: 2
233 |
--------------------------------------------------------------------------------
/UnityProject/ProjectSettings/TagManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!78 &1
4 | TagManager:
5 | serializedVersion: 2
6 | tags: []
7 | layers:
8 | - Default
9 | - TransparentFX
10 | - Ignore Raycast
11 | -
12 | - Water
13 | - UI
14 | -
15 | -
16 | -
17 | -
18 | -
19 | -
20 | -
21 | -
22 | -
23 | -
24 | -
25 | -
26 | -
27 | -
28 | -
29 | -
30 | -
31 | -
32 | -
33 | -
34 | -
35 | -
36 | -
37 | -
38 | -
39 | -
40 | m_SortingLayers:
41 | - name: Default
42 | uniqueID: 0
43 | locked: 0
44 |
--------------------------------------------------------------------------------
/UnityProject/ProjectSettings/TimeManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!5 &1
4 | TimeManager:
5 | m_ObjectHideFlags: 0
6 | Fixed Timestep: 0.02
7 | Maximum Allowed Timestep: 0.33333334
8 | m_TimeScale: 1
9 | Maximum Particle Timestep: 0.03
10 |
--------------------------------------------------------------------------------
/UnityProject/ProjectSettings/UnityConnectSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!310 &1
4 | UnityConnectSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 1
7 | m_Enabled: 0
8 | m_TestMode: 0
9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events
10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events
11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com
12 | m_TestInitMode: 0
13 | CrashReportingSettings:
14 | m_EventUrl: https://perf-events.cloud.unity3d.com
15 | m_Enabled: 0
16 | m_LogBufferSize: 10
17 | m_CaptureEditorExceptions: 1
18 | UnityPurchasingSettings:
19 | m_Enabled: 0
20 | m_TestMode: 0
21 | UnityAnalyticsSettings:
22 | m_Enabled: 0
23 | m_TestMode: 0
24 | m_InitializeOnStartup: 1
25 | UnityAdsSettings:
26 | m_Enabled: 0
27 | m_InitializeOnStartup: 1
28 | m_TestMode: 0
29 | m_IosGameId:
30 | m_AndroidGameId:
31 | m_GameIds: {}
32 | m_GameId:
33 | PerformanceReportingSettings:
34 | m_Enabled: 0
35 |
--------------------------------------------------------------------------------
/UnityProject/ProjectSettings/VFXManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!937362698 &1
4 | VFXManager:
5 | m_ObjectHideFlags: 0
6 | m_IndirectShader: {fileID: 0}
7 | m_CopyBufferShader: {fileID: 0}
8 | m_SortShader: {fileID: 0}
9 | m_StripUpdateShader: {fileID: 0}
10 | m_RenderPipeSettingsPath:
11 | m_FixedTimeStep: 0.016666668
12 | m_MaxDeltaTime: 0.05
13 |
--------------------------------------------------------------------------------
/UnityProject/ProjectSettings/VersionControlSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!890905787 &1
4 | VersionControlSettings:
5 | m_ObjectHideFlags: 0
6 | m_Mode: Visible Meta Files
7 | m_CollabEditorSettings:
8 | inProgressEnabled: 1
9 |
--------------------------------------------------------------------------------
/UnityProject/ProjectSettings/XRSettings.asset:
--------------------------------------------------------------------------------
1 | {
2 | "m_SettingKeys": [
3 | "VR Device Disabled",
4 | "VR Device User Alert"
5 | ],
6 | "m_SettingValues": [
7 | "False",
8 | "False"
9 | ]
10 | }
--------------------------------------------------------------------------------
/UnityProject/UserSettings/EditorUserSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!162 &1
4 | EditorUserSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 4
7 | m_ConfigSettings:
8 | vcSharedLogLevel:
9 | value: 0d5e400f0650
10 | flags: 0
11 | m_VCAutomaticAdd: 1
12 | m_VCDebugCom: 0
13 | m_VCDebugCmd: 0
14 | m_VCDebugOut: 0
15 | m_SemanticMergeMode: 2
16 | m_VCShowFailedCheckout: 1
17 | m_VCOverwriteFailedCheckoutAssets: 1
18 | m_VCOverlayIcons: 1
19 | m_VCAllowAsyncUpdate: 0
20 |
--------------------------------------------------------------------------------
/img/profiler_result.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GeorgeAdamon/FastMeshCopy/13cc04a8e53c9f627e2331e3377513e20bdec0db/img/profiler_result.jpg
--------------------------------------------------------------------------------