commit 1a1f74e3e6bcbc05e914218d86080d5f68d2a571 Author: duszekjk Date: Thu May 6 01:27:44 2021 +0200 cwiczenia 5 trees in environment diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..63f7e81 --- /dev/null +++ b/.gitignore @@ -0,0 +1,62 @@ +# ---> Unity +# This .gitignore file should be placed at the root of your Unity project directory +# +# Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore +# +/[Ll]ibrary/ +/[Tt]emp/ +/[Oo]bj/ +/[Bb]uild/ +/[Bb]uilds/ +/[Ll]ogs/ +/[Mm]emoryCaptures/ + +# Asset meta data should only be ignored when the corresponding asset is also ignored +!/[Aa]ssets/**/*.meta + +# Uncomment this line if you wish to ignore the asset store tools plugin +# /[Aa]ssets/AssetStoreTools* + +# Autogenerated Jetbrains Rider plugin +/[Aa]ssets/Plugins/Editor/JetBrains* + +# Visual Studio cache directory +.vs/ + +# Gradle cache directory +.gradle/ + +# Autogenerated VS/MD/Consulo solution and project files +ExportedObj/ +.consulo/ +*.csproj +*.unityproj +*.sln +*.suo +*.tmp +*.user +*.userprefs +*.pidb +*.booproj +*.svd +*.pdb +*.mdb +*.opendb +*.VC.db + +# Unity3D generated meta files +*.pidb.meta +*.pdb.meta +*.mdb.meta + +# Unity3D generated file on crash reports +sysinfo.txt + +# Builds +*.apk +*.unitypackage + +# Crashlytics generated file +crashlytics-build.properties + + diff --git a/Opis.md b/Opis.md new file mode 100644 index 0000000..23ff1f4 --- /dev/null +++ b/Opis.md @@ -0,0 +1,135 @@ +# Trees in environment + +Aby zasymulować środowisko wykorzystamy voxel space. W środowisku będziemy rozpatrywać tylko jedną cechę - zacienienie. + +## Klasa Environment + +Klasa environment zawiera voxel space z informacją o zacienieniu. + +### addShadow + +Funkcja addShadow zwiększa wartość cienia w zadanej pozycji. Następnie przechodzi w pentlach w dół, zmniejszając z każdym poziomem siłę cienia, ale zwiększając szerokość oddziałowywania. + +```C# +for(int j = (int)voxelPosition.y; j >= 0; j--) +{ + for(int i = (int)voxelPosition.x-rotj; i <= (int)voxelPosition.x+rotj; i++) + { + for(int k = (int)voxelPosition.z-rotj; k <= (int)voxelPosition.z+rotj; k++) + { + float secondaryStrength = 1.0f*strength; + secondaryStrength = secondaryStrength / ((Mathf.Abs(k-(int)voxelPosition.z) + 1 + Mathf.Abs(i-(int)voxelPosition.x))/8.0f); + (...) + } + } +} +``` + +### shadowStrength + +Zwraca siłę cienia w zadanej pozycji + +### inVoxelSpace + +Sprawdza, czy dane współrzędne się mieszczą w voxel space + +```C# +bool inVoxelSpace(int a, int b, int c) + { + return (a=0&&b=0&&c=0); + } +``` + +### positionInVoxel i positionInWorld + +```C# + public Vector3 positionInVoxel(Vector3 positionInWorld) + + { + Vector3 voxelPosition = new Vector3(0.0f,0.0f,0.0f); + positionInWorld -= gameObject.GetComponent().position; + voxelPosition.x = (int)(0.5f + (positionInWorld.x / voxelSize)); + voxelPosition.y = (int)(0.5f + (positionInWorld.y / voxelSize)); + voxelPosition.z = (int)(0.5f + (positionInWorld.z / voxelSize)); + return voxelPosition; + } + public Vector3 positionInWorld(Vector3 positionInVoxel) + { + return positionInVoxel*voxelSize+gameObject.GetComponent().position; + } +``` + + + +## Zadanie 1 + +shadowBox + +1. Otwórz Unity Project, wersję na te ćwiczenia. Następnie otwórz scenę "Pipe Model" +2. Do objektu shadowBox jest przypięty skrypt Cast Shadow. Otwórz ten skrypt. +3. Zmodyfikuj skrypt, tak aby ten obiekt rzucał cień w dół. + 1. Wykorzystaj funkcję środowiska (Environment) + 2. public void addShadow(Vector3 position, sbyte strength) // ujemna siła, aby usunąć + +## Zadanie 2 + +inShadow + +1. W objekcie inShadow jest skrypt receiveShadow +2. Zmodyfikuj skrypt - jak na ten objekt spadnie cień, to zmień materiał + 1. Wykorzystaj funkcję środowiska (Environment) + 2. public byte shadowStrength(Vector3 pos) + +## Zadanie 3 + +treeshadowtreeshadowgreentreeshadow + +1. Wybierz objekt tree (001) + +2. Jeśli nie jest ustawione, to ustaw odpowiednią ścieżkę (L-System Path) do *ShadowModel.txt* + +3. Uruchom grę i przejdź kilka kroków (Load File na start i Evaluate - krok) + +4. Gałęzie w cieniu nadal się rozwijają. Wylicz zacienienie do L-Systemu + + 1. Skrypt **TurtleLSystemEnvironment**, funkcja **lightDirection** (20 linijka), od 38 linijki + + 2. Zacienienie mierzymy w prostopadłościanie wokół obecnego elementu + (2\***lookForLightLength** x **lookForLightLength** x 2\***lookForLightLength**) + + treebox + + 3. Transformacja z obecną pozycją (**transformation**\***resultTransformation**) + funkcja transformacja.**ExtractPosition**() zwraca pozycję dla transformacji + +5. Wyślij wartość zacienienia do L-Systemu + +```python +#ignore + - \ / ^ & +#axiom +S(0,0) +#rules +S(a,c) : c>=50 -> S(a+1,0) +S(a,c) : c<50 -> G\(90)[-S(0,0)]S(0,0) +``` + +1. 1. L-System będzie odczytywał jako cień drugą wartość - dla **S(a, c)** to będzie **c** + 2. **node.literal.values** jest tablicą z wartościami L-Systemu + +## Zadanie 4 + +manytrees + +1. Dodaj do objektu Environment więcej drzew (Trees) i zobacz jak drzewa wpływają na siebie nawzajem +2. Napisz skrypt, który utworzy 9 drzew (3x3) rozmieszczonych co równą odległość +3. Zobacz jak się w takim układzie rozwijają + +## Inne sposoby modyfikacji drzewa, przez voxel Space + +W Environment są jeszcze funkcje rotate towards light i cut branches with max shadow, które też mogą wykorzystać voxel space do modyfikacji drzewa w inny, nie L-Systemowy sposób (najpierw jest krok L-Systemu, a potem te funkcje modyfikują drzewo). + +## Zadanie 5 - domowe + +Wybierz zdjęcie dowolnego drzewa (każdy inne) i stwórz L-System podobny do tego drzewa, ale zależny od cienia + +Do rozwiązania dodaj zdjęcie drzewa i zdjęcie odtworzonego drzewa. L-System nazwij imięnazwiskoShadow. \ No newline at end of file diff --git a/Unity Project/.DS_Store b/Unity Project/.DS_Store new file mode 100644 index 0000000..9d82588 Binary files /dev/null and b/Unity Project/.DS_Store differ diff --git a/Unity Project/.gitignore b/Unity Project/.gitignore new file mode 100644 index 0000000..72c27e4 --- /dev/null +++ b/Unity Project/.gitignore @@ -0,0 +1,71 @@ +# This .gitignore file should be placed at the root of your Unity project directory +# +# Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore +# +/[Ll]ibrary/ +/[Tt]emp/ +/[Oo]bj/ +/[Bb]uild/ +/[Bb]uilds/ +/[Ll]ogs/ +/[Uu]ser[Ss]ettings/ + +# MemoryCaptures can get excessive in size. +# They also could contain extremely sensitive data +/[Mm]emoryCaptures/ + +# Asset meta data should only be ignored when the corresponding asset is also ignored +!/[Aa]ssets/**/*.meta + +# Uncomment this line if you wish to ignore the asset store tools plugin +# /[Aa]ssets/AssetStoreTools* + +# Autogenerated Jetbrains Rider plugin +/[Aa]ssets/Plugins/Editor/JetBrains* + +# Visual Studio cache directory +.vs/ + +# Gradle cache directory +.gradle/ + +# Autogenerated VS/MD/Consulo solution and project files +ExportedObj/ +.consulo/ +*.csproj +*.unityproj +*.sln +*.suo +*.tmp +*.user +*.userprefs +*.pidb +*.booproj +*.svd +*.pdb +*.mdb +*.opendb +*.VC.db + +# Unity3D generated meta files +*.pidb.meta +*.pdb.meta +*.mdb.meta + +# Unity3D generated file on crash reports +sysinfo.txt + +# Builds +*.apk +*.aab +*.unitypackage + +# Crashlytics generated file +crashlytics-build.properties + +# Packed Addressables +/[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin* + +# Temporary auto-generated Android Assets +/[Aa]ssets/[Ss]treamingAssets/aa.meta +/[Aa]ssets/[Ss]treamingAssets/aa/* diff --git a/Unity Project/.vsconfig b/Unity Project/.vsconfig new file mode 100644 index 0000000..aade28f --- /dev/null +++ b/Unity Project/.vsconfig @@ -0,0 +1,6 @@ +{ + "version": "1.0", + "components": [ + "Microsoft.VisualStudio.Workload.ManagedGame" + ] +} diff --git a/Unity Project/Assets/.DS_Store b/Unity Project/Assets/.DS_Store new file mode 100644 index 0000000..9ecb7f4 Binary files /dev/null and b/Unity Project/Assets/.DS_Store differ diff --git a/Unity Project/Assets/Editor.meta b/Unity Project/Assets/Editor.meta new file mode 100644 index 0000000..316103a --- /dev/null +++ b/Unity Project/Assets/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 329ec9409c534054d896e1b927a1b71c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/LSystem.meta b/Unity Project/Assets/LSystem.meta new file mode 100644 index 0000000..8dfcdb8 --- /dev/null +++ b/Unity Project/Assets/LSystem.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 53a6756541318784f8b822a4dd8564c2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/LSystem/Anabaena.txt b/Unity Project/Assets/LSystem/Anabaena.txt new file mode 100644 index 0000000..e3441ed --- /dev/null +++ b/Unity Project/Assets/LSystem/Anabaena.txt @@ -0,0 +1,8 @@ +#axiom +L +#rules +L->lR +R->Lr +l->L +r->R +#end rules \ No newline at end of file diff --git a/Unity Project/Assets/LSystem/Anabaena.txt.meta b/Unity Project/Assets/LSystem/Anabaena.txt.meta new file mode 100644 index 0000000..cf834be --- /dev/null +++ b/Unity Project/Assets/LSystem/Anabaena.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: da39d102803271748a23bdcc7d8431f8 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/LSystem/ContextTest1.txt b/Unity Project/Assets/LSystem/ContextTest1.txt new file mode 100644 index 0000000..0bba8ce --- /dev/null +++ b/Unity Project/Assets/LSystem/ContextTest1.txt @@ -0,0 +1,6 @@ +#ignore + - +#axiom +F[A]B +#rules +F > [A]B -> FF +#F > B -> FF \ No newline at end of file diff --git a/Unity Project/Assets/LSystem/ContextTest1.txt.meta b/Unity Project/Assets/LSystem/ContextTest1.txt.meta new file mode 100644 index 0000000..206a14f --- /dev/null +++ b/Unity Project/Assets/LSystem/ContextTest1.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7c961644c7f6d084f87b7483d0a4adab +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/LSystem/ContextTest2.txt b/Unity Project/Assets/LSystem/ContextTest2.txt new file mode 100644 index 0000000..bcee688 --- /dev/null +++ b/Unity Project/Assets/LSystem/ContextTest2.txt @@ -0,0 +1,5 @@ +#ignore + - +#axiom +F[-A]B +#rules +F > [A]B -> FF \ No newline at end of file diff --git a/Unity Project/Assets/LSystem/ContextTest2.txt.meta b/Unity Project/Assets/LSystem/ContextTest2.txt.meta new file mode 100644 index 0000000..08c365b --- /dev/null +++ b/Unity Project/Assets/LSystem/ContextTest2.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: cefe06321a65fbf46b3640efc97745ff +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/LSystem/ContextTest3.txt b/Unity Project/Assets/LSystem/ContextTest3.txt new file mode 100644 index 0000000..662f7ab --- /dev/null +++ b/Unity Project/Assets/LSystem/ContextTest3.txt @@ -0,0 +1,5 @@ +#ignore + - +#axiom +F[-[A]-C]B +#rules +F > [A][C]B -> FF \ No newline at end of file diff --git a/Unity Project/Assets/LSystem/ContextTest3.txt.meta b/Unity Project/Assets/LSystem/ContextTest3.txt.meta new file mode 100644 index 0000000..275a904 --- /dev/null +++ b/Unity Project/Assets/LSystem/ContextTest3.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7980f93484f996b41a99e27179a1aab4 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/LSystem/Koch.txt b/Unity Project/Assets/LSystem/Koch.txt new file mode 100644 index 0000000..4aa9fb2 --- /dev/null +++ b/Unity Project/Assets/LSystem/Koch.txt @@ -0,0 +1,5 @@ +#axiom + +#rules + +#end rules \ No newline at end of file diff --git a/Unity Project/Assets/LSystem/Koch.txt.meta b/Unity Project/Assets/LSystem/Koch.txt.meta new file mode 100644 index 0000000..e6d30df --- /dev/null +++ b/Unity Project/Assets/LSystem/Koch.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 951913a6e45d3664092bc8a3c1760fdc +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/LSystem/PipeModel 1.txt b/Unity Project/Assets/LSystem/PipeModel 1.txt new file mode 100644 index 0000000..c186207 --- /dev/null +++ b/Unity Project/Assets/LSystem/PipeModel 1.txt @@ -0,0 +1,20 @@ +#ignore + - \ / ^ & +#axiom +C(1,3)F(0)G +#rules +C(a,b) > F(x) : b<3 -> C(a,b+1) +C(a,b) > F(x) : b>=3 -> #stochastic +p=2 C(1,0) +p=1 C(2,0) +p=0.5 C(3,0) +#stochastic end +C(a,b) < F(x) : b>=3 -> F(a) +F(x) < F(y) : x>0 -> F(x) +F(x) : x>0 -> F(0) +F(x) < G : x==1 -> F(0)[+B]\(137.5)G +F(x) < B : x==2 -> #stochastic +p=3 B +p=1 G +#stochastic end +F(x) < G : x==3 -> F(x)W +#end rules \ No newline at end of file diff --git a/Unity Project/Assets/LSystem/PipeModel 1.txt.meta b/Unity Project/Assets/LSystem/PipeModel 1.txt.meta new file mode 100644 index 0000000..ba315d1 --- /dev/null +++ b/Unity Project/Assets/LSystem/PipeModel 1.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: efb83cc58832a4a3db466f7f5fe2e216 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/LSystem/PipeModel 2.txt b/Unity Project/Assets/LSystem/PipeModel 2.txt new file mode 100644 index 0000000..da37968 --- /dev/null +++ b/Unity Project/Assets/LSystem/PipeModel 2.txt @@ -0,0 +1,33 @@ +#ignore + - \ / ^ & +#axiom +M(0) +#rules +M(a) : a<8 -> M(a+1) +M(a) : a>=8 -> #stochastic +p=25 M(0)\(137.5)C(0,3)[+++D(2,2)][---D(2,2)] +p=2 L(1)M(a) +p=1 M(0)\(137.5)M(0) +#stochastic end +C(a,b) : b<10 -> C(a,b+1) +C(a,b) : b>=10 -> #stochastic +p=2 C(1,0) +p=1 C(2,0) +p=0.5 C(3,0) +#stochastic end +D(a,b) : b<7 -> D(a,b+1) +D(a,b) < C(x,y) : b>=7 -> D(1,1)\(137.5)-D(0,1) +D(a,b) : b>=7 -> #stochastic +p=3 L(4,1)[-D(0,1)]\(137.5)D(1,1) +p=2 L(4,1)[+D(0,1)]\(137.5)-D(1,1) +p=2 L(4,1)D(0,1) +p=2 D(1,1)[-O(1,1)[+B]B] +p=1 \(137.5)+D(1,1)[-D(1,1)] +p=1 -B +p=1 +B +p=1 D(1,1)[+O(1,1)[B]W] +#stochastic end +W -> #stochastic +p=10 W +p=1 B +p=1 D(0,0) +#stochastic end \ No newline at end of file diff --git a/Unity Project/Assets/LSystem/PipeModel 2.txt.meta b/Unity Project/Assets/LSystem/PipeModel 2.txt.meta new file mode 100644 index 0000000..3115382 --- /dev/null +++ b/Unity Project/Assets/LSystem/PipeModel 2.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ee34d99c4b3ad4ffaaa6c17b4a9a65f3 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/LSystem/PipeModelSimple.txt b/Unity Project/Assets/LSystem/PipeModelSimple.txt new file mode 100644 index 0000000..6aa47b7 --- /dev/null +++ b/Unity Project/Assets/LSystem/PipeModelSimple.txt @@ -0,0 +1,12 @@ +#ignore + - \ / ^ & +#axiom +S(0) +#rules +S(a) : a<8 -> S(a+1) +S(a) : a>=8 -> M(0)\(90)[+G(2,2)][-G(2,2)]S(0) +M(a) : a<17 -> M(a+1) +M(a) : a>=17 -> L(0)M(0) +G(a,b) : b<7 -> G(a,b+1) +G(a,b) : b>=7 -> G(1,1)[+G(0,0)][-O(1,1)[+B][-B][\B]B] +W -> W +B -> B \ No newline at end of file diff --git a/Unity Project/Assets/LSystem/PipeModelSimple.txt.meta b/Unity Project/Assets/LSystem/PipeModelSimple.txt.meta new file mode 100644 index 0000000..60b9c79 --- /dev/null +++ b/Unity Project/Assets/LSystem/PipeModelSimple.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5184744759401dd439e7501c149f48fa +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/LSystem/Plant.txt b/Unity Project/Assets/LSystem/Plant.txt new file mode 100644 index 0000000..be708a9 --- /dev/null +++ b/Unity Project/Assets/LSystem/Plant.txt @@ -0,0 +1,6 @@ +#axiom +X +#rules +X->F[+X]F[-X]+X +F->FF +#end rules \ No newline at end of file diff --git a/Unity Project/Assets/LSystem/Plant.txt.meta b/Unity Project/Assets/LSystem/Plant.txt.meta new file mode 100644 index 0000000..bf1a5b2 --- /dev/null +++ b/Unity Project/Assets/LSystem/Plant.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c4604d19f702cfe4cbe8779ea593c44e +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/LSystem/SampleLSystem.txt b/Unity Project/Assets/LSystem/SampleLSystem.txt new file mode 100644 index 0000000..d4d1cca --- /dev/null +++ b/Unity Project/Assets/LSystem/SampleLSystem.txt @@ -0,0 +1,32 @@ +#axiom +A +#rules +#komentarz +#podstawowe przekształcenie +X-> AX +# instrukcja z rozgałęzieniem +Y->A[A]A +#parametryczne symbola są rozpoznawane po literze i liczbie argumentów czyli B, B(0) i B(0,0) to różne symbole +#w regułach dla parametrycznych symboli w poprzedniku definiuje się nazwę parametru. ta instrukcja zamieni C(1) na C(1.1) a C(2) na C(2.1) +C(a) -> C(a+0.1) +# ta instrukcja wykona się, jeżeli a>1 i a<2 średnik oznacza iloczyn logiczny +B(a) : a>1;a<2 -> C(a)B(0) +# ta instrukcja wykona się, jeżeli poprzednia się nie wykonała i gdy a<=1 +B(a) : a<=1 -> B(2*a) +# ta instrukcja się wykona, jeżeli poprzednie 2 się nie wykonają +B(a) -> B(0) +# instrukcja się wykona, jeżeli następnikiem A jest B(a) i a>0 +A > B(a) : a>0 -> B(a)[A] + +# instrukcja się wykona, jeżeli poprzednikiem A jest B(a) i a>0 (i jeżeli poprzednia się nie wykonała) +B(a) < A a>0 -> B(a)[A] +# instrukcja się wykona, jeżeli poprzednikiem A jest B(a), następnikiem jest C(b) oraz a+b>0 (i jeżeli poprzednia się nie wykonała) +B(a) < A > C(b) a+b>0 -> CC + +# wykona się jedna z trzech opcji z wagami odpowiednio 0.2, 0.6 i 0.3 - wagi nie muszą się sumować do 1. można stochastyczność łączyć z powyższymi rozszerzeniami. +C(a) -> #stochastic +p=0.2 AB(1) +p=0.6 B(1)A +p=0.3 AA +#stochastic end +#rules end \ No newline at end of file diff --git a/Unity Project/Assets/LSystem/SampleLSystem.txt.meta b/Unity Project/Assets/LSystem/SampleLSystem.txt.meta new file mode 100644 index 0000000..856d0a3 --- /dev/null +++ b/Unity Project/Assets/LSystem/SampleLSystem.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: cc28e59818768ff4ab9acdef983dcc01 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/LSystem/ShadowModel.txt b/Unity Project/Assets/LSystem/ShadowModel.txt new file mode 100644 index 0000000..3097dfa --- /dev/null +++ b/Unity Project/Assets/LSystem/ShadowModel.txt @@ -0,0 +1,8 @@ +#ignore + - \ / ^ & +#axiom +S(0,0) +#rules +S(a,c) : c>=50 -> S(a+1,0) +S(a,c) : c<50 -> G\(90)[-S(0,0)]S(0,0) +W(a) : a<7 -> W(a+1) +W(a) : a>=7 -> B \ No newline at end of file diff --git a/Unity Project/Assets/LSystem/ShadowModel.txt.meta b/Unity Project/Assets/LSystem/ShadowModel.txt.meta new file mode 100644 index 0000000..4f87aff --- /dev/null +++ b/Unity Project/Assets/LSystem/ShadowModel.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e263ca26accbf41e7bada1186b92ff56 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/LSystem/Sierpinski.txt b/Unity Project/Assets/LSystem/Sierpinski.txt new file mode 100644 index 0000000..b850e0f --- /dev/null +++ b/Unity Project/Assets/LSystem/Sierpinski.txt @@ -0,0 +1,6 @@ +#axiom +L +#rules +L->R+L+R +R->L-R-L +#end rules \ No newline at end of file diff --git a/Unity Project/Assets/LSystem/Sierpinski.txt.meta b/Unity Project/Assets/LSystem/Sierpinski.txt.meta new file mode 100644 index 0000000..59cd799 --- /dev/null +++ b/Unity Project/Assets/LSystem/Sierpinski.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d9bea09810f87e84b8b3546d47d5dd31 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/LSystem/VanIterson.txt b/Unity Project/Assets/LSystem/VanIterson.txt new file mode 100644 index 0000000..172a42a --- /dev/null +++ b/Unity Project/Assets/LSystem/VanIterson.txt @@ -0,0 +1,5 @@ +#axiom +XA +#rules +A -> [&(90)f(0.5)S]f(0.0353)/(137.5)A +#end rules \ No newline at end of file diff --git a/Unity Project/Assets/LSystem/VanIterson.txt.meta b/Unity Project/Assets/LSystem/VanIterson.txt.meta new file mode 100644 index 0000000..50b027f --- /dev/null +++ b/Unity Project/Assets/LSystem/VanIterson.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: fd09fbaf9088cfb4aaf82cf05584624b +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/LSystem/Vogel animated.txt b/Unity Project/Assets/LSystem/Vogel animated.txt new file mode 100644 index 0000000..e0c6bbc --- /dev/null +++ b/Unity Project/Assets/LSystem/Vogel animated.txt @@ -0,0 +1,9 @@ +#axiom +C(0,0) +#F++F++F++ +#rules +C(i,n) : i>=1 -> C(0,n)[+(n*137.5)f(0)S] +C(i,n) : i<1 -> C(i+0.1,n+0.1) +f(a) -> f((a^2+0.0003)^0.5) +#C(i) -> C(i+1)[+(i*137.5)f(0.3*i^0.5)S] +#end rules \ No newline at end of file diff --git a/Unity Project/Assets/LSystem/Vogel animated.txt.meta b/Unity Project/Assets/LSystem/Vogel animated.txt.meta new file mode 100644 index 0000000..81e7157 --- /dev/null +++ b/Unity Project/Assets/LSystem/Vogel animated.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2945726240c5ce8488b2b5d559ab19bf +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/LSystem/stochastic.txt b/Unity Project/Assets/LSystem/stochastic.txt new file mode 100644 index 0000000..0931066 --- /dev/null +++ b/Unity Project/Assets/LSystem/stochastic.txt @@ -0,0 +1,10 @@ +#axiom +B +#rules +B -> #stochastic +p=3 FB +p=1 [+FB]FB +p=1 [-FB]FB +p=1 F +#stochastic end +#rules end \ No newline at end of file diff --git a/Unity Project/Assets/LSystem/stochastic.txt.meta b/Unity Project/Assets/LSystem/stochastic.txt.meta new file mode 100644 index 0000000..8f2df81 --- /dev/null +++ b/Unity Project/Assets/LSystem/stochastic.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 465f8d1d1ead7fb459bcd7aca3c3829d +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Materials.meta b/Unity Project/Assets/Materials.meta new file mode 100644 index 0000000..3d59d03 --- /dev/null +++ b/Unity Project/Assets/Materials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 48ca6f9e4f5dc3f468cb5fa1a914f56a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Materials/Leaf.mat b/Unity Project/Assets/Materials/Leaf.mat new file mode 100644 index 0000000..aad368f --- /dev/null +++ b/Unity Project/Assets/Materials/Leaf.mat @@ -0,0 +1,78 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Leaf + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 0.578 + - _Glossiness: 0.692 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 1 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 0.27530718, g: 0.6792453, b: 0.1901032, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] diff --git a/Unity Project/Assets/Materials/Leaf.mat.meta b/Unity Project/Assets/Materials/Leaf.mat.meta new file mode 100644 index 0000000..fbdf8dc --- /dev/null +++ b/Unity Project/Assets/Materials/Leaf.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9a5d8dec59e668645ae5387a1a42e0e2 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Materials/bark.mat b/Unity Project/Assets/Materials/bark.mat new file mode 100644 index 0000000..1ab712a --- /dev/null +++ b/Unity Project/Assets/Materials/bark.mat @@ -0,0 +1,80 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: bark + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _DETAIL_MULX2 _GLOSSYREFLECTIONS_OFF _NORMALMAP _PARALLAXMAP + _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 10309, guid: 0000000000000000f000000000000000, type: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 2800000, guid: ed1b71ffb41fa3a409b86d963a94d755, type: 3} + m_Scale: {x: 4, y: 4} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 10309, guid: 0000000000000000f000000000000000, type: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 40, y: 40} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 40, y: 40} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 10309, guid: 0000000000000000f000000000000000, type: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0.055 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.08 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 0 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 0.1509434, g: 0.07959535, b: 0.019223925, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] diff --git a/Unity Project/Assets/Materials/bark.mat.meta b/Unity Project/Assets/Materials/bark.mat.meta new file mode 100644 index 0000000..a2e6385 --- /dev/null +++ b/Unity Project/Assets/Materials/bark.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fde9fd68edea14ce584fb5ffbcb21462 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Materials/env.mat b/Unity Project/Assets/Materials/env.mat new file mode 100644 index 0000000..e61b0cc --- /dev/null +++ b/Unity Project/Assets/Materials/env.mat @@ -0,0 +1,80 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: env + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _ALPHAPREMULTIPLY_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 10 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 3 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 0 + m_Colors: + - _Color: {r: 0, g: 0.9150943, b: 0.13730395, a: 0.27058825} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] diff --git a/Unity Project/Assets/Materials/env.mat.meta b/Unity Project/Assets/Materials/env.mat.meta new file mode 100644 index 0000000..113ec6e --- /dev/null +++ b/Unity Project/Assets/Materials/env.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f561bc63331014808bf8c6d57bb7b0fa +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Materials/inShadow.mat b/Unity Project/Assets/Materials/inShadow.mat new file mode 100644 index 0000000..3365bd3 --- /dev/null +++ b/Unity Project/Assets/Materials/inShadow.mat @@ -0,0 +1,79 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: inShadow + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 0, g: 0, b: 0, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] diff --git a/Unity Project/Assets/Materials/inShadow.mat.meta b/Unity Project/Assets/Materials/inShadow.mat.meta new file mode 100644 index 0000000..121cc63 --- /dev/null +++ b/Unity Project/Assets/Materials/inShadow.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e2b9d57650afa46dba7dcf9d45fc99ec +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Materials/leaf material.mat b/Unity Project/Assets/Materials/leaf material.mat new file mode 100644 index 0000000..f50a26e --- /dev/null +++ b/Unity Project/Assets/Materials/leaf material.mat @@ -0,0 +1,78 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: leaf material + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _ALPHAPREMULTIPLY_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 4cf885f6598282142af25712ee21ee4c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 10 + - _GlossMapScale: 1 + - _Glossiness: 0.426 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 3 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 0 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/Unity Project/Assets/Materials/leaf material.mat.meta b/Unity Project/Assets/Materials/leaf material.mat.meta new file mode 100644 index 0000000..103de8a --- /dev/null +++ b/Unity Project/Assets/Materials/leaf material.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 40be7c60f27d0cf48818ffb9777dd7fb +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Materials/orange.mat b/Unity Project/Assets/Materials/orange.mat new file mode 100644 index 0000000..9dbb742 --- /dev/null +++ b/Unity Project/Assets/Materials/orange.mat @@ -0,0 +1,79 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: orange + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _DETAIL_MULX2 _GLOSSYREFLECTIONS_OFF _PARALLAXMAP _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 2800000, guid: ed1b71ffb41fa3a409b86d963a94d755, type: 3} + m_Scale: {x: 50, y: 50} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 10309, guid: 0000000000000000f000000000000000, type: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 30, y: 30} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 30, y: 30} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 10309, guid: 0000000000000000f000000000000000, type: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.03 + - _GlossyReflections: 0 + - _Metallic: 0.724 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.08 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 0 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 0.46176243, b: 0, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] diff --git a/Unity Project/Assets/Materials/orange.mat.meta b/Unity Project/Assets/Materials/orange.mat.meta new file mode 100644 index 0000000..33f91b1 --- /dev/null +++ b/Unity Project/Assets/Materials/orange.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 34f56f9ced0eb431ca9e193b2f7ab8df +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Materials/outShadow.mat b/Unity Project/Assets/Materials/outShadow.mat new file mode 100644 index 0000000..3fbf6ad --- /dev/null +++ b/Unity Project/Assets/Materials/outShadow.mat @@ -0,0 +1,79 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: outShadow + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 1 + - _GlossyReflections: 1 + - _Metallic: 1 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 0.81068486, b: 0.3443396, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] diff --git a/Unity Project/Assets/Materials/outShadow.mat.meta b/Unity Project/Assets/Materials/outShadow.mat.meta new file mode 100644 index 0000000..3325109 --- /dev/null +++ b/Unity Project/Assets/Materials/outShadow.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fe8755eddf75c47b4b216c653608224d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Materials/shadowBox.mat b/Unity Project/Assets/Materials/shadowBox.mat new file mode 100644 index 0000000..b5516cf --- /dev/null +++ b/Unity Project/Assets/Materials/shadowBox.mat @@ -0,0 +1,79 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: shadowBox + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 1 + - _GlossyReflections: 1 + - _Metallic: 1 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 0, g: 0, b: 0, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] diff --git a/Unity Project/Assets/Materials/shadowBox.mat.meta b/Unity Project/Assets/Materials/shadowBox.mat.meta new file mode 100644 index 0000000..7848049 --- /dev/null +++ b/Unity Project/Assets/Materials/shadowBox.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 65eeb33e604c54188bc5e845de0015be +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Models.meta b/Unity Project/Assets/Models.meta new file mode 100644 index 0000000..6dd1a3b --- /dev/null +++ b/Unity Project/Assets/Models.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3c3b87c72381e5d428800a1a82fa4fcc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Models/Flower.fbx b/Unity Project/Assets/Models/Flower.fbx new file mode 100644 index 0000000..f120df4 Binary files /dev/null and b/Unity Project/Assets/Models/Flower.fbx differ diff --git a/Unity Project/Assets/Models/Flower.fbx.meta b/Unity Project/Assets/Models/Flower.fbx.meta new file mode 100644 index 0000000..3642900 --- /dev/null +++ b/Unity Project/Assets/Models/Flower.fbx.meta @@ -0,0 +1,101 @@ +fileFormatVersion: 2 +guid: 06838bfd0bf73c647812994a50837eaf +ModelImporter: + serializedVersion: 19300 + internalIDToNameTable: [] + externalObjects: + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: lambert2 + second: {fileID: 2100000, guid: 40be7c60f27d0cf48818ffb9777dd7fb, type: 2} + materials: + materialImportMode: 1 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 10 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 10 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Models/Leaf_Generator.fbx b/Unity Project/Assets/Models/Leaf_Generator.fbx new file mode 100644 index 0000000..311be07 Binary files /dev/null and b/Unity Project/Assets/Models/Leaf_Generator.fbx differ diff --git a/Unity Project/Assets/Models/Leaf_Generator.fbx.meta b/Unity Project/Assets/Models/Leaf_Generator.fbx.meta new file mode 100644 index 0000000..fb64fb6 --- /dev/null +++ b/Unity Project/Assets/Models/Leaf_Generator.fbx.meta @@ -0,0 +1,102 @@ +fileFormatVersion: 2 +guid: 05c8aef2572f95344b4f4e9e609746a6 +ModelImporter: + serializedVersion: 20200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Models/Orange.prefab b/Unity Project/Assets/Models/Orange.prefab new file mode 100644 index 0000000..9ea576d --- /dev/null +++ b/Unity Project/Assets/Models/Orange.prefab @@ -0,0 +1,325 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1025659965525715962 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1025659965525715966} + - component: {fileID: 1025659965525715965} + - component: {fileID: 1025659965525715964} + - component: {fileID: 1025659965525715963} + m_Layer: 0 + m_Name: orange + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1025659965525715966 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1025659965525715962} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -1.2320058, y: -1.3767812, z: 1.647402} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 3090520685961823317} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &1025659965525715965 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1025659965525715962} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &1025659965525715964 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1025659965525715962} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 34f56f9ced0eb431ca9e193b2f7ab8df, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!135 &1025659965525715963 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1025659965525715962} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 0 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!1 &3090520685961823314 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3090520685961823317} + m_Layer: 0 + m_Name: Orange + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3090520685961823317 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3090520685961823314} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1.2320058, y: 1.3767812, z: -1.647402} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 174257952410198657} + - {fileID: 6539404156562086201} + - {fileID: 1025659965525715966} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &4791279318807328692 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 174257952410198657} + - component: {fileID: 5041613818208627330} + - component: {fileID: 5535497810863489550} + - component: {fileID: 1074455388699532303} + m_Layer: 0 + m_Name: Quad + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &174257952410198657 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4791279318807328692} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -1.2320058, y: 0.42321873, z: 1.647402} + m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} + m_Children: [] + m_Father: {fileID: 3090520685961823317} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &5041613818208627330 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4791279318807328692} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &5535497810863489550 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4791279318807328692} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 34f56f9ced0eb431ca9e193b2f7ab8df, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!64 &1074455388699532303 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4791279318807328692} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 0 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &5088985385048006514 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6539404156562086201} + - component: {fileID: 1604951200150710008} + - component: {fileID: 7392089312579663931} + - component: {fileID: 7970681039605796784} + m_Layer: 0 + m_Name: Cylinder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6539404156562086201 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5088985385048006514} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -1.2320058, y: -0.641, z: 1.647402} + m_LocalScale: {x: 0.05, y: 0.25, z: 0.05} + m_Children: [] + m_Father: {fileID: 3090520685961823317} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &1604951200150710008 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5088985385048006514} + m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &7392089312579663931 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5088985385048006514} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: fde9fd68edea14ce584fb5ffbcb21462, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!136 &7970681039605796784 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5088985385048006514} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 0 + m_Radius: 0.5000001 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0.000000059604645, y: 0, z: -0.00000008940697} diff --git a/Unity Project/Assets/Models/Orange.prefab.meta b/Unity Project/Assets/Models/Orange.prefab.meta new file mode 100644 index 0000000..10260f8 --- /dev/null +++ b/Unity Project/Assets/Models/Orange.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 58618c794bd4d4878b1c295f585a530d +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Models/Sphere.prefab b/Unity Project/Assets/Models/Sphere.prefab new file mode 100644 index 0000000..16283ee --- /dev/null +++ b/Unity Project/Assets/Models/Sphere.prefab @@ -0,0 +1,97 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1137365859699674365 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 470298788318060321} + - component: {fileID: 6709748349633369705} + - component: {fileID: 3471709009777093184} + - component: {fileID: 6945590706105838025} + m_Layer: 0 + m_Name: Sphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &470298788318060321 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1137365859699674365} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &6709748349633369705 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1137365859699674365} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &3471709009777093184 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1137365859699674365} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: -876546973899608171, guid: ca516c08d816f5f4d8454c64e6d9eeab, type: 3} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!135 &6945590706105838025 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1137365859699674365} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} diff --git a/Unity Project/Assets/Models/Sphere.prefab.meta b/Unity Project/Assets/Models/Sphere.prefab.meta new file mode 100644 index 0000000..f848dd4 --- /dev/null +++ b/Unity Project/Assets/Models/Sphere.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5d2f08ecbb69120459626c90d120bbb7 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Models/bigL.fbx b/Unity Project/Assets/Models/bigL.fbx new file mode 100644 index 0000000..7e70f03 Binary files /dev/null and b/Unity Project/Assets/Models/bigL.fbx differ diff --git a/Unity Project/Assets/Models/bigL.fbx.meta b/Unity Project/Assets/Models/bigL.fbx.meta new file mode 100644 index 0000000..7b1cf0d --- /dev/null +++ b/Unity Project/Assets/Models/bigL.fbx.meta @@ -0,0 +1,102 @@ +fileFormatVersion: 2 +guid: a3c2912313688e7409f0487619dfe166 +ModelImporter: + serializedVersion: 20200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Models/bigR.fbx b/Unity Project/Assets/Models/bigR.fbx new file mode 100644 index 0000000..51f1cd3 Binary files /dev/null and b/Unity Project/Assets/Models/bigR.fbx differ diff --git a/Unity Project/Assets/Models/bigR.fbx.meta b/Unity Project/Assets/Models/bigR.fbx.meta new file mode 100644 index 0000000..d2bc62d --- /dev/null +++ b/Unity Project/Assets/Models/bigR.fbx.meta @@ -0,0 +1,102 @@ +fileFormatVersion: 2 +guid: ca516c08d816f5f4d8454c64e6d9eeab +ModelImporter: + serializedVersion: 20200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Models/cylinder.prefab b/Unity Project/Assets/Models/cylinder.prefab new file mode 100644 index 0000000..0eb2737 --- /dev/null +++ b/Unity Project/Assets/Models/cylinder.prefab @@ -0,0 +1,84 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3132964252630352729 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7594502901394162009} + - component: {fileID: 4391870333044285248} + - component: {fileID: 4416866696227822882} + m_Layer: 0 + m_Name: cylinder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7594502901394162009 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3132964252630352729} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -1, z: 0} + m_LocalScale: {x: 0.5, y: 1, z: 0.5} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &4391870333044285248 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3132964252630352729} + m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &4416866696227822882 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3132964252630352729} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: fde9fd68edea14ce584fb5ffbcb21462, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} diff --git a/Unity Project/Assets/Models/cylinder.prefab.meta b/Unity Project/Assets/Models/cylinder.prefab.meta new file mode 100644 index 0000000..36b35e8 --- /dev/null +++ b/Unity Project/Assets/Models/cylinder.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 537804071d025f14d907bbea26a5b603 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Models/l.fbx b/Unity Project/Assets/Models/l.fbx new file mode 100644 index 0000000..4a7cba5 Binary files /dev/null and b/Unity Project/Assets/Models/l.fbx differ diff --git a/Unity Project/Assets/Models/l.fbx.meta b/Unity Project/Assets/Models/l.fbx.meta new file mode 100644 index 0000000..159a2ac --- /dev/null +++ b/Unity Project/Assets/Models/l.fbx.meta @@ -0,0 +1,102 @@ +fileFormatVersion: 2 +guid: cc42f516e5f34114f99b98c835b8c85f +ModelImporter: + serializedVersion: 20200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Models/leaf.fbx b/Unity Project/Assets/Models/leaf.fbx new file mode 100644 index 0000000..128022f Binary files /dev/null and b/Unity Project/Assets/Models/leaf.fbx differ diff --git a/Unity Project/Assets/Models/leaf.fbx.meta b/Unity Project/Assets/Models/leaf.fbx.meta new file mode 100644 index 0000000..586128a --- /dev/null +++ b/Unity Project/Assets/Models/leaf.fbx.meta @@ -0,0 +1,96 @@ +fileFormatVersion: 2 +guid: 8d0c2fec8c571c349b438fde39c3938e +ModelImporter: + serializedVersion: 19300 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 1 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 0.2 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 0.002 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Models/r.fbx b/Unity Project/Assets/Models/r.fbx new file mode 100644 index 0000000..64d772b Binary files /dev/null and b/Unity Project/Assets/Models/r.fbx differ diff --git a/Unity Project/Assets/Models/r.fbx.meta b/Unity Project/Assets/Models/r.fbx.meta new file mode 100644 index 0000000..86a9aeb --- /dev/null +++ b/Unity Project/Assets/Models/r.fbx.meta @@ -0,0 +1,102 @@ +fileFormatVersion: 2 +guid: aac0ac856409e5c40acd3911f70271ca +ModelImporter: + serializedVersion: 20200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Models/rose_petal.fbx b/Unity Project/Assets/Models/rose_petal.fbx new file mode 100644 index 0000000..e44cdeb Binary files /dev/null and b/Unity Project/Assets/Models/rose_petal.fbx differ diff --git a/Unity Project/Assets/Models/rose_petal.fbx.meta b/Unity Project/Assets/Models/rose_petal.fbx.meta new file mode 100644 index 0000000..8060057 --- /dev/null +++ b/Unity Project/Assets/Models/rose_petal.fbx.meta @@ -0,0 +1,105 @@ +fileFormatVersion: 2 +guid: e26181f9304ac9044842d6648db420ce +ModelImporter: + serializedVersion: 20200 + internalIDToNameTable: + - first: + 74: -5187248419258813496 + second: Plane|PlaneAction + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Models/rose_petal1.fbx b/Unity Project/Assets/Models/rose_petal1.fbx new file mode 100644 index 0000000..fff10d2 Binary files /dev/null and b/Unity Project/Assets/Models/rose_petal1.fbx differ diff --git a/Unity Project/Assets/Models/rose_petal1.fbx.meta b/Unity Project/Assets/Models/rose_petal1.fbx.meta new file mode 100644 index 0000000..0783683 --- /dev/null +++ b/Unity Project/Assets/Models/rose_petal1.fbx.meta @@ -0,0 +1,105 @@ +fileFormatVersion: 2 +guid: 813ff6c1c544b3644b274822464a92a7 +ModelImporter: + serializedVersion: 20200 + internalIDToNameTable: + - first: + 74: -5187248419258813496 + second: Plane|PlaneAction + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Models/source.meta b/Unity Project/Assets/Models/source.meta new file mode 100644 index 0000000..4003936 --- /dev/null +++ b/Unity Project/Assets/Models/source.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0ca0a699eef019647a81d0cedf67bf1f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Models/sunflower.meta b/Unity Project/Assets/Models/sunflower.meta new file mode 100644 index 0000000..d7a348b --- /dev/null +++ b/Unity Project/Assets/Models/sunflower.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 910391d0ba4ce6c449458137a48292ec +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Models/sunflower/bud.fbx b/Unity Project/Assets/Models/sunflower/bud.fbx new file mode 100644 index 0000000..ad4a919 Binary files /dev/null and b/Unity Project/Assets/Models/sunflower/bud.fbx differ diff --git a/Unity Project/Assets/Models/sunflower/bud.fbx.meta b/Unity Project/Assets/Models/sunflower/bud.fbx.meta new file mode 100644 index 0000000..b17f4f7 --- /dev/null +++ b/Unity Project/Assets/Models/sunflower/bud.fbx.meta @@ -0,0 +1,102 @@ +fileFormatVersion: 2 +guid: 0ce8fd4d46eb7c04fb6b357ad5d32398 +ModelImporter: + serializedVersion: 20200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Models/sunflower/flower_old.fbx b/Unity Project/Assets/Models/sunflower/flower_old.fbx new file mode 100644 index 0000000..b444d58 Binary files /dev/null and b/Unity Project/Assets/Models/sunflower/flower_old.fbx differ diff --git a/Unity Project/Assets/Models/sunflower/flower_old.fbx.meta b/Unity Project/Assets/Models/sunflower/flower_old.fbx.meta new file mode 100644 index 0000000..e803509 --- /dev/null +++ b/Unity Project/Assets/Models/sunflower/flower_old.fbx.meta @@ -0,0 +1,102 @@ +fileFormatVersion: 2 +guid: 0d744d7a694a1b34aa665e6fa85c38a2 +ModelImporter: + serializedVersion: 20200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Models/sunflower/flower_young.fbx b/Unity Project/Assets/Models/sunflower/flower_young.fbx new file mode 100644 index 0000000..98fa014 Binary files /dev/null and b/Unity Project/Assets/Models/sunflower/flower_young.fbx differ diff --git a/Unity Project/Assets/Models/sunflower/flower_young.fbx.meta b/Unity Project/Assets/Models/sunflower/flower_young.fbx.meta new file mode 100644 index 0000000..98432ad --- /dev/null +++ b/Unity Project/Assets/Models/sunflower/flower_young.fbx.meta @@ -0,0 +1,102 @@ +fileFormatVersion: 2 +guid: 183ebc02eb02ee14eaeeacc7bbffb22a +ModelImporter: + serializedVersion: 20200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Models/sunflower/petal.fbx b/Unity Project/Assets/Models/sunflower/petal.fbx new file mode 100644 index 0000000..00fb8fd Binary files /dev/null and b/Unity Project/Assets/Models/sunflower/petal.fbx differ diff --git a/Unity Project/Assets/Models/sunflower/petal.fbx.meta b/Unity Project/Assets/Models/sunflower/petal.fbx.meta new file mode 100644 index 0000000..babe40d --- /dev/null +++ b/Unity Project/Assets/Models/sunflower/petal.fbx.meta @@ -0,0 +1,102 @@ +fileFormatVersion: 2 +guid: d1875180159e234448d5f19b60ecf63f +ModelImporter: + serializedVersion: 20200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Models/sunflower/textures.meta b/Unity Project/Assets/Models/sunflower/textures.meta new file mode 100644 index 0000000..f1aff51 --- /dev/null +++ b/Unity Project/Assets/Models/sunflower/textures.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fc30390a6e981f747bb5d9b8c5739d3d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Models/sunflower/textures/Material.001 Base Color.jpg b/Unity Project/Assets/Models/sunflower/textures/Material.001 Base Color.jpg new file mode 100644 index 0000000..4cdc2e8 Binary files /dev/null and b/Unity Project/Assets/Models/sunflower/textures/Material.001 Base Color.jpg differ diff --git a/Unity Project/Assets/Models/sunflower/textures/Material.001 Base Color.jpg.meta b/Unity Project/Assets/Models/sunflower/textures/Material.001 Base Color.jpg.meta new file mode 100644 index 0000000..1263027 --- /dev/null +++ b/Unity Project/Assets/Models/sunflower/textures/Material.001 Base Color.jpg.meta @@ -0,0 +1,96 @@ +fileFormatVersion: 2 +guid: ed1b71ffb41fa3a409b86d963a94d755 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Models/sunflower/textures/old.png b/Unity Project/Assets/Models/sunflower/textures/old.png new file mode 100644 index 0000000..7226fa1 Binary files /dev/null and b/Unity Project/Assets/Models/sunflower/textures/old.png differ diff --git a/Unity Project/Assets/Models/sunflower/textures/old.png.meta b/Unity Project/Assets/Models/sunflower/textures/old.png.meta new file mode 100644 index 0000000..8ef5a21 --- /dev/null +++ b/Unity Project/Assets/Models/sunflower/textures/old.png.meta @@ -0,0 +1,96 @@ +fileFormatVersion: 2 +guid: eacb8bdb1d23f964d9106065c5f5fb75 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Models/textures.meta b/Unity Project/Assets/Models/textures.meta new file mode 100644 index 0000000..0207089 --- /dev/null +++ b/Unity Project/Assets/Models/textures.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7b146ace23aa4ca4b98c431ce3cf7fe7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Models/textures/Petal.tga.png b/Unity Project/Assets/Models/textures/Petal.tga.png new file mode 100644 index 0000000..a7c13c5 Binary files /dev/null and b/Unity Project/Assets/Models/textures/Petal.tga.png differ diff --git a/Unity Project/Assets/Models/textures/Petal.tga.png.meta b/Unity Project/Assets/Models/textures/Petal.tga.png.meta new file mode 100644 index 0000000..23cb15a --- /dev/null +++ b/Unity Project/Assets/Models/textures/Petal.tga.png.meta @@ -0,0 +1,103 @@ +fileFormatVersion: 2 +guid: 4cf885f6598282142af25712ee21ee4c +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/New Terrain.asset b/Unity Project/Assets/New Terrain.asset new file mode 100644 index 0000000..a6cb29f Binary files /dev/null and b/Unity Project/Assets/New Terrain.asset differ diff --git a/Unity Project/Assets/New Terrain.asset.meta b/Unity Project/Assets/New Terrain.asset.meta new file mode 100644 index 0000000..e9b2a6b --- /dev/null +++ b/Unity Project/Assets/New Terrain.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d7430d249c59f4b18be7d9ea6b12fec6 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 15600000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Scenes.meta b/Unity Project/Assets/Scenes.meta new file mode 100644 index 0000000..6cff8a6 --- /dev/null +++ b/Unity Project/Assets/Scenes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 329798f44b3a08b40973ac00050b7dd6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Scenes/LSystem2D.unity b/Unity Project/Assets/Scenes/LSystem2D.unity new file mode 100644 index 0000000..83a475f --- /dev/null +++ b/Unity Project/Assets/Scenes/LSystem2D.unity @@ -0,0 +1,348 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 2100000, guid: 15df3041f931a4b3189530813766d6c2, type: 2} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0.0061698696, g: 0.0061698696, b: 0.0061698696, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &755131157 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 755131159} + - component: {fileID: 755131158} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &755131158 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 755131157} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &755131159 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 755131157} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &1466590775 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1466590777} + - component: {fileID: 1466590776} + m_Layer: 0 + m_Name: LSystemController + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1466590776 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1466590775} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 077aaeb6378653940b8ed1da8871fed4, type: 3} + m_Name: + m_EditorClassIdentifier: + LSystemPath: Assets/LSystem/Koch.txt + steps: 1 + obj: {fileID: 3132964252630352729, guid: 537804071d025f14d907bbea26a5b603, type: 3} + angle: 60 +--- !u!4 &1466590777 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1466590775} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2076165847 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2076165850} + - component: {fileID: 2076165849} + - component: {fileID: 2076165848} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &2076165848 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2076165847} + m_Enabled: 1 +--- !u!20 &2076165849 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2076165847} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &2076165850 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2076165847} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -0.01, z: -1.525} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Unity Project/Assets/Scenes/LSystem2D.unity.meta b/Unity Project/Assets/Scenes/LSystem2D.unity.meta new file mode 100644 index 0000000..b45eb96 --- /dev/null +++ b/Unity Project/Assets/Scenes/LSystem2D.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 24701bad68f1faf44913a871fbd8a989 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Scenes/LSystem3D.unity b/Unity Project/Assets/Scenes/LSystem3D.unity new file mode 100644 index 0000000..c7688ed --- /dev/null +++ b/Unity Project/Assets/Scenes/LSystem3D.unity @@ -0,0 +1,349 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &755131157 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 755131159} + - component: {fileID: 755131158} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &755131158 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 755131157} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &755131159 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 755131157} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &1466590775 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1466590777} + - component: {fileID: 1466590776} + m_Layer: 0 + m_Name: LSystemController + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1466590776 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1466590775} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fdbab7936197e9c4e9c5225e40810916, type: 3} + m_Name: + m_EditorClassIdentifier: + LSystemPath: Assets\LSystem\Sierpinski.txt + steps: 1 + obj: {fileID: 3132964252630352729, guid: 537804071d025f14d907bbea26a5b603, type: 3} + sphere: {fileID: 1137365859699674365, guid: 5d2f08ecbb69120459626c90d120bbb7, type: 3} + angle: 60 +--- !u!4 &1466590777 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1466590775} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2076165847 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2076165850} + - component: {fileID: 2076165849} + - component: {fileID: 2076165848} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &2076165848 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2076165847} + m_Enabled: 1 +--- !u!20 &2076165849 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2076165847} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &2076165850 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2076165847} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -0.01, z: -1.525} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Unity Project/Assets/Scenes/LSystem3D.unity.meta b/Unity Project/Assets/Scenes/LSystem3D.unity.meta new file mode 100644 index 0000000..37fa7ec --- /dev/null +++ b/Unity Project/Assets/Scenes/LSystem3D.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 12af647ed3c081041a127bb7756c2996 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Scenes/LSystem3DAnimated.unity b/Unity Project/Assets/Scenes/LSystem3DAnimated.unity new file mode 100644 index 0000000..6b4f6ac --- /dev/null +++ b/Unity Project/Assets/Scenes/LSystem3DAnimated.unity @@ -0,0 +1,350 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &755131157 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 755131159} + - component: {fileID: 755131158} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &755131158 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 755131157} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &755131159 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 755131157} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &1466590775 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1466590777} + - component: {fileID: 1466590776} + m_Layer: 0 + m_Name: LSystemController + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1466590776 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1466590775} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4527a053b14070649a36fb06e5a69caf, type: 3} + m_Name: + m_EditorClassIdentifier: + speed: 0 + LSystemPath: Assets/LSystem/Vogel animated.txt + steps: 100 + obj: {fileID: 3132964252630352729, guid: 537804071d025f14d907bbea26a5b603, type: 3} + sphere: {fileID: 1137365859699674365, guid: 5d2f08ecbb69120459626c90d120bbb7, type: 3} + angle: 0 +--- !u!4 &1466590777 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1466590775} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2076165847 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2076165850} + - component: {fileID: 2076165849} + - component: {fileID: 2076165848} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &2076165848 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2076165847} + m_Enabled: 1 +--- !u!20 &2076165849 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2076165847} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &2076165850 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2076165847} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -0.01, z: -1.525} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Unity Project/Assets/Scenes/LSystem3DAnimated.unity.meta b/Unity Project/Assets/Scenes/LSystem3DAnimated.unity.meta new file mode 100644 index 0000000..794fd3c --- /dev/null +++ b/Unity Project/Assets/Scenes/LSystem3DAnimated.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ed3c43e4d80050d4298aba199527f230 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Scenes/LSystemContextExample.unity b/Unity Project/Assets/Scenes/LSystemContextExample.unity new file mode 100644 index 0000000..961d932 --- /dev/null +++ b/Unity Project/Assets/Scenes/LSystemContextExample.unity @@ -0,0 +1,349 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &755131157 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 755131159} + - component: {fileID: 755131158} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &755131158 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 755131157} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &755131159 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 755131157} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &1466590775 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1466590777} + - component: {fileID: 1466590776} + m_Layer: 0 + m_Name: LSystemController + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1466590776 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1466590775} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fdbab7936197e9c4e9c5225e40810916, type: 3} + m_Name: + m_EditorClassIdentifier: + LSystemPath: Assets\LSystem\ContextTest1.txt + steps: 1 + obj: {fileID: 3132964252630352729, guid: 537804071d025f14d907bbea26a5b603, type: 3} + sphere: {fileID: 1137365859699674365, guid: 5d2f08ecbb69120459626c90d120bbb7, type: 3} + angle: 60 +--- !u!4 &1466590777 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1466590775} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2076165847 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2076165850} + - component: {fileID: 2076165849} + - component: {fileID: 2076165848} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &2076165848 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2076165847} + m_Enabled: 1 +--- !u!20 &2076165849 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2076165847} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &2076165850 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2076165847} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -0.01, z: -1.525} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Unity Project/Assets/Scenes/LSystemContextExample.unity.meta b/Unity Project/Assets/Scenes/LSystemContextExample.unity.meta new file mode 100644 index 0000000..aa4d3a3 --- /dev/null +++ b/Unity Project/Assets/Scenes/LSystemContextExample.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d2a49651ac67ad4489dc53c98373f593 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Scenes/LSystemFromFile.unity b/Unity Project/Assets/Scenes/LSystemFromFile.unity new file mode 100644 index 0000000..0dd321c --- /dev/null +++ b/Unity Project/Assets/Scenes/LSystemFromFile.unity @@ -0,0 +1,343 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &755131157 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 755131159} + - component: {fileID: 755131158} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &755131158 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 755131157} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &755131159 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 755131157} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &1466590775 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1466590777} + - component: {fileID: 1466590776} + m_Layer: 0 + m_Name: LSystemController + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1466590776 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1466590775} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7bc6128c88800ea48ba9b9e7070ec728, type: 3} + m_Name: + m_EditorClassIdentifier: + LSystemPath: Assets\LSystem\Anabaena.txt + steps: 1 +--- !u!4 &1466590777 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1466590775} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2076165847 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2076165850} + - component: {fileID: 2076165849} + - component: {fileID: 2076165848} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &2076165848 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2076165847} + m_Enabled: 1 +--- !u!20 &2076165849 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2076165847} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &2076165850 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2076165847} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -0.01, z: -1.525} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Unity Project/Assets/Scenes/LSystemFromFile.unity.meta b/Unity Project/Assets/Scenes/LSystemFromFile.unity.meta new file mode 100644 index 0000000..a3e7672 --- /dev/null +++ b/Unity Project/Assets/Scenes/LSystemFromFile.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3cb948870e265c74e8d96211e8d7ec25 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Scenes/PipeModel.unity b/Unity Project/Assets/Scenes/PipeModel.unity new file mode 100644 index 0000000..4e87783 --- /dev/null +++ b/Unity Project/Assets/Scenes/PipeModel.unity @@ -0,0 +1,1295 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0.44657874, g: 0.49641275, b: 0.5748172, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &143794279 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 143794283} + - component: {fileID: 143794282} + - component: {fileID: 143794281} + - component: {fileID: 143794280} + m_Layer: 0 + m_Name: Plane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!64 &143794280 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 143794279} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &143794281 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 143794279} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &143794282 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 143794279} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &143794283 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 143794279} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2.0969152, y: 3.3139138, z: 31.738964} + m_LocalScale: {x: 2, y: 1, z: 2} + m_Children: [] + m_Father: {fileID: 1307751138} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &314914311 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 314914312} + m_Layer: 0 + m_Name: otherObjects + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &314914312 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 314914311} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1.5930847, y: -3.3139138, z: -28.088964} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1616538388} + - {fileID: 2076165850} + - {fileID: 755131159} + - {fileID: 1307751138} + m_Father: {fileID: 0} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &335996586 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 335996588} + - component: {fileID: 335996587} + - component: {fileID: 335996589} + m_Layer: 0 + m_Name: Environment + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &335996587 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 335996586} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b78020a4451094d62a036de676b8e8d3, type: 3} + m_Name: + m_EditorClassIdentifier: + sizeX: 60 + sizeY: 30 + sizeZ: 60 + voxelSize: 0.3 + visualizeLigth: 1 + visualizeEveryNVoxel: 1 + shape: {fileID: 1616538384} + ball: {fileID: 1616538384} + material: {fileID: 2100000, guid: f561bc63331014808bf8c6d57bb7b0fa, type: 2} + rotateTowardsLight: 0 + sendShadowToLSystem: 1 + cutBranchesWithMaxShadow: 0 +--- !u!4 &335996588 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 335996586} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -5, y: 0.2, z: -5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &335996589 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 335996586} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e2cb532c315014be89acde11ebedcf05, type: 3} + m_Name: + m_EditorClassIdentifier: + trees: + - {fileID: 854033099} + steps: 1 +--- !u!1 &359773565 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 359773569} + - component: {fileID: 359773568} + - component: {fileID: 359773567} + - component: {fileID: 359773566} + - component: {fileID: 359773570} + m_Layer: 0 + m_Name: inShadow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!65 &359773566 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 359773565} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &359773567 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 359773565} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: fe8755eddf75c47b4b216c653608224d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &359773568 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 359773565} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &359773569 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 359773565} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0.724, z: 1.063} + m_LocalScale: {x: 0.3, y: 0.3, z: 0.3} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &359773570 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 359773565} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c31f84fd2dde0469ea2fb3c973af02fa, type: 3} + m_Name: + m_EditorClassIdentifier: + refreshEverySecond: 1 + environment: {fileID: 335996587} + shadowStrength: 5 + inShadow: {fileID: 2100000, guid: e2b9d57650afa46dba7dcf9d45fc99ec, type: 2} + noShadow: {fileID: 2100000, guid: fe8755eddf75c47b4b216c653608224d, type: 2} +--- !u!1 &486976224 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 486976228} + - component: {fileID: 486976227} + - component: {fileID: 486976226} + - component: {fileID: 486976225} + m_Layer: 0 + m_Name: Plane (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!64 &486976225 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 486976224} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &486976226 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 486976224} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &486976227 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 486976224} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &486976228 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 486976224} + m_LocalRotation: {x: 0.7071068, y: -0, z: -0, w: 0.7071068} + m_LocalPosition: {x: -1.5930847, y: 3.3139138, z: 23.248964} + m_LocalScale: {x: 2, y: 1, z: 2} + m_Children: [] + m_Father: {fileID: 1307751138} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!1 &755131157 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 755131159} + - component: {fileID: 755131158} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &755131158 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 755131157} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &755131159 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 755131157} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: -2.8980846, y: 6.313914, z: 27.335964} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 314914312} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &784969199 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 784969201} + - component: {fileID: 784969200} + m_Layer: 0 + m_Name: tree (004) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &784969200 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 784969199} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 881ec2dd8ae9af549b6c916c2cf8e5de, type: 3} + m_Name: + m_EditorClassIdentifier: + speed: 1 + LSystemPath: Assets/LSystem/ShadowModel.txt + steps: 1 + environment: {fileID: 335996587} + shadowStrength: 20 + lookForLightAngle: 40 + lookForLightLength: 1 + obj: {fileID: 3132964252630352729, guid: 537804071d025f14d907bbea26a5b603, type: 3} + flower: {fileID: 3090520685961823314, guid: 58618c794bd4d4878b1c295f585a530d, type: 3} + leaf: {fileID: -927199367670048503, guid: 8d0c2fec8c571c349b438fde39c3938e, type: 3} + angle: 30 +--- !u!4 &784969201 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 784969199} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 6.2, y: 0.1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &854033098 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 854033100} + - component: {fileID: 854033099} + m_Layer: 0 + m_Name: tree (001) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &854033099 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 854033098} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 881ec2dd8ae9af549b6c916c2cf8e5de, type: 3} + m_Name: + m_EditorClassIdentifier: + speed: 1 + LSystemPath: Assets/LSystem/ShadowModel.txt + steps: 1 + environment: {fileID: 335996587} + shadowStrength: 20 + lookForLightAngle: 40 + lookForLightLength: 1 + obj: {fileID: 3132964252630352729, guid: 537804071d025f14d907bbea26a5b603, type: 3} + flower: {fileID: 3090520685961823314, guid: 58618c794bd4d4878b1c295f585a530d, type: 3} + leaf: {fileID: -927199367670048503, guid: 8d0c2fec8c571c349b438fde39c3938e, type: 3} + angle: 30 +--- !u!4 &854033100 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 854033098} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1.5, y: 0, z: -1.5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1025533847 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1025533851} + - component: {fileID: 1025533850} + - component: {fileID: 1025533849} + - component: {fileID: 1025533852} + - component: {fileID: 1025533848} + m_Layer: 0 + m_Name: shadowBox + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!65 &1025533848 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1025533847} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1025533849 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1025533847} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 65eeb33e604c54188bc5e845de0015be, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1025533850 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1025533847} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1025533851 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1025533847} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 2, z: 3} + m_LocalScale: {x: 0.3, y: 0.3, z: 0.3} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1025533852 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1025533847} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: beb002cebc7e54824a2cf83b52c868ca, type: 3} + m_Name: + m_EditorClassIdentifier: + refreshEverySecond: 1 + environment: {fileID: 335996587} + shadowStrength: 50 +--- !u!1 &1113719264 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1113719268} + - component: {fileID: 1113719267} + - component: {fileID: 1113719266} + - component: {fileID: 1113719265} + m_Layer: 0 + m_Name: Plane (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!64 &1113719265 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1113719264} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &1113719266 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1113719264} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1113719267 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1113719264} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1113719268 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1113719264} + m_LocalRotation: {x: -0, y: -0, z: -0.7071068, w: 0.7071068} + m_LocalPosition: {x: -6.383085, y: 3.3139138, z: 28.088964} + m_LocalScale: {x: 2, y: 1, z: 2} + m_Children: [] + m_Father: {fileID: 1307751138} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -90} +--- !u!1 &1307751137 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1307751138} + m_Layer: 0 + m_Name: photoBox + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1307751138 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1307751137} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 143794283} + - {fileID: 486976228} + - {fileID: 1113719268} + m_Father: {fileID: 314914312} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1423079711 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1423079713} + - component: {fileID: 1423079712} + m_Layer: 0 + m_Name: tree (003) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1423079712 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1423079711} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 881ec2dd8ae9af549b6c916c2cf8e5de, type: 3} + m_Name: + m_EditorClassIdentifier: + speed: 1 + LSystemPath: Assets/LSystem/ShadowModel.txt + steps: 1 + environment: {fileID: 335996587} + shadowStrength: 20 + lookForLightAngle: 40 + lookForLightLength: 1 + obj: {fileID: 3132964252630352729, guid: 537804071d025f14d907bbea26a5b603, type: 3} + flower: {fileID: 3090520685961823314, guid: 58618c794bd4d4878b1c295f585a530d, type: 3} + leaf: {fileID: -927199367670048503, guid: 8d0c2fec8c571c349b438fde39c3938e, type: 3} + angle: 30 +--- !u!4 &1423079713 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1423079711} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4.5, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1616538384 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1616538388} + - component: {fileID: 1616538387} + - component: {fileID: 1616538386} + m_Layer: 0 + m_Name: visualizationShape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1616538386 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1616538384} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: f561bc63331014808bf8c6d57bb7b0fa, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1616538387 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1616538384} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1616538388 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1616538384} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -1.5930847, y: 3.3139138, z: 28.088964} + m_LocalScale: {x: 0.05, y: 0.05, z: 0.05} + m_Children: [] + m_Father: {fileID: 314914312} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1850403359 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1850403361} + - component: {fileID: 1850403360} + m_Layer: 0 + m_Name: tree (002) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1850403360 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1850403359} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 881ec2dd8ae9af549b6c916c2cf8e5de, type: 3} + m_Name: + m_EditorClassIdentifier: + speed: 1 + LSystemPath: Assets/LSystem/ShadowModel.txt + steps: 1 + environment: {fileID: 335996587} + shadowStrength: 20 + lookForLightAngle: 40 + lookForLightLength: 1 + obj: {fileID: 3132964252630352729, guid: 537804071d025f14d907bbea26a5b603, type: 3} + flower: {fileID: 3090520685961823314, guid: 58618c794bd4d4878b1c295f585a530d, type: 3} + leaf: {fileID: -927199367670048503, guid: 8d0c2fec8c571c349b438fde39c3938e, type: 3} + angle: 30 +--- !u!4 &1850403361 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1850403359} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2076165847 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2076165850} + - component: {fileID: 2076165849} + - component: {fileID: 2076165848} + - component: {fileID: 2076165851} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &2076165848 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2076165847} + m_Enabled: 1 +--- !u!20 &2076165849 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2076165847} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &2076165850 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2076165847} + m_LocalRotation: {x: -0.077828385, y: 0.9212198, z: -0.24684015, w: -0.29045945} + m_LocalPosition: {x: 5.406915, y: 10.313913, z: 35.088966} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 314914312} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 30, y: 215, z: 0} +--- !u!114 &2076165851 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2076165847} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: be76e5f14cfee674cb30b491fb72b09b, type: 3} + m_Name: + m_EditorClassIdentifier: + boost: 3.5 + positionLerpTime: 0.2 + mouseSensitivityCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.5 + inSlope: 0 + outSlope: 5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 2.5 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + rotationLerpTime: 0.01 + invertY: 0 diff --git a/Unity Project/Assets/Scenes/PipeModel.unity.meta b/Unity Project/Assets/Scenes/PipeModel.unity.meta new file mode 100644 index 0000000..84b5eac --- /dev/null +++ b/Unity Project/Assets/Scenes/PipeModel.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: bf68733670e512e4f8fcab737da0f141 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Scenes/SampleScene.unity b/Unity Project/Assets/Scenes/SampleScene.unity new file mode 100644 index 0000000..a669fa1 --- /dev/null +++ b/Unity Project/Assets/Scenes/SampleScene.unity @@ -0,0 +1,682 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 705507994} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &705507993 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 705507995} + - component: {fileID: 705507994} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &705507994 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 705507993} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 1 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &705507995 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 705507993} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &963194225 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 963194228} + - component: {fileID: 963194227} + - component: {fileID: 963194226} + - component: {fileID: 963194229} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &963194226 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 963194225} + m_Enabled: 1 +--- !u!20 &963194227 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 963194225} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &963194228 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 963194225} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &963194229 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 963194225} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: be76e5f14cfee674cb30b491fb72b09b, type: 3} + m_Name: + m_EditorClassIdentifier: + boost: 3.5 + positionLerpTime: 0.2 + mouseSensitivityCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.5 + inSlope: 0 + outSlope: 5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 2.5 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + rotationLerpTime: 0.01 + invertY: 0 +--- !u!43 &1031237511 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 1440 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 183 + localAABB: + m_Center: {x: 1.4258333, y: 0, z: 0.07906409} + m_Extent: {x: 1.4258333, y: 0.203, z: 0.083564095} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b500b600b200b600b300b200b400b500b200b100b400b200590058005500560059005500580057005500570054005500b200b300af00b300b000af00b100b200af00ae00b100af00560055005200530056005200550054005200540051005200af00b000ac00b000ad00ac00ae00af00ac00ab00ae00ac00530052004f00500053004f00520051004f0051004e004f00ac00ad00a900ad00aa00a900ab00ac00a900a800ab00a90050004f004c004d0050004c004f004e004c004e004b004c00a900aa00a600aa00a700a600a800a900a600a500a800a6004d004c0049004a004d0049004c004b0049004b0048004900a600a700a300a700a400a300a500a600a300a200a500a3004a004900460047004a004600490048004600480045004600a300a400a000a400a100a000a200a300a0009f00a200a000470046004300440047004300460045004300450042004300a000a1009d00a1009e009d009f00a0009d009c009f009d0044004300400041004400400043004200400042003f0040009d009e009a009e009b009a009c009d009a0099009c009a00410040003d003e0041003d0040003f003d003f003c003d009a009b0097009b009800970099009a0097009600990097003e003d003a003b003e003a003d003c003a003c0039003a009700980094009800950094009600970094009300960094003b003a00370038003b0037003a0039003700390036003700940095009100950092009100930094009100900093009100380037003400350038003400370036003400360033003400910092008e0092008f008e00900091008e008d0090008e003500340031003200350031003400330031003300300031008e008f008b008f008c008b008d008e008b008a008d008b00320031002e002f0032002e00310030002e0030002d002e008b008c0088008c00890088008a008b00880087008a0088002f002e002b002c002f002b002e002d002b002d002a002b008800890085008900860085008700880085008400870085002c002b00280029002c0028002b002a0028002a0027002800850086008200860083008200840085008200810084008200290028002500260029002500280027002500270024002500820083007f00830080007f00810082007f007e0081007f002600250022002300260022002500240022002400210022007f0080007c0080007d007c007e007f007c007b007e007c00230022001f00200023001f00220021001f0021001e001f007c007d0079007d007a0079007b007c00790078007b00790020001f001c001d0020001c001f001e001c001e001b001c0079007a0076007a00770076007800790076007500780076001d001c0019001a001d0019001c001b0019001b00180019007600770073007700740073007500760073007200750073001a001900160017001a0016001900180016001800150016007300740070007400710070007200730070006f0072007000170016001300140017001300160015001300150012001300700071006d0071006e006d006f0070006d006c006f006d0014001300100011001400100013001200100012000f0010006d006e006a006e006b006a006c006d006a0069006c006a00110010000d000e0011000d0010000f000d000f000c000d006a006b0067006b006800670069006a0067006600690067000e000d000a000b000e000a000d000c000a000c0009000a006700680064006800650064006600670064006300660064000b000a00070008000b0007000a0009000700090006000700640065006100650062006100630064006100600063006100080007000400050008000400070006000400060003000400610062005e0062005f005e00600061005e005d0060005e00050004000100020005000100040003000100030000000100 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 186 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 12 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 24 + format: 0 + dimension: 4 + - stream: 0 + offset: 40 + format: 0 + dimension: 2 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 8928 + _typelessdata: 0000000000000000bd7493bbd9d83ebdd2b87f3f0000000000000000b81e853e000000000000803f000000000000000000000000000000000ad7233c54d57bbe5b5106343823783f00000000b81e853e000000000000803f00000000000000000000000000000000bd7493bbd9d83ebdd2b87fbf0000000000000000b81e853e000000000000803f0000000000000000fd62c93dd84b963ba44cb83b6b19a1bdc5de793f0bab4f3e00000000b81e853e000000000000803ffd62c93dd84b963bfd62c93d00000000aa85a73cdae73abe0000000013b37b3f00000000b81e853e000000000000803ffd62c93d00000000fd62c93dd84b96bba44cb83b6b19a1bdc5de79bf0bab4f3e00000000b81e853e000000000000803ffd62c93dd84b96bbfd62493e9ac38c3c0a10853ccf4d1cbe8c85413fb4f7223f00000000b81e853e000000000000803ffd62493e9ac38c3cfd62493e00000000dfe6023d657f24be00000000deac7c3f00000000b81e853e000000000000803ffd62493e00000000fd62493e9ac38cbc0a10853ccf4d1cbe8c8541bfb3f7223f00000000b81e853e000000000000803ffd62493e9ac38cbc3e0a973ec8a2133d6315df3c61ef2dbe9ecdf53e9b515c3f00000000b81e853e000000000000803f3e0a973ec8a2133d3e0a973e000000000458353d716b1dbe2fd198b1f7f47c3f00000000b81e853e000000000000803f3e0a973e000000003e0a973ec8a213bd6315df3c61ef2dbe9ecdf5be9b515c3f00000000b81e853e000000000000803f3e0a973ec8a213bdfd62c93e4166733d59911d3dded92abe873ea73e4c286e3f00000000b81e853e000000000000803ffd62c93e4166733dfd62c93e000000006a0c6a3d67da19be0000000010187d3f00000000b81e853e000000000000803ffd62c93e00000000fd62c93e416673bd59911d3ddfd92abe873ea7be4c286e3f00000000b81e853e000000000000803ffd62c93e416673bdbcbbfb3e0243af3d171c4c3d14d424be29037d3eb79d743f00000000b81e853e000000000000803fbcbbfb3e0243af3dbcbbfb3e000000001afd8f3d726816beedb88db130397d3f00000000b81e853e000000000000803fbcbbfb3e00000000bcbbfb3e0243afbd171c4c3d14d424be2a037dbeb79d743f00000000b81e853e000000000000803fbcbbfb3e0243afbd3e0a173ff2ede63d05aa7a3dbfe41dbe75494f3eaa92773f00000000b81e853e000000000000803f3e0a173ff2ede63d3e0a173f00000000c20bab3d1cc811beadc75cb177647d3f00000000b81e853e000000000000803f3e0a173f000000003e0a173ff2ede6bd05aa7a3dbfe41dbe75494fbeaa92773f00000000b81e853e000000000000803f3e0a173ff2ede6bd9d36303f6f900e3ef15b943d8ab915be589e333e5c3c793f00000000b81e853e000000000000803f9d36303f6f900e3e9d36303f0000000043adc53d755a0bbea97c36b1509e7d3f00000000b81e853e000000000000803f9d36303f000000009d36303f6f900ebef15b943d8ab915be589e33be5c3c793f00000000b81e853e000000000000803f9d36303f6f900ebefd62493f5624273e57dfaa3d1bd60bbe3103223eb2587a3f00000000b81e853e000000000000803ffd62493f5624273efd62493f00000000ad5cdf3d65c402be7d611e316fe77d3f00000000b81e853e000000000000803ffd62493f00000000fd62493f562427be57dfaa3d1dd60bbe330322beb4587a3f00000000b81e853e000000000000803ffd62493f562427be5c8f623f21693b3e3999c03d92a2ffbdd597163e35317b3f00000000b81e853e000000000000803f5c8f623f21693b3e5c8f623f000000001195f73de58cefbd078a0f31253e7e3f00000000b81e853e000000000000803f5c8f623f000000005c8f623f21693bbe3999c03d92a2ffbdd49716be34317b3f00000000b81e853e000000000000803f5c8f623f21693bbebcbb7b3f4695493e8740d53d9d9ce2bd75680f3eade37b3f00000000b81e853e000000000000803fbcbb7b3f4695493ebcbb7b3f00000000c1e8063e6f53d4bd00000000d89e7e3f00000000b81e853e000000000000803fbcbb7b3f00000000bcbb7b3f469549be8740d53d9d9ce2bd75680fbeade37b3f00000000b81e853e000000000000803fbcbb7b3f469549be0e748a3f3bdf4f3e8788e83daad9bfbdcd8b0b3eb5797c3f00000000b81e853e000000000000803f0e748a3f3bdf4f3e0e748a3f000000008bc6103ec863b3bd30cd05b11b047f3f00000000b81e853e000000000000803f0e748a3f000000000e748a3f3bdf4fbe8788e83daad9bfbdcd8b0bbeb5797c3f00000000b81e853e000000000000803f0e748a3f3bdf4fbe3e0a973f727d4c3e4e20fa3dffa697bd5cd30a3e55ed7c3f00000000b81e853e000000000000803f3e0a973f727d4c3e3e0a973f000000006c21193e5c5e8dbdb9370ab1ad637f3f00000000b81e853e000000000000803f3e0a973f000000003e0a973f727d4cbe4e20fa3dffa697bd5cd30abe55ed7c3f00000000b81e853e000000000000803f3e0a973f727d4cbe6da0a33f0551403e82ac043eafc55abd1d380d3e592f7d3f00000000b81e853e000000000000803f6da0a33f0551403e6da0a33f00000000efb61f3e71214abda3ae133126b07f3f00000000b81e853e000000000000803f6da0a33f000000006da0a33f055140be82ac043eafc55abd1d380dbe592f7d3f00000000b81e853e000000000000803f6da0a33f055140be9d36b03f4cc9323e9d550a3ec71302bdef60113ec7467d3f00000000b81e853e000000000000803f9d36b03f4cc9323e9d36b03f000000009f44243e0242debcbc781f31e0e77f3f00000000b81e853e000000000000803f9d36b03f000000009d36b03f4cc932be9d550a3ec71302bdee6011bec7467d3f00000000b81e853e000000000000803f9d36b03f4cc932becdccbc3f57a3243e4bbb0d3ed174f7bbce93163eb2357d3f00000000b81e853e000000000000803fcdccbc3f57a3243ecdccbc3f000000000188263edbfc0ebb00000000d9ff7f3f00000000b81e853e000000000000803fcdccbc3f00000000cdccbc3f57a324be4bbb0d3ecf74f7bbce9316beb2357d3f00000000b81e853e000000000000803fcdccbc3f57a324befd62c93f9d0c163eef930e3e31609b3c44fa1c3e6ded7c3f00000000b81e853e000000000000803ffd62c93f9d0c163efd62c93f00000000833b263ed832ca3c0000000008ec7f3f00000000b81e853e000000000000803ffd62c93f00000000fd62c93f9d0c16beef930e3e32609b3c44fa1cbe6ded7c3f00000000b81e853e000000000000803ffd62c93f9d0c16be2df9d53f9632073eaeb60c3ebfe53a3d4aea243e5a637c3f00000000b81e853e000000000000803f2df9d53f9632073e2df9d53f00000000233a233e415f4e3d72fb5431c4ac7f3f00000000b81e853e000000000000803f2df9d53f000000002df9d53f963207beaeb60c3ec0e53a3d49ea24be59637c3f00000000b81e853e000000000000803f2df9d53f963207be5c8fe23f5f85f03d8a61083ebb8a8e3d6ee72e3ea39b7b3f00000000b81e853e000000000000803f5c8fe23f5f85f03d5c8fe23f0000000089c51d3eb00a963d00000000e14f7f3f00000000b81e853e000000000000803f5c8fe23f000000005c8fe23f5f85f0bd8a61083eba8a8e3d6de72ebea39b7b3f00000000b81e853e000000000000803f5c8fe23f5f85f0bd8c25ef3fcbd4d23dcadd013e9984b93da7ab3b3ede977a3f00000000b81e853e000000000000803f8c25ef3fcbd4d23d8c25ef3f00000000642a163ee3dbbe3d257a09b1cbe27e3f00000000b81e853e000000000000803f8c25ef3f000000008c25ef3fcbd4d2bdcadd013e9984b93da7ab3bbede977a3f00000000b81e853e000000000000803f8c25ef3fcbd4d2bdbcbbfb3f4caeb53dece9f23dc961de3deb404c3e8a4f793f00000000b81e853e000000000000803fbcbbfb3f4caeb53dbcbbfb3f0000000065b50c3e47bce13d00000000b0707e3f00000000b81e853e000000000000803fbcbbfb3f00000000bcbbfb3f4caeb5bdece9f23dc961de3deb404cbe8a4f793f00000000b81e853e000000000000803fbcbbfb3f4caeb5bdf6280440d86c993dbfe1de3da11ffd3d382f623ef7a9773f00000000b81e853e000000000000803ff6280440d86c993df6280440000000003eb3013ec7d1fe3dd0c8be31bb027e3f00000000b81e853e000000000000803ff628044000000000f6280440d86c99bdbfe1de3da11ffd3d362f62bef7a9773f00000000b81e853e000000000000803ff6280440d86c99bd0e740a409dd67c3d3937c83d7cd30a3eb6c97f3e6471753f00000000b81e853e000000000000803f0e740a409dd67c3d0e740a40000000003be1ea3db3270b3e000000000da07d3f00000000b81e853e000000000000803f0e740a40000000000e740a409dd67cbd3937c83d7cd30a3eb6c97fbe6471753f00000000b81e853e000000000000803f0e740a409dd67cbd26bf104040094a3d2b7faf3d5ed5133efb57943e5037723f00000000b81e853e000000000000803f26bf104040094a3d26bf1040000000006d74d03dfb3d143ed36693319e4d7d3f00000000b81e853e000000000000803f26bf10400000000026bf104040094abd2b7faf3d5ed5133efb5794be5037723f00000000b81e853e000000000000803f26bf104040094abd3e0a174061271b3dfa4e953deb2e193e694eb13e29166d3f00000000b81e853e000000000000803f3e0a174061271b3d3e0a1740000000006db9b43d8de01a3e00000000110e7d3f00000000b81e853e000000000000803f3e0a1740000000003e0a174061271bbdfa4e953deb2e193e694eb1be29166d3f00000000b81e853e000000000000803f3e0a174061271bbd56551d40bacde13c7479743de9df193e3636db3ef520643f00000000b81e853e000000000000803f56551d40bacde13c56551d4000000000a449983d266a1f3eef5608b2f8e07c3f00000000b81e853e000000000000803f56551d400000000056551d40bacde1bc7479743de9df193e3636dbbef520643f00000000b81e853e000000000000803f56551d40bacde1bc6da02340f2fa973c20be3d3d3e80133eb5f80b3f5326533f00000000b81e853e000000000000803f6da02340f2fa973c6da0234000000000d47c773d6b92223e2fa55032cfc07c3f00000000b81e853e000000000000803f6da02340000000006da02340f2fa97bc20be3d3d3e80133eb5f80bbf5326533f00000000b81e853e000000000000803f6da02340f2fa97bc85eb29405c84343cac9a073dc1fc003e9834353f44ef313f00000000b81e853e000000000000803f85eb29405c84343c85eb29400000000050623f3d2934263e37aab8b2ff9a7c3f00000000b81e853e000000000000803f85eb29400000000085eb29405c8434bcac9a073dc1fc003e983435bf44ef313f00000000b81e853e000000000000803f85eb29405c8434bc9d363040f13ba83bc57da63c0242b83d8a30613fec1fef3e00000000b81e853e000000000000803f9d363040f13ba83b9d363040000000006e76093d74e6353ef29bf333baed7b3f00000000b81e853e000000000000803f9d363040000000009d363040f13ba8bbc57da63c0242b83d8a3061bfea1fef3e00000000b81e853e000000000000803f9d363040f13ba8bbb5813640b9ed0c360dd9373c389da63da31a6e3fe265b73e00000000b81e853e000000000000803fb5813640b9ed0c36b5813640000000007b7c393cf4e1613e00000000a5b1793f00000000b81e853e000000000000803fb581364000000000b5813640b9ed0cb60dd9373c3b9da63da41a6ebfe465b73e00000000b81e853e000000000000803fb5813640b9ed0cb6cdcc3c40b9ed0c360000000000000000000000000000000000000000b81e853e000000000000803fcdcc3c40b9ed0c36cdcc3c400000000017b7d13800000000000000000000000000000000b81e853e000000000000803fcdcc3c4000000000cdcc3c40b9ed0cb60000000000000000000000000000000000000000b81e853e000000000000803fcdcc3c40b9ed0cb60000000000000000bd7493bbdad83e3dd3b87fbf0000000000000000b81e853e000000000000803f0000000000000000000000000000000000000000a9e8193ee5ff88b386177dbf00000000b81e853e000000000000803f00000000000000000000000000000000bd7493bbdad83e3dd3b87f3f0000000000000000b81e853e000000000000803f0000000000000000fd62c93dd84b963ba44cb83be0a4da3d0b9555bf3d760abf00000000b81e853e000000000000803ffd62c93dd84b963bfd62c93d000000004b342b3cd5070b3ebd223f3226a17dbf00000000b81e853e000000000000803ffd62c93d00000000fd62c93dd84b96bba44cb83be0a4da3d0b95553f3d760abf00000000b81e853e000000000000803ffd62c93dd84b96bbfd62493e9ac38c3c0a10853c286e133e3a22c3be7eca69bf00000000b81e853e000000000000803ffd62493e9ac38c3cfd62493e0000000039e2b33ca882093e0000000066ae7dbf00000000b81e853e000000000000803ffd62493e00000000fd62493e9ac38cbc0a10853c286e133e3822c33e7fca69bf00000000b81e853e000000000000803ffd62493e9ac38cbc3e0a973ec8a2133d6315df3c51a5133e05665bbed35077bf00000000b81e853e000000000000803f3e0a973ec8a2133d3e0a973e0000000042620c3df37c0b3ec43619b11f9d7dbf00000000b81e853e000000000000803f3e0a973e000000003e0a973ec8a213bd6315df3c51a5133e04665b3ed35077bf00000000b81e853e000000000000803f3e0a973ec8a213bdfd62c93e4166733d59911d3d63fb123ed79a1dbe38447abf00000000b81e853e000000000000803ffd62c93e4166733dfd62c93e00000000a816413d4ef10c3e0000000042907dbf00000000b81e853e000000000000803ffd62c93e00000000fd62c93e416673bd59911d3d63fb123ed89a1d3e3a447abf00000000b81e853e000000000000803ffd62c93e416673bdbcbbfb3e0243af3d171c4c3d3db4113e0a2801be5f547bbf00000000b81e853e000000000000803fbcbbfb3e0243af3dbcbbfb3e000000007204773d2fbd0c3e0000000011927dbf00000000b81e853e000000000000803fbcbbfb3e00000000bcbbfb3e0243afbd171c4c3d3db4113e0a28013e5f547bbf00000000b81e853e000000000000803fbcbbfb3e0243afbd3e0a173ff2ede63d05aa7a3da5fa0e3ec17ae3bd72e47bbf00000000b81e853e000000000000803f3e0a173ff2ede63d3e0a173f00000000e190963d79710a3e07015d314aa67dbf00000000b81e853e000000000000803f3e0a173f000000003e0a173ff2ede6bd05aa7a3da5fa0e3ec17ae33d72e47bbf00000000b81e853e000000000000803f3e0a173ff2ede6bd9d36303f6f900e3ef15b943d52540a3e0de0d0bd5c4e7cbf00000000b81e853e000000000000803f9d36303f6f900e3e9d36303f000000006232b13d3fd8053e00000000c2cd7dbf00000000b81e853e000000000000803f9d36303f000000009d36303f6f900ebef15b943d53540a3e0de0d03d5c4e7cbf00000000b81e853e000000000000803f9d36303f6f900ebefd62493f5624273e57dfaa3df179033ea6d2c4bdaaaf7cbf00000000b81e853e000000000000803ffd62493f5624273efd62493f00000000cce1ca3d44a2fd3d7a759eb07a077ebf00000000b81e853e000000000000803ffd62493f00000000fd62493f562427be57dfaa3df079033ea3d2c43daaaf7cbf00000000b81e853e000000000000803ffd62493f562427be5c8f623f21693b3e3999c03d0a77f43da6aebcbdae127dbf00000000b81e853e000000000000803f5c8f623f21693b3e5c8f623f00000000301ae33d3388ea3d98940f31dc507ebf00000000b81e853e000000000000803f5c8f623f000000005c8f623f21693bbe3999c03d0a77f43da5aebc3daf127dbf00000000b81e853e000000000000803f5c8f623f21693bbebcbb7b3f4695493e8740d53dbfe4dc3d4024b7bd92797dbf00000000b81e853e000000000000803fbcbb7b3f4695493ebcbb7b3f00000000a156f93d6937d23d7a9e87b0d7a57ebf00000000b81e853e000000000000803fbcbb7b3f00000000bcbb7b3f469549be8740d53dbfe4dc3d4024b73d92797dbf00000000b81e853e000000000000803fbcbb7b3f469549be0e748a3f3bdf4f3e8788e83d6ef2bf3d8893b3bdfce17dbf00000000b81e853e000000000000803f0e748a3f3bdf4f3e0e748a3f000000001a89063e2383b43d86cb85b0ef007fbf00000000b81e853e000000000000803f0e748a3f000000000e748a3f3bdf4fbe8788e83d6ef2bf3d8893b33dfce17dbf00000000b81e853e000000000000803f0e748a3f3bdf4fbe3e0a973f727d4c3e4e20fa3da7ac9d3d6ed2b1bd3d457ebf00000000b81e853e000000000000803f3e0a973f727d4c3e3e0a973f00000000fbe30e3edc8d913da2328ab0465a7fbf00000000b81e853e000000000000803f3e0a973f000000003e0a973f727d4cbe4e20fa3da7ac9d3d6dd2b13d3d457ebf00000000b81e853e000000000000803f3e0a973f727d4cbe6da0a33f0551403e82ac043e87116e3d7cceb1bd54997ebf00000000b81e853e000000000000803f6da0a33f0551403e6da0a33f000000007e79153e6418543d0000000014a87fbf00000000b81e853e000000000000803f6da0a33f000000006da0a33f055140be82ac043e87116e3d7cceb13d54997ebf00000000b81e853e000000000000803f6da0a33f055140be9d36b03f4cc9323e9d550a3e99c1173da6a9b2bdfbd87ebf00000000b81e853e000000000000803f9d36b03f4cc9323e9d36b03f000000002e071a3e15cdf43c88759fb0bae27fbf00000000b81e853e000000000000803f9d36b03f000000009d36b03f4cc932be9d550a3e99c1173da6a9b23df9d87ebf00000000b81e853e000000000000803f9d36b03f4cc932becdccbc3f57a3243e4bbb0d3e47775a3c21edb3bdbffc7ebf00000000b81e853e000000000000803fcdccbc3f57a3243ecdccbc3f00000000904a1c3e3eeaac3b19cdad3017ff7fbf00000000b81e853e000000000000803fcdccbc3f00000000cdccbc3f57a324be4bbb0d3e45775a3c22edb33dbffc7ebf00000000b81e853e000000000000803fcdccbc3f57a324befd62c93f9d0c163eef930e3ede2250bc95a8b5bd60f87ebf00000000b81e853e000000000000803ffd62c93f9d0c163efd62c93f0000000012fe1b3e24ccadbc2057bf3041f17fbf00000000b81e853e000000000000803ffd62c93f00000000fd62c93f9d0c16beef930e3ede2250bc95a8b53d60f87ebf00000000b81e853e000000000000803ffd62c93f9d0c16be2df9d53f9632073eaeb60c3e6e4a1fbd1906b8bd1ec57ebf00000000b81e853e000000000000803f2df9d53f9632073e2df9d53f00000000b2fc183e51803ebd0000000015b97fbf00000000b81e853e000000000000803f2df9d53f000000002df9d53f963207beaeb60c3e6e4a1fbd1906b83d1ec57ebf00000000b81e853e000000000000803f2df9d53f963207be5c8fe23f5f85f03d8a61083e62767fbdf74dbbbd366d7ebf00000000b81e853e000000000000803f5c8fe23f5f85f03d5c8fe23f000000001888133e0d2c8dbd4d3ff0301c647fbf00000000b81e853e000000000000803f5c8fe23f000000005c8fe23f5f85f0bd8a61083e62767fbdf74dbb3d366d7ebf00000000b81e853e000000000000803f5c8fe23f5f85f0bd8c25ef3fcbd4d23dcadd013ed7aba9bd1de6bfbd60fd7dbf00000000b81e853e000000000000803f8c25ef3fcbd4d23d8c25ef3f00000000f3ec0b3ea3ebb4bdc78989b0c7ff7ebf00000000b81e853e000000000000803f8c25ef3f000000008c25ef3fcbd4d2bdcadd013ed7aba9bd1de6bf3d60fd7dbf00000000b81e853e000000000000803f8c25ef3fcbd4d2bdbcbbfb3f4caeb53dece9f23d917fcdbd835ec6bd887f7dbf00000000b81e853e000000000000803fbcbbfb3f4caeb53dbcbbfb3f00000000f477023e7c8bd6bd0000000067977ebf00000000b81e853e000000000000803fbcbbfb3f00000000bcbbfb3f4caeb5bdece9f23d917fcdbd835ec63d887f7dbf00000000b81e853e000000000000803fbcbbfb3f4caeb5bdf6280440d86c993dbfe1de3d1e46ebbdbd8ccfbd73fa7cbf00000000b81e853e000000000000803ff6280440d86c993df6280440000000009bebee3d941ff2bd1deebe3064347ebf00000000b81e853e000000000000803ff628044000000000f6280440d86c99bdbfe1de3d1e46ebbdbe8ccf3d73fa7cbf00000000b81e853e000000000000803ff6280440d86c99bd0e740a409dd67c3d3937c83d888901be70bedcbd9c707cbf00000000b81e853e000000000000803f0e740a409dd67c3d0e740a40000000005a66d63d1be003be0000000040de7dbf00000000b81e853e000000000000803f0e740a40000000000e740a409dd67cbd3937c83d888901be72bedc3d9c707cbf00000000b81e853e000000000000803f0e740a409dd67cbd26bf104040094a3d2b7faf3def7c0abe971bf0bdb6dd7bbf00000000b81e853e000000000000803f26bf104040094a3d26bf1040000000008cf9bb3d0fc50bbe00000000a49a7dbf00000000b81e853e000000000000803f26bf10400000000026bf104040094abd2b7faf3def7c0abe971bf03db6dd7bbf00000000b81e853e000000000000803f26bf104040094abd3e0a174061271b3dfa4e953dd68410bef8b906be85307bbf00000000b81e853e000000000000803f3e0a174061271b3d3e0a1740000000008c3ea03d17d010bef0dec2315a6d7dbf00000000b81e853e000000000000803f3e0a1740000000003e0a174061271bbdfa4e953dd68410bef8b9063e85307bbf00000000b81e853e000000000000803f3e0a174061271bbd56551d40bacde13c7479743daaa013be060b1ebeb6397abf00000000b81e853e000000000000803f56551d40bacde13c56551d4000000000c3ce833d971a13be000000003e587dbf00000000b81e853e000000000000803f56551d400000000056551d40bacde1bc7479743daaa013be060b1e3eb6397abf00000000b81e853e000000000000803f56551d40bacde1bc6da02340f2fa973c20be3d3d35b313beb5c345be937378bf00000000b81e853e000000000000803f6da02340f2fa973c6da023400000000011874e3dbed212be56245131d75a7dbf00000000b81e853e000000000000803f6da02340000000006da02340f2fa97bc20be3d3d35b313beb5c3453e937378bf00000000b81e853e000000000000803f6da02340f2fa97bc85eb29405c84343cac9a073de42110bef75588beb71c74bf00000000b81e853e000000000000803f85eb29405c84343c85eb2940000000008e6c163d7f6d10be904639b2de707dbf00000000b81e853e000000000000803f85eb29400000000085eb29405c8434bcac9a073de42110bef655883eb71c74bf00000000b81e853e000000000000803f85eb29405c8434bc9d363040f13ba83bc57da63c4a8600be2e98d9be0d7e65bf00000000b81e853e000000000000803f9d363040f13ba83b9d363040000000005601c13c35ae03be00000000e1df7dbf00000000b81e853e000000000000803f9d363040000000009d363040f13ba8bbc57da63c4a8600be2c98d93e0e7e65bf00000000b81e853e000000000000803f9d363040f13ba8bbb5813640b9ed0c360dd9373c792ed8bdd2b707bffe5f57bf00000000b81e853e000000000000803fb5813640b9ed0c36b5813640000000000dd9373c95fcfebd000000000f027ebf00000000b81e853e000000000000803fb581364000000000b5813640b9ed0cb60dd9373c782ed8bdd2b7073fff5f57bf00000000b81e853e000000000000803fb5813640b9ed0cb6cdcc3c40b9ed0c360000000000000000000000000000000000000000b81e853e000000000000803fcdcc3c40b9ed0c36cdcc3c40000000000000000000000000000000000000000000000000b81e853e000000000000803fcdcc3c4000000000cdcc3c40b9ed0cb60000000000000000000000000000000000000000b81e853e000000000000803fcdcc3c40b9ed0cb6 + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 1.475, y: 0, z: 0.07906409} + m_Extent: {x: 1.475, y: 0.203, z: 0.083564095} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!1 &1311014921 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1311014925} + - component: {fileID: 1311014924} + - component: {fileID: 1311014923} + - component: {fileID: 1311014922} + m_Layer: 0 + m_Name: Leaf Generator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1311014922 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1311014921} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ea4550bcec5ad4f4aba095cca2b42cb4, type: 3} + m_Name: + m_EditorClassIdentifier: + length: 3 + width: 0.21 + thickness: 0.01 + widthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 0.4106925 + value: 0.75787115 + inSlope: -1.422605 + outSlope: -1.422605 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.16974394 + - serializedVersion: 3 + time: 0.98 + value: 0 + inSlope: -0.26367244 + outSlope: -0.26367244 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.15804166 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + foldCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0.1017436 + outSlope: 0.1017436 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.51787984 + value: 0.05269096 + inSlope: -0.0037732497 + outSlope: -0.0037732497 + tangentMode: 34 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: -0.1092901 + outSlope: -0.1092901 + tangentMode: 34 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + infold: 0.03 + framesBetweenSteps: 30 + numberOfAnimationSteps: 30 + constantResolution: 1 + commentSpace: 1 + simplification: 0 + roughEdges: 0 + roughEdgesSize: 10 + numberOfBranchesPairs: 3 + showBranches: 0 + colision: 0 + colisionJoint: {fileID: 0} + maxNumberOfSteps: 30 +--- !u!23 &1311014923 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1311014921} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 9a5d8dec59e668645ae5387a1a42e0e2, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1311014924 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1311014921} + m_Mesh: {fileID: 1031237511} +--- !u!4 &1311014925 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1311014921} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Unity Project/Assets/Scenes/SampleScene.unity.meta b/Unity Project/Assets/Scenes/SampleScene.unity.meta new file mode 100644 index 0000000..952bd1e --- /dev/null +++ b/Unity Project/Assets/Scenes/SampleScene.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9fc0d4010bbf28b4594072e72b8655ab +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Scenes/SweepSurface.unity b/Unity Project/Assets/Scenes/SweepSurface.unity new file mode 100644 index 0000000..237ade5 --- /dev/null +++ b/Unity Project/Assets/Scenes/SweepSurface.unity @@ -0,0 +1,682 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 705507994} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &705507993 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 705507995} + - component: {fileID: 705507994} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &705507994 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 705507993} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 1 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &705507995 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 705507993} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!43 &706333106 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 1440 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 183 + localAABB: + m_Center: {x: 1.4258333, y: 0, z: 0.07906409} + m_Extent: {x: 1.4258333, y: 0.203, z: 0.083564095} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b500b600b200b600b300b200b400b500b200b100b400b200590058005500560059005500580057005500570054005500b200b300af00b300b000af00b100b200af00ae00b100af00560055005200530056005200550054005200540051005200af00b000ac00b000ad00ac00ae00af00ac00ab00ae00ac00530052004f00500053004f00520051004f0051004e004f00ac00ad00a900ad00aa00a900ab00ac00a900a800ab00a90050004f004c004d0050004c004f004e004c004e004b004c00a900aa00a600aa00a700a600a800a900a600a500a800a6004d004c0049004a004d0049004c004b0049004b0048004900a600a700a300a700a400a300a500a600a300a200a500a3004a004900460047004a004600490048004600480045004600a300a400a000a400a100a000a200a300a0009f00a200a000470046004300440047004300460045004300450042004300a000a1009d00a1009e009d009f00a0009d009c009f009d0044004300400041004400400043004200400042003f0040009d009e009a009e009b009a009c009d009a0099009c009a00410040003d003e0041003d0040003f003d003f003c003d009a009b0097009b009800970099009a0097009600990097003e003d003a003b003e003a003d003c003a003c0039003a009700980094009800950094009600970094009300960094003b003a00370038003b0037003a0039003700390036003700940095009100950092009100930094009100900093009100380037003400350038003400370036003400360033003400910092008e0092008f008e00900091008e008d0090008e003500340031003200350031003400330031003300300031008e008f008b008f008c008b008d008e008b008a008d008b00320031002e002f0032002e00310030002e0030002d002e008b008c0088008c00890088008a008b00880087008a0088002f002e002b002c002f002b002e002d002b002d002a002b008800890085008900860085008700880085008400870085002c002b00280029002c0028002b002a0028002a0027002800850086008200860083008200840085008200810084008200290028002500260029002500280027002500270024002500820083007f00830080007f00810082007f007e0081007f002600250022002300260022002500240022002400210022007f0080007c0080007d007c007e007f007c007b007e007c00230022001f00200023001f00220021001f0021001e001f007c007d0079007d007a0079007b007c00790078007b00790020001f001c001d0020001c001f001e001c001e001b001c0079007a0076007a00770076007800790076007500780076001d001c0019001a001d0019001c001b0019001b00180019007600770073007700740073007500760073007200750073001a001900160017001a0016001900180016001800150016007300740070007400710070007200730070006f0072007000170016001300140017001300160015001300150012001300700071006d0071006e006d006f0070006d006c006f006d0014001300100011001400100013001200100012000f0010006d006e006a006e006b006a006c006d006a0069006c006a00110010000d000e0011000d0010000f000d000f000c000d006a006b0067006b006800670069006a0067006600690067000e000d000a000b000e000a000d000c000a000c0009000a006700680064006800650064006600670064006300660064000b000a00070008000b0007000a0009000700090006000700640065006100650062006100630064006100600063006100080007000400050008000400070006000400060003000400610062005e0062005f005e00600061005e005d0060005e00050004000100020005000100040003000100030000000100 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 186 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 12 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 24 + format: 0 + dimension: 4 + - stream: 0 + offset: 40 + format: 0 + dimension: 2 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 8928 + _typelessdata: 0000000000000000bd7493bbd9d83ebdd2b87f3f0000000000000000b81e853e000000000000803f000000000000000000000000000000000ad7233c54d57bbe5b5106343823783f00000000b81e853e000000000000803f00000000000000000000000000000000bd7493bbd9d83ebdd2b87fbf0000000000000000b81e853e000000000000803f0000000000000000fd62c93dd84b963ba44cb83b6b19a1bdc5de793f0bab4f3e00000000b81e853e000000000000803ffd62c93dd84b963bfd62c93d00000000aa85a73cdae73abe0000000013b37b3f00000000b81e853e000000000000803ffd62c93d00000000fd62c93dd84b96bba44cb83b6b19a1bdc5de79bf0bab4f3e00000000b81e853e000000000000803ffd62c93dd84b96bbfd62493e9ac38c3c0a10853ccf4d1cbe8c85413fb4f7223f00000000b81e853e000000000000803ffd62493e9ac38c3cfd62493e00000000dfe6023d657f24be00000000deac7c3f00000000b81e853e000000000000803ffd62493e00000000fd62493e9ac38cbc0a10853ccf4d1cbe8c8541bfb3f7223f00000000b81e853e000000000000803ffd62493e9ac38cbc3e0a973ec8a2133d6315df3c61ef2dbe9ecdf53e9b515c3f00000000b81e853e000000000000803f3e0a973ec8a2133d3e0a973e000000000458353d716b1dbe2fd198b1f7f47c3f00000000b81e853e000000000000803f3e0a973e000000003e0a973ec8a213bd6315df3c61ef2dbe9ecdf5be9b515c3f00000000b81e853e000000000000803f3e0a973ec8a213bdfd62c93e4166733d59911d3dded92abe873ea73e4c286e3f00000000b81e853e000000000000803ffd62c93e4166733dfd62c93e000000006a0c6a3d67da19be0000000010187d3f00000000b81e853e000000000000803ffd62c93e00000000fd62c93e416673bd59911d3ddfd92abe873ea7be4c286e3f00000000b81e853e000000000000803ffd62c93e416673bdbcbbfb3e0243af3d171c4c3d14d424be29037d3eb79d743f00000000b81e853e000000000000803fbcbbfb3e0243af3dbcbbfb3e000000001afd8f3d726816beedb88db130397d3f00000000b81e853e000000000000803fbcbbfb3e00000000bcbbfb3e0243afbd171c4c3d14d424be2a037dbeb79d743f00000000b81e853e000000000000803fbcbbfb3e0243afbd3e0a173ff2ede63d05aa7a3dbfe41dbe75494f3eaa92773f00000000b81e853e000000000000803f3e0a173ff2ede63d3e0a173f00000000c20bab3d1cc811beadc75cb177647d3f00000000b81e853e000000000000803f3e0a173f000000003e0a173ff2ede6bd05aa7a3dbfe41dbe75494fbeaa92773f00000000b81e853e000000000000803f3e0a173ff2ede6bd9d36303f6f900e3ef15b943d8ab915be589e333e5c3c793f00000000b81e853e000000000000803f9d36303f6f900e3e9d36303f0000000043adc53d755a0bbea97c36b1509e7d3f00000000b81e853e000000000000803f9d36303f000000009d36303f6f900ebef15b943d8ab915be589e33be5c3c793f00000000b81e853e000000000000803f9d36303f6f900ebefd62493f5624273e57dfaa3d1bd60bbe3103223eb2587a3f00000000b81e853e000000000000803ffd62493f5624273efd62493f00000000ad5cdf3d65c402be7d611e316fe77d3f00000000b81e853e000000000000803ffd62493f00000000fd62493f562427be57dfaa3d1dd60bbe330322beb4587a3f00000000b81e853e000000000000803ffd62493f562427be5c8f623f21693b3e3999c03d92a2ffbdd597163e35317b3f00000000b81e853e000000000000803f5c8f623f21693b3e5c8f623f000000001195f73de58cefbd078a0f31253e7e3f00000000b81e853e000000000000803f5c8f623f000000005c8f623f21693bbe3999c03d92a2ffbdd49716be34317b3f00000000b81e853e000000000000803f5c8f623f21693bbebcbb7b3f4695493e8740d53d9d9ce2bd75680f3eade37b3f00000000b81e853e000000000000803fbcbb7b3f4695493ebcbb7b3f00000000c1e8063e6f53d4bd00000000d89e7e3f00000000b81e853e000000000000803fbcbb7b3f00000000bcbb7b3f469549be8740d53d9d9ce2bd75680fbeade37b3f00000000b81e853e000000000000803fbcbb7b3f469549be0e748a3f3bdf4f3e8788e83daad9bfbdcd8b0b3eb5797c3f00000000b81e853e000000000000803f0e748a3f3bdf4f3e0e748a3f000000008bc6103ec863b3bd30cd05b11b047f3f00000000b81e853e000000000000803f0e748a3f000000000e748a3f3bdf4fbe8788e83daad9bfbdcd8b0bbeb5797c3f00000000b81e853e000000000000803f0e748a3f3bdf4fbe3e0a973f727d4c3e4e20fa3dffa697bd5cd30a3e55ed7c3f00000000b81e853e000000000000803f3e0a973f727d4c3e3e0a973f000000006c21193e5c5e8dbdb9370ab1ad637f3f00000000b81e853e000000000000803f3e0a973f000000003e0a973f727d4cbe4e20fa3dffa697bd5cd30abe55ed7c3f00000000b81e853e000000000000803f3e0a973f727d4cbe6da0a33f0551403e82ac043eafc55abd1d380d3e592f7d3f00000000b81e853e000000000000803f6da0a33f0551403e6da0a33f00000000efb61f3e71214abda3ae133126b07f3f00000000b81e853e000000000000803f6da0a33f000000006da0a33f055140be82ac043eafc55abd1d380dbe592f7d3f00000000b81e853e000000000000803f6da0a33f055140be9d36b03f4cc9323e9d550a3ec71302bdef60113ec7467d3f00000000b81e853e000000000000803f9d36b03f4cc9323e9d36b03f000000009f44243e0242debcbc781f31e0e77f3f00000000b81e853e000000000000803f9d36b03f000000009d36b03f4cc932be9d550a3ec71302bdee6011bec7467d3f00000000b81e853e000000000000803f9d36b03f4cc932becdccbc3f57a3243e4bbb0d3ed174f7bbce93163eb2357d3f00000000b81e853e000000000000803fcdccbc3f57a3243ecdccbc3f000000000188263edbfc0ebb00000000d9ff7f3f00000000b81e853e000000000000803fcdccbc3f00000000cdccbc3f57a324be4bbb0d3ecf74f7bbce9316beb2357d3f00000000b81e853e000000000000803fcdccbc3f57a324befd62c93f9d0c163eef930e3e31609b3c44fa1c3e6ded7c3f00000000b81e853e000000000000803ffd62c93f9d0c163efd62c93f00000000833b263ed832ca3c0000000008ec7f3f00000000b81e853e000000000000803ffd62c93f00000000fd62c93f9d0c16beef930e3e32609b3c44fa1cbe6ded7c3f00000000b81e853e000000000000803ffd62c93f9d0c16be2df9d53f9632073eaeb60c3ebfe53a3d4aea243e5a637c3f00000000b81e853e000000000000803f2df9d53f9632073e2df9d53f00000000233a233e415f4e3d72fb5431c4ac7f3f00000000b81e853e000000000000803f2df9d53f000000002df9d53f963207beaeb60c3ec0e53a3d49ea24be59637c3f00000000b81e853e000000000000803f2df9d53f963207be5c8fe23f5f85f03d8a61083ebb8a8e3d6ee72e3ea39b7b3f00000000b81e853e000000000000803f5c8fe23f5f85f03d5c8fe23f0000000089c51d3eb00a963d00000000e14f7f3f00000000b81e853e000000000000803f5c8fe23f000000005c8fe23f5f85f0bd8a61083eba8a8e3d6de72ebea39b7b3f00000000b81e853e000000000000803f5c8fe23f5f85f0bd8c25ef3fcbd4d23dcadd013e9984b93da7ab3b3ede977a3f00000000b81e853e000000000000803f8c25ef3fcbd4d23d8c25ef3f00000000642a163ee3dbbe3d257a09b1cbe27e3f00000000b81e853e000000000000803f8c25ef3f000000008c25ef3fcbd4d2bdcadd013e9984b93da7ab3bbede977a3f00000000b81e853e000000000000803f8c25ef3fcbd4d2bdbcbbfb3f4caeb53dece9f23dc961de3deb404c3e8a4f793f00000000b81e853e000000000000803fbcbbfb3f4caeb53dbcbbfb3f0000000065b50c3e47bce13d00000000b0707e3f00000000b81e853e000000000000803fbcbbfb3f00000000bcbbfb3f4caeb5bdece9f23dc961de3deb404cbe8a4f793f00000000b81e853e000000000000803fbcbbfb3f4caeb5bdf6280440d86c993dbfe1de3da11ffd3d382f623ef7a9773f00000000b81e853e000000000000803ff6280440d86c993df6280440000000003eb3013ec7d1fe3dd0c8be31bb027e3f00000000b81e853e000000000000803ff628044000000000f6280440d86c99bdbfe1de3da11ffd3d362f62bef7a9773f00000000b81e853e000000000000803ff6280440d86c99bd0e740a409dd67c3d3937c83d7cd30a3eb6c97f3e6471753f00000000b81e853e000000000000803f0e740a409dd67c3d0e740a40000000003be1ea3db3270b3e000000000da07d3f00000000b81e853e000000000000803f0e740a40000000000e740a409dd67cbd3937c83d7cd30a3eb6c97fbe6471753f00000000b81e853e000000000000803f0e740a409dd67cbd26bf104040094a3d2b7faf3d5ed5133efb57943e5037723f00000000b81e853e000000000000803f26bf104040094a3d26bf1040000000006d74d03dfb3d143ed36693319e4d7d3f00000000b81e853e000000000000803f26bf10400000000026bf104040094abd2b7faf3d5ed5133efb5794be5037723f00000000b81e853e000000000000803f26bf104040094abd3e0a174061271b3dfa4e953deb2e193e694eb13e29166d3f00000000b81e853e000000000000803f3e0a174061271b3d3e0a1740000000006db9b43d8de01a3e00000000110e7d3f00000000b81e853e000000000000803f3e0a1740000000003e0a174061271bbdfa4e953deb2e193e694eb1be29166d3f00000000b81e853e000000000000803f3e0a174061271bbd56551d40bacde13c7479743de9df193e3636db3ef520643f00000000b81e853e000000000000803f56551d40bacde13c56551d4000000000a449983d266a1f3eef5608b2f8e07c3f00000000b81e853e000000000000803f56551d400000000056551d40bacde1bc7479743de9df193e3636dbbef520643f00000000b81e853e000000000000803f56551d40bacde1bc6da02340f2fa973c20be3d3d3e80133eb5f80b3f5326533f00000000b81e853e000000000000803f6da02340f2fa973c6da0234000000000d47c773d6b92223e2fa55032cfc07c3f00000000b81e853e000000000000803f6da02340000000006da02340f2fa97bc20be3d3d3e80133eb5f80bbf5326533f00000000b81e853e000000000000803f6da02340f2fa97bc85eb29405c84343cac9a073dc1fc003e9834353f44ef313f00000000b81e853e000000000000803f85eb29405c84343c85eb29400000000050623f3d2934263e37aab8b2ff9a7c3f00000000b81e853e000000000000803f85eb29400000000085eb29405c8434bcac9a073dc1fc003e983435bf44ef313f00000000b81e853e000000000000803f85eb29405c8434bc9d363040f13ba83bc57da63c0242b83d8a30613fec1fef3e00000000b81e853e000000000000803f9d363040f13ba83b9d363040000000006e76093d74e6353ef29bf333baed7b3f00000000b81e853e000000000000803f9d363040000000009d363040f13ba8bbc57da63c0242b83d8a3061bfea1fef3e00000000b81e853e000000000000803f9d363040f13ba8bbb5813640b9ed0c360dd9373c389da63da31a6e3fe265b73e00000000b81e853e000000000000803fb5813640b9ed0c36b5813640000000007b7c393cf4e1613e00000000a5b1793f00000000b81e853e000000000000803fb581364000000000b5813640b9ed0cb60dd9373c3b9da63da41a6ebfe465b73e00000000b81e853e000000000000803fb5813640b9ed0cb6cdcc3c40b9ed0c360000000000000000000000000000000000000000b81e853e000000000000803fcdcc3c40b9ed0c36cdcc3c400000000017b7d13800000000000000000000000000000000b81e853e000000000000803fcdcc3c4000000000cdcc3c40b9ed0cb60000000000000000000000000000000000000000b81e853e000000000000803fcdcc3c40b9ed0cb60000000000000000bd7493bbdad83e3dd3b87fbf0000000000000000b81e853e000000000000803f0000000000000000000000000000000000000000a9e8193ee5ff88b386177dbf00000000b81e853e000000000000803f00000000000000000000000000000000bd7493bbdad83e3dd3b87f3f0000000000000000b81e853e000000000000803f0000000000000000fd62c93dd84b963ba44cb83be0a4da3d0b9555bf3d760abf00000000b81e853e000000000000803ffd62c93dd84b963bfd62c93d000000004b342b3cd5070b3ebd223f3226a17dbf00000000b81e853e000000000000803ffd62c93d00000000fd62c93dd84b96bba44cb83be0a4da3d0b95553f3d760abf00000000b81e853e000000000000803ffd62c93dd84b96bbfd62493e9ac38c3c0a10853c286e133e3a22c3be7eca69bf00000000b81e853e000000000000803ffd62493e9ac38c3cfd62493e0000000039e2b33ca882093e0000000066ae7dbf00000000b81e853e000000000000803ffd62493e00000000fd62493e9ac38cbc0a10853c286e133e3822c33e7fca69bf00000000b81e853e000000000000803ffd62493e9ac38cbc3e0a973ec8a2133d6315df3c51a5133e05665bbed35077bf00000000b81e853e000000000000803f3e0a973ec8a2133d3e0a973e0000000042620c3df37c0b3ec43619b11f9d7dbf00000000b81e853e000000000000803f3e0a973e000000003e0a973ec8a213bd6315df3c51a5133e04665b3ed35077bf00000000b81e853e000000000000803f3e0a973ec8a213bdfd62c93e4166733d59911d3d63fb123ed79a1dbe38447abf00000000b81e853e000000000000803ffd62c93e4166733dfd62c93e00000000a816413d4ef10c3e0000000042907dbf00000000b81e853e000000000000803ffd62c93e00000000fd62c93e416673bd59911d3d63fb123ed89a1d3e3a447abf00000000b81e853e000000000000803ffd62c93e416673bdbcbbfb3e0243af3d171c4c3d3db4113e0a2801be5f547bbf00000000b81e853e000000000000803fbcbbfb3e0243af3dbcbbfb3e000000007204773d2fbd0c3e0000000011927dbf00000000b81e853e000000000000803fbcbbfb3e00000000bcbbfb3e0243afbd171c4c3d3db4113e0a28013e5f547bbf00000000b81e853e000000000000803fbcbbfb3e0243afbd3e0a173ff2ede63d05aa7a3da5fa0e3ec17ae3bd72e47bbf00000000b81e853e000000000000803f3e0a173ff2ede63d3e0a173f00000000e190963d79710a3e07015d314aa67dbf00000000b81e853e000000000000803f3e0a173f000000003e0a173ff2ede6bd05aa7a3da5fa0e3ec17ae33d72e47bbf00000000b81e853e000000000000803f3e0a173ff2ede6bd9d36303f6f900e3ef15b943d52540a3e0de0d0bd5c4e7cbf00000000b81e853e000000000000803f9d36303f6f900e3e9d36303f000000006232b13d3fd8053e00000000c2cd7dbf00000000b81e853e000000000000803f9d36303f000000009d36303f6f900ebef15b943d53540a3e0de0d03d5c4e7cbf00000000b81e853e000000000000803f9d36303f6f900ebefd62493f5624273e57dfaa3df179033ea6d2c4bdaaaf7cbf00000000b81e853e000000000000803ffd62493f5624273efd62493f00000000cce1ca3d44a2fd3d7a759eb07a077ebf00000000b81e853e000000000000803ffd62493f00000000fd62493f562427be57dfaa3df079033ea3d2c43daaaf7cbf00000000b81e853e000000000000803ffd62493f562427be5c8f623f21693b3e3999c03d0a77f43da6aebcbdae127dbf00000000b81e853e000000000000803f5c8f623f21693b3e5c8f623f00000000301ae33d3388ea3d98940f31dc507ebf00000000b81e853e000000000000803f5c8f623f000000005c8f623f21693bbe3999c03d0a77f43da5aebc3daf127dbf00000000b81e853e000000000000803f5c8f623f21693bbebcbb7b3f4695493e8740d53dbfe4dc3d4024b7bd92797dbf00000000b81e853e000000000000803fbcbb7b3f4695493ebcbb7b3f00000000a156f93d6937d23d7a9e87b0d7a57ebf00000000b81e853e000000000000803fbcbb7b3f00000000bcbb7b3f469549be8740d53dbfe4dc3d4024b73d92797dbf00000000b81e853e000000000000803fbcbb7b3f469549be0e748a3f3bdf4f3e8788e83d6ef2bf3d8893b3bdfce17dbf00000000b81e853e000000000000803f0e748a3f3bdf4f3e0e748a3f000000001a89063e2383b43d86cb85b0ef007fbf00000000b81e853e000000000000803f0e748a3f000000000e748a3f3bdf4fbe8788e83d6ef2bf3d8893b33dfce17dbf00000000b81e853e000000000000803f0e748a3f3bdf4fbe3e0a973f727d4c3e4e20fa3da7ac9d3d6ed2b1bd3d457ebf00000000b81e853e000000000000803f3e0a973f727d4c3e3e0a973f00000000fbe30e3edc8d913da2328ab0465a7fbf00000000b81e853e000000000000803f3e0a973f000000003e0a973f727d4cbe4e20fa3da7ac9d3d6dd2b13d3d457ebf00000000b81e853e000000000000803f3e0a973f727d4cbe6da0a33f0551403e82ac043e87116e3d7cceb1bd54997ebf00000000b81e853e000000000000803f6da0a33f0551403e6da0a33f000000007e79153e6418543d0000000014a87fbf00000000b81e853e000000000000803f6da0a33f000000006da0a33f055140be82ac043e87116e3d7cceb13d54997ebf00000000b81e853e000000000000803f6da0a33f055140be9d36b03f4cc9323e9d550a3e99c1173da6a9b2bdfbd87ebf00000000b81e853e000000000000803f9d36b03f4cc9323e9d36b03f000000002e071a3e15cdf43c88759fb0bae27fbf00000000b81e853e000000000000803f9d36b03f000000009d36b03f4cc932be9d550a3e99c1173da6a9b23df9d87ebf00000000b81e853e000000000000803f9d36b03f4cc932becdccbc3f57a3243e4bbb0d3e47775a3c21edb3bdbffc7ebf00000000b81e853e000000000000803fcdccbc3f57a3243ecdccbc3f00000000904a1c3e3eeaac3b19cdad3017ff7fbf00000000b81e853e000000000000803fcdccbc3f00000000cdccbc3f57a324be4bbb0d3e45775a3c22edb33dbffc7ebf00000000b81e853e000000000000803fcdccbc3f57a324befd62c93f9d0c163eef930e3ede2250bc95a8b5bd60f87ebf00000000b81e853e000000000000803ffd62c93f9d0c163efd62c93f0000000012fe1b3e24ccadbc2057bf3041f17fbf00000000b81e853e000000000000803ffd62c93f00000000fd62c93f9d0c16beef930e3ede2250bc95a8b53d60f87ebf00000000b81e853e000000000000803ffd62c93f9d0c16be2df9d53f9632073eaeb60c3e6e4a1fbd1906b8bd1ec57ebf00000000b81e853e000000000000803f2df9d53f9632073e2df9d53f00000000b2fc183e51803ebd0000000015b97fbf00000000b81e853e000000000000803f2df9d53f000000002df9d53f963207beaeb60c3e6e4a1fbd1906b83d1ec57ebf00000000b81e853e000000000000803f2df9d53f963207be5c8fe23f5f85f03d8a61083e62767fbdf74dbbbd366d7ebf00000000b81e853e000000000000803f5c8fe23f5f85f03d5c8fe23f000000001888133e0d2c8dbd4d3ff0301c647fbf00000000b81e853e000000000000803f5c8fe23f000000005c8fe23f5f85f0bd8a61083e62767fbdf74dbb3d366d7ebf00000000b81e853e000000000000803f5c8fe23f5f85f0bd8c25ef3fcbd4d23dcadd013ed7aba9bd1de6bfbd60fd7dbf00000000b81e853e000000000000803f8c25ef3fcbd4d23d8c25ef3f00000000f3ec0b3ea3ebb4bdc78989b0c7ff7ebf00000000b81e853e000000000000803f8c25ef3f000000008c25ef3fcbd4d2bdcadd013ed7aba9bd1de6bf3d60fd7dbf00000000b81e853e000000000000803f8c25ef3fcbd4d2bdbcbbfb3f4caeb53dece9f23d917fcdbd835ec6bd887f7dbf00000000b81e853e000000000000803fbcbbfb3f4caeb53dbcbbfb3f00000000f477023e7c8bd6bd0000000067977ebf00000000b81e853e000000000000803fbcbbfb3f00000000bcbbfb3f4caeb5bdece9f23d917fcdbd835ec63d887f7dbf00000000b81e853e000000000000803fbcbbfb3f4caeb5bdf6280440d86c993dbfe1de3d1e46ebbdbd8ccfbd73fa7cbf00000000b81e853e000000000000803ff6280440d86c993df6280440000000009bebee3d941ff2bd1deebe3064347ebf00000000b81e853e000000000000803ff628044000000000f6280440d86c99bdbfe1de3d1e46ebbdbe8ccf3d73fa7cbf00000000b81e853e000000000000803ff6280440d86c99bd0e740a409dd67c3d3937c83d888901be70bedcbd9c707cbf00000000b81e853e000000000000803f0e740a409dd67c3d0e740a40000000005a66d63d1be003be0000000040de7dbf00000000b81e853e000000000000803f0e740a40000000000e740a409dd67cbd3937c83d888901be72bedc3d9c707cbf00000000b81e853e000000000000803f0e740a409dd67cbd26bf104040094a3d2b7faf3def7c0abe971bf0bdb6dd7bbf00000000b81e853e000000000000803f26bf104040094a3d26bf1040000000008cf9bb3d0fc50bbe00000000a49a7dbf00000000b81e853e000000000000803f26bf10400000000026bf104040094abd2b7faf3def7c0abe971bf03db6dd7bbf00000000b81e853e000000000000803f26bf104040094abd3e0a174061271b3dfa4e953dd68410bef8b906be85307bbf00000000b81e853e000000000000803f3e0a174061271b3d3e0a1740000000008c3ea03d17d010bef0dec2315a6d7dbf00000000b81e853e000000000000803f3e0a1740000000003e0a174061271bbdfa4e953dd68410bef8b9063e85307bbf00000000b81e853e000000000000803f3e0a174061271bbd56551d40bacde13c7479743daaa013be060b1ebeb6397abf00000000b81e853e000000000000803f56551d40bacde13c56551d4000000000c3ce833d971a13be000000003e587dbf00000000b81e853e000000000000803f56551d400000000056551d40bacde1bc7479743daaa013be060b1e3eb6397abf00000000b81e853e000000000000803f56551d40bacde1bc6da02340f2fa973c20be3d3d35b313beb5c345be937378bf00000000b81e853e000000000000803f6da02340f2fa973c6da023400000000011874e3dbed212be56245131d75a7dbf00000000b81e853e000000000000803f6da02340000000006da02340f2fa97bc20be3d3d35b313beb5c3453e937378bf00000000b81e853e000000000000803f6da02340f2fa97bc85eb29405c84343cac9a073de42110bef75588beb71c74bf00000000b81e853e000000000000803f85eb29405c84343c85eb2940000000008e6c163d7f6d10be904639b2de707dbf00000000b81e853e000000000000803f85eb29400000000085eb29405c8434bcac9a073de42110bef655883eb71c74bf00000000b81e853e000000000000803f85eb29405c8434bc9d363040f13ba83bc57da63c4a8600be2e98d9be0d7e65bf00000000b81e853e000000000000803f9d363040f13ba83b9d363040000000005601c13c35ae03be00000000e1df7dbf00000000b81e853e000000000000803f9d363040000000009d363040f13ba8bbc57da63c4a8600be2c98d93e0e7e65bf00000000b81e853e000000000000803f9d363040f13ba8bbb5813640b9ed0c360dd9373c792ed8bdd2b707bffe5f57bf00000000b81e853e000000000000803fb5813640b9ed0c36b5813640000000000dd9373c95fcfebd000000000f027ebf00000000b81e853e000000000000803fb581364000000000b5813640b9ed0cb60dd9373c782ed8bdd2b7073fff5f57bf00000000b81e853e000000000000803fb5813640b9ed0cb6cdcc3c40b9ed0c360000000000000000000000000000000000000000b81e853e000000000000803fcdcc3c40b9ed0c36cdcc3c40000000000000000000000000000000000000000000000000b81e853e000000000000803fcdcc3c4000000000cdcc3c40b9ed0cb60000000000000000000000000000000000000000b81e853e000000000000803fcdcc3c40b9ed0cb6 + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 1.475, y: 0, z: 0.07906409} + m_Extent: {x: 1.475, y: 0.203, z: 0.083564095} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!1 &963194225 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 963194228} + - component: {fileID: 963194227} + - component: {fileID: 963194226} + - component: {fileID: 963194229} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &963194226 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 963194225} + m_Enabled: 1 +--- !u!20 &963194227 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 963194225} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &963194228 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 963194225} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &963194229 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 963194225} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: be76e5f14cfee674cb30b491fb72b09b, type: 3} + m_Name: + m_EditorClassIdentifier: + boost: 3.5 + positionLerpTime: 0.2 + mouseSensitivityCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.5 + inSlope: 0 + outSlope: 5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 2.5 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + rotationLerpTime: 0.01 + invertY: 0 +--- !u!1 &1311014921 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1311014925} + - component: {fileID: 1311014924} + - component: {fileID: 1311014923} + - component: {fileID: 1311014922} + m_Layer: 0 + m_Name: Leaf Generator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1311014922 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1311014921} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ea4550bcec5ad4f4aba095cca2b42cb4, type: 3} + m_Name: + m_EditorClassIdentifier: + length: 3 + width: 0.21 + thickness: 0.01 + widthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 0.4106925 + value: 0.75787115 + inSlope: -1.422605 + outSlope: -1.422605 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.16974394 + - serializedVersion: 3 + time: 0.98 + value: 0 + inSlope: -0.26367244 + outSlope: -0.26367244 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.15804166 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + foldCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0.1017436 + outSlope: 0.1017436 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.51787984 + value: 0.05269096 + inSlope: -0.0037732497 + outSlope: -0.0037732497 + tangentMode: 34 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: -0.1092901 + outSlope: -0.1092901 + tangentMode: 34 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + infold: 0.03 + framesBetweenSteps: 30 + numberOfAnimationSteps: 30 + constantResolution: 1 + commentSpace: 1 + simplification: 0 + roughEdges: 0 + roughEdgesSize: 10 + numberOfBranchesPairs: 3 + showBranches: 0 + colision: 0 + colisionJoint: {fileID: 0} + maxNumberOfSteps: 30 +--- !u!23 &1311014923 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1311014921} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1311014924 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1311014921} + m_Mesh: {fileID: 706333106} +--- !u!4 &1311014925 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1311014921} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Unity Project/Assets/Scenes/SweepSurface.unity.meta b/Unity Project/Assets/Scenes/SweepSurface.unity.meta new file mode 100644 index 0000000..5d74cdb --- /dev/null +++ b/Unity Project/Assets/Scenes/SweepSurface.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8f16af509e28e6a41823fe485cf5bb62 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Scripts.meta b/Unity Project/Assets/Scripts.meta new file mode 100644 index 0000000..ede9b96 --- /dev/null +++ b/Unity Project/Assets/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9e7357bb137be2e468b4924e72b9e943 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Scripts/AnabaenaTurtle.cs b/Unity Project/Assets/Scripts/AnabaenaTurtle.cs new file mode 100644 index 0000000..db8bc7a --- /dev/null +++ b/Unity Project/Assets/Scripts/AnabaenaTurtle.cs @@ -0,0 +1,29 @@ +using System.Collections; +using System.Collections.Generic; +using System.IO; +using UnityEditor; +using UnityEngine; +using ConsoleLSystem; +using System; + +public class AnabaenaTurtle : TurtleLSystem { + + protected override void initLiteralInterpretation() { + + turtleInterpretation = new Dictionary>>(); + //turtleInterpretation + //loading required objects + var path = "Assets/Models/{0}.fbx"; + var bigL = (GameObject)AssetDatabase.LoadAssetAtPath(String.Format(path, "bigL"), typeof(GameObject)); + var bigR = (GameObject)AssetDatabase.LoadAssetAtPath(String.Format(path, "bigR"), typeof(GameObject)); + var l = (GameObject)AssetDatabase.LoadAssetAtPath(String.Format(path, "l"), typeof(GameObject)); + var r = (GameObject)AssetDatabase.LoadAssetAtPath(String.Format(path, "r"), typeof(GameObject)); + + //creating functions that are used for interpretation + turtleInterpretation.Add("l", (float[] args) => new Tuple(l, Matrix4x4.Translate(new Vector3(0.1f, 0, 0)) * Matrix4x4.Scale(new Vector3(0.1f, 0.1f, 0.1f)))); + turtleInterpretation.Add("r", (float[] args) => new Tuple(r, Matrix4x4.Translate(new Vector3(0.1f, 0, 0)) * Matrix4x4.Scale(new Vector3(0.1f, 0.1f, 0.1f)))); + turtleInterpretation.Add("L", (float[] args) => new Tuple(bigL, Matrix4x4.Translate(new Vector3(0.1f, 0, 0)) * Matrix4x4.Scale(new Vector3(0.1f, 0.1f, 0.1f)))); + turtleInterpretation.Add("R", (float[] args) => new Tuple(bigR, Matrix4x4.Translate(new Vector3(0.1f, 0, 0)) * Matrix4x4.Scale(new Vector3(0.1f, 0.1f, 0.1f)))); + } +} + \ No newline at end of file diff --git a/Unity Project/Assets/Scripts/AnabaenaTurtle.cs.meta b/Unity Project/Assets/Scripts/AnabaenaTurtle.cs.meta new file mode 100644 index 0000000..536f60d --- /dev/null +++ b/Unity Project/Assets/Scripts/AnabaenaTurtle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7bc6128c88800ea48ba9b9e7070ec728 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Scripts/ContextTurtle.cs b/Unity Project/Assets/Scripts/ContextTurtle.cs new file mode 100644 index 0000000..09908b9 --- /dev/null +++ b/Unity Project/Assets/Scripts/ContextTurtle.cs @@ -0,0 +1,29 @@ +using System.Collections; +using System.Collections.Generic; +using System.IO; +using UnityEditor; +using UnityEngine; +using ConsoleLSystem; +using System; + +public class ContextTurtle : TurtleLSystem { + + protected override void initLiteralInterpretation() { + + turtleInterpretation = new Dictionary>>(); + //turtleInterpretation + //loading required objects + var path = "Assets/Models/{0}.fbx"; + var bigL = (GameObject)AssetDatabase.LoadAssetAtPath(String.Format(path, "bigL"), typeof(GameObject)); + var bigR = (GameObject)AssetDatabase.LoadAssetAtPath(String.Format(path, "bigR"), typeof(GameObject)); + var l = (GameObject)AssetDatabase.LoadAssetAtPath(String.Format(path, "l"), typeof(GameObject)); + var r = (GameObject)AssetDatabase.LoadAssetAtPath(String.Format(path, "r"), typeof(GameObject)); + + //creating functions that are used for interpretation + turtleInterpretation.Add("A", (float[] args) => new Tuple(l, Matrix4x4.Translate(new Vector3(0.1f, 0, 0)) * Matrix4x4.Scale(new Vector3(0.1f, 0.1f, 0.1f)))); + turtleInterpretation.Add("B", (float[] args) => new Tuple(r, Matrix4x4.Translate(new Vector3(0.1f, 0, 0)) * Matrix4x4.Scale(new Vector3(0.1f, 0.1f, 0.1f)))); + turtleInterpretation.Add("D", (float[] args) => new Tuple(bigR, Matrix4x4.Translate(new Vector3(0.1f, 0, 0)) * Matrix4x4.Scale(new Vector3(0.1f, 0.1f * (args[0] * 0.2f + 0.01f), 0.1f)))); + turtleInterpretation.Add("C", (float[] args) => new Tuple(bigR, Matrix4x4.Translate(new Vector3(0.1f, 0, 0)) * Matrix4x4.Scale(new Vector3(0.1f, 0.1f * (args[0] * 0.2f + 0.01f), 0.1f)))); + } +} + \ No newline at end of file diff --git a/Unity Project/Assets/Scripts/ContextTurtle.cs.meta b/Unity Project/Assets/Scripts/ContextTurtle.cs.meta new file mode 100644 index 0000000..244549e --- /dev/null +++ b/Unity Project/Assets/Scripts/ContextTurtle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b3646e56500f82b478deb4552fc2bc85 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Scripts/Editor.meta b/Unity Project/Assets/Scripts/Editor.meta new file mode 100644 index 0000000..33c49fa --- /dev/null +++ b/Unity Project/Assets/Scripts/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 04299f831eadf214b9aca4e61444f91a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Scripts/Editor/LeafGrowEditor.cs b/Unity Project/Assets/Scripts/Editor/LeafGrowEditor.cs new file mode 100644 index 0000000..f271ebb --- /dev/null +++ b/Unity Project/Assets/Scripts/Editor/LeafGrowEditor.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; + +[CustomEditor(typeof(LeafGrow))] +public class LeafGrowEditor : Editor +{ + public override void OnInspectorGUI() + { + DrawDefaultInspector(); + LeafGrow myScript = (LeafGrow)target; + if(GUILayout.Button("Grow Leaf")) + { + myScript.DrawLeaf(); + } + } +} diff --git a/Unity Project/Assets/Scripts/Editor/LeafGrowEditor.cs.meta b/Unity Project/Assets/Scripts/Editor/LeafGrowEditor.cs.meta new file mode 100644 index 0000000..20854c4 --- /dev/null +++ b/Unity Project/Assets/Scripts/Editor/LeafGrowEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ba43da83833304f908bbcd812e5f889e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Scripts/Editor/LeafGrowScriptEditor.cs b/Unity Project/Assets/Scripts/Editor/LeafGrowScriptEditor.cs new file mode 100644 index 0000000..92be20b --- /dev/null +++ b/Unity Project/Assets/Scripts/Editor/LeafGrowScriptEditor.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; + +[CustomEditor(typeof(LeafGrowScript))] +public class LeafGrowScriptEditor : Editor +{ + public override void OnInspectorGUI() + { + DrawDefaultInspector(); + LeafGrowScript myScript = (LeafGrowScript)target; + if(GUILayout.Button("Grow Flower")) + { + myScript.DrawLeaf(); + } + } +} diff --git a/Unity Project/Assets/Scripts/Editor/LeafGrowScriptEditor.cs.meta b/Unity Project/Assets/Scripts/Editor/LeafGrowScriptEditor.cs.meta new file mode 100644 index 0000000..904ffd4 --- /dev/null +++ b/Unity Project/Assets/Scripts/Editor/LeafGrowScriptEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 443f273c306dd450cb8cf81ec6f38969 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Scripts/Editor/MultipleTreesEditor.cs b/Unity Project/Assets/Scripts/Editor/MultipleTreesEditor.cs new file mode 100644 index 0000000..b733e60 --- /dev/null +++ b/Unity Project/Assets/Scripts/Editor/MultipleTreesEditor.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; + +[CustomEditor(typeof(GrowMultipleTrees))] +public class MultipleTreesEditor : Editor +{ + public override void OnInspectorGUI() + { + DrawDefaultInspector(); + GrowMultipleTrees myScript = (GrowMultipleTrees)target; + if(GUILayout.Button("Step")) + { + myScript.step(); + } + } +} diff --git a/Unity Project/Assets/Scripts/Editor/MultipleTreesEditor.cs.meta b/Unity Project/Assets/Scripts/Editor/MultipleTreesEditor.cs.meta new file mode 100644 index 0000000..2a242b2 --- /dev/null +++ b/Unity Project/Assets/Scripts/Editor/MultipleTreesEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a27a28273e5084525a2ca84d7f216595 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Scripts/Editor/TurtleEditor.cs b/Unity Project/Assets/Scripts/Editor/TurtleEditor.cs new file mode 100644 index 0000000..60c6f1f --- /dev/null +++ b/Unity Project/Assets/Scripts/Editor/TurtleEditor.cs @@ -0,0 +1,35 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; +[CustomEditor(typeof(TurtleLSystem),true)] +public class TurtleEditor : Editor +{ + TurtleLSystem turtleLSystem; + + + public override void OnInspectorGUI() { + DrawDefaultInspector(); + + if (GUILayout.Button("Load file")) { + turtleLSystem.loadFile(); + } + + if (GUILayout.Button("Switch ON/OFF animation")) { + turtleLSystem.switchAnimation(); + } + + if (GUILayout.Button("Evaluate")) { + turtleLSystem.evaluateAndPresent(); + } + + } + void OnEnable() { + turtleLSystem = (TurtleLSystem)target; + Tools.hidden = true; + } + + void OnDisable() { + Tools.hidden = false; + } +} diff --git a/Unity Project/Assets/Scripts/Editor/TurtleEditor.cs.meta b/Unity Project/Assets/Scripts/Editor/TurtleEditor.cs.meta new file mode 100644 index 0000000..c6732ce --- /dev/null +++ b/Unity Project/Assets/Scripts/Editor/TurtleEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 588dc2943fa208d4fb5a22dd70eaae67 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Scripts/Editor/TurtleEditorEnv.cs b/Unity Project/Assets/Scripts/Editor/TurtleEditorEnv.cs new file mode 100644 index 0000000..11531f3 --- /dev/null +++ b/Unity Project/Assets/Scripts/Editor/TurtleEditorEnv.cs @@ -0,0 +1,35 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; +[CustomEditor(typeof(TurtleLSystemEnvironment),true)] +public class TurtleEditorEnv : Editor +{ + TurtleLSystemEnvironment turtleLSystem; + + + public override void OnInspectorGUI() { + DrawDefaultInspector(); + + if (GUILayout.Button("Load file")) { + turtleLSystem.loadFile(); + } + + if (GUILayout.Button("Switch ON/OFF animation")) { + turtleLSystem.switchAnimation(); + } + + if (GUILayout.Button("Evaluate")) { + turtleLSystem.evaluateAndPresent(); + } + + } + void OnEnable() { + turtleLSystem = (TurtleLSystemEnvironment)target; + Tools.hidden = true; + } + + void OnDisable() { + Tools.hidden = false; + } +} diff --git a/Unity Project/Assets/Scripts/Editor/TurtleEditorEnv.cs.meta b/Unity Project/Assets/Scripts/Editor/TurtleEditorEnv.cs.meta new file mode 100644 index 0000000..d67bd74 --- /dev/null +++ b/Unity Project/Assets/Scripts/Editor/TurtleEditorEnv.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 44af9b99e6d254ca097c52b7a8a2276d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Scripts/GrowMultipleTrees.cs b/Unity Project/Assets/Scripts/GrowMultipleTrees.cs new file mode 100644 index 0000000..2d31def --- /dev/null +++ b/Unity Project/Assets/Scripts/GrowMultipleTrees.cs @@ -0,0 +1,33 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class GrowMultipleTrees : MonoBehaviour +{ + public TurtleEnvironment[] trees; + public int steps; + // Start is called before the first frame update + void Start() + { + foreach(TurtleEnvironment tree in trees) + { + tree.loadFile(); + } + } + + // Update is called once per frame + void Update() + { + + } + public void step() + { + for(int i = 0; i variableIndex { get;} + public LSystemWordGeneratorBuilder(Dictionary variable_index) { + this.variableIndex = variable_index; + } + public override LSystemNode createLSystemNode(string name, int values_number) { + return new LSystemNodeGenerator(name, values_number); + } + + public override void fillArguments(LSystemNode node, string[] arguments_strings) { + MathExpression[] expressions = arguments_strings.Select(argument => new MathExpression(variableIndex, argument)).ToArray(); + LSystemNodeGenerator ng = (LSystemNodeGenerator)node; + ng.fillArguments(expressions); + } + + } + public class LSystemFileParser { + //LSystemWordParser wordParser; + //LSystemRulesParser ruleParser; + + //public LSystemFileParser(LSystemWordParser wordParser, LSystemRulesParser ruleParser) { + // this.wordParser = wordParser; + // this.ruleParser = ruleParser; + //} + public static int countParenthesisEnd(string line,char opening_char, char closing_char) { + var parenthesises_number = 1; + var length = -1; + while (parenthesises_number > 0) { + length++; + var c = line[1 + length]; + if (c == opening_char) { + parenthesises_number++; + } + if (c == closing_char) { + parenthesises_number--; + } + } + return length; + } + public static bool parenthesisCheck(string line) { + var parenthesises_number = 0; + var brackets_number = 0; + foreach (var s in line) { + if (s == '(') { + parenthesises_number++; + } + if (s == ')') { + parenthesises_number--; + } + if (s == '[') { + brackets_number++; + } + if (s == ']') { + brackets_number--; + } + if (brackets_number<0 || parenthesises_number < 0) { + return false; + } + + } + return (brackets_number == 0 && parenthesises_number == 0); + } + + public static LSystemNode parseWord(string line, LSystemGeneralWordBuilder builder) { + var read_characters = 0; + LSystemNode node; + if (line[0] == '[') { + node = builder.createLSystemNode("", 0); + } + else { + var literal_name = line.Substring(0, 1); + if (line.Length>1 && line[1] == '(') { + var length = countParenthesisEnd(line.Substring(1), '(', ')'); + var values_string = line.Substring(2, length).Split(','); + node = builder.createLSystemNode(literal_name, values_string.Length); + + builder.fillArguments(node, values_string); + //Leter and: (, ) + read_characters += length + 3; + + } + else { + read_characters += 1; + node = builder.createLSystemNode(line.Substring(0,1),0); + } + } + while (line.Length > read_characters && line[read_characters] == '[') { + + var brackets_number = 1; + var length = countParenthesisEnd(line.Substring(read_characters), '[', ']'); + var child_node = parseWord(line.Substring(read_characters + 1, length),builder); + read_characters += length + 2; + child_node.parent = node; + node.children.Add(child_node); + } + if (read_characters < line.Length) { + var child_node = parseWord(line.Substring(read_characters),builder); + child_node.parent = node; + node.mainChild = (child_node); + } + return node; + } + + public static LSystemNodeLiteralVariable parseContextLiteral(string line) { + var name = line.Substring(0, 1); + var varable_index = new Dictionary(); + if (line.Length > 1) { + foreach (var i in line.Substring(2, line.Length - 3).Split(',').Select((name, Index) => new { name, Index })) { + varable_index.Add(i.name, i.Index); + }; + } + return new LSystemNodeLiteralVariable(name, varable_index.Count, varable_index); + } + + public static LSystemNodeLiteralVariable[] parseSuccessorsContext(string line) { + List result = new List(); + bool bracketStarted = false; + int bracketStartedIndex = 0; + for (int i = 0; i < line.Length; i++) { + if (line[i] == ']') { + if (!bracketStarted) { + throw new Exception("invalid syntax"); + } + else { + result.Add(parseContextLiteral(line.Substring(bracketStartedIndex, i - bracketStartedIndex))); + bracketStarted = false; + } + } + else if (line[i] == '[') { + if (bracketStarted) { + throw new Exception("invalid syntax"); + } + else { + bracketStarted = true; + bracketStartedIndex = i + 1; + } + } + else if (!bracketStarted) { + result.Add(parseContextLiteral(line.Substring(i))); + break; + } + } + return result.ToArray(); + } + //private static String[] parseIgnore(string line) { + // var items = line.Trim().Split(' '); + // var resut = List + + //} + + public static LSystemEvaluator parseLSystem(StreamReader sr) { + string line; + int line_number = 0; + var ignored = new String[0]; + LSystemNode axiom = null; + List rules = null; + while ((line = sr.ReadLine()) != null) { + line_number++; + if (line.Trim() == "#axiom") { + line = sr.ReadLine(); + if (!parenthesisCheck(line)) { + throw new Exception(String.Format("In line {0} invalid syntax", line_number)); + } + axiom = parseWord(line,new LSystemWordBuilder()); + } + if (line.Trim().Split(' ')[0].Trim() == "#ignore") { + ignored = line.Trim().Split(' ').Where(x=> x!= "#ignore" && x.Length>0).Select(x => x.Trim()).ToArray(); + } + if (line.Trim() == "#rules") { + rules = parseLSystemRules(sr); + } + + } + return new LSystemEvaluator(axiom, rules, ignored); + } + + private static List parseLSystemRules(StreamReader sr) { + List rules = new List(); + Regex separator = new Regex(@"-(\d*\.?\d*){1}>"); + Regex weight_regex = new Regex(@"p=(\d+\.?\d*){1}"); + string line; + while ((line = sr.ReadLine()) != null && line.Trim() != "#rules end") { + try { + if (line.Length == 0 || line[0] == '#') { + continue; + } + MathExpressionComparison[] conditions = new MathExpressionComparison[0]; + var split = separator.Match(line); + var line_parts = line.Split(new string[] { split.Value }, StringSplitOptions.None); + // check conditions; + //parse predecesor + var _t = line_parts[0].Split(':'); + var predecesor_string = _t[0]; + LSystemNodeLiteralVariable predecesor; + LSystemContext context; + //check if contains < or > + + // check context + getPredecesorContext(predecesor_string, out predecesor, out context); + + if (_t.Length > 1) { + conditions = _t[1].Trim().Split(';').Select(text => MathExpressionComparasionParser.parse(predecesor.variableIndex, text.Trim())).ToArray(); + } + // tochastic rule parsing + var sucsessor_string = line_parts[1]; + var probabilities_list = new List(); + var consequents_list = new List(); + if (sucsessor_string.Trim() == "#stochastic") { + while ((line = sr.ReadLine()) != null && line.Trim() != "#stochastic end") { + if (line[0] == '#') { + continue; + } + var weight_string = weight_regex.Match(line); + var weight = float.Parse(weight_string.Value.Substring(2), NumberStyles.Any, CultureInfo.InvariantCulture); + probabilities_list.Add(weight); + + var prob_len = weight_string.Value.Length; + consequents_list.Add((LSystemNodeGenerator)parseWord(line.Substring(prob_len).Trim(), new LSystemWordGeneratorBuilder(predecesor.variableIndex))); + } + } + else { + consequents_list.Add((LSystemNodeGenerator)parseWord(sucsessor_string.Trim(), new LSystemWordGeneratorBuilder(predecesor.variableIndex))); + } + //context + if (context != null) { + if (consequents_list.Count > 1) { + rules.Add(new LSystemRuleParametricStochasticContext(predecesor, conditions, consequents_list.ToArray(), probabilities_list.ToArray(), context)); + } + else { + rules.Add(new LSystemRuleParametricStochasticContext(predecesor, conditions, consequents_list[0], context)); + } + } + else { + if (consequents_list.Count > 1) { + rules.Add(new LSystemRuleParametricStochastic(predecesor, conditions, consequents_list.ToArray(), probabilities_list.ToArray())); + } + else { + rules.Add(new LSystemRuleParametric(predecesor, conditions, consequents_list[0])); + } + } + //var conditions = parts[0]; + //var result + } + catch (Exception e) { + sr.Close(); + throw new Exception(String.Format("error in {0} with a message \n {1}", line,e.Message)); + } + } + return rules; + } + + private static void getPredecesorContext(string predecesor_string, out LSystemNodeLiteralVariable predecesor, out LSystemContext context) { + string partent_context_str = null; + string child_context_str = null; + string mid_context_str = null; + int mid_start = 0; + + for (int i = 0; i < predecesor_string.Length; i++) { + if (predecesor_string[i] == '<' && partent_context_str == null) { + partent_context_str = predecesor_string.Substring(0, i).Trim(); + mid_start = i+1; + //Console.WriteLine(i); + } + if (predecesor_string[i] == '>' && child_context_str == null) { + child_context_str = predecesor_string.Substring(i + 1).Trim(); + mid_context_str = predecesor_string.Substring(mid_start, i - mid_start).Trim(); + //Console.WriteLine(i); + } + + } + if (mid_context_str == null) { + mid_context_str = predecesor_string.Substring(mid_start).Trim(); + } + LSystemNodeLiteralVariable parent = null; + LSystemNodeLiteralVariable[] children = null; + predecesor = LSystemFileParser.parseContextLiteral(mid_context_str); + if (partent_context_str != null) { + parent = LSystemFileParser.parseContextLiteral(partent_context_str); + foreach (KeyValuePair kvp in new Dictionary(predecesor.variableIndex)) { + //textBox3.Text += ("Key = {0}, Value = {1}", kvp.Key, kvp.Value); + predecesor.variableIndex[kvp.Key] = kvp.Value + parent.variableIndex.Count; + } + foreach (KeyValuePair kvp in parent.variableIndex) { + //textBox3.Text += ("Key = {0}, Value = {1}", kvp.Key, kvp.Value); + predecesor.variableIndex.Add(kvp.Key, kvp.Value); + } + } + if (child_context_str != null) { + int size = predecesor.variableIndex.Count; + children = LSystemFileParser.parseSuccessorsContext(child_context_str); + int offset = 0; + foreach (var child in children) { + + foreach (KeyValuePair kvp in child.variableIndex) { + //textBox3.Text += ("Key = {0}, Value = {1}", kvp.Key, kvp.Value); + predecesor.variableIndex.Add(kvp.Key, kvp.Value + size + offset); + } + offset += child.variableIndex.Count; + } + } + if (child_context_str != null) { + if (partent_context_str != null) { + context = new LSystemContext(parent, children); + } + else { + context = new LSystemContext(); + context.setOnlySucceeding(children); + } + } + else if (partent_context_str != null) { + context = new LSystemContext(); + context.setOnlyPreceding(parent); + } + else { + context = null; + } + } + } +} diff --git a/Unity Project/Assets/Scripts/LSystem/LSystemParser.cs.meta b/Unity Project/Assets/Scripts/LSystem/LSystemParser.cs.meta new file mode 100644 index 0000000..5c1a704 --- /dev/null +++ b/Unity Project/Assets/Scripts/LSystem/LSystemParser.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5d9ea0d39208315468053b0ae8bb3e95 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Scripts/LSystem/LSystemRule.cs b/Unity Project/Assets/Scripts/LSystem/LSystemRule.cs new file mode 100644 index 0000000..6454a88 --- /dev/null +++ b/Unity Project/Assets/Scripts/LSystem/LSystemRule.cs @@ -0,0 +1,345 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace ConsoleLSystem { + public class LSystemNodeLiteralVariable : LSystemNodeLiteral { + public Dictionary variableIndex { get; } + + public LSystemNodeLiteralVariable(string name, int values_number, Dictionary variableIndex) : base(name, values_number) { + this.variableIndex = variableIndex; + } + + } + public class LSystemNodeGenerator : LSystemNode { + MathExpression[] math_expressions; + + public LSystemNodeGenerator(string name, int arguments) : base(new LSystemNodeLiteral(name, arguments)) { + } + public void fillArguments(MathExpression[] math_expressions) { + this.math_expressions = math_expressions; + } + public LSystemNode eval(float[] values) { + var literal = new LSystemNodeLiteral(this.literal.name, this.literal.values_number); + for (int i = 0; i < literal.values_number; i++) { + literal.values[i] = math_expressions[i].eval(values); + } + var result = new LSystemNode(literal); + foreach (LSystemNodeGenerator child in children) { + var _child = child.eval(values); + _child.parent = result; + result.children.Add(_child); + + } + if (mainChild != null) { + var _mainChild = ((LSystemNodeGenerator)mainChild).eval(values); + _mainChild.parent = result; + result.mainChild = _mainChild; + } + else { + result.mainChild = null; + } + return result; + } + + } + abstract public class LSystemRule { + abstract public bool is_aplicable(LSystemNode processed_node, String[] ignored); + abstract public LSystemNode rewrite(LSystemNode processed_node, String[] ignored); + } + + public class LSystemRuleBasic : LSystemRule { + LSystemNodeLiteral input;// { get; } + LSystemNode output; + + public LSystemRuleBasic(LSystemNodeLiteral input, LSystemNode output) { + this.input = input; + this.output = output; + } + + override public bool is_aplicable(LSystemNode processed_node, String[] ignored) { + if (processed_node.literal == input) { + return true; + } + else { + return false; + } + } + override public LSystemNode rewrite(LSystemNode processed_node, String[] ignored) { + if (is_aplicable(processed_node, ignored)) { + return output.deep_copy(); + } + else { + return new LSystemNode(processed_node.literal); + } + } + } + + public class LSystemRuleParametric : LSystemRule { + LSystemNodeLiteralVariable predecesor;// { get; } + LSystemNodeGenerator consequent; + MathExpressionComparison[] conditions; + + public LSystemRuleParametric(LSystemNodeLiteralVariable predecesor, MathExpressionComparison[] conditions, LSystemNodeGenerator consequent) { + this.predecesor = predecesor; + this.consequent = consequent; + this.conditions = conditions; + } + + public override bool is_aplicable(LSystemNode processed_node, String[] ignored) { + if (processed_node.literal.name != predecesor.name || processed_node.literal.values_number != predecesor.values_number) { + return false; + } + foreach (var condition in conditions) { + if (!condition.eval(processed_node.literal.values)) { + return false; + } + } + return true; + } + + public override LSystemNode rewrite(LSystemNode processed_node, String[] ignored) { + if (is_aplicable(processed_node, ignored)) { + return consequent.eval(processed_node.literal.values); + } + else { + return new LSystemNode(processed_node.literal); + } + } + } + + public class LSystemRuleParametricStochastic : LSystemRule { + protected LSystemNodeLiteralVariable predecesor;// { get; } + protected LSystemNodeGenerator[] consequents; + protected float[] probabilities; + protected MathExpressionComparison[] conditions; + protected Random random; + + public LSystemRuleParametricStochastic(LSystemNodeLiteralVariable predecesor, MathExpressionComparison[] conditions, LSystemNodeGenerator[] consequents, float[] probabilities) { + this.predecesor = predecesor; + this.consequents = consequents; + this.conditions = conditions; + float probabilities_sum = 0; + foreach (var probability in probabilities) { probabilities_sum += probability; } + float acumulator = 0; + this.probabilities = new float[consequents.Length]; + for (int i = 0; i < consequents.Length; i++) { + var probability = probabilities[i] / probabilities_sum; + this.probabilities[i] = probability + acumulator; + acumulator += probability; + } + random = new Random(); + + } + public LSystemRuleParametricStochastic(LSystemNodeLiteralVariable predecesor, MathExpressionComparison[] conditions, LSystemNodeGenerator consequent) { + this.predecesor = predecesor; + this.consequents = new LSystemNodeGenerator[] { consequent }; + this.conditions = conditions; + float probabilities_sum = 0; + probabilities = new float[1] { 1 }; + random = new Random(); + + } + public override bool is_aplicable(LSystemNode processed_node, String[] ignored) { + if (processed_node.literal.name != predecesor.name || processed_node.literal.values_number != predecesor.values_number) { + return false; + } + foreach (var condition in conditions) { + if (!condition.eval(processed_node.literal.values)) { + return false; + } + } + return true; + } + + public override LSystemNode rewrite(LSystemNode processed_node, String[] ignored) { + var result = random.NextDouble(); + int consequent_index = 0; + for (int i = 0; i < probabilities.Length; i++) { + if (result < probabilities[i]) { + consequent_index = i; + break; + } + } + if (is_aplicable(processed_node, ignored)) { + return consequents[consequent_index].eval(processed_node.literal.values); + } + else { + return new LSystemNode(processed_node.literal); + } + } + } + public class LSystemContext { + public LSystemNodeLiteral parent { get; set; } + public LSystemNodeLiteral[] children { get; set; } + public LSystemNodeLiteral mid { get; set; } + bool isPreceding = false; + bool isSucceeding = false; + + public LSystemContext(LSystemNodeLiteral parent, LSystemNodeLiteral[] children) { + this.parent = parent; + this.children = children; + this.isPreceding = true; + this.isSucceeding = true; + } + public LSystemContext() { + + } + public void setOnlyPreceding(LSystemNodeLiteral parent) { + this.parent = parent; + this.mid = mid; + this.isPreceding = true; + this.isSucceeding = false; + } + public void setOnlySucceeding(LSystemNodeLiteral[] children) { + this.children = children; + this.isPreceding = false; + this.isSucceeding = true; + } + void _purgeIgnoredRecursive(LSystemNode node, HashSet ignored, ref List results) { + if (ignored.Contains(node.literal.name)) { + foreach (var child in node.getAllChildren()) { + _purgeIgnoredRecursive(child, ignored, ref results); + } + } + else { + results.Add(node); + } + } + List _purgeIgnored(LSystemNode node, HashSet ignored) { + List results = new List(); + foreach (var child in node.getAllChildren()) { + _purgeIgnoredRecursive(child, ignored, ref results); + } + return results; + } + public bool isAplicable(LSystemNode node, String[] ignored, out float[] variables) { + var variables_list = new List(); + var currentParent = node.parent; + while (ignored.Contains(currentParent.literal.name)) { + currentParent = currentParent.parent; + } + if (isPreceding && parent != currentParent.literal) { + variables = new float[0]; + return false; + } + if (isPreceding) { + variables_list.AddRange(currentParent.literal.values); + } + variables_list.AddRange(node.literal.values); + if (isSucceeding) { + LSystemNodeLiteral childLiteral; + Queue ignoredChildren = new Queue(); + + var nodeChildren = _purgeIgnored(node,new HashSet(ignored)).ToArray(); + var result = children.Length == nodeChildren.Length; + + if (result) { + for (int i = 0; i < children.Length; i++) { + if(nodeChildren[i].literal == children[i]) { + variables_list.AddRange(nodeChildren[i].literal.values); + } + else { + result = false; + break; + } + } + + } + //foreach(var child in node.getAllChildren()) { + // if (ignored.Contains(child.literal.name)) { + // ignoredChildren.Enqueue(child); + // } + // if (child.literal == this.child) { + // childLiteral = child.literal; + // result = true; + // variables_list.AddRange(child.literal.values); + // break; + // } + //} + //while (!result && ignoredChildren.Count>0) { + // var ignoredChild = ignoredChildren.Dequeue(); + // foreach (var child in ignoredChild.getAllChildren()) { + // if (ignored.Contains(child.literal.name)) { + // ignoredChildren.Enqueue(child); + // } + // if (child.literal == this.child) { + // childLiteral = child.literal; + // result = true; + // variables_list.AddRange(child.literal.values); + // break; + // } + // } + //} + if (!result) { + variables = new float[0]; + return false; + } + } + variables = variables_list.ToArray(); + return true; + + } + + } + + public class LSystemRuleParametricStochasticContext : LSystemRuleParametricStochastic { + LSystemContext context; + public LSystemRuleParametricStochasticContext(LSystemNodeLiteralVariable predecesor, MathExpressionComparison[] conditions, LSystemNodeGenerator[] consequents, float[] probabilities, LSystemContext context) : base(predecesor, conditions, consequents, probabilities) { + this.context = context; + } + public LSystemRuleParametricStochasticContext(LSystemNodeLiteralVariable predecesor, MathExpressionComparison[] conditions, LSystemNodeGenerator consequent, LSystemContext context) : base(predecesor, conditions, consequent) { + this.context = context; + } + public override bool is_aplicable(LSystemNode processed_node,String[] ignored) { + if (processed_node.literal.name != predecesor.name || processed_node.literal.values_number != predecesor.values_number) { + return false; + } + var variables = new float[0]; + if (!context.isAplicable(processed_node, ignored, out variables)) { + return false; + } + foreach (var condition in conditions) { + if (!condition.eval(variables)) { + return false; + } + } + return true; + } + bool is_aplicable(LSystemNode processed_node, String[] ignored, out float[] variables) { + variables = new float[0]; + if (processed_node.literal.name != predecesor.name || processed_node.literal.values_number != predecesor.values_number) { + return false; + } + if (!context.isAplicable(processed_node, ignored, out variables)) { + return false; + } + foreach (var condition in conditions) { + if (!condition.eval(variables)) { + return false; + } + } + return true; + } + + public override LSystemNode rewrite(LSystemNode processed_node, String[] ignored) { + var result = random.NextDouble(); + int consequent_index = 0; + for (int i = 0; i < probabilities.Length; i++) { + if (result < probabilities[i]) { + consequent_index = i; + break; + } + } + float[] variables; + if (is_aplicable(processed_node, ignored, out variables)) { + return consequents[consequent_index].eval(variables); + } + else { + return new LSystemNode(processed_node.literal); + } + } + + } +} diff --git a/Unity Project/Assets/Scripts/LSystem/LSystemRule.cs.meta b/Unity Project/Assets/Scripts/LSystem/LSystemRule.cs.meta new file mode 100644 index 0000000..d1a0dc8 --- /dev/null +++ b/Unity Project/Assets/Scripts/LSystem/LSystemRule.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fbf81cc8f22e1b040aa2f1b218391989 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Scripts/LSystem/MathExpression.cs b/Unity Project/Assets/Scripts/LSystem/MathExpression.cs new file mode 100644 index 0000000..5f7b5fe --- /dev/null +++ b/Unity Project/Assets/Scripts/LSystem/MathExpression.cs @@ -0,0 +1,210 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Text; + +namespace ConsoleLSystem { + public class MathExpressionComparison{ + MathExpression leftSide; + MathExpression rightSide; + Func comparisonFunction; + + public MathExpressionComparison(MathExpression leftSide, MathExpression rightSide, Func comparisonFunction) { + this.leftSide = leftSide; + this.rightSide = rightSide; + this.comparisonFunction = comparisonFunction; + } + public bool eval(float[] variables) { + return comparisonFunction(leftSide.eval(variables), rightSide.eval(variables)); + } + + + } + public class MathExpressionNode { + Func function; + MathExpressionNode[] childNodes; + + public MathExpressionNode(Func function, MathExpressionNode[] childNodes) { + this.function = function; + this.childNodes = childNodes; + } + + public float eval(float[] variables) { + var x = childNodes.Select(node => node.eval(variables)).ToArray(); + return function(x, variables); + } + } + public class MathExpression { + private static Random random = new Random(); + + private static Dictionary expression_hierarchy = new Dictionary{ + {'^', 4}, + {'*', 3}, + {'/', 3}, + {'+', 1}, + {'-', 1}, + }; + MathExpressionNode rootNode; + public float eval(float [] variables) { + return rootNode.eval(variables); + } + private static float negate(float[] children, float[] variables) { + return -children[0]; + } + private static float mulitply(float[] children, float[] variables) { + return children[0] * children[1]; + } + private static float power(float[] children, float[] variables) { + return (float)Math.Pow(children[0],children[1]); + } + private static float divide(float[] children, float[] variables) { + return children[0] / children[1]; + } + private static float add(float[] children, float[] variables) { + return children[0] + children[1]; + } + private static float subtract(float[] children, float[] variables) { + return children[0] - children[1]; + } + + //private MathExpressionNode parse(Dictionary variableNames, string expression_string) { + + + // var read_characters = 0; + // var node = new MathExpressionNode(); + // if (expression_string[0] == '(') { + // var length = LSystemFileParser.countParenthesisEnd(expression_string, '(', ')'); + // if (length == expression_string.Length - 2) { + // return parse(variableNames, expression_string.Substring(1, length)); + // } + + // var left_child_node = parse(variableNames, expression_string.Substring(1, length)); + // read_characters += length + 2; + + // node.function = getFunction(expression_string[read_characters]); + // read_characters += 1; + + // if (expression_string[read_characters] == '(') + // } + + + + //} + + private static MathExpressionNode parse(Dictionary variableNames, string expression_string) { + expression_string = expression_string.Trim(); + var expression_pos = -1; + var current_level = 1000; + for (int i = 0; i < expression_string.Length; i++) { + if (expression_string[i] == '(') { + var length = LSystemFileParser.countParenthesisEnd(expression_string.Substring(i), '(', ')'); + if (length == expression_string.Length - 2) { + return parse(variableNames, expression_string.Substring(1, length)); + } + //skip parenthesis + // if expression is covered in ( ) + if (i == 0 && length == expression_string.Length - 2) { + return parse(variableNames, expression_string.Substring(1, length)); + } + else { + i += length + 1; + continue; + } + } + int new_level; + if (expression_hierarchy.TryGetValue(expression_string[i],out new_level)) { + if (i>0 && !(i - 1 == expression_pos && expression_string[i] == '-')) { + if (new_level <= current_level) { + current_level = new_level; + expression_pos = i; + } + } + } + } + if (expression_pos > 0) { + var left_node = parse(variableNames, expression_string.Substring(0, expression_pos)); + var right_node = parse(variableNames, expression_string.Substring(expression_pos + 1)); + MathExpressionNode[] child_nodes = { left_node, right_node }; + switch (expression_string[expression_pos]) { + case '*': + return new MathExpressionNode(mulitply, child_nodes); + break; + case '/': + return new MathExpressionNode(divide, child_nodes); + break; + case '+': + return new MathExpressionNode(add, child_nodes); + break; + case '-': + return new MathExpressionNode(subtract, child_nodes); + break; + case '^': + return new MathExpressionNode(power, child_nodes); + break; + default: + throw new Exception(String.Format("unknown operation {0} in {1}", expression_string[expression_pos], expression_string)); + break; + } + } + else if (expression_string[0] == '-') { + MathExpressionNode[] a = { parse(variableNames, expression_string.Substring(1)) }; + return new MathExpressionNode(negate, a); + } + else { + int index; + if (expression_string == "RANDOM") { + return new MathExpressionNode((float[] children, float[] arguments) => (float)random.NextDouble(), new MathExpressionNode[0]); + } + if (variableNames.TryGetValue(expression_string.Trim(),out index)){ + return new MathExpressionNode((float[] children, float[] arguments) => arguments[index], new MathExpressionNode[0]); + } + else { + try { + float value = float.Parse(expression_string, NumberStyles.Any, CultureInfo.InvariantCulture); + return new MathExpressionNode((float[] children, float[] arguments) => value, new MathExpressionNode[0]); + } + catch (Exception) { + + throw new Exception(String.Format("can't parse ``{0}``. It's not a number nor a known variable", expression_string)); + } + } + } + } + public MathExpression(Dictionary variableNames, string expression_string) { + rootNode = parse(variableNames, expression_string); + } + } + public class MathExpressionComparasionParser { + private static bool le(float a, float b) { return a < b; } + private static bool leq(float a, float b) { return a <= b; } + private static bool eq(float a, float b) { return a == b; } + + public static MathExpressionComparison parse(Dictionary variableNames, string expression_string) { + //var operations = new string[]{ "<=", ">=", "<", ">"}; + if (expression_string.Contains("<=")) { + + var parts = expression_string.Split(new string[] { "<=" }, StringSplitOptions.None).Select(s => s.Trim()).ToArray(); + return new MathExpressionComparison(new MathExpression(variableNames, parts[0]), new MathExpression(variableNames, parts[1]), leq); + } + if (expression_string.Contains(">=")) { + var parts = expression_string.Split(new string[] { ">=" }, StringSplitOptions.None).Select(s => s.Trim()).ToArray(); + return new MathExpressionComparison(new MathExpression(variableNames, parts[1]), new MathExpression(variableNames, parts[0]), leq); + } + if (expression_string.Contains("==")) { + var parts = expression_string.Split(new string[] { "==" }, StringSplitOptions.None).Select(s => s.Trim()).ToArray(); + return new MathExpressionComparison(new MathExpression(variableNames, parts[1]), new MathExpression(variableNames, parts[0]), eq); + } + if (expression_string.Contains("<")) { + var parts = expression_string.Split('<').Select(s => s.Trim()).ToArray(); + return new MathExpressionComparison(new MathExpression(variableNames, parts[0]), new MathExpression(variableNames, parts[1]), le); + } + if (expression_string.Contains(">")) { + var parts = expression_string.Split('>').Select(s => s.Trim()).ToArray(); + return new MathExpressionComparison(new MathExpression(variableNames, parts[1]), new MathExpression(variableNames, parts[0]), le); + } + + throw new Exception(String.Format("comparison operation not recognized in {}", expression_string)); + } + } +} diff --git a/Unity Project/Assets/Scripts/LSystem/MathExpression.cs.meta b/Unity Project/Assets/Scripts/LSystem/MathExpression.cs.meta new file mode 100644 index 0000000..c75b2bc --- /dev/null +++ b/Unity Project/Assets/Scripts/LSystem/MathExpression.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9f4cd6c897dbc5741b23eee6d073826c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Scripts/LSystem/Program.cs b/Unity Project/Assets/Scripts/LSystem/Program.cs new file mode 100644 index 0000000..dffe13a --- /dev/null +++ b/Unity Project/Assets/Scripts/LSystem/Program.cs @@ -0,0 +1,353 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; + +namespace ConsoleLSystem { + public class LSystemNodeLiteral { + public string name { get; } + public int values_number { get; } + + public float[] values { get; set; } + + public LSystemNodeLiteral(string name, int values_number) { + this.name = name; + this.values_number = values_number; + //in case it would be 0 + values = new float[values_number]; + } + public LSystemNodeLiteral(LSystemNodeLiteral other) { + this.name = other.name; + this.values_number = other.values_number; + //in case it would be 0 + values = new float[this.values_number]; + other.values.CopyTo(values, 0); + } + + public static bool operator ==(LSystemNodeLiteral thisLiteral, LSystemNodeLiteral other) { + return thisLiteral.name == other.name && thisLiteral.values_number == other.values_number; + } + public static bool operator !=(LSystemNodeLiteral thisLiteral, LSystemNodeLiteral other) { + return !(thisLiteral.name == other.name && thisLiteral.values_number == other.values_number); + } + + public override string ToString() { + if (values_number == 0) { + return name; + } + else { + StringBuilder sb = new StringBuilder(name, name.Length + values_number * 7 + 4); + sb.Append("("); + for (int i = 0; i < values_number; i++) { + var v = values[i]; + sb.AppendFormat("{0:0.##}", v); + if (i < values_number - 1) { + sb.Append(","); + } + } + sb.Append(")"); + return sb.ToString(); + } + } + } + + public class LSystemNode { + public LSystemNodeLiteral literal { get; set; } + public List children { get; set; } + public LSystemNode mainChild { get; set; } + + private LSystemNode _parent; + public LSystemNode parent { + get { if (_parent is null) { return new LSystemNode(new LSystemNodeLiteral(" _ ", 0)); } + else { return _parent; } } + set { _parent = value; } } + + public LSystemNode(LSystemNodeLiteral nodeLiteral) { + literal = nodeLiteral; + children = new List(); + mainChild = null; + } + + public LSystemNode(LSystemNodeLiteral nodeLiteral, List children, LSystemNode mainChild) { + literal = nodeLiteral; + this.children = children; + this.mainChild = mainChild; + } + public LSystemNode(LSystemNodeLiteral nodeLiteral, List children) { + literal = nodeLiteral; + this.children = children; + this.mainChild = null; + } + public List getAllChildren() { + var result = new List(children); + if (mainChild != null){ + result.Add(mainChild); + } + return result; + } + + public LSystemNode deep_copy() { + if (children.Count() == 0 && mainChild == null) { + return new LSystemNode(new LSystemNodeLiteral(literal)); + } + else if (mainChild != null) { + var result = new LSystemNode(new LSystemNodeLiteral(literal)); + result.mainChild = mainChild.deep_copy(); + return result; + } + else { + var new_children = new List(); + foreach (var x in children) { + new_children.Add(x.deep_copy()); + } + return new LSystemNode(literal, new_children, this.mainChild.deep_copy()); + } + } + + private static LSystemNode deepestNode(LSystemNode node) { + while (node.mainChild != null) { + node = node.mainChild; + } + return node; + } + + public LSystemNode newParent() { + return deepestNode(this); + } + + public override string ToString() { + StringBuilder sb = new StringBuilder(literal.ToString()); + var node = this; + while (true) { + foreach (var child in node.children) { + sb.Append("["); + sb.Append(child.ToString()); + sb.Append("]"); + } + if (node.mainChild != null) { + sb.Append(node.mainChild.literal.ToString()); + node = node.mainChild; + } + else { + return sb.ToString(); + } + } + } + } + + + public class LSystemEvaluator { + public LSystemNode lSystemString { get; set; } + public List lSystemRules { get; set; } + public String[] ignored { get; set; } + + public LSystemEvaluator(LSystemNode startingString, List rules) { + lSystemString = startingString; + lSystemRules = rules; + ignored = new String[0]; + } + public LSystemEvaluator(LSystemNode startingString, List rules, String[] ignored) { + lSystemString = startingString; + lSystemRules = rules; + this.ignored = ignored; + } + private LSystemNode _rewrite(LSystemNode node) { + foreach (var rule in lSystemRules) { + if (rule.is_aplicable(node, ignored)) { + return rule.rewrite(node, ignored); + } + } + return new LSystemNode(node.literal); + } + //private void _rewrite_recursive(LSystemNode node, LSystemNode parent) { + // var new_node = _rewrite(node); + // parent.children.Add(new_node); + // new_node.parent = parent; + // var new_parent = new_node.newParent(); + + // foreach (var child in node.children) { + // _rewrite_recursive(child, new_parent); + // } + //} + + + private void _rewrite_recursive(LSystemNode node, LSystemNode parent) { + var new_node = _rewrite(node); + parent.children.Add(new_node); + new_node.parent = parent; + var new_parent = new_node.newParent(); + + foreach (var child in node.children) { + _rewrite_recursive(child, new_parent); + } + while (node.mainChild != null) { + new_node = _rewrite(node.mainChild); + new_node.parent = new_parent; + + new_parent.mainChild = new_node; + new_parent = new_node.newParent(); + foreach (var child in node.mainChild.children) { + _rewrite_recursive(child, new_parent); + } + node = node.mainChild; + } + } + public void rewrite() { + var new_root = _rewrite(lSystemString); + var new_parent = new_root.newParent(); + foreach (var child in lSystemString.children) { + _rewrite_recursive(child, new_parent); + } + var node = lSystemString; + + while (node.mainChild != null) { + var new_node = _rewrite(node.mainChild); + new_node.parent = new_parent; + + new_parent.mainChild = new_node; + new_parent = new_node.newParent(); + foreach (var child in node.mainChild.children) { + _rewrite_recursive(child, new_parent); + } + node = node.mainChild; + } + lSystemString = new_root; + } + //private void rewrite(ref LSystemNode currentNode) + } + //abstract class LSystemWordParser { } + //abstract class LSystemRulesParser { } + + class A { + public int B { get; set; } + public A[] AA { get; set; } + } + class Program { + static void runParametric() { + + Dictionary variableIndex = new Dictionary { + {"a", 0}, + {"b", 1}, + + }; + var predecesor1 = LSystemFileParser.parseContextLiteral("B(a,b)"); + var predecesor2 = LSystemFileParser.parseContextLiteral("A(a)"); + var condition1 = MathExpressionComparasionParser.parse(variableIndex, "a>b"); + var condition2 = MathExpressionComparasionParser.parse(variableIndex, "a>5"); + + var builder = new LSystemWordGeneratorBuilder(variableIndex); + + var consequent1 = (LSystemNodeGenerator)LSystemFileParser.parseWord("B(0,b)[A(a/2)]A(a/2)", builder); + var consequent2 = (LSystemNodeGenerator)LSystemFileParser.parseWord("B(a+3.5,b+1)", builder); + var consequent3 = (LSystemNodeGenerator)LSystemFileParser.parseWord("B(0,a)", builder); + var consequent4 = (LSystemNodeGenerator)LSystemFileParser.parseWord("A(a+1)", builder); + + var rule1 = new LSystemRuleParametric(predecesor1, new MathExpressionComparison[] { condition1 }, consequent1 ); + var rule2 = new LSystemRuleParametric(predecesor1, new MathExpressionComparison[] { }, consequent2 ); + var rule3 = new LSystemRuleParametric(predecesor2, new MathExpressionComparison[] { condition2 }, consequent3 ); + var rule4 = new LSystemRuleParametric(predecesor2, new MathExpressionComparison[] { }, consequent4); + + var axiom = LSystemFileParser.parseWord("A(6)", new LSystemWordBuilder()); + + var rules = new List { rule1, rule2, rule3, rule4 }; + var evaluator = new LSystemEvaluator(axiom, rules); + Console.WriteLine(evaluator.lSystemString.ToString()); + for (int i = 0; i < 20; i++) { + evaluator.rewrite(); + Console.WriteLine(evaluator.lSystemString.ToString()); + } + } + static void runContext() { + var axiom = LSystemFileParser.parseWord("A(1)A(1)A(1)A(1)A(1)A(1)B(2)", new LSystemWordBuilder()); + var predecesor = LSystemFileParser.parseContextLiteral("A(a)"); + var predecesor1 = LSystemFileParser.parseContextLiteral("B(b)"); + + var contex = new LSystemContext(); + contex.setOnlySucceeding(new LSystemNodeLiteral[] { new LSystemNodeLiteral("B", 1) }); + + var contex1 = new LSystemContext(); + contex1.setOnlyPreceding(new LSystemNodeLiteral("A", 1)); + + + Dictionary variableIndex = new Dictionary { + { "a", 0 }, + { "b", 1 }, + }; + var builder = new LSystemWordGeneratorBuilder(variableIndex); + var consequent = (LSystemNodeGenerator)LSystemFileParser.parseWord("B(a)", builder); + var consequent1 = (LSystemNodeGenerator)LSystemFileParser.parseWord("A(1)", builder); + var consequent2 = (LSystemNodeGenerator)LSystemFileParser.parseWord("A(a+1)", builder); + + MathExpressionComparison comparison = MathExpressionComparasionParser.parse(variableIndex, "a>b"); + MathExpressionComparison comparison1 = MathExpressionComparasionParser.parse(variableIndex, "a<=b"); + + var rule = new LSystemRuleParametricStochasticContext(predecesor, new MathExpressionComparison[] { comparison }, consequent, contex); + var rule1 = new LSystemRuleParametricStochasticContext(predecesor, new MathExpressionComparison[] { }, consequent2, contex); + var rule2 = new LSystemRuleParametricStochasticContext(predecesor1, new MathExpressionComparison[] { comparison }, consequent1, contex1); + + + var rules = new List { rule, rule1, rule2 }; + var evaluator = new LSystemEvaluator(axiom, rules); + Console.WriteLine(evaluator.lSystemString.ToString()); + for (int i = 0; i < 20; i++) { + evaluator.rewrite(); + Console.WriteLine(evaluator.lSystemString.ToString()); + } + + } + static void runFile() { + Console.WriteLine("Enter filepath:"); + string filepath = Console.ReadLine(); + var evaluator = LSystemFileParser.parseLSystem(new StreamReader(filepath)); + Console.WriteLine(evaluator.lSystemString.ToString()); + while (true) { + Console.ReadLine(); + evaluator.rewrite(); + Console.WriteLine(evaluator.lSystemString.ToString()); + } + + } + static void Main(string[] args) { + runFile(); + //runContext(); + //var Al = new LSystemNodeLiteral("Al", 0); + //var Ar = new LSystemNodeLiteral("Ar", 0); + //var Bl = new LSystemNodeLiteral("Bl", 0); + //var Br = new LSystemNodeLiteral("Br", 0); + + //var root = new LSystemNode(Ar); + //var rule_list = new List(); + + //var result = new LSystemNode(Al); + //result.children.Add(new LSystemNode(Br)); + + //rule_list.Add(new LSystemRuleBasic(Ar, result)); + + //result = new LSystemNode(Bl); + //result.children.Add(new LSystemNode(Ar)); + //rule_list.Add(new LSystemRuleBasic(Al, result)); + + //result = new LSystemNode(Ar); + //rule_list.Add(new LSystemRuleBasic(Br, result)); + + //result = new LSystemNode(Al); + //rule_list.Add(new LSystemRuleBasic(Bl, result)); + + + //var evaluator = new LSystemEvaluator(root, rule_list); + //for (int i=0; i < 5; i++) { + // Console.WriteLine(evaluator.lSystemString.ToString()); + // evaluator.rewrite(); + //} + //Console.WriteLine(evaluator.lSystemString.ToString()); + + + + + //var node = LSystemFileParser.parseWord("A[AA][A]AB(1,2)[A(1)]C", new LSystemWordBuilder()); + //Console.WriteLine(node.ToString()); + } + } +} diff --git a/Unity Project/Assets/Scripts/LSystem/Program.cs.meta b/Unity Project/Assets/Scripts/LSystem/Program.cs.meta new file mode 100644 index 0000000..9741b74 --- /dev/null +++ b/Unity Project/Assets/Scripts/LSystem/Program.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5526e59b834cf36449875f1fb1ee497f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Scripts/LeafGrow.cs b/Unity Project/Assets/Scripts/LeafGrow.cs new file mode 100644 index 0000000..00da8bd --- /dev/null +++ b/Unity Project/Assets/Scripts/LeafGrow.cs @@ -0,0 +1,860 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using System.Globalization; +#if UNITY_EDITOR +using UnityEditor; +using System.Linq; + +public class CommentAttribute : PropertyAttribute { + public readonly string tooltip; + public readonly string comment; + + public CommentAttribute( string comment, string tooltip ) { + this.tooltip = tooltip; + this.comment = comment; + } +} + +[CustomPropertyDrawer(typeof(CommentAttribute))] +public class CommentDrawer : PropertyDrawer { + const int textHeight = 20; + + CommentAttribute commentAttribute { get { return (CommentAttribute)attribute; } } + + public override float GetPropertyHeight(SerializedProperty prop, GUIContent label) { + return textHeight; + } + + public override void OnGUI(Rect position, SerializedProperty prop, GUIContent label) { + EditorGUI.LabelField(position,new GUIContent(commentAttribute.comment,commentAttribute.tooltip)); + } +} + + +#endif + +public class LeafGrow : MonoBehaviour +{ + Vector3[] newVertices; + Vector2[] newUV; + int[] newTriangles; + float[] _widthCurve_; //widthCurve + float[] _foldCurve_; //foldCurve + int frame = 0; + + [Header("Leaf shape")] + public float length = 0.06f; + public float width = 1.0f; + public float thickness = 0.01f; + public AnimationCurve widthCurve = AnimationCurve.Linear(0, 0, 1, 1); + public AnimationCurve foldCurve = AnimationCurve.Linear(0, 0, 1, 1); + public float infold = 0.03f; + float startInfold = 0.03f; + + + [Header("Animation and resolution")] + public float framesBetweenSteps = 30.0f; + public int numberOfAnimationSteps = 30; + public bool constantResolution = true; + [Comment("The number of animation steps also affects the resolution of the model", "8 * numberOfAnimationSteps = number of vertices")] + public bool commentSpace = true; + + [HideInInspector] + [Range(0.000f,0.01f)] + public float simplification = 0.000f; + // EditorGUILayout.HelpBox("Number of animation steps also affects resolution of the model" , MessageType.Info); + + //[Header("Special features")] + [HideInInspector] + public bool roughEdges = false; + [HideInInspector] + public int roughEdgesSize = 10; + [HideInInspector] + public int numberOfBranchesPairs = 10; + [HideInInspector] + public bool showBranches = false; + [HideInInspector] + public bool colision = false; + [HideInInspector] + public Rigidbody colisionJoint; + float infoldch; + [HideInInspector] + public int maxNumberOfSteps = 0; + int maxNumberOfStepsB = 0; + + + // Start is called before the first frame update + void Start() { + startInfold = infold; + if (numberOfBranchesPairs * 5 > numberOfAnimationSteps) { + numberOfBranchesPairs = numberOfAnimationSteps / 10; + } + // _widthCurve_ = new float[] {0.0f, 0.25f, 0.5f, 0.55f, 0.54f, 0.53f, 0.52f, 0.50f, 0.48f, 0.45f, 0.41f, 0.36f, 0.31f, 0.26f, 0.21f, 0.16f, 0.11f, 0.06f, 0.03f, 0.0f}; + // _foldCurve_ = new float[] {0.0f, 0.02f, 0.03f, 0.035f, 0.04f, 0.04f, 0.037f, 0.035f, 0.031f, 0.027f, 0.024f, 0.021f, 0.019f, 0.016f, 0.013f, 0.010f, 0.007f, 0.004f, 0.001f, 0.0f}; + float numberOfAnimationStepsf = (float)numberOfAnimationSteps; + _widthCurve_ = new float[numberOfAnimationSteps + 1]; + _foldCurve_ = new float[numberOfAnimationSteps + 1]; + float i = 0; + for (i = 0; i < numberOfAnimationStepsf; i += 1.0f) { + _widthCurve_[(int)i] = (float)widthCurve.Evaluate(i / (numberOfAnimationStepsf)); + _foldCurve_[(int)i] = (float)foldCurve.Evaluate(i / (numberOfAnimationStepsf)); + } + float foldMin = _foldCurve_.Min(); + float widthMin = _widthCurve_.Min(); + float widthMax = _widthCurve_.Max(); + for (i = 0; i < numberOfAnimationStepsf; i += 1.0f) { + _widthCurve_[(int)i] = (_widthCurve_[(int)i] - widthMin) / (widthMax - widthMin); + _foldCurve_[(int)i] = (_foldCurve_[(int)i]- _foldCurve_[0])*length; + } + if (maxNumberOfSteps == 0.0) { + maxNumberOfStepsB = _widthCurve_.Length - 1; + } + else { + maxNumberOfStepsB = maxNumberOfSteps; + } + maxNumberOfSteps = _widthCurve_.Length - 1; + // } + + } + + // Update is called once per frame + void Update() { + frame += 1; + if (frame <= framesBetweenSteps * maxNumberOfSteps) { + UpdateLeafMesh(); + } + + if (frame == framesBetweenSteps * maxNumberOfSteps + 3 && colision) { + gameObject.GetComponent().sharedMesh = null; + } + } + public void DrawLeaf() { + Start(); + frame = (int)(framesBetweenSteps * maxNumberOfSteps); + UpdateLeafMesh(); + infold = startInfold; + } + void UpdateLeafMesh() { + float frameScaled = (float)frame / framesBetweenSteps; + float[] _widthCurve = new float[(int)frameScaled + 1]; + float[] _foldCurve = new float[(int)frameScaled + 1]; + if (constantResolution) { + _widthCurve = new float[_widthCurve_.Length]; + _foldCurve = new float[_foldCurve_.Length]; + } + + float scale = frameScaled / (float)maxNumberOfSteps; + float scaleB = frameScaled / (float)maxNumberOfStepsB; + int j = 0; + for (j = 0; j < frameScaled; j++) { + _widthCurve[j] = _widthCurve_[(int)((float)j / scale)] * scaleB; + _foldCurve[j] = _foldCurve_[(int)((float)j / scale)] * scaleB; + + } + if (frame == framesBetweenSteps * maxNumberOfSteps || constantResolution) { + if (frame == framesBetweenSteps * maxNumberOfSteps) { + scaleB = (frameScaled - 1.0f) / (float)maxNumberOfStepsB; + } + for (j = 0; j < _widthCurve_.Length; j++) { + _widthCurve[j] = _widthCurve_[j] * scaleB; + } + for (j = 0; j < _foldCurve_.Length; j++) { + _foldCurve[j] = _foldCurve_[j] * scaleB; + } + // _widthCurve = _widthCurve_; + // _foldCurve = _foldCurve_; + // scaleB = 1.0f; + infold = startInfold; + } + else { + infold = (_widthCurve_[(int)frameScaled] / 10.0f) + startInfold; + } + infoldch = 2.0f * infold / _widthCurve.Length; + float infoldFrame = infold; + if (constantResolution) { + float scaleLboost = 1.0f; + if (frameScaled * 3.0f < numberOfAnimationSteps) { + scaleLboost = frameScaled * 3.0f / numberOfAnimationSteps; + } + scaleL = (scaleLboost + scaleB) / 2.0f; + } + + if (showBranches) { + + branchesMargin = (int)((float)numberOfAnimationSteps * 0.15f); + branchesDistance = 0; + if (numberOfBranchesPairs > 0) { + branchesDistance = (numberOfAnimationSteps - (branchesMargin * 2)) / numberOfBranchesPairs; + } + } + // // float version (constant distance between vertices groups) + // Mesh mesh = createSweepSufraceMesh(lengthScale, infold, _widthCurve, _foldCurve); + // GetComponent().mesh = mesh; + // + + + // Vector2 version (distance between vertices groups can be defined (last parameter is Vector2 x=fold, y=distance from start (lenght of leaf from the begining to this point))) + CurvesContainer newSimpleCurves = simplifyCurves(_widthCurve, _foldCurve, simplification); + Mesh mesh = createSweepSufraceMeshVector(length, width, newSimpleCurves._widthCurve, newSimpleCurves._foldCurve); + GetComponent().mesh = mesh; + + + if (frame == framesBetweenSteps * maxNumberOfSteps && colision) { + gameObject.AddComponent(); + gameObject.GetComponent().useGravity = false; + gameObject.AddComponent(); + gameObject.GetComponent().connectedBody = colisionJoint; + // gameObject.GetComponent().isKinematic = true; + gameObject.AddComponent(); + gameObject.GetComponent().convex = true; + gameObject.GetComponent().sharedMesh = mesh; + } + } + int branchesMargin = 0; + int branchesDistance = 0; + float scaleL = 1.0f; + Mesh createSweepSufraceMesh(float length, float width, float[] _widthCurve, float[] _foldCurve)//Vector2[] foldCurve) + { + Mesh mesh = new Mesh(); + int j = 0; + Vector3[] newVertices = new Vector3[_widthCurve.Length * 6]; + Vector3[] newnormals = new Vector3[_widthCurve.Length * 6]; + float i = 0.0f; + float re = 0.0f; + int al = _widthCurve.Length * 3; + for (i = 0.0f; i < _widthCurve.Length; i++) { + float thicknessThisRow = thickness; + infold = (float)gauss(((double)i) / ((_widthCurve.Length)), 0.5, 0.0, 1.0) * startInfold; + if (i == _widthCurve.Length - 1) { + infold = 0; + thicknessThisRow = 0.0001f; + _widthCurve[(int)i] = 0.00001f; + Debug.Log("last Frame"); + } + + Debug.Log("#infold = " + infold); + if (roughEdges && i > roughEdgesSize * 4.0f) { + re = 0.005f * (float)(i % roughEdgesSize); + if (re > _widthCurve[(int)i] / 4.0f) { + re = _widthCurve[(int)i] / 4.0f; + } + } + else { + re = 0.0f; + } + // ------- downside of the leaf -------- + Vector3 newVer = new Vector3((length / numberOfAnimationSteps) * i * scaleL, _widthCurve[(int)i] * width + re, _foldCurve[(int)i] - infold * (0.3f + _widthCurve[(int)i])); + newVertices[(int)i * 3 + 0] = newVer; + newnormals[(int)i * 3 + 0] = new Vector3(0, 0, 1); + + newVer = new Vector3((length / numberOfAnimationSteps) * i * scaleL, 0.0f, _foldCurve[(int)i] + thicknessThisRow); + newVertices[(int)i * 3 + 1] = newVer; + newnormals[(int)i * 3 + 1] = new Vector3(0, 0, 1); + + newVer = new Vector3((length / numberOfAnimationSteps) * i * scaleL, -1.0f * _widthCurve[(int)i] * width + re, _foldCurve[(int)i] - infold * (0.3f + _widthCurve[(int)i])); + newVertices[(int)i * 3 + 2] = newVer; + newnormals[(int)i * 3 + 2] = new Vector3(0, 0, 1); + + // ------- upside of the leaf -------- + newVer = new Vector3((length / numberOfAnimationSteps) * i * scaleL, _widthCurve[(int)i] * width + re, _foldCurve[(int)i] - infold * (0.3f + _widthCurve[(int)i])); + newVertices[(int)i * 3 + 0 + al] = newVer; + newnormals[(int)i * 3 + 0 + al] = new Vector3(0, 0, -1); + + newVer = new Vector3((length / numberOfAnimationSteps) * i * scaleL, 0.0f, _foldCurve[(int)i]); + newVertices[(int)i * 3 + 1 + al] = newVer; + newnormals[(int)i * 3 + 1 + al] = new Vector3(0, 0, -1); + + newVer = new Vector3((length / numberOfAnimationSteps) * i * scaleL, -1.0f * _widthCurve[(int)i] * width + re, _foldCurve[(int)i] - infold * (0.3f + _widthCurve[(int)i])); + newVertices[(int)i * 3 + 2 + al] = newVer; + newnormals[(int)i * 3 + 2 + al] = new Vector3(0, 0, -1); + + // newVer = new Vector3((length/numberOfAnimationSteps)*i*scaleL, 0.0f, _foldCurve[(int)i]); + // newVertices[(int)i + al] = newVer; + // newnormals[(int)i + al] = new Vector3(0, 0, -1); + } + + if (branchesDistance == 0 || !showBranches) { + newTriangles = new int[(_widthCurve.Length - 1) * (24 * 2)]; + } + else { + newTriangles = new int[(_widthCurve.Length - 1) * (24 * 2) + 24 * ((_widthCurve.Length / branchesDistance))]; + } + + int ti = 0; + for (j = 1; j < _widthCurve.Length; j++) { + int k = j - 1; + if (showBranches || j != _widthCurve.Length - 1) { + + // ------- downside of the leaf -------- + newTriangles[ti++] = k * 3 + 1; + newTriangles[ti++] = k * 3; + newTriangles[ti++] = j * 3; + + newTriangles[ti++] = k * 3 + 1; + newTriangles[ti++] = j * 3; + newTriangles[ti++] = j * 3 + 1; + + newTriangles[ti++] = k * 3 + 1; + newTriangles[ti++] = j * 3 + 2; + newTriangles[ti++] = k * 3 + 2; + + newTriangles[ti++] = k * 3 + 1; + newTriangles[ti++] = j * 3 + 1; + newTriangles[ti++] = j * 3 + 2; + + // ------- upside of the leaf -------- + + newTriangles[ti++] = k * 3 + 1 + al; + newTriangles[ti++] = j * 3 + 0 + al; + newTriangles[ti++] = k * 3 + 0 + al; + + newTriangles[ti++] = k * 3 + 1 + al; + newTriangles[ti++] = j * 3 + 1 + al; + newTriangles[ti++] = j * 3 + 0 + al; + + newTriangles[ti++] = k * 3 + 1 + al; + newTriangles[ti++] = k * 3 + 2 + al; + newTriangles[ti++] = j * 3 + 2 + al; + + newTriangles[ti++] = k * 3 + 1 + al; + newTriangles[ti++] = j * 3 + 2 + al; + newTriangles[ti++] = j * 3 + 1 + al; + + + // newTriangles[ti++] = k * 3; + // newTriangles[ti++] = k + al; + // newTriangles[ti++] = j * 3; + // + // newTriangles[ti++] = j * 3; + // newTriangles[ti++] = k + al; + // newTriangles[ti++] = j + al; + // + // + // newTriangles[ti++] = k * 3 + 2; + // newTriangles[ti++] = j * 3 + 2; + // newTriangles[ti++] = k + al; + // + // + // newTriangles[ti++] = j + al; + // newTriangles[ti++] = k + al; + // newTriangles[ti++] = j * 3 + 2; + } + } + + + int abr = _widthCurve.Length * 4; + float mz = 0.0f; + + Vector2[] newUV = new Vector2[newVertices.Length]; + + for (j = 0; j < newUV.Length; j++) { + if (j < abr) { + newUV[j] = new Vector2(newVertices[j].x, newVertices[j].z); + if (mz < newVertices[j].z) { + mz = newVertices[j].z; + } + } + else { + newUV[j] = new Vector2(newVertices[j].x, newVertices[j].z + mz); + } + } + + mesh.vertices = newVertices; + // mesh.uv = newUV; + mesh.triangles = newTriangles; + mesh.RecalculateBounds(); + mesh.triangles = mesh.triangles.Reverse().ToArray(); + mesh.normals = newnormals; + mesh.RecalculateNormals(); + + if (showBranches) { + // newTriangles = newTriangles.Reverse().ToArray(); + for (i = 0.0f; i < _widthCurve.Length; i++) { + float branchThickness = 1.2f * thickness; + if (_widthCurve[(int)i] / 10.0f < branchThickness) { + branchThickness = _widthCurve[(int)i] / 10.0f; + } + Vector3 newVer = new Vector3((length / numberOfAnimationSteps) * i * scaleL, 0.0f, _foldCurve[(int)i] + (branchThickness)); + newVertices[(int)i * 4 + 0 + abr] = newVer; + newVer = new Vector3((length / numberOfAnimationSteps) * i * scaleL, 0.0f, _foldCurve[(int)i] - (branchThickness)); + newVertices[(int)i * 4 + 1 + abr] = newVer; + newVer = new Vector3((length / numberOfAnimationSteps) * i * scaleL, branchThickness, _foldCurve[(int)i]); + newVertices[(int)i * 4 + 2 + abr] = newVer; + newVer = new Vector3((length / numberOfAnimationSteps) * i * scaleL, -branchThickness, _foldCurve[(int)i]); + newVertices[(int)i * 4 + 3 + abr] = newVer; + Debug.Log("#_foldCurve[(int)i]=" + _foldCurve[(int)i]); + } + for (j = 1; j < _widthCurve.Length; j++) { + int k = j - 1; + + // prawa i lewa patrząc od góry ODWRÓCONE + + newTriangles[ti++] = k * 4 + 0 + abr;//góra prawa i 2 na dole + newTriangles[ti++] = k * 4 + 2 + abr; + newTriangles[ti++] = j * 4 + 2 + abr; + + newTriangles[ti++] = j * 4 + 2 + abr;//góra prawa i 2 u góry + newTriangles[ti++] = j * 4 + 0 + abr; + newTriangles[ti++] = k * 4 + 0 + abr; + // + newTriangles[ti++] = k * 4 + 3 + abr;//góra lewa i 2 na dole + newTriangles[ti++] = k * 4 + 0 + abr; + newTriangles[ti++] = j * 4 + 0 + abr; + + newTriangles[ti++] = j * 4 + 3 + abr;//góra lewa i 2 u góry + newTriangles[ti++] = k * 4 + 3 + abr; + newTriangles[ti++] = j * 4 + 0 + abr; + // + + + + newTriangles[ti++] = j * 4 + 3 + abr;//dół lewa i 2 na dole + newTriangles[ti++] = k * 4 + 1 + abr; + newTriangles[ti++] = k * 4 + 3 + abr; + // + newTriangles[ti++] = j * 4 + 3 + abr;//dół lewa i 2 u góry + newTriangles[ti++] = j * 4 + 1 + abr; + newTriangles[ti++] = k * 4 + 1 + abr; + // + newTriangles[ti++] = j * 4 + 1 + abr;//dół prawa i 2 na dole + newTriangles[ti++] = k * 4 + 2 + abr; + newTriangles[ti++] = k * 4 + 1 + abr; + // + newTriangles[ti++] = j * 4 + 2 + abr;//dół prawa i 2 u góry + newTriangles[ti++] = k * 4 + 2 + abr; + newTriangles[ti++] = j * 4 + 1 + abr; + + //// prawa i lewa patrząc od góry + // + // newTriangles[ti++] = k * 4 + 0 + abr;//góra prawa i 2 na dole + // newTriangles[ti++] = j * 4 + 0 + abr; + // newTriangles[ti++] = k * 4 + 3 + abr; + // + // newTriangles[ti++] = j * 4 + 3 + abr;//góra lewa i 2 u góry + // newTriangles[ti++] = j * 4 + 0 + abr; + // newTriangles[ti++] = k * 4 + 0 + abr; + //// + // newTriangles[ti++] = k * 4 + 3 + abr;//góra lewa i 2 na dole + // newTriangles[ti++] = j * 4 + 0 + abr; + // newTriangles[ti++] = k * 4 + 0 + abr; + // + // newTriangles[ti++] = j * 4 + 3 + abr;//góra prawa i 2 u góry + // newTriangles[ti++] = j * 4 + 0 + abr; + // newTriangles[ti++] = k * 4 + 3 + abr; + //// + //// + // newTriangles[ti++] = j * 4 + 3 + abr;//dół lewa i 2 na dole + // newTriangles[ti++] = k * 4 + 3 + abr; + // newTriangles[ti++] = k * 4 + 1 + abr; + //// + //// + // newTriangles[ti++] = j * 4 + 3 + abr;//dół lewa i 2 u góry + // newTriangles[ti++] = k * 4 + 1 + abr; + // newTriangles[ti++] = j * 4 + 1 + abr; + //// + // newTriangles[ti++] = j * 4 + 1 + abr;//dół prawa i 2 na dole + // newTriangles[ti++] = k * 4 + 1 + abr; + // newTriangles[ti++] = k * 4 + 2 + abr; + //// + // newTriangles[ti++] = j * 4 + 2 + abr;//dół prawa i 2 u góry + // newTriangles[ti++] = j * 4 + 1 + abr; + // newTriangles[ti++] = k * 4 + 2 + abr; + if (branchesDistance > 2) { + if (j % branchesDistance == 0 && j + branchesMargin < _widthCurve.Length && _widthCurve.Length > 2 * branchesMargin) { + newTriangles[ti++] = k * 4 + 1 + abr; + newTriangles[ti++] = k * 4 + 2 + abr; + newTriangles[ti++] = j * 3 + 2 + branchesMargin * 3; + + newTriangles[ti++] = k * 4 + 1 + abr; + newTriangles[ti++] = k * 4 + 2 + abr; + newTriangles[ti++] = j * 3 + 0 + branchesMargin * 3; + + newTriangles[ti++] = k * 4 + 0 + abr; + newTriangles[ti++] = k * 4 + 2 + abr; + newTriangles[ti++] = j * 3 + 2 + branchesMargin * 3; + + newTriangles[ti++] = k * 4 + 0 + abr; + newTriangles[ti++] = k * 4 + 3 + abr; + newTriangles[ti++] = j * 3 + 0 + branchesMargin * 3; + + newTriangles[ti++] = k * 4 + 1 + abr; + newTriangles[ti++] = k * 4 + 3 + abr; + newTriangles[ti++] = j * 3 + 2 + branchesMargin * 3; + + newTriangles[ti++] = k * 4 + 1 + abr; + newTriangles[ti++] = k * 4 + 3 + abr; + newTriangles[ti++] = j * 3 + 0 + branchesMargin * 3; + + newTriangles[ti++] = k * 4 + 0 + abr; + newTriangles[ti++] = k * 4 + 3 + abr; + newTriangles[ti++] = j * 3 + 2 + branchesMargin * 3; + + newTriangles[ti++] = k * 4 + 0 + abr; + newTriangles[ti++] = k * 4 + 3 + abr; + newTriangles[ti++] = j * 3 + 0 + branchesMargin * 3; + } + } + } + + mesh.vertices = newVertices; + // mesh.uv = newUV; + mesh.triangles = newTriangles; + + mesh.triangles = mesh.triangles.Reverse().ToArray(); + } + newUV = new Vector2[newVertices.Length]; + + mz = 0.0f; + + for (j = 0; j < newUV.Length; j++) { + // if(j _widthCurve.Length - 3) { + infold = 0; + thicknessThisRow = 0.0001f; + _widthCurve[(int)i] = 0.00001f; + Debug.Log("last Frame"); + } + Debug.Log("#infold = " + infold); + if (roughEdges && i > roughEdgesSize * 4.0f) { + re = 0.005f * (float)(i % roughEdgesSize); + if (re > _widthCurve[(int)i] / 4.0f) { + re = _widthCurve[(int)i] / 4.0f; + } + } + else { + re = 0.0f; + } + // ------- downside of the leaf -------- + Vector3 newVer = new Vector3((length / numberOfAnimationSteps) * scaleL * _foldCurve[(int)i].y, _widthCurve[(int)i] * width + re, _foldCurve[(int)i].x - infold * (0.3f + _widthCurve[(int)i])); + newVertices[(int)i * 3 + 0] = newVer; + newnormals[(int)i * 3 + 0] = new Vector3(0, 0, 1); + + newVer = new Vector3((length / numberOfAnimationSteps) * scaleL * _foldCurve[(int)i].y, 0.0f, _foldCurve[(int)i].x + thicknessThisRow); + newVertices[(int)i * 3 + 1] = newVer; + newnormals[(int)i * 3 + 1] = new Vector3(0, 0, 1); + + newVer = new Vector3((length / numberOfAnimationSteps) * scaleL * _foldCurve[(int)i].y, -1.0f * _widthCurve[(int)i] * width + re, _foldCurve[(int)i].x - infold * (0.3f + _widthCurve[(int)i])); + newVertices[(int)i * 3 + 2] = newVer; + newnormals[(int)i * 3 + 2] = new Vector3(0, 0, 1); + + // ------- upside of the leaf -------- + newVer = new Vector3((length / numberOfAnimationSteps) * scaleL * _foldCurve[(int)i].y, _widthCurve[(int)i] * width + re, _foldCurve[(int)i].x - infold * (0.3f + _widthCurve[(int)i])); + newVertices[(int)i * 3 + 0 + al] = newVer; + newnormals[(int)i * 3 + 0 + al] = new Vector3(0, 0, -1); + + newVer = new Vector3((length / numberOfAnimationSteps) * scaleL * _foldCurve[(int)i].y, 0.0f, _foldCurve[(int)i].x); + newVertices[(int)i * 3 + 1 + al] = newVer; + newnormals[(int)i * 3 + 1 + al] = new Vector3(0, 0, -1); + + newVer = new Vector3((length / numberOfAnimationSteps) * scaleL * _foldCurve[(int)i].y, -1.0f * _widthCurve[(int)i] * width + re, _foldCurve[(int)i].x - infold * (0.3f + _widthCurve[(int)i])); + newVertices[(int)i * 3 + 2 + al] = newVer; + newnormals[(int)i * 3 + 2 + al] = new Vector3(0, 0, -1); + + } + + if (branchesDistance == 0 || !showBranches) { + newTriangles = new int[(_widthCurve.Length - 1) * (24 * 2)]; + } + else { + newTriangles = new int[(_widthCurve.Length - 1) * (24 * 2) + 24 * ((_widthCurve.Length / branchesDistance))]; + } + + int ti = 0; + for (j = 1; j < _widthCurve.Length; j++) { + int k = j - 1; + if (showBranches || j != _widthCurve.Length - 1) { + + // ------- downside of the leaf -------- + newTriangles[ti++] = k * 3 + 1; + newTriangles[ti++] = k * 3; + newTriangles[ti++] = j * 3; + + newTriangles[ti++] = k * 3 + 1; + newTriangles[ti++] = j * 3; + newTriangles[ti++] = j * 3 + 1; + + newTriangles[ti++] = k * 3 + 1; + newTriangles[ti++] = j * 3 + 2; + newTriangles[ti++] = k * 3 + 2; + + newTriangles[ti++] = k * 3 + 1; + newTriangles[ti++] = j * 3 + 1; + newTriangles[ti++] = j * 3 + 2; + + // ------- upside of the leaf -------- + + newTriangles[ti++] = k * 3 + 1 + al; + newTriangles[ti++] = j * 3 + 0 + al; + newTriangles[ti++] = k * 3 + 0 + al; + + newTriangles[ti++] = k * 3 + 1 + al; + newTriangles[ti++] = j * 3 + 1 + al; + newTriangles[ti++] = j * 3 + 0 + al; + + newTriangles[ti++] = k * 3 + 1 + al; + newTriangles[ti++] = k * 3 + 2 + al; + newTriangles[ti++] = j * 3 + 2 + al; + + newTriangles[ti++] = k * 3 + 1 + al; + newTriangles[ti++] = j * 3 + 2 + al; + newTriangles[ti++] = j * 3 + 1 + al; + + + } + } + + + int abr = _widthCurve.Length * 4; + float mz = 0.0f; + + Vector2[] newUV = new Vector2[newVertices.Length]; + + for (j = 0; j < newUV.Length; j++) { + if (j < abr) { + newUV[j] = new Vector2(newVertices[j].x, newVertices[j].z); + if (mz < newVertices[j].z) { + mz = newVertices[j].z; + } + } + else { + newUV[j] = new Vector2(newVertices[j].x, newVertices[j].z + mz); + } + } + + mesh.vertices = newVertices; + // mesh.uv = newUV; + mesh.triangles = newTriangles; + mesh.RecalculateBounds(); + mesh.triangles = mesh.triangles.Reverse().ToArray(); + mesh.normals = newnormals; + mesh.RecalculateNormals(); + + if (showBranches) { + // newTriangles = newTriangles.Reverse().ToArray(); + for (i = 0.0f; i < _widthCurve.Length; i++) { + float branchThickness = 1.2f * thickness; + if (_widthCurve[(int)i] / 10.0f < branchThickness) { + branchThickness = _widthCurve[(int)i] / 10.0f; + } + Vector3 newVer = new Vector3((length / numberOfAnimationSteps) * scaleL * _foldCurve[(int)i].y, 0.0f, _foldCurve[(int)i].x + (branchThickness)); + newVertices[(int)i * 4 + 0 + abr] = newVer; + newVer = new Vector3((length / numberOfAnimationSteps) * scaleL * _foldCurve[(int)i].y, 0.0f, _foldCurve[(int)i].x - (branchThickness)); + newVertices[(int)i * 4 + 1 + abr] = newVer; + newVer = new Vector3((length / numberOfAnimationSteps) * scaleL * _foldCurve[(int)i].y, branchThickness, _foldCurve[(int)i].x); + newVertices[(int)i * 4 + 2 + abr] = newVer; + newVer = new Vector3((length / numberOfAnimationSteps) * scaleL * _foldCurve[(int)i].y, -branchThickness, _foldCurve[(int)i].x); + newVertices[(int)i * 4 + 3 + abr] = newVer; + Debug.Log("#_foldCurve[(int)i]=" + _foldCurve[(int)i]); + } + for (j = 1; j < _widthCurve.Length; j++) { + int k = j - 1; + + // prawa i lewa patrząc od góry ODWRÓCONE + + newTriangles[ti++] = k * 4 + 0 + abr;//góra prawa i 2 na dole + newTriangles[ti++] = k * 4 + 2 + abr; + newTriangles[ti++] = j * 4 + 2 + abr; + + newTriangles[ti++] = j * 4 + 2 + abr;//góra prawa i 2 u góry + newTriangles[ti++] = j * 4 + 0 + abr; + newTriangles[ti++] = k * 4 + 0 + abr; + // + newTriangles[ti++] = k * 4 + 3 + abr;//góra lewa i 2 na dole + newTriangles[ti++] = k * 4 + 0 + abr; + newTriangles[ti++] = j * 4 + 0 + abr; + + newTriangles[ti++] = j * 4 + 3 + abr;//góra lewa i 2 u góry + newTriangles[ti++] = k * 4 + 3 + abr; + newTriangles[ti++] = j * 4 + 0 + abr; + // + + + + newTriangles[ti++] = j * 4 + 3 + abr;//dół lewa i 2 na dole + newTriangles[ti++] = k * 4 + 1 + abr; + newTriangles[ti++] = k * 4 + 3 + abr; + // + newTriangles[ti++] = j * 4 + 3 + abr;//dół lewa i 2 u góry + newTriangles[ti++] = j * 4 + 1 + abr; + newTriangles[ti++] = k * 4 + 1 + abr; + // + newTriangles[ti++] = j * 4 + 1 + abr;//dół prawa i 2 na dole + newTriangles[ti++] = k * 4 + 2 + abr; + newTriangles[ti++] = k * 4 + 1 + abr; + // + newTriangles[ti++] = j * 4 + 2 + abr;//dół prawa i 2 u góry + newTriangles[ti++] = k * 4 + 2 + abr; + newTriangles[ti++] = j * 4 + 1 + abr; + + //// prawa i lewa patrząc od góry + // + // newTriangles[ti++] = k * 4 + 0 + abr;//góra prawa i 2 na dole + // newTriangles[ti++] = j * 4 + 0 + abr; + // newTriangles[ti++] = k * 4 + 3 + abr; + // + // newTriangles[ti++] = j * 4 + 3 + abr;//góra lewa i 2 u góry + // newTriangles[ti++] = j * 4 + 0 + abr; + // newTriangles[ti++] = k * 4 + 0 + abr; + //// + // newTriangles[ti++] = k * 4 + 3 + abr;//góra lewa i 2 na dole + // newTriangles[ti++] = j * 4 + 0 + abr; + // newTriangles[ti++] = k * 4 + 0 + abr; + // + // newTriangles[ti++] = j * 4 + 3 + abr;//góra prawa i 2 u góry + // newTriangles[ti++] = j * 4 + 0 + abr; + // newTriangles[ti++] = k * 4 + 3 + abr; + //// + //// + // newTriangles[ti++] = j * 4 + 3 + abr;//dół lewa i 2 na dole + // newTriangles[ti++] = k * 4 + 3 + abr; + // newTriangles[ti++] = k * 4 + 1 + abr; + //// + //// + // newTriangles[ti++] = j * 4 + 3 + abr;//dół lewa i 2 u góry + // newTriangles[ti++] = k * 4 + 1 + abr; + // newTriangles[ti++] = j * 4 + 1 + abr; + //// + // newTriangles[ti++] = j * 4 + 1 + abr;//dół prawa i 2 na dole + // newTriangles[ti++] = k * 4 + 1 + abr; + // newTriangles[ti++] = k * 4 + 2 + abr; + //// + // newTriangles[ti++] = j * 4 + 2 + abr;//dół prawa i 2 u góry + // newTriangles[ti++] = j * 4 + 1 + abr; + // newTriangles[ti++] = k * 4 + 2 + abr; + if (branchesDistance > 2) { + if (j % branchesDistance == 0 && j + branchesMargin < _widthCurve.Length && _widthCurve.Length > 2 * branchesMargin) { + newTriangles[ti++] = k * 4 + 1 + abr; + newTriangles[ti++] = k * 4 + 2 + abr; + newTriangles[ti++] = j * 3 + 2 + branchesMargin * 3; + + newTriangles[ti++] = k * 4 + 1 + abr; + newTriangles[ti++] = k * 4 + 2 + abr; + newTriangles[ti++] = j * 3 + 0 + branchesMargin * 3; + + newTriangles[ti++] = k * 4 + 0 + abr; + newTriangles[ti++] = k * 4 + 2 + abr; + newTriangles[ti++] = j * 3 + 2 + branchesMargin * 3; + + newTriangles[ti++] = k * 4 + 0 + abr; + newTriangles[ti++] = k * 4 + 3 + abr; + newTriangles[ti++] = j * 3 + 0 + branchesMargin * 3; + + newTriangles[ti++] = k * 4 + 1 + abr; + newTriangles[ti++] = k * 4 + 3 + abr; + newTriangles[ti++] = j * 3 + 2 + branchesMargin * 3; + + newTriangles[ti++] = k * 4 + 1 + abr; + newTriangles[ti++] = k * 4 + 3 + abr; + newTriangles[ti++] = j * 3 + 0 + branchesMargin * 3; + + newTriangles[ti++] = k * 4 + 0 + abr; + newTriangles[ti++] = k * 4 + 3 + abr; + newTriangles[ti++] = j * 3 + 2 + branchesMargin * 3; + + newTriangles[ti++] = k * 4 + 0 + abr; + newTriangles[ti++] = k * 4 + 3 + abr; + newTriangles[ti++] = j * 3 + 0 + branchesMargin * 3; + } + } + } + + mesh.vertices = newVertices; + // mesh.uv = newUV; + mesh.triangles = newTriangles; + + mesh.triangles = mesh.triangles.Reverse().ToArray(); + } + newUV = new Vector2[newVertices.Length]; + + mz = 0.0f; + + for (j = 0; j < newUV.Length; j++) { + // if(j 1 && i < _foldCurve.Length - 2) { + if (Mathf.Abs((_widthCurve[i + 1] - _widthCurve[i]) - (_widthCurve[i] - _widthCurve[i - 1])) < simplification) { + continue; + } + } + _foldCurveVectorFull[j] = new Vector2(_foldCurve[i], i); + _widthCurveNewFull[j++] = _widthCurve[i]; + } + Vector2[] _foldCurveVector = new Vector2[j]; + float[] _widthCurveNew = new float[j]; + for (int i = 0; i < j; i++) { + _foldCurveVector[i] = _foldCurveVectorFull[i]; + _widthCurveNew[i] = _widthCurveNewFull[i]; + } + return new CurvesContainer(_widthCurveNew, _foldCurveVector); + } +} diff --git a/Unity Project/Assets/Scripts/LeafGrow.cs.meta b/Unity Project/Assets/Scripts/LeafGrow.cs.meta new file mode 100644 index 0000000..d85d4f5 --- /dev/null +++ b/Unity Project/Assets/Scripts/LeafGrow.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ea4550bcec5ad4f4aba095cca2b42cb4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Scripts/LeafGrowScript.cs b/Unity Project/Assets/Scripts/LeafGrowScript.cs new file mode 100644 index 0000000..5db6589 --- /dev/null +++ b/Unity Project/Assets/Scripts/LeafGrowScript.cs @@ -0,0 +1,337 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class LeafGrowScript : MonoBehaviour +{ + public GameObject parent; + public GameObject materialSettings; + [Header("Leaf shape")] + public Vector2[] widthCurveKeyPoints = {new Vector2(0.0f, 0.0f), new Vector2(0.5f, 1.0f), new Vector2(1.0f, 0.0f)}; + public Vector2[] foldCurveKeyPoints = {new Vector2(0.0f, 0.0f), new Vector2(0.5f, 1.0f), new Vector2(1.0f, 0.0f)}; + public float lengthScale = 0.06f; + public float thickness = 0.01f; + public float infold = 0.03f; + + [Header("Animation and resolution")] + public float framesBetweenSteps = 2.0f; + public int numberOfAnimationSteps = 30; + [Comment("The number of animation steps also affects the resolution of the model", "8 * numberOfAnimationSteps = number of vertices")] + public bool commentSpace = true; + // EditorGUILayout.HelpBox("Number of animation steps also affects resolution of the model" , MessageType.Info); + + [Header("Special features")] + public bool roughEdges = false; + public int roughEdgesSize = 10; + public int numberOfBranchesPairs = 10; + public bool showBranches = false; + public bool colision = false; + public Rigidbody colisionJoint; + + [Header("Position")] + public float positionX = 0.0f; + public float positionY = 0.0f; + public float positionZ = 0.0f; + + [Header("Rotation")] + public float rotationX = 0.0f; + public float rotationY = 0.0f; + public float rotationZ = 0.0f; + + [Header("Copies of leaf")] + public int numberOfCopies = 0; + + public float positionXMove = 0.0f; + public float positionYMove = 0.0f; + public float positionZMove = 0.0f; + public float rotationXChange = 0.0f; + public float rotationYChange = 0.0f; + public float rotationZChange = 0.0f; + public int animationStepsChange = -1; + [Comment("Decrease the number of animation steps with each copy", "AnimationStepsLimit")] + public bool commentSpaceB = true; + public int animationFrameDelay = 2; + [Comment("Delay between creation of each copy", "animationFrameDelay")] + public bool commentSpaceC = true; + + int maxNumberOfSteps = 0; + int frame = 0; + // Start is called before the first frame update + public void addNewLeaf(GameObject newParent, Vector3 newPosition, Vector3 newRotation, Vector2[] newWidthCurveKeyPoints, Vector2[] newFoldCurveKeyPoints, float newLengthScale, float newThickness, float newInfold) + { + GameObject leafObject = new GameObject("newLeaf"); + int i = 0; + MeshFilter leafMeshFilter = leafObject.AddComponent(); + leafMeshFilter = materialSettings.GetComponent(); + MeshRenderer leafMeshRenderer = leafObject.AddComponent(); + leafMeshRenderer = materialSettings.GetComponent(); + leafObject.GetComponent().material = materialSettings.GetComponent().material; + + + LeafGrow newLeaf = leafObject.AddComponent(); + leafObject.GetComponent().parent = newParent.GetComponent(); + leafObject.GetComponent().localPosition = newPosition; + leafObject.GetComponent().localRotation = Quaternion.Euler(newRotation.x, newRotation.y, newRotation.z); + + + Keyframe[] widthCurveKeys = new Keyframe[newWidthCurveKeyPoints.Length]; + float directionIn = 0.0f; + float directionOut= 0.0f; + for(i=0;i newWidthCurveKeyPoints[i-1].y) + { + directionIn = (newWidthCurveKeyPoints[i+1].x - newWidthCurveKeyPoints[i-1].x); + } + if(newWidthCurveKeyPoints[i+1].y < newWidthCurveKeyPoints[i-1].y) + { + directionIn = (newWidthCurveKeyPoints[i-1].x - newWidthCurveKeyPoints[i+1].x); + } + if(newWidthCurveKeyPoints[i-1].y > newWidthCurveKeyPoints[i+1].y) + { + directionOut = (newWidthCurveKeyPoints[i-1].x - newWidthCurveKeyPoints[i+1].x); + } + if(newWidthCurveKeyPoints[i-1].y < newWidthCurveKeyPoints[i+1].y) + { + directionOut = (newWidthCurveKeyPoints[i+1].x - newWidthCurveKeyPoints[i-1].x); + } + widthCurveKeys[i] = new Keyframe(newWidthCurveKeyPoints[i].x, newWidthCurveKeyPoints[i].y, directionIn, directionOut, 0.4f ,0.4f); + } + else + { + widthCurveKeys[i] = new Keyframe(newWidthCurveKeyPoints[i].x, newWidthCurveKeyPoints[i].y, 0,0,0,0); + } + } + AnimationCurve widthCurve = new AnimationCurve(widthCurveKeys); +// widthCurve.preWrapMode = WrapMode.PingPong; +// widthCurve.postWrapMode = WrapMode.PingPong; + + Keyframe[] foldCurveKeys = new Keyframe[newFoldCurveKeyPoints.Length]; + + for(i=0;i newFoldCurveKeyPoints[i-1].y) + { + directionIn = (newFoldCurveKeyPoints[i+1].x - newFoldCurveKeyPoints[i-1].x); + } + if(newFoldCurveKeyPoints[i+1].y < newFoldCurveKeyPoints[i-1].y) + { + directionIn = (newFoldCurveKeyPoints[i-1].x - newFoldCurveKeyPoints[i+1].x); + } + if(newFoldCurveKeyPoints[i-1].y > newFoldCurveKeyPoints[i+1].y) + { + directionOut = (newFoldCurveKeyPoints[i-1].x - newFoldCurveKeyPoints[i+1].x); + } + if(newFoldCurveKeyPoints[i-1].y < newFoldCurveKeyPoints[i+1].y) + { + directionOut = (newFoldCurveKeyPoints[i+1].x - newFoldCurveKeyPoints[i-1].x); + } + foldCurveKeys[i] = new Keyframe(newFoldCurveKeyPoints[i].x, newFoldCurveKeyPoints[i].y, directionIn, directionOut, 0.4f ,0.4f); + } + else + { + foldCurveKeys[i] = new Keyframe(newFoldCurveKeyPoints[i].x, newFoldCurveKeyPoints[i].y, 0,0,0,0); + } + } + AnimationCurve foldCurve = new AnimationCurve(foldCurveKeys); +// foldCurve.preWrapMode = WrapMode.PingPong; +// foldCurve.postWrapMode = WrapMode.PingPong; + + + newLeaf.widthCurve = widthCurve; + newLeaf.foldCurve = foldCurve; + newLeaf.length = newLengthScale; + newLeaf.thickness = newThickness; + newLeaf.infold = newInfold; + newLeaf.framesBetweenSteps = framesBetweenSteps; + newLeaf.numberOfAnimationSteps = numberOfAnimationSteps; + newLeaf.roughEdges = roughEdges; + newLeaf.roughEdgesSize = roughEdgesSize; + newLeaf.numberOfBranchesPairs = numberOfBranchesPairs; + newLeaf.showBranches = showBranches; + newLeaf.colision = colision; + newLeaf.colisionJoint = colisionJoint; + newLeaf.maxNumberOfSteps = maxNumberOfSteps; + } + public void Grow(bool inEditor = false) + { + GameObject leafObject = new GameObject("leafScriptStart"); + int i = 0; + MeshFilter leafMeshFilter = leafObject.AddComponent(); + leafMeshFilter = materialSettings.GetComponent(); + MeshRenderer leafMeshRenderer = leafObject.AddComponent(); + leafMeshRenderer = materialSettings.GetComponent(); + leafObject.GetComponent().material = materialSettings.GetComponent().material; + + + LeafGrow newLeaf = leafObject.AddComponent(); + leafObject.GetComponent().parent = parent.GetComponent(); + leafObject.GetComponent().localPosition = new Vector3(positionX, positionY, positionZ); + leafObject.GetComponent().localRotation = Quaternion.Euler(rotationX, rotationY, rotationZ); + + Keyframe[] widthCurveKeys = new Keyframe[widthCurveKeyPoints.Length]; + float directionIn = 0.0f; + float directionOut= 0.0f; + for(i=0;i widthCurveKeyPoints[i-1].y) + { + directionIn = (widthCurveKeyPoints[i+1].x - widthCurveKeyPoints[i-1].x); + } + if(widthCurveKeyPoints[i+1].y < widthCurveKeyPoints[i-1].y) + { + directionIn = (widthCurveKeyPoints[i-1].x - widthCurveKeyPoints[i+1].x); + } + if(widthCurveKeyPoints[i-1].y > widthCurveKeyPoints[i+1].y) + { + directionOut = (widthCurveKeyPoints[i-1].x - widthCurveKeyPoints[i+1].x); + } + if(widthCurveKeyPoints[i-1].y < widthCurveKeyPoints[i+1].y) + { + directionOut = (widthCurveKeyPoints[i+1].x - widthCurveKeyPoints[i-1].x); + } + widthCurveKeys[i] = new Keyframe(widthCurveKeyPoints[i].x, widthCurveKeyPoints[i].y, directionIn, directionOut, 0.4f ,0.4f); + } + else + { + widthCurveKeys[i] = new Keyframe(widthCurveKeyPoints[i].x, widthCurveKeyPoints[i].y, 0,0,0,0); + } + } + AnimationCurve widthCurve = new AnimationCurve(widthCurveKeys); +// widthCurve.preWrapMode = WrapMode.PingPong; +// widthCurve.postWrapMode = WrapMode.PingPong; + + Keyframe[] foldCurveKeys = new Keyframe[foldCurveKeyPoints.Length]; + + for(i=0;i foldCurveKeyPoints[i-1].y) + { + directionIn = (foldCurveKeyPoints[i+1].x - foldCurveKeyPoints[i-1].x); + } + if(foldCurveKeyPoints[i+1].y < foldCurveKeyPoints[i-1].y) + { + directionIn = (foldCurveKeyPoints[i-1].x - foldCurveKeyPoints[i+1].x); + } + if(foldCurveKeyPoints[i-1].y > foldCurveKeyPoints[i+1].y) + { + directionOut = (foldCurveKeyPoints[i-1].x - foldCurveKeyPoints[i+1].x); + } + if(foldCurveKeyPoints[i-1].y < foldCurveKeyPoints[i+1].y) + { + directionOut = (foldCurveKeyPoints[i+1].x - foldCurveKeyPoints[i-1].x); + } + foldCurveKeys[i] = new Keyframe(foldCurveKeyPoints[i].x, foldCurveKeyPoints[i].y, directionIn, directionOut, 0.4f ,0.4f); + } + else + { + foldCurveKeys[i] = new Keyframe(foldCurveKeyPoints[i].x, foldCurveKeyPoints[i].y, 0,0,0,0); + } + } + AnimationCurve foldCurve = new AnimationCurve(foldCurveKeys); +// foldCurve.preWrapMode = WrapMode.PingPong; +// foldCurve.postWrapMode = WrapMode.PingPong; + + + newLeaf.widthCurve = widthCurve; + newLeaf.foldCurve = foldCurve; + newLeaf.length = lengthScale; + newLeaf.thickness = thickness; + newLeaf.infold = infold; + newLeaf.framesBetweenSteps = framesBetweenSteps; + newLeaf.numberOfAnimationSteps = numberOfAnimationSteps; + newLeaf.roughEdges = roughEdges; + newLeaf.roughEdgesSize = roughEdgesSize; + newLeaf.numberOfBranchesPairs = numberOfBranchesPairs; + newLeaf.showBranches = showBranches; + newLeaf.colision = colision; + newLeaf.colisionJoint = colisionJoint; + newLeaf.maxNumberOfSteps = maxNumberOfSteps; + + if(inEditor) + { + newLeaf.DrawLeaf(); + } + nextCopy(); + } + void nextCopy() + { + positionX += positionXMove; + positionY += positionYMove; + positionZ += positionZMove; + + rotationX += rotationXChange; + rotationY += rotationYChange; + rotationZ += rotationZChange; + + if(numberOfAnimationSteps > 4) + { + numberOfAnimationSteps += animationStepsChange; + } + } + private Vector3 spos; + private Vector3 srot; + private int numberOfAnimationStepsStart; + void Start() + { + maxNumberOfSteps = numberOfAnimationSteps; + spos = new Vector3(positionX, positionY, positionZ); + srot = new Vector3(rotationX, rotationY, rotationZ); + numberOfAnimationStepsStart = numberOfAnimationSteps; + } + public void DrawLeaf() + { + Start(); + for(int i=0; i/delta"); + movementAction = map.AddAction("move", binding: "/leftStick"); + verticalMovementAction = map.AddAction("Vertical Movement"); + boostFactorAction = map.AddAction("Boost Factor", binding: "/scroll"); + + lookAction.AddBinding("/rightStick").WithProcessor("scaleVector2(x=15, y=15)"); + movementAction.AddCompositeBinding("Dpad") + .With("Up", "/w") + .With("Up", "/upArrow") + .With("Down", "/s") + .With("Down", "/downArrow") + .With("Left", "/a") + .With("Left", "/leftArrow") + .With("Right", "/d") + .With("Right", "/rightArrow"); + verticalMovementAction.AddCompositeBinding("Dpad") + .With("Up", "/pageUp") + .With("Down", "/pageDown") + .With("Up", "/e") + .With("Down", "/q") + .With("Up", "/rightshoulder") + .With("Down", "/leftshoulder"); + boostFactorAction.AddBinding("/Dpad").WithProcessor("scaleVector2(x=1, y=4)"); + + movementAction.Enable(); + lookAction.Enable(); + verticalMovementAction.Enable(); + boostFactorAction.Enable(); + } +#endif + + void OnEnable() + { + m_TargetCameraState.SetFromTransform(transform); + m_InterpolatingCameraState.SetFromTransform(transform); + } + + Vector3 GetInputTranslationDirection() + { + Vector3 direction = Vector3.zero; +#if ENABLE_INPUT_SYSTEM + var moveDelta = movementAction.ReadValue(); + direction.x = moveDelta.x; + direction.z = moveDelta.y; + direction.y = verticalMovementAction.ReadValue().y; +#else + if (Input.GetKey(KeyCode.W)) + { + direction += Vector3.forward; + } + if (Input.GetKey(KeyCode.S)) + { + direction += Vector3.back; + } + if (Input.GetKey(KeyCode.A)) + { + direction += Vector3.left; + } + if (Input.GetKey(KeyCode.D)) + { + direction += Vector3.right; + } + if (Input.GetKey(KeyCode.Q)) + { + direction += Vector3.down; + } + if (Input.GetKey(KeyCode.E)) + { + direction += Vector3.up; + } +#endif + return direction; + } + + void Update() + { + // Exit Sample + + if (IsEscapePressed()) + { + Application.Quit(); + #if UNITY_EDITOR + UnityEditor.EditorApplication.isPlaying = false; + #endif + } + + // Hide and lock cursor when right mouse button pressed + if (IsRightMouseButtonDown()) + { + Cursor.lockState = CursorLockMode.Locked; + } + + // Unlock and show cursor when right mouse button released + if (IsRightMouseButtonUp()) + { + Cursor.visible = true; + Cursor.lockState = CursorLockMode.None; + } + + // Rotation + if (IsCameraRotationAllowed()) + { + var mouseMovement = GetInputLookRotation() * Time.deltaTime * 5; + if (invertY) + mouseMovement.y = -mouseMovement.y; + + var mouseSensitivityFactor = mouseSensitivityCurve.Evaluate(mouseMovement.magnitude); + + m_TargetCameraState.yaw += mouseMovement.x * mouseSensitivityFactor; + m_TargetCameraState.pitch += mouseMovement.y * mouseSensitivityFactor; + } + + // Translation + var translation = GetInputTranslationDirection() * Time.deltaTime; + + // Speed up movement when shift key held + if (IsBoostPressed()) + { + translation *= 10.0f; + } + + // Modify movement by a boost factor (defined in Inspector and modified in play mode through the mouse scroll wheel) + boost += GetBoostFactor(); + translation *= Mathf.Pow(2.0f, boost); + + m_TargetCameraState.Translate(translation); + + // Framerate-independent interpolation + // Calculate the lerp amount, such that we get 99% of the way to our target in the specified time + var positionLerpPct = 1f - Mathf.Exp((Mathf.Log(1f - 0.99f) / positionLerpTime) * Time.deltaTime); + var rotationLerpPct = 1f - Mathf.Exp((Mathf.Log(1f - 0.99f) / rotationLerpTime) * Time.deltaTime); + m_InterpolatingCameraState.LerpTowards(m_TargetCameraState, positionLerpPct, rotationLerpPct); + + m_InterpolatingCameraState.UpdateTransform(transform); + } + + float GetBoostFactor() + { +#if ENABLE_INPUT_SYSTEM + return boostFactorAction.ReadValue().y * 0.01f; +#else + return Input.mouseScrollDelta.y * 0.2f; +#endif + } + + Vector2 GetInputLookRotation() + { +#if ENABLE_INPUT_SYSTEM + return lookAction.ReadValue(); +#else + return new Vector2(Input.GetAxis("Mouse X"), Input.GetAxis("Mouse Y")) * 10; +#endif + } + + bool IsBoostPressed() + { +#if ENABLE_INPUT_SYSTEM + bool boost = Keyboard.current != null ? Keyboard.current.leftShiftKey.isPressed : false; + boost |= Gamepad.current != null ? Gamepad.current.xButton.isPressed : false; + return boost; +#else + return Input.GetKey(KeyCode.LeftShift); +#endif + + } + + bool IsEscapePressed() + { +#if ENABLE_INPUT_SYSTEM + return Keyboard.current != null ? Keyboard.current.escapeKey.isPressed : false; +#else + return Input.GetKey(KeyCode.Escape); +#endif + } + + bool IsCameraRotationAllowed() + { +#if ENABLE_INPUT_SYSTEM + bool canRotate = Mouse.current != null ? Mouse.current.rightButton.isPressed : false; + canRotate |= Gamepad.current != null ? Gamepad.current.rightStick.ReadValue().magnitude > 0 : false; + return canRotate; +#else + return Input.GetMouseButton(1); +#endif + } + + bool IsRightMouseButtonDown() + { +#if ENABLE_INPUT_SYSTEM + return Mouse.current != null ? Mouse.current.rightButton.isPressed : false; +#else + return Input.GetMouseButtonDown(1); +#endif + } + + bool IsRightMouseButtonUp() + { +#if ENABLE_INPUT_SYSTEM + return Mouse.current != null ? !Mouse.current.rightButton.isPressed : false; +#else + return Input.GetMouseButtonUp(1); +#endif + } + + } + +} \ No newline at end of file diff --git a/Unity Project/Assets/Scripts/SimpleCameraController.cs.meta b/Unity Project/Assets/Scripts/SimpleCameraController.cs.meta new file mode 100644 index 0000000..5bb6da8 --- /dev/null +++ b/Unity Project/Assets/Scripts/SimpleCameraController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: be76e5f14cfee674cb30b491fb72b09b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Scripts/Turtle2D.cs b/Unity Project/Assets/Scripts/Turtle2D.cs new file mode 100644 index 0000000..ca4b09a --- /dev/null +++ b/Unity Project/Assets/Scripts/Turtle2D.cs @@ -0,0 +1,25 @@ +using System.Collections; +using System.Collections.Generic; +using System.IO; +using UnityEditor; +using UnityEngine; +using ConsoleLSystem; +using System; + +public class Turtle2D : TurtleLSystem { + public GameObject obj; + public float angle; + + protected override void initLiteralInterpretation() { + turtleInterpretation = new Dictionary>>(); + //turtleInterpretation + var transformation = Matrix4x4.Translate(new Vector3(0.0f, 0.1f, 0)) * Matrix4x4.Scale(new Vector3 (0.05f, 0.1f, 0.05f)); + + turtleInterpretation.Add("+", (float[] args) => new Tuple(null, Matrix4x4.Rotate(Quaternion.Euler(0, 0, -angle)))); + turtleInterpretation.Add("-", (float[] args) => new Tuple(null, Matrix4x4.Rotate(Quaternion.Euler(0, 0, angle)))); + + //Wildcard how to represent any other symbol + turtleInterpretation.Add("*.*", (float[] args) => new Tuple(obj, transformation)); + } +} + \ No newline at end of file diff --git a/Unity Project/Assets/Scripts/Turtle2D.cs.meta b/Unity Project/Assets/Scripts/Turtle2D.cs.meta new file mode 100644 index 0000000..8d4419d --- /dev/null +++ b/Unity Project/Assets/Scripts/Turtle2D.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 077aaeb6378653940b8ed1da8871fed4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Scripts/Turtle3D.cs b/Unity Project/Assets/Scripts/Turtle3D.cs new file mode 100644 index 0000000..6cf6f87 --- /dev/null +++ b/Unity Project/Assets/Scripts/Turtle3D.cs @@ -0,0 +1,59 @@ +using System.Collections; +using System.Collections.Generic; +using System.IO; +using UnityEditor; +using UnityEngine; +using ConsoleLSystem; +using System; + +public class Turtle3D : TurtleLSystem { + public GameObject obj; + public GameObject sphere; + public float angle; + + private Func _roation(Vector3 axis) { + Matrix4x4 f(float[] args) { + if (args.Length == 0) { + return Matrix4x4.Rotate(Quaternion.AngleAxis(angle, axis)); + } + else { + return Matrix4x4.Rotate(Quaternion.AngleAxis(args[0], axis)); + } + } + return f; + } + + protected override void initLiteralInterpretation() { + turtleInterpretation = new Dictionary>>(); + //turtleInterpretation + var transformation = Matrix4x4.Translate(new Vector3(0.0f, 0.1f, 0)) * Matrix4x4.Scale(new Vector3 (0.05f, 0.1f, 0.05f)); + + //turtleInterpretation.Add("+", (float[] args) => new Tuple(null, Matrix4x4.Rotate(Quaternion.Euler(0, 0, -angle)))); + //turtleInterpretation.Add("-", (float[] args) => new Tuple(null, Matrix4x4.Rotate(Quaternion.Euler(0, 0, angle)))); + + //turtleInterpretation.Add("\\", (float[] args) => new Tuple(null, Matrix4x4.Rotate(Quaternion.Euler(0, -angle, 0)))); + //turtleInterpretation.Add("/", (float[] args) => new Tuple(null, Matrix4x4.Rotate(Quaternion.Euler(0, angle, 0)))); + + //turtleInterpretation.Add("^", (float[] args) => new Tuple(null, Matrix4x4.Rotate(Quaternion.Euler(-angle, 0, 0)))); + //turtleInterpretation.Add("&", (float[] args) => new Tuple(null, Matrix4x4.Rotate(Quaternion.Euler(angle, 0, 0)))); + + turtleInterpretation.Add("+", (float[] args) => new Tuple(null, _roation(Vector3.back)(args) )); + turtleInterpretation.Add("-", (float[] args) => new Tuple(null, _roation(Vector3.forward)(args))); + + turtleInterpretation.Add("\\", (float[] args) => new Tuple(null, _roation(Vector3.down)(args))); + turtleInterpretation.Add("/", (float[] args) => new Tuple(null, _roation(Vector3.up)(args))); + + turtleInterpretation.Add("^", (float[] args) => new Tuple(null, _roation(Vector3.left)(args))); + turtleInterpretation.Add("&", (float[] args) => new Tuple(null, _roation(Vector3.right)(args))); + + + turtleInterpretation.Add("f", (float[] args) => new Tuple(null, Matrix4x4.Translate(Vector3.up * args[0]))); + + turtleInterpretation.Add("S", (float[] args) => new Tuple(sphere,Matrix4x4.identity)); + + + //Wildcard how to represent any other symbol + turtleInterpretation.Add("*.*", (float[] args) => new Tuple(obj, transformation)); + } +} + \ No newline at end of file diff --git a/Unity Project/Assets/Scripts/Turtle3D.cs.meta b/Unity Project/Assets/Scripts/Turtle3D.cs.meta new file mode 100644 index 0000000..6f5d753 --- /dev/null +++ b/Unity Project/Assets/Scripts/Turtle3D.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fdbab7936197e9c4e9c5225e40810916 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Scripts/Turtle3DAnimated.cs b/Unity Project/Assets/Scripts/Turtle3DAnimated.cs new file mode 100644 index 0000000..954d3a1 --- /dev/null +++ b/Unity Project/Assets/Scripts/Turtle3DAnimated.cs @@ -0,0 +1,60 @@ +using System.Collections; +using System.Collections.Generic; +using System.IO; +using UnityEditor; +using UnityEngine; +using ConsoleLSystem; +using System; + +public class Turtle3DAnimated : TurtleLSystem { + public GameObject obj; + public GameObject sphere; + public float angle; + + private Func _roation(Vector3 axis) { + Matrix4x4 f(float[] args) { + if (args.Length == 0) { + return Matrix4x4.Rotate(Quaternion.AngleAxis(angle, axis)); + } + else { + return Matrix4x4.Rotate(Quaternion.AngleAxis(args[0], axis)); + } + } + return f; + } + + protected override void initLiteralInterpretation() { + turtleInterpretation = new Dictionary>>(); + //turtleInterpretation + var transformation = Matrix4x4.Translate(new Vector3(0.0f, 0.1f, 0)) * Matrix4x4.Scale(new Vector3 (0.05f, 0.1f, 0.05f)); + + //turtleInterpretation.Add("+", (float[] args) => new Tuple(null, Matrix4x4.Rotate(Quaternion.Euler(0, 0, -angle)))); + //turtleInterpretation.Add("-", (float[] args) => new Tuple(null, Matrix4x4.Rotate(Quaternion.Euler(0, 0, angle)))); + + //turtleInterpretation.Add("\\", (float[] args) => new Tuple(null, Matrix4x4.Rotate(Quaternion.Euler(0, -angle, 0)))); + //turtleInterpretation.Add("/", (float[] args) => new Tuple(null, Matrix4x4.Rotate(Quaternion.Euler(0, angle, 0)))); + + //turtleInterpretation.Add("^", (float[] args) => new Tuple(null, Matrix4x4.Rotate(Quaternion.Euler(-angle, 0, 0)))); + //turtleInterpretation.Add("&", (float[] args) => new Tuple(null, Matrix4x4.Rotate(Quaternion.Euler(angle, 0, 0)))); + + turtleInterpretation.Add("+", (float[] args) => new Tuple(null, _roation(Vector3.back)(args) )); + turtleInterpretation.Add("-", (float[] args) => new Tuple(null, _roation(Vector3.forward)(args))); + + turtleInterpretation.Add("\\", (float[] args) => new Tuple(null, _roation(Vector3.down)(args))); + turtleInterpretation.Add("/", (float[] args) => new Tuple(null, _roation(Vector3.up)(args))); + + turtleInterpretation.Add("^", (float[] args) => new Tuple(null, _roation(Vector3.left)(args))); + turtleInterpretation.Add("&", (float[] args) => new Tuple(null, _roation(Vector3.right)(args))); + + + turtleInterpretation.Add("f", (float[] args) => new Tuple(null, Matrix4x4.Translate(Vector3.up * args[0]))); + + turtleInterpretation.Add("S", (float[] args) => new Tuple(sphere,Matrix4x4.identity)); + + + //Wildcard how to represent any other symbol + //turtleInterpretation.Add("*.*", (float[] args) => new Tuple(obj, transformation)); + } + void Update() { base.Update(); } +} + \ No newline at end of file diff --git a/Unity Project/Assets/Scripts/Turtle3DAnimated.cs.meta b/Unity Project/Assets/Scripts/Turtle3DAnimated.cs.meta new file mode 100644 index 0000000..37c45e0 --- /dev/null +++ b/Unity Project/Assets/Scripts/Turtle3DAnimated.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4527a053b14070649a36fb06e5a69caf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Scripts/TurtleContextTask.cs b/Unity Project/Assets/Scripts/TurtleContextTask.cs new file mode 100644 index 0000000..caeb859 --- /dev/null +++ b/Unity Project/Assets/Scripts/TurtleContextTask.cs @@ -0,0 +1,65 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class TurtleContextTask : TurtleLSystem { + public GameObject obj; + public GameObject flower; + public GameObject leaf; + public float angle; + + private Func _roation(Vector3 axis) { + Matrix4x4 f(float[] args) { + if (args.Length == 0) { + return Matrix4x4.Rotate(Quaternion.AngleAxis(angle, axis)); + } + else { + return Matrix4x4.Rotate(Quaternion.AngleAxis(args[0], axis)); + } + } + return f; + } + + GameObject setColor(GameObject prefab, int index) { + var result = Instantiate(prefab); + switch (index) { + case 1: + result.GetComponent().material.SetColor("_Color", Color.red); + break; + case 2: + result.GetComponent().material.SetColor("_Color", Color.blue); + break; + case 3: + result.GetComponent().material.SetColor("_Color", Color.white); + break; + } + return result; + } + + protected override void initLiteralInterpretation() { + turtleInterpretation = new Dictionary>>(); + //turtleInterpretation + var transformation = Matrix4x4.Translate(new Vector3(0.0f, 0.1f, 0)) * Matrix4x4.Scale(new Vector3(0.05f, 0.1f, 0.05f)); + turtleInterpretation.Add("+", (float[] args) => new Tuple(null, _roation(Vector3.back)(args))); + turtleInterpretation.Add("-", (float[] args) => new Tuple(null, _roation(Vector3.forward)(args))); + + turtleInterpretation.Add("\\", (float[] args) => new Tuple(null, _roation(Vector3.down)(args))); + turtleInterpretation.Add("/", (float[] args) => new Tuple(null, _roation(Vector3.up)(args))); + + turtleInterpretation.Add("^", (float[] args) => new Tuple(null, _roation(Vector3.left)(args))); + turtleInterpretation.Add("&", (float[] args) => new Tuple(null, _roation(Vector3.right)(args))); + + + turtleInterpretation.Add("f", (float[] args) => new Tuple(null, Matrix4x4.Translate(Vector3.up * args[0]))); + + turtleInterpretation.Add("W", (float[] args) => new Tuple(flower, Matrix4x4.Scale(Vector3.one*0.1f))); + + turtleInterpretation.Add("B", (float[] args) => new Tuple(leaf, Matrix4x4.Scale(Vector3.one))); + + turtleInterpretation.Add("F", (float[] args) => new Tuple(setColor(obj,Mathf.FloorToInt(args[0])), transformation)); + + //Wildcard how to represent any other symbol + turtleInterpretation.Add("*.*", (float[] args) => new Tuple(obj, transformation)); + } +} diff --git a/Unity Project/Assets/Scripts/TurtleContextTask.cs.meta b/Unity Project/Assets/Scripts/TurtleContextTask.cs.meta new file mode 100644 index 0000000..bb148f1 --- /dev/null +++ b/Unity Project/Assets/Scripts/TurtleContextTask.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4c05a7a1685cc4842b15f997c2f887c6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Scripts/TurtleEnvironment.cs b/Unity Project/Assets/Scripts/TurtleEnvironment.cs new file mode 100644 index 0000000..b3e826a --- /dev/null +++ b/Unity Project/Assets/Scripts/TurtleEnvironment.cs @@ -0,0 +1,67 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class TurtleEnvironment : TurtleLSystemEnvironment { + public GameObject obj; + public GameObject flower; + public GameObject leaf; + public float angle; + + private Func _roation(Vector3 axis) { + Matrix4x4 f(float[] args) { + if (args.Length == 0) { + return Matrix4x4.Rotate(Quaternion.AngleAxis(angle, axis)); + } + else { + return Matrix4x4.Rotate(Quaternion.AngleAxis(args[0], axis)); + } + } + return f; + } + + GameObject setColor(GameObject prefab, int index) { + var result = Instantiate(prefab); + switch (index) { + case 1: + result.GetComponent().material.SetColor("_Color", Color.red); + break; + case 2: + result.GetComponent().material.SetColor("_Color", Color.blue); + break; + case 3: + result.GetComponent().material.SetColor("_Color", Color.white); + break; + } + return result; + } + + protected override void initLiteralInterpretation() { + turtleInterpretation = new Dictionary>>(); + //turtleInterpretation + var transformation = Matrix4x4.Translate(new Vector3(0.0f, 0.1f, 0)) * Matrix4x4.Scale(new Vector3(0.05f, 0.1f, 0.05f)); + var transformationM = Matrix4x4.Translate(new Vector3(0.0f, 0.2f, 0)) * Matrix4x4.Scale(new Vector3(0.08f, 0.2f, 0.08f)); + turtleInterpretation.Add("+", (float[] args) => new Tuple(null, _roation(Vector3.back)(args))); + turtleInterpretation.Add("-", (float[] args) => new Tuple(null, _roation(Vector3.forward)(args))); + + turtleInterpretation.Add("\\", (float[] args) => new Tuple(null, _roation(Vector3.down)(args))); + turtleInterpretation.Add("/", (float[] args) => new Tuple(null, _roation(Vector3.up)(args))); + + turtleInterpretation.Add("^", (float[] args) => new Tuple(null, _roation(Vector3.left)(args))); + turtleInterpretation.Add("&", (float[] args) => new Tuple(null, _roation(Vector3.right)(args))); + + + turtleInterpretation.Add("f", (float[] args) => new Tuple(null, Matrix4x4.Translate(Vector3.up * args[0]))); + + turtleInterpretation.Add("W", (float[] args) => new Tuple(flower, Matrix4x4.Scale(Vector3.one*0.15f)*Matrix4x4.Translate(new Vector3(0.0f, -0.5f, 0)))); + + turtleInterpretation.Add("B", (float[] args) => new Tuple(leaf, Matrix4x4.Scale(Vector3.one))); + + turtleInterpretation.Add("F", (float[] args) => new Tuple(setColor(obj,Mathf.FloorToInt(args[0])), transformation)); + turtleInterpretation.Add("M", (float[] args) => new Tuple(obj, transformation)); + + //Wildcard how to represent any other symbol + turtleInterpretation.Add("*.*", (float[] args) => new Tuple(obj, transformationM)); + } +} diff --git a/Unity Project/Assets/Scripts/TurtleEnvironment.cs.meta b/Unity Project/Assets/Scripts/TurtleEnvironment.cs.meta new file mode 100644 index 0000000..ccb4bd9 --- /dev/null +++ b/Unity Project/Assets/Scripts/TurtleEnvironment.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 881ec2dd8ae9af549b6c916c2cf8e5de +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Scripts/TurtleLSystem.cs b/Unity Project/Assets/Scripts/TurtleLSystem.cs new file mode 100644 index 0000000..a60f4c5 --- /dev/null +++ b/Unity Project/Assets/Scripts/TurtleLSystem.cs @@ -0,0 +1,180 @@ +using System.Collections; +using System.Collections.Generic; +using System.IO; +using UnityEditor; +using UnityEngine; +using ConsoleLSystem; +using System; + + + +abstract public class TurtleLSystem : MonoBehaviour { + public float speed; + private float nextStep; + + + public string LSystemPath; + + public uint steps; + + public Dictionary>> turtleInterpretation = new Dictionary>>(); + + private List gameObjects = new List(); + + private bool isAnimationRunning = false; + + private Mesh getCylinder(int quality,float width,float length) { + Mesh mesh = new Mesh(); + //mesh.triangles + var points = new List(); + var normals = new List(); + var indices = new List(); + for (float i = 0; i < quality; i++) { + points.Add(new Vector3(Mathf.Cos((i / quality) * 2 * Mathf.PI) * width, 0, Mathf.Sin((i / quality) * 2 * Mathf.PI) * width)); + } + for (float i = 0; i < quality; i++) { + points.Add(new Vector3(Mathf.Cos((i / quality) * 2 * Mathf.PI) * width, length, Mathf.Sin((i / quality) * 2 * Mathf.PI) * width)); + } + //points.Add(new Vector3(0,0,0)); + //points.Add(new Vector3(0, length, 0)); + + for (float i = 0; i < quality; i++) { + normals.Add(new Vector3(Mathf.Cos((i / quality) * 2 * Mathf.PI) * width, 0, Mathf.Sin((i / quality) * 2 * Mathf.PI) * width)); + } + for (float i = 0; i < quality; i++) { + normals.Add(new Vector3(Mathf.Cos((i / quality) * 2 * Mathf.PI) * width, 0, Mathf.Sin((i / quality) * 2 * Mathf.PI) * width)); + } + + //for (int i = 0; i < quality; i++) { + // indices.Add(i); + // indices.Add((i + 1) % quality); + // indices.Add(quality * 2); + //} + //for (int i = 0; i < quality; i++) { + // indices.Add((i + 1) % quality + quality); + // indices.Add(i + quality); + // indices.Add(quality * 2 + 1); + //} + for (int i = 0; i < quality; i++) { + indices.Add((i + 1) % quality); + indices.Add(i); + indices.Add(i + quality); + + indices.Add(i + quality); + indices.Add((i + 1) % quality + quality); + indices.Add((i + 1) % quality); + } + mesh.vertices = points.ToArray(); + mesh.triangles = indices.ToArray(); + mesh.normals = normals.ToArray(); + return mesh; + } + + protected LSystemEvaluator evaluator = null; + + private void parseRules(StreamReader sr) { + + } + public void evaluate() { + for (int i=0; i < steps; i++) { + evaluator.rewrite(); + } + Debug.Log(evaluator.lSystemString.ToString()); + } + protected GameObject prepeareGameObject(string name, GameObject gameObject,Matrix4x4 transformation) { + GameObject instance; + if (PrefabUtility.GetPrefabAssetType(gameObject) != PrefabAssetType.NotAPrefab) { + instance = Instantiate(gameObject); + } + else { + instance = gameObject; + } + + instance.name = String.Format("LSystem Literal {0}", name); + instance.tag = "LSystemLiteral"; + instance.transform.parent = this.gameObject.transform; + instance.transform.position = transformation.ExtractPosition() + transformation.MultiplyPoint(instance.transform.position); + instance.transform.rotation *= transformation.ExtractRotation(); + instance.transform.localScale = Vector3.Scale(transformation.ExtractScale(), instance.transform.localScale); + return instance; + + } + public void createModelsRecursive(LSystemNode node, Matrix4x4 transformation) { + while (node != null) { + Matrix4x4 new_transformation=transformation; + Func> interpretation; + var name = node.literal.name; + if (turtleInterpretation.TryGetValue(name, out interpretation) || turtleInterpretation.TryGetValue("*.*", out interpretation)) { + var result = interpretation(node.literal.values); + new_transformation = new_transformation * result.Item2; + if (result.Item1 != null) { + var instance = prepeareGameObject(name, result.Item1, new_transformation); + } + //gameObjects.Add(gameObject); + //remove scale, rather unnecesary + new_transformation = new_transformation * Matrix4x4.Scale(result.Item2.ExtractScale()).inverse; + } + foreach (var child in node.children) { + createModelsRecursive(child, new_transformation); + } + node = node.mainChild; + transformation = new_transformation; + } + } + private void clearObjects() { + //var objects = Resources.FindObjectsOfTypeAll().Where(obj => obj.name == "Name"); + foreach (GameObject gameObject in GameObject.FindGameObjectsWithTag("LSystemLiteral")) { + DestroyImmediate(gameObject); + + } + Debug.Log("#OldClear"); + gameObjects = new List(); + } + + public void present() { + clearObjects(); + createModelsRecursive(evaluator.lSystemString, Matrix4x4.identity); + } + abstract protected void initLiteralInterpretation(); + public void loadFile() { + nextStep = Time.time; + clearObjects(); + var sr = new StreamReader(LSystemPath); + evaluator = LSystemFileParser.parseLSystem(sr); + sr.Close(); + turtleInterpretation = new Dictionary>>(); + initLiteralInterpretation(); + } + public void evaluateAndPresent() { + evaluate(); + present(); + Debug.Log(evaluator.lSystemString.ToString().Length); + //x.name = "aaa"; + + //Instantiate(x,Matrix4x4.identity); + } + + public void switchAnimation() { + this.isAnimationRunning = !this.isAnimationRunning; + nextStep = Time.time; + } + + + void runAnimation() { + if (nextStep < Time.time) { + for (int i = 0; i < (Time.time - nextStep) * speed; i++) { + evaluator.rewrite(); + } + present(); + nextStep = Time.time + 1/speed; + } + } + + // Update is called once per frame + protected virtual void Update() + { + if (this.isAnimationRunning){ + this.runAnimation(); + } + } +} diff --git a/Unity Project/Assets/Scripts/TurtleLSystem.cs.meta b/Unity Project/Assets/Scripts/TurtleLSystem.cs.meta new file mode 100644 index 0000000..b8ee990 --- /dev/null +++ b/Unity Project/Assets/Scripts/TurtleLSystem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b327b0feb25104ee8a2801eacb57c7ed +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Scripts/TurtleLSystemEnvironment.cs b/Unity Project/Assets/Scripts/TurtleLSystemEnvironment.cs new file mode 100644 index 0000000..adc6d33 --- /dev/null +++ b/Unity Project/Assets/Scripts/TurtleLSystemEnvironment.cs @@ -0,0 +1,269 @@ +using System.Collections; +using System.Collections.Generic; +using System.IO; +using UnityEditor; +using UnityEngine; +using ConsoleLSystem; +using System; + + + +abstract public class TurtleLSystemEnvironment : TurtleLSystem { + + public Environment environment; +// private LSystemEvaluator evaluator = null; +// private float nextStep; + public sbyte shadowStrength; + public int lookForLightAngle = 35; + public float lookForLightLength = 2.0f; + + public Matrix4x4 lightDirection(Matrix4x4 transformation, Matrix4x4 resultTransformation, GameObject shape, LSystemNode node) + { + int minShadow = 10000; + Matrix4x4 bestTransformation = transformation; + int maxShadowTries = 20; + int shadowRotate = 360/20; + int shadowStrength_ = 0; + bool clearShape = false; + if(shape == null) + { + clearShape = true; + shape = new GameObject("ShadowConeShape"); + } + GameObject instance; + Matrix4x4 new_transformation = transformation; + foreach (GameObject gameObject in GameObject.FindGameObjectsWithTag("ShadowCone")) { + DestroyImmediate(gameObject); + } + int nr_shadow_str = 1; + //---------------------miejsce-na-zadanie-3.4--------------------------------------// + + + + + //---------------------miejsce-na-zadanie-3.4-koniec-------------------------------// + if(environment.sendShadowToLSystem) + { + //---------------------miejsce-na-zadanie-3.5--------------------------------------// + + + //---------------------miejsce-na-zadanie-3.5-koniec------------------------------// + } + bestTransformation = transformation*resultTransformation; + if(environment.rotateTowardsLight) + { + minShadow = shadowStrength_; + if(shadowStrength_/nr_shadow_str > 5.0f) + { + shadowConeLimiter ++; + // transformation = Matrix4x4.Translate(gameObject.transform.position)*transformation; + for(int angle = 0;angle <= lookForLightAngle;angle+=10) + { + for(int i = 0; i < 360; i += shadowRotate) + { + shadowStrength_ = 0; + for(float length = 0.5f; length 220*lookForLightLength*2.0f) + { + bestTransformation = Matrix4x4.Translate(new Vector3(0,0,0)); + } + } + if(clearShape) + { + DestroyImmediate(shape); + } + return bestTransformation; + } + public void evaluate() { + + base.evaluate(); + } + public void evaluateAndPresent() { + evaluate(); + present(); +// Debug.Log(evaluator.lSystemString.ToString().Length); + //x.name = "aaa"; + + //Instantiate(x,Matrix4x4.identity); + } + public void loadFile() { +// nextStep = Time.time; +// clearObjects(); + var sr = new StreamReader(LSystemPath); + evaluator = LSystemFileParser.parseLSystem(sr); + sr.Close(); + turtleInterpretation = new Dictionary>>(); + initLiteralInterpretation(); + } + public void present() { + clearObjects(); + createModelsRecursiveInEnviroment(evaluator.lSystemString, Matrix4x4.Translate(gameObject.transform.position/2.0f));//Matrix4x4.identity); + } + void refreshShadows() + { + environment.Reset(); + foreach (GameObject gameObject in GameObject.FindGameObjectsWithTag("LSystemLiteral")) { + +// if(!isParentThisGameObject(gameObject)) +// { + environment.addShadow(gameObject.GetComponent().position, shadowStrength); +// } +// else +// { +// if(isParentThisGameObject(gameObject, 2)) +// { +// environment.addShadowPoint(gameObject.GetComponent().position, 6); +// } +// } + } + } + bool isParentThisGameObject(GameObject gameObject, int depth = 3) + { + if(gameObject.transform.parent != null) + { + if(gameObject.transform.parent.gameObject == this.gameObject) + { + return true; + } + else + { + if(depth >= 0) + { + return isParentThisGameObject(gameObject.transform.parent.gameObject, depth-1); + } + } + } + return false; + } + int objectCounter = 0; + int shadowConeLimiter = 0; + public int childrenCount(LSystemNode node, int depth = 3) + { + int c = 0; + if(node.children.Count > 0) + { + c += node.children.Count; + if(depth > 0) + { + foreach(LSystemNode child in node.children) + { + c+= childrenCount(child, depth - 1); + } + } + } + return c; + } + public void createModelsRecursiveInEnviroment(LSystemNode node, Matrix4x4 transformation, int depth = 0) + { +// transformation *= Matrix4x4.Translate(gameObject.transform.position); + while (node != null && objectCounter < 25000) { + Matrix4x4 new_transformation=transformation; + Func> interpretation; + var name = node.literal.name; + if (turtleInterpretation.TryGetValue(name, out interpretation) || turtleInterpretation.TryGetValue("*.*", out interpretation)) { + var result = interpretation(node.literal.values); + Debug.Log("D: "+node.literal); + new_transformation = new_transformation*Matrix4x4.Rotate(Quaternion.Euler(UnityEngine.Random.Range(-0.5f, 0.5f), UnityEngine.Random.Range(-0.5f, 0.5f), UnityEngine.Random.Range(-0.5f, 0.5f))); + new_transformation = lightDirection(new_transformation, result.Item2, result.Item1, node); + + if(new_transformation == Matrix4x4.Translate(new Vector3(0,0,0)) && environment.cutBranchesWithMaxShadow) + { + Debug.Log(" children "+node.children.Count); +// node.literal. + if(childrenCount(node) < 5) + { + LSystemNode destroyNode = node; + if(destroyNode.parent != null) + { + destroyNode.parent.children.Remove(node); + if(destroyNode.parent.mainChild == null) + { + destroyNode.parent.mainChild = destroyNode.parent.children[0]; + } + node = node.mainChild; + destroyNode = null; + // DestroyImmediate(instance); + objectCounter--; + } + continue; + } + } + if (result.Item1 != null && new_transformation != Matrix4x4.Translate(new Vector3(0,0,0))) { + var instance = this.prepeareGameObject(name, result.Item1, new_transformation); + environment.addShadow(new_transformation.ExtractPosition()+transformation.MultiplyPoint(result.Item1.transform.position), (sbyte)(shadowStrength/8.0f)); + } + + environment.addShadow(new_transformation.ExtractPosition()+transformation.ExtractPosition(), (sbyte)(shadowStrength/8.0f)); + environment.addShadow((new_transformation*Matrix4x4.Translate(new Vector3(0,1,0))).ExtractPosition()+transformation.ExtractPosition(), (sbyte)(shadowStrength/8.0f)); + //remove scale, rather unnecesary + new_transformation = new_transformation * Matrix4x4.Scale(result.Item2.ExtractScale()).inverse; + } + if(node != null) + { + List children_tmp = new List(); + foreach (var child in node.children) + { + children_tmp.Add(child); + } + foreach (var child in children_tmp) + { + if(child != null) + { + createModelsRecursiveInEnviroment(child, new_transformation, depth+1); + } + } + node = node.mainChild; + } + transformation = new_transformation; + } + + } + + private void clearObjects() { + //var objects = Resources.FindObjectsOfTypeAll().Where(obj => obj.name == "Name"); +// foreach (GameObject gameObject in GameObject.FindGameObjectsWithTag("LSystemLiteral")) { +// DestroyImmediate(gameObject); +// +// } + objectCounter = 0; + int removed = 1; + while (removed > 0) + { + removed = 0; + foreach (Transform child in this.gameObject.transform) { +// environment.addShadow(gameObject.GetComponent().position, (sbyte)-shadowStrength); + if(child.gameObject.tag == "LSystemLiteral") + { + DestroyImmediate(child.gameObject); + } + removed ++; + // GameObject.Destroy(child.gameObject); + } + + } + refreshShadows(); +// gameObjects = new List(); + } + +} diff --git a/Unity Project/Assets/Scripts/TurtleLSystemEnvironment.cs.meta b/Unity Project/Assets/Scripts/TurtleLSystemEnvironment.cs.meta new file mode 100644 index 0000000..cf1261f --- /dev/null +++ b/Unity Project/Assets/Scripts/TurtleLSystemEnvironment.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5f4f9195a250f4593b8ecb4125d0f993 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Scripts/env.meta b/Unity Project/Assets/Scripts/env.meta new file mode 100644 index 0000000..452ceb1 --- /dev/null +++ b/Unity Project/Assets/Scripts/env.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 55a6fa61d359a4d529302453865d7ace +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Scripts/env/Environment.cs b/Unity Project/Assets/Scripts/env/Environment.cs new file mode 100644 index 0000000..80095fd --- /dev/null +++ b/Unity Project/Assets/Scripts/env/Environment.cs @@ -0,0 +1,395 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class Environment : MonoBehaviour +{ + public int sizeX = 100; + public int sizeY = 100; + public int sizeZ = 100; + public float voxelSize = 0.1f; +// public bool visualizeWater = true; + public bool visualizeLigth = true; + public int visualizeEveryNVoxel = 100; + public GameObject shape; + public GameObject ball; +// Voxel[,,] voxelSpace; + byte[,,] voxelSpace; + + private Bounds bounds; + public Material material; + + public bool rotateTowardsLight = false; + public bool sendShadowToLSystem = true; + public bool cutBranchesWithMaxShadow = false; + + + private ComputeBuffer meshPropertiesBuffer; + private ComputeBuffer argsBuffer; + + + List> transformListJ; + + // Start is called before the first frame update + public void Reset() + { + Start(); + } + void Start() + { + voxelSpace = new byte[sizeX, sizeY, sizeZ]; + for(int i = 0; i < sizeX; i++) + { + for(int k = 0; k < sizeZ; k++) + { + for(int j = sizeY-1; j >= 0; j--) + { + voxelSpace[i,j,k] = (byte)1; + if(i == 0 || i == sizeX-1 || k == 0 || k == sizeZ -1) + { + voxelSpace[i,j,k] = (byte)255; + } + } + } + } + + List transformList = new List(); + transformListJ = new List>(); + for(int i = 0; i < sizeX; i++) + { + for(int k = 0; k < sizeZ; k++) + { + for(int j = sizeY-1; j >= 0; j--) + { + if(visualizeLigth && + (i%visualizeEveryNVoxel == 0 && j%visualizeEveryNVoxel == 0 && k%visualizeEveryNVoxel == 0 )) + { + Vector3 position = gameObject.GetComponent().position; + Matrix4x4 matrixLigth = new Matrix4x4(); + + //Take the origin position, and apply the offsets + position.x += i*voxelSize; + position.y += j*voxelSize; + position.z += k*voxelSize; + + //Create a matrix for the position created from this iteration of the loop + + //Set the position/rotation/scale for this matrix + if(voxelSpace[i,j,k] != null) + { + matrixLigth.SetTRS(position, Quaternion.Euler(Vector3.zero),new Vector3(voxelSpace[i,j,k]*voxelSize*visualizeEveryNVoxel/255.0f, voxelSpace[i,j,k]*voxelSize*visualizeEveryNVoxel/255.0f, voxelSpace[i,j,k]*voxelSize*visualizeEveryNVoxel/255.0f)); + } + else + { + matrixLigth.SetTRS(position, Quaternion.Euler(Vector3.zero), new Vector3(0,0,0)); + } + transformList.Add(matrixLigth); + } + if(transformList.Count > 1020) + { + transformListJ.Add(transformList); + transformList = new List(); + } + } + } + } + + if(transformList.Count > 0) + { + transformListJ.Add(transformList); + transformList = new List(); + } + +// Debug.Log("G_first_frame_end"); + } + + // Update is called once per frame + int frame = 0; + void Update() + { + if(frame > 60) + { + for(int i = 0;i().mesh, 0, shape.GetComponent().material, transformListJ[i], null, UnityEngine.Rendering.ShadowCastingMode.Off, false); + } + } + if(frame%300 == 0) + { + int mxx = 0; + Vector3 pos = new Vector3(0,0,0); + for(int j = sizeY-1; j >= 0; j--) + { + for(int i = 0; i < sizeX; i++) + { + for(int k = 0; k < sizeZ; k++) + { + if(voxelSpace[i,j,k] > mxx) + { + mxx = voxelSpace[i,j,k]; + pos = new Vector3(i, j, k); +// Debug.Log("mxPos = "+mxx+" "+pos); + } + } + } + } + ball.GetComponent().position = pos*voxelSize+gameObject.GetComponent().position; + ball.name = "shadow max = "+mxx; +// Debug.Log("mxShadow = "+mxx); + + } + + frame += 1; +// Debug.Log("frame"+frame); + } + public void addShadowPoint(Vector3 position, sbyte strength) // negative value to remove + { + Vector3 voxelPosition = positionInVoxel(position); + Debug.Log(voxelPosition+" adding "+strength); + if(inVoxelSpace((int)voxelPosition.x,(int)voxelPosition.y,(int)voxelPosition.z)) + { + voxelSpace[(int)voxelPosition.x,(int)voxelPosition.y,(int)voxelPosition.z] += (byte)strength; + } + else + { + Debug.Log("not in vexel space: "+voxelPosition+" - error adding"); + } + + } + public void addShadow(Vector3 position, sbyte strength) // negative value to remove + { + // 6.2 / 0.1 = 62.0 + Vector3 voxelPosition = positionInVoxel(position); + for(int j = (int)voxelPosition.y; j >= 0; j--) + { + if(voxelPosition.y - j > 250) + { + break; + } + int rotj = (int)(voxelPosition.y - j)*1; + for(int i = (int)voxelPosition.x-rotj; i <= (int)voxelPosition.x+rotj; i++) + { + for(int k = (int)voxelPosition.z-rotj; k <= (int)voxelPosition.z+rotj; k++) + { + + if(inVoxelSpace(i, j, k)&& + (i%visualizeEveryNVoxel == 0 && j%visualizeEveryNVoxel == 0 && k%visualizeEveryNVoxel == 0 )) + { + float secondaryStrength = 1.0f*strength; + secondaryStrength = secondaryStrength/((Mathf.Abs(k-(int)voxelPosition.z)+1+Mathf.Abs(i-(int)voxelPosition.x))/8.0f); +// Debug.Log("j "+j+" i "+(i-voxelPosition.x)+" s "+(sbyte)secondaryStrength); +// voxelSpace[i,j,k].addShadow((sbyte)secondaryStrength); +// if(secondaryStrength<3) +// { +// return; +// } + if(voxelSpace[i,j,k] == null) + { + voxelSpace[i,j,k] = 0; + } + if(secondaryStrength > 0) + { + if(voxelSpace[i,j,k] >= 255-(byte)secondaryStrength) + { + voxelSpace[i,j,k] = 255; + } + else + { + voxelSpace[i,j,k] += (byte)secondaryStrength; + } + } + else + { + if(voxelSpace[i,j,k] > (byte)secondaryStrength) + { + voxelSpace[i,j,k] -= (byte)(-1*secondaryStrength); + } + else + { + voxelSpace[i,j,k] = 1; + } + } + + if( (i%visualizeEveryNVoxel == 0 && j%visualizeEveryNVoxel == 0 && k%visualizeEveryNVoxel == 0 ) && visualizeLigth) + { + Vector3 positionBox = gameObject.GetComponent().position; + Matrix4x4 matrixLigth = new Matrix4x4(); + + //Take the origin position, and apply the offsets + positionBox.x += i*voxelSize; + positionBox.y += j*voxelSize; + positionBox.z += k*voxelSize; + + //Create a matrix for the position created from this iteration of the loop + + //Set the position/rotation/scale for this matrix + matrixLigth.SetTRS(positionBox, Quaternion.Euler(Vector3.zero), new Vector3(voxelSpace[i,j,k]*voxelSize*visualizeEveryNVoxel/255.0f, voxelSpace[i,j,k]*voxelSize*visualizeEveryNVoxel/255.0f, voxelSpace[i,j,k]*voxelSize*visualizeEveryNVoxel/255.0f)); + int l = (i*sizeZ*sizeY/(visualizeEveryNVoxel*visualizeEveryNVoxel*visualizeEveryNVoxel) + k*sizeY/(visualizeEveryNVoxel*visualizeEveryNVoxel) + j/visualizeEveryNVoxel); + transformListJ[l / 1021][l % 1021] = matrixLigth; + } + } + } + } + } + } + public void addShadowLine(Vector3 positionStart, Vector3 positionEnd, sbyte strength) // negative value to remove + { + int linePoints = (int)((Mathf.Abs(positionEnd.x - positionStart.x) + Mathf.Abs(positionEnd.z - positionStart.z))/(voxelSize)); + if (linePoints < 3) + { + linePoints = 3; + } + Vector3 stepChange = new Vector3( + (positionEnd.x - positionStart.x)/linePoints, + (positionEnd.y - positionStart.y)/linePoints, + (positionEnd.z - positionStart.z)/linePoints); + Vector3 positionNow = positionStart; + sbyte newStrength = (sbyte)(2*(strength/linePoints)); + if(newStrength == 0) + { + if(strength>0) + { + if(strength > 0.4f) + newStrength = (sbyte)1; + } + if(strength<0) + { + newStrength = (sbyte)-1; + } + } + for(int i = 0;i=0&&b=0&&c=0); + } + public Vector3 positionInVoxel(Vector3 positionInWorld) + { + Vector3 voxelPosition = new Vector3(0.0f,0.0f,0.0f); + positionInWorld -= gameObject.GetComponent().position; + voxelPosition.x = (int)(0.5f + (positionInWorld.x / voxelSize)); + voxelPosition.y = (int)(0.5f + (positionInWorld.y / voxelSize)); + voxelPosition.z = (int)(0.5f + (positionInWorld.z / voxelSize)); + return voxelPosition; + } + + public Vector3 positionInWorld(Vector3 positionInVoxel) + { + return positionInVoxel*voxelSize+gameObject.GetComponent().position; + } + public void groundShape() + { + + for(int i = 0; i < sizeX; i++) + { + for(int k = 0; k < sizeZ; k++) + { + for(int j = sizeY-1; j >= 0; j--) + { + + Collider[] hitColliders = Physics.OverlapSphere(new Vector3(i*voxelSize, j*voxelSize, k*voxelSize), voxelSize/2.0f); + foreach (var hitCollider in hitColliders) + { + addShadow(new Vector3(i*voxelSize, j*voxelSize, k*voxelSize), 100); + } + } + } + } + + } + + public byte shadowStrength(Vector3 pos) + { + Vector3 shadowPosition = positionInVoxel(pos);//pos - gameObject.GetComponent().position; + if(inVoxelSpace((int)((shadowPosition.x)),(int)((shadowPosition.y)),(int)((shadowPosition.z)))) + { + byte mx = voxelSpace[0+(int)((shadowPosition.x)),(int)((shadowPosition.y)),0+(int)((shadowPosition.z))]; +// if(mx >10) +// { +// Debug.Log("#shadowPosA " + (int)((shadowPosition.x))+" "+(int)((shadowPosition.y))+" "+(int)((shadowPosition.z))+" = "+voxelSpace[(int)((shadowPosition.x)),(int)((shadowPosition.y)),(int)((shadowPosition.z))]+" ("+mx+") "); +//// Instantiate(ball, positionInWorld(shadowPosition), Quaternion.Euler(0,0,0)); +// } + return mx; + } + return 255; + } + public bool isShadow(Vector3 pos) + { + if(shadowStrength(pos) > 10) + { +// Debug.Log("#shadow"); + return true; + } + else + { + return false; + } + } +} + +public class Voxel +{ + public byte shadow = 0; // 0 - 1 +// public int x = 0; +// public int y = 0; +// public int z = 0; +// public float voxelSize = 0.1f; +// public Matrix4x4 matrixWater = new Matrix4x4(); +// public Matrix4x4 matrixLigth = new Matrix4x4(); + +// public void updateWater() +// { +// if(y > 0) +// { +// if(water > waterAbsortion) +// { +// if(waterTransmission < (water - waterAbsortion)) +// { +// waterChange = -1.0f * waterTransmission; +// } +// else +// { +// waterChange = -1.0f * (water - waterAbsortion); +// } +// } +// } +// } +// public void applyChanges(float change) +// { +// water += waterChange+change; +// waterChange = 0.0f; +//// shape.GetComponent().localScale = new Vector3(water*0.5f*voxelSize, water*0.5f*voxelSize, water*0.5f*voxelSize); +// +// +// } + public void addShadow(sbyte strength) + { + if(strength > 0) + { + if(shadow >= 255-strength) + { + shadow = 255; + } + else + { + shadow += (byte)strength; + } + } + else + { + if(shadow > strength) + { + shadow -= (byte)(-1*strength); + } + else + { + shadow = 0; + } + } +// } + } +} diff --git a/Unity Project/Assets/Scripts/env/Environment.cs.meta b/Unity Project/Assets/Scripts/env/Environment.cs.meta new file mode 100644 index 0000000..ebaf7a9 --- /dev/null +++ b/Unity Project/Assets/Scripts/env/Environment.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b78020a4451094d62a036de676b8e8d3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Scripts/env/castShadow.cs b/Unity Project/Assets/Scripts/env/castShadow.cs new file mode 100644 index 0000000..11ed061 --- /dev/null +++ b/Unity Project/Assets/Scripts/env/castShadow.cs @@ -0,0 +1,31 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class castShadow : MonoBehaviour +{ + public bool refreshEverySecond = true; + public Environment environment; + public sbyte shadowStrength = 50; + Vector3 oldPosition; + void Start() + { + } + int frame = 0; + + // Update is called once per frame + void Update() + { + if(frame == 2) + { + } + if(refreshEverySecond&&frame%60==0&&frame>60) + { + if(oldPosition != gameObject.GetComponent().position) + { + + } + } + frame++; + } +} diff --git a/Unity Project/Assets/Scripts/env/castShadow.cs.meta b/Unity Project/Assets/Scripts/env/castShadow.cs.meta new file mode 100644 index 0000000..26b5376 --- /dev/null +++ b/Unity Project/Assets/Scripts/env/castShadow.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: beb002cebc7e54824a2cf83b52c868ca +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Scripts/env/castShadowLine.cs b/Unity Project/Assets/Scripts/env/castShadowLine.cs new file mode 100644 index 0000000..3c5e1f3 --- /dev/null +++ b/Unity Project/Assets/Scripts/env/castShadowLine.cs @@ -0,0 +1,35 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class castShadowLine : MonoBehaviour +{ + public bool refreshEverySecond = true; + public Environment environment; + public GameObject startPos; + public GameObject endPos; + public sbyte shadowStrength = 50; + // Start is called before the first frame update + Vector3 oldPositionS; + Vector3 oldPositionE; + void Start() + { +// environment.addShadowLine(startPos.GetComponent().position, endPos.GetComponent().position, shadowStrength); + oldPositionS = startPos.GetComponent().position; + oldPositionE = endPos.GetComponent().position; + } + + // Update is called once per frame + int frame = 0; + void Update() + { + if(refreshEverySecond&&frame%60==59) + { + environment.addShadowLine(oldPositionS, oldPositionE, (sbyte)(-1 * shadowStrength)); + environment.addShadowLine(startPos.GetComponent().position, endPos.GetComponent().position, shadowStrength); + oldPositionS = startPos.GetComponent().position; + oldPositionE = endPos.GetComponent().position; + } + frame++; + } +} diff --git a/Unity Project/Assets/Scripts/env/castShadowLine.cs.meta b/Unity Project/Assets/Scripts/env/castShadowLine.cs.meta new file mode 100644 index 0000000..ece46cf --- /dev/null +++ b/Unity Project/Assets/Scripts/env/castShadowLine.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a89e7ea65235748619fcf11a49e2520a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Scripts/env/reciveShadow.cs b/Unity Project/Assets/Scripts/env/reciveShadow.cs new file mode 100644 index 0000000..a381e21 --- /dev/null +++ b/Unity Project/Assets/Scripts/env/reciveShadow.cs @@ -0,0 +1,30 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class reciveShadow : MonoBehaviour +{ + public bool refreshEverySecond = true; + public Environment environment; + public sbyte shadowStrength = 5; + public Material inShadow; + public Material noShadow; + + void Start() + { + } + int frame = 0; + + // Update is called once per frame + void Update() + { + if(frame == 2) + { + + } + if(refreshEverySecond&&frame%60==0&&frame>60) + { + } + frame++; + } +} diff --git a/Unity Project/Assets/Scripts/env/reciveShadow.cs.meta b/Unity Project/Assets/Scripts/env/reciveShadow.cs.meta new file mode 100644 index 0000000..543b3c6 --- /dev/null +++ b/Unity Project/Assets/Scripts/env/reciveShadow.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c31f84fd2dde0469ea2fb3c973af02fa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Scripts/env/visCube.mat b/Unity Project/Assets/Scripts/env/visCube.mat new file mode 100644 index 0000000..eb21380 --- /dev/null +++ b/Unity Project/Assets/Scripts/env/visCube.mat @@ -0,0 +1,79 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: visCube + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _ALPHAPREMULTIPLY_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 10 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 3 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 0 + m_Colors: + - _Color: {r: 0.8490566, g: 0.8490566, b: 0.8490566, a: 0.5882353} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] diff --git a/Unity Project/Assets/Scripts/env/visCube.mat.meta b/Unity Project/Assets/Scripts/env/visCube.mat.meta new file mode 100644 index 0000000..72351af --- /dev/null +++ b/Unity Project/Assets/Scripts/env/visCube.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f4b764bae637a49e9babf6808388812b +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Textures.meta b/Unity Project/Assets/Textures.meta new file mode 100644 index 0000000..7371560 --- /dev/null +++ b/Unity Project/Assets/Textures.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6800d2a92df32cc45a0ade94882000b9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Assets/Textures/leaf texutre.jpg b/Unity Project/Assets/Textures/leaf texutre.jpg new file mode 100644 index 0000000..2f46e85 Binary files /dev/null and b/Unity Project/Assets/Textures/leaf texutre.jpg differ diff --git a/Unity Project/Assets/Textures/leaf texutre.jpg.meta b/Unity Project/Assets/Textures/leaf texutre.jpg.meta new file mode 100644 index 0000000..3149773 --- /dev/null +++ b/Unity Project/Assets/Textures/leaf texutre.jpg.meta @@ -0,0 +1,96 @@ +fileFormatVersion: 2 +guid: 93d1c1756525276498b7fe77cd4876eb +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity Project/Packages/manifest.json b/Unity Project/Packages/manifest.json new file mode 100644 index 0000000..d187ffe --- /dev/null +++ b/Unity Project/Packages/manifest.json @@ -0,0 +1,45 @@ +{ + "dependencies": { + "com.unity.collab-proxy": "1.3.9", + "com.unity.formats.fbx": "4.0.1", + "com.unity.ide.rider": "3.0.5", + "com.unity.ide.visualstudio": "2.0.7", + "com.unity.ide.vscode": "1.2.3", + "com.unity.test-framework": "1.1.24", + "com.unity.textmeshpro": "3.0.4", + "com.unity.timeline": "1.5.2", + "com.unity.toolchain.macos-x86_64-linux-x86_64": "0.1.20-preview", + "com.unity.ugui": "1.0.0", + "com.unity.modules.ai": "1.0.0", + "com.unity.modules.androidjni": "1.0.0", + "com.unity.modules.animation": "1.0.0", + "com.unity.modules.assetbundle": "1.0.0", + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.cloth": "1.0.0", + "com.unity.modules.director": "1.0.0", + "com.unity.modules.imageconversion": "1.0.0", + "com.unity.modules.imgui": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0", + "com.unity.modules.particlesystem": "1.0.0", + "com.unity.modules.physics": "1.0.0", + "com.unity.modules.physics2d": "1.0.0", + "com.unity.modules.screencapture": "1.0.0", + "com.unity.modules.terrain": "1.0.0", + "com.unity.modules.terrainphysics": "1.0.0", + "com.unity.modules.tilemap": "1.0.0", + "com.unity.modules.ui": "1.0.0", + "com.unity.modules.uielements": "1.0.0", + "com.unity.modules.umbra": "1.0.0", + "com.unity.modules.unityanalytics": "1.0.0", + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.unitywebrequestassetbundle": "1.0.0", + "com.unity.modules.unitywebrequestaudio": "1.0.0", + "com.unity.modules.unitywebrequesttexture": "1.0.0", + "com.unity.modules.unitywebrequestwww": "1.0.0", + "com.unity.modules.vehicles": "1.0.0", + "com.unity.modules.video": "1.0.0", + "com.unity.modules.vr": "1.0.0", + "com.unity.modules.wind": "1.0.0", + "com.unity.modules.xr": "1.0.0" + } +} diff --git a/Unity Project/Packages/packages-lock.json b/Unity Project/Packages/packages-lock.json new file mode 100644 index 0000000..8770ffe --- /dev/null +++ b/Unity Project/Packages/packages-lock.json @@ -0,0 +1,379 @@ +{ + "dependencies": { + "com.autodesk.fbx": { + "version": "4.0.1", + "depth": 1, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, + "com.unity.collab-proxy": { + "version": "1.3.9", + "depth": 0, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, + "com.unity.ext.nunit": { + "version": "1.0.6", + "depth": 1, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, + "com.unity.formats.fbx": { + "version": "4.0.1", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.timeline": "1.0.0", + "com.autodesk.fbx": "4.0.1" + }, + "url": "https://packages.unity.com" + }, + "com.unity.ide.rider": { + "version": "3.0.5", + "depth": 0, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, + "com.unity.ide.visualstudio": { + "version": "2.0.7", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.test-framework": "1.1.9" + }, + "url": "https://packages.unity.com" + }, + "com.unity.ide.vscode": { + "version": "1.2.3", + "depth": 0, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, + "com.unity.sysroot": { + "version": "0.1.19-preview", + "depth": 1, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, + "com.unity.sysroot.linux-x86_64": { + "version": "0.1.14-preview", + "depth": 1, + "source": "registry", + "dependencies": { + "com.unity.sysroot": "0.1.18-preview" + }, + "url": "https://packages.unity.com" + }, + "com.unity.test-framework": { + "version": "1.1.24", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.ext.nunit": "1.0.6", + "com.unity.modules.imgui": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.textmeshpro": { + "version": "3.0.4", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.ugui": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.timeline": { + "version": "1.5.2", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.modules.director": "1.0.0", + "com.unity.modules.animation": "1.0.0", + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.particlesystem": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.toolchain.macos-x86_64-linux-x86_64": { + "version": "0.1.20-preview", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.sysroot": "0.1.19-preview", + "com.unity.sysroot.linux-x86_64": "0.1.14-preview" + }, + "url": "https://packages.unity.com" + }, + "com.unity.ugui": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.ui": "1.0.0", + "com.unity.modules.imgui": "1.0.0" + } + }, + "com.unity.modules.ai": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.androidjni": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.animation": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.assetbundle": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.audio": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.cloth": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.physics": "1.0.0" + } + }, + "com.unity.modules.director": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.animation": "1.0.0" + } + }, + "com.unity.modules.imageconversion": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.imgui": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.jsonserialize": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.particlesystem": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.physics": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.physics2d": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.screencapture": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.imageconversion": "1.0.0" + } + }, + "com.unity.modules.subsystems": { + "version": "1.0.0", + "depth": 1, + "source": "builtin", + "dependencies": { + "com.unity.modules.jsonserialize": "1.0.0" + } + }, + "com.unity.modules.terrain": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.terrainphysics": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.physics": "1.0.0", + "com.unity.modules.terrain": "1.0.0" + } + }, + "com.unity.modules.tilemap": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.physics2d": "1.0.0" + } + }, + "com.unity.modules.ui": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.uielements": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.ui": "1.0.0", + "com.unity.modules.imgui": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0", + "com.unity.modules.uielementsnative": "1.0.0" + } + }, + "com.unity.modules.uielementsnative": { + "version": "1.0.0", + "depth": 1, + "source": "builtin", + "dependencies": { + "com.unity.modules.ui": "1.0.0", + "com.unity.modules.imgui": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0" + } + }, + "com.unity.modules.umbra": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.unityanalytics": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0" + } + }, + "com.unity.modules.unitywebrequest": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.unitywebrequestassetbundle": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.assetbundle": "1.0.0", + "com.unity.modules.unitywebrequest": "1.0.0" + } + }, + "com.unity.modules.unitywebrequestaudio": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.audio": "1.0.0" + } + }, + "com.unity.modules.unitywebrequesttexture": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.imageconversion": "1.0.0" + } + }, + "com.unity.modules.unitywebrequestwww": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.unitywebrequestassetbundle": "1.0.0", + "com.unity.modules.unitywebrequestaudio": "1.0.0", + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.assetbundle": "1.0.0", + "com.unity.modules.imageconversion": "1.0.0" + } + }, + "com.unity.modules.vehicles": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.physics": "1.0.0" + } + }, + "com.unity.modules.video": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.ui": "1.0.0", + "com.unity.modules.unitywebrequest": "1.0.0" + } + }, + "com.unity.modules.vr": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.jsonserialize": "1.0.0", + "com.unity.modules.physics": "1.0.0", + "com.unity.modules.xr": "1.0.0" + } + }, + "com.unity.modules.wind": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.xr": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.physics": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0", + "com.unity.modules.subsystems": "1.0.0" + } + } + } +} diff --git a/Unity Project/ProjectSettings/AudioManager.asset b/Unity Project/ProjectSettings/AudioManager.asset new file mode 100644 index 0000000..07ebfb0 --- /dev/null +++ b/Unity Project/ProjectSettings/AudioManager.asset @@ -0,0 +1,19 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!11 &1 +AudioManager: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Volume: 1 + Rolloff Scale: 1 + Doppler Factor: 1 + Default Speaker Mode: 2 + m_SampleRate: 0 + m_DSPBufferSize: 1024 + m_VirtualVoiceCount: 512 + m_RealVoiceCount: 32 + m_SpatializerPlugin: + m_AmbisonicDecoderPlugin: + m_DisableAudio: 0 + m_VirtualizeEffects: 1 + m_RequestedDSPBufferSize: 1024 diff --git a/Unity Project/ProjectSettings/ClusterInputManager.asset b/Unity Project/ProjectSettings/ClusterInputManager.asset new file mode 100644 index 0000000..e7886b2 --- /dev/null +++ b/Unity Project/ProjectSettings/ClusterInputManager.asset @@ -0,0 +1,6 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!236 &1 +ClusterInputManager: + m_ObjectHideFlags: 0 + m_Inputs: [] diff --git a/Unity Project/ProjectSettings/DynamicsManager.asset b/Unity Project/ProjectSettings/DynamicsManager.asset new file mode 100644 index 0000000..cdc1f3e --- /dev/null +++ b/Unity Project/ProjectSettings/DynamicsManager.asset @@ -0,0 +1,34 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!55 &1 +PhysicsManager: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_Gravity: {x: 0, y: -9.81, z: 0} + m_DefaultMaterial: {fileID: 0} + m_BounceThreshold: 2 + m_SleepThreshold: 0.005 + m_DefaultContactOffset: 0.01 + m_DefaultSolverIterations: 6 + m_DefaultSolverVelocityIterations: 1 + m_QueriesHitBackfaces: 0 + m_QueriesHitTriggers: 1 + m_EnableAdaptiveForce: 0 + m_ClothInterCollisionDistance: 0 + m_ClothInterCollisionStiffness: 0 + m_ContactsGeneration: 1 + m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + m_AutoSimulation: 1 + m_AutoSyncTransforms: 0 + m_ReuseCollisionCallbacks: 1 + m_ClothInterCollisionSettingsToggle: 0 + m_ContactPairsMode: 0 + m_BroadphaseType: 0 + m_WorldBounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 250, y: 250, z: 250} + m_WorldSubdivisions: 8 + m_FrictionType: 0 + m_EnableEnhancedDeterminism: 0 + m_EnableUnifiedHeightmaps: 1 + m_DefaultMaxAngluarSpeed: 7 diff --git a/Unity Project/ProjectSettings/EditorBuildSettings.asset b/Unity Project/ProjectSettings/EditorBuildSettings.asset new file mode 100644 index 0000000..0147887 --- /dev/null +++ b/Unity Project/ProjectSettings/EditorBuildSettings.asset @@ -0,0 +1,8 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1045 &1 +EditorBuildSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Scenes: [] + m_configObjects: {} diff --git a/Unity Project/ProjectSettings/EditorSettings.asset b/Unity Project/ProjectSettings/EditorSettings.asset new file mode 100644 index 0000000..7f92108 --- /dev/null +++ b/Unity Project/ProjectSettings/EditorSettings.asset @@ -0,0 +1,40 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!159 &1 +EditorSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_SerializationMode: 2 + m_LineEndingsForNewScripts: 0 + m_DefaultBehaviorMode: 0 + m_PrefabRegularEnvironment: {fileID: 0} + m_PrefabUIEnvironment: {fileID: 0} + m_SpritePackerMode: 0 + m_SpritePackerPaddingPower: 1 + m_EtcTextureCompressorBehavior: 1 + m_EtcTextureFastCompressor: 1 + m_EtcTextureNormalCompressor: 2 + m_EtcTextureBestCompressor: 4 + m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp;asmref + m_ProjectGenerationRootNamespace: + m_EnableTextureStreamingInEditMode: 1 + m_EnableTextureStreamingInPlayMode: 1 + m_AsyncShaderCompilation: 1 + m_CachingShaderPreprocessor: 1 + m_PrefabModeAllowAutoSave: 1 + m_EnterPlayModeOptionsEnabled: 0 + m_EnterPlayModeOptions: 3 + m_GameObjectNamingDigits: 3 + m_GameObjectNamingScheme: 0 + m_AssetNamingUsesSpace: 1 + m_UseLegacyProbeSampleCount: 0 + m_SerializeInlineMappingsOnOneLine: 1 + m_DisableCookiesInLightmapper: 0 + m_AssetPipelineMode: 1 + m_CacheServerMode: 0 + m_CacheServerEndpoint: + m_CacheServerNamespacePrefix: default + m_CacheServerEnableDownload: 1 + m_CacheServerEnableUpload: 1 + m_CacheServerEnableAuth: 0 + m_CacheServerEnableTls: 0 diff --git a/Unity Project/ProjectSettings/GraphicsSettings.asset b/Unity Project/ProjectSettings/GraphicsSettings.asset new file mode 100644 index 0000000..43369e3 --- /dev/null +++ b/Unity Project/ProjectSettings/GraphicsSettings.asset @@ -0,0 +1,63 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!30 &1 +GraphicsSettings: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_Deferred: + m_Mode: 1 + m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} + m_DeferredReflections: + m_Mode: 1 + m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} + m_ScreenSpaceShadows: + m_Mode: 1 + m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} + m_LegacyDeferred: + m_Mode: 1 + m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} + m_DepthNormals: + m_Mode: 1 + m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} + m_MotionVectors: + m_Mode: 1 + m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} + m_LightHalo: + m_Mode: 1 + m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} + m_LensFlare: + m_Mode: 1 + m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} + m_AlwaysIncludedShaders: + - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} + m_PreloadedShaders: [] + m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, + type: 0} + m_CustomRenderPipeline: {fileID: 0} + m_TransparencySortMode: 0 + m_TransparencySortAxis: {x: 0, y: 0, z: 1} + m_DefaultRenderingPath: 1 + m_DefaultMobileRenderingPath: 1 + m_TierSettings: [] + m_LightmapStripping: 0 + m_FogStripping: 0 + m_InstancingStripping: 0 + m_LightmapKeepPlain: 1 + m_LightmapKeepDirCombined: 1 + m_LightmapKeepDynamicPlain: 1 + m_LightmapKeepDynamicDirCombined: 1 + m_LightmapKeepShadowMask: 1 + m_LightmapKeepSubtractive: 1 + m_FogKeepLinear: 1 + m_FogKeepExp: 1 + m_FogKeepExp2: 1 + m_AlbedoSwatchInfos: [] + m_LightsUseLinearIntensity: 0 + m_LightsUseColorTemperature: 0 + m_LogWhenShaderIsCompiled: 0 + m_AllowEnlightenSupportForUpgradedProject: 0 diff --git a/Unity Project/ProjectSettings/InputManager.asset b/Unity Project/ProjectSettings/InputManager.asset new file mode 100644 index 0000000..17c8f53 --- /dev/null +++ b/Unity Project/ProjectSettings/InputManager.asset @@ -0,0 +1,295 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!13 &1 +InputManager: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Axes: + - serializedVersion: 3 + m_Name: Horizontal + descriptiveName: + descriptiveNegativeName: + negativeButton: left + positiveButton: right + altNegativeButton: a + altPositiveButton: d + gravity: 3 + dead: 0.001 + sensitivity: 3 + snap: 1 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Vertical + descriptiveName: + descriptiveNegativeName: + negativeButton: down + positiveButton: up + altNegativeButton: s + altPositiveButton: w + gravity: 3 + dead: 0.001 + sensitivity: 3 + snap: 1 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire1 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left ctrl + altNegativeButton: + altPositiveButton: mouse 0 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire2 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left alt + altNegativeButton: + altPositiveButton: mouse 1 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire3 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left shift + altNegativeButton: + altPositiveButton: mouse 2 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Jump + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: space + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse X + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse Y + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 1 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse ScrollWheel + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 2 + joyNum: 0 + - serializedVersion: 3 + m_Name: Horizontal + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 0 + type: 2 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Vertical + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 1 + type: 2 + axis: 1 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire1 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 0 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire2 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 1 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire3 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 2 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Jump + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 3 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Submit + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: return + altNegativeButton: + altPositiveButton: joystick button 0 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Submit + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: enter + altNegativeButton: + altPositiveButton: space + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Cancel + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: escape + altNegativeButton: + altPositiveButton: joystick button 1 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 diff --git a/Unity Project/ProjectSettings/NavMeshAreas.asset b/Unity Project/ProjectSettings/NavMeshAreas.asset new file mode 100644 index 0000000..3b0b7c3 --- /dev/null +++ b/Unity Project/ProjectSettings/NavMeshAreas.asset @@ -0,0 +1,91 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!126 &1 +NavMeshProjectSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + areas: + - name: Walkable + cost: 1 + - name: Not Walkable + cost: 1 + - name: Jump + cost: 2 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + m_LastAgentTypeID: -887442657 + m_Settings: + - serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.75 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_SettingNames: + - Humanoid diff --git a/Unity Project/ProjectSettings/PackageManagerSettings.asset b/Unity Project/ProjectSettings/PackageManagerSettings.asset new file mode 100644 index 0000000..be4a797 --- /dev/null +++ b/Unity Project/ProjectSettings/PackageManagerSettings.asset @@ -0,0 +1,43 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &1 +MonoBehaviour: + m_ObjectHideFlags: 61 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_EnablePreviewPackages: 0 + m_EnablePackageDependencies: 0 + m_AdvancedSettingsExpanded: 1 + m_ScopedRegistriesSettingsExpanded: 1 + oneTimeWarningShown: 0 + m_Registries: + - m_Id: main + m_Name: + m_Url: https://packages.unity.com + m_Scopes: [] + m_IsDefault: 1 + m_Capabilities: 7 + m_UserSelectedRegistryName: + m_UserAddingNewScopedRegistry: 0 + m_RegistryInfoDraft: + m_ErrorMessage: + m_Original: + m_Id: + m_Name: + m_Url: + m_Scopes: [] + m_IsDefault: 0 + m_Capabilities: 0 + m_Modified: 0 + m_Name: + m_Url: + m_Scopes: + - + m_SelectedScopeIndex: 0 diff --git a/Unity Project/ProjectSettings/Physics2DSettings.asset b/Unity Project/ProjectSettings/Physics2DSettings.asset new file mode 100644 index 0000000..47880b1 --- /dev/null +++ b/Unity Project/ProjectSettings/Physics2DSettings.asset @@ -0,0 +1,56 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!19 &1 +Physics2DSettings: + m_ObjectHideFlags: 0 + serializedVersion: 4 + m_Gravity: {x: 0, y: -9.81} + m_DefaultMaterial: {fileID: 0} + m_VelocityIterations: 8 + m_PositionIterations: 3 + m_VelocityThreshold: 1 + m_MaxLinearCorrection: 0.2 + m_MaxAngularCorrection: 8 + m_MaxTranslationSpeed: 100 + m_MaxRotationSpeed: 360 + m_BaumgarteScale: 0.2 + m_BaumgarteTimeOfImpactScale: 0.75 + m_TimeToSleep: 0.5 + m_LinearSleepTolerance: 0.01 + m_AngularSleepTolerance: 2 + m_DefaultContactOffset: 0.01 + m_JobOptions: + serializedVersion: 2 + useMultithreading: 0 + useConsistencySorting: 0 + m_InterpolationPosesPerJob: 100 + m_NewContactsPerJob: 30 + m_CollideContactsPerJob: 100 + m_ClearFlagsPerJob: 200 + m_ClearBodyForcesPerJob: 200 + m_SyncDiscreteFixturesPerJob: 50 + m_SyncContinuousFixturesPerJob: 50 + m_FindNearestContactsPerJob: 100 + m_UpdateTriggerContactsPerJob: 100 + m_IslandSolverCostThreshold: 100 + m_IslandSolverBodyCostScale: 1 + m_IslandSolverContactCostScale: 10 + m_IslandSolverJointCostScale: 10 + m_IslandSolverBodiesPerJob: 50 + m_IslandSolverContactsPerJob: 50 + m_AutoSimulation: 1 + m_QueriesHitTriggers: 1 + m_QueriesStartInColliders: 1 + m_CallbacksOnDisable: 1 + m_ReuseCollisionCallbacks: 1 + m_AutoSyncTransforms: 0 + m_AlwaysShowColliders: 0 + m_ShowColliderSleep: 1 + m_ShowColliderContacts: 0 + m_ShowColliderAABB: 0 + m_ContactArrowScale: 0.2 + m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} + m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} + m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} + m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} + m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff diff --git a/Unity Project/ProjectSettings/PresetManager.asset b/Unity Project/ProjectSettings/PresetManager.asset new file mode 100644 index 0000000..67a94da --- /dev/null +++ b/Unity Project/ProjectSettings/PresetManager.asset @@ -0,0 +1,7 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1386491679 &1 +PresetManager: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_DefaultPresets: {} diff --git a/Unity Project/ProjectSettings/ProjectSettings.asset b/Unity Project/ProjectSettings/ProjectSettings.asset new file mode 100644 index 0000000..5bac4fb --- /dev/null +++ b/Unity Project/ProjectSettings/ProjectSettings.asset @@ -0,0 +1,676 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!129 &1 +PlayerSettings: + m_ObjectHideFlags: 0 + serializedVersion: 22 + productGUID: 14e2314ded1236643a94f39dfee3bfd1 + AndroidProfiler: 0 + AndroidFilterTouchesWhenObscured: 0 + AndroidEnableSustainedPerformanceMode: 0 + defaultScreenOrientation: 4 + targetDevice: 2 + useOnDemandResources: 0 + accelerometerFrequency: 60 + companyName: DefaultCompany + productName: New Unity Project + defaultCursor: {fileID: 0} + cursorHotspot: {x: 0, y: 0} + m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} + m_ShowUnitySplashScreen: 1 + m_ShowUnitySplashLogo: 1 + m_SplashScreenOverlayOpacity: 1 + m_SplashScreenAnimation: 1 + m_SplashScreenLogoStyle: 1 + m_SplashScreenDrawMode: 0 + m_SplashScreenBackgroundAnimationZoom: 1 + m_SplashScreenLogoAnimationZoom: 1 + m_SplashScreenBackgroundLandscapeAspect: 1 + m_SplashScreenBackgroundPortraitAspect: 1 + m_SplashScreenBackgroundLandscapeUvs: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + m_SplashScreenBackgroundPortraitUvs: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + m_SplashScreenLogos: [] + m_VirtualRealitySplashScreen: {fileID: 0} + m_HolographicTrackingLossScreen: {fileID: 0} + defaultScreenWidth: 1024 + defaultScreenHeight: 768 + defaultScreenWidthWeb: 960 + defaultScreenHeightWeb: 600 + m_StereoRenderingPath: 0 + m_ActiveColorSpace: 0 + m_MTRendering: 1 + mipStripping: 0 + numberOfMipsStripped: 0 + m_StackTraceTypes: 010000000100000001000000010000000100000001000000 + iosShowActivityIndicatorOnLoading: -1 + androidShowActivityIndicatorOnLoading: -1 + iosUseCustomAppBackgroundBehavior: 0 + iosAllowHTTPDownload: 1 + allowedAutorotateToPortrait: 1 + allowedAutorotateToPortraitUpsideDown: 1 + allowedAutorotateToLandscapeRight: 1 + allowedAutorotateToLandscapeLeft: 1 + useOSAutorotation: 1 + use32BitDisplayBuffer: 1 + preserveFramebufferAlpha: 0 + disableDepthAndStencilBuffers: 0 + androidStartInFullscreen: 1 + androidRenderOutsideSafeArea: 1 + androidUseSwappy: 1 + androidBlitType: 0 + defaultIsNativeResolution: 1 + macRetinaSupport: 1 + runInBackground: 1 + captureSingleScreen: 0 + muteOtherAudioSources: 0 + Prepare IOS For Recording: 0 + Force IOS Speakers When Recording: 0 + deferSystemGesturesMode: 0 + hideHomeButton: 0 + submitAnalytics: 1 + usePlayerLog: 1 + bakeCollisionMeshes: 0 + forceSingleInstance: 0 + useFlipModelSwapchain: 1 + resizableWindow: 0 + useMacAppStoreValidation: 0 + macAppStoreCategory: public.app-category.games + gpuSkinning: 1 + xboxPIXTextureCapture: 0 + xboxEnableAvatar: 0 + xboxEnableKinect: 0 + xboxEnableKinectAutoTracking: 0 + xboxEnableFitness: 0 + visibleInBackground: 1 + allowFullscreenSwitch: 1 + fullscreenMode: 1 + xboxSpeechDB: 0 + xboxEnableHeadOrientation: 0 + xboxEnableGuest: 0 + xboxEnablePIXSampling: 0 + metalFramebufferOnly: 0 + xboxOneResolution: 0 + xboxOneSResolution: 0 + xboxOneXResolution: 3 + xboxOneMonoLoggingLevel: 0 + xboxOneLoggingLevel: 1 + xboxOneDisableEsram: 0 + xboxOneEnableTypeOptimization: 0 + xboxOnePresentImmediateThreshold: 0 + switchQueueCommandMemory: 0 + switchQueueControlMemory: 16384 + switchQueueComputeMemory: 262144 + switchNVNShaderPoolsGranularity: 33554432 + switchNVNDefaultPoolsGranularity: 16777216 + switchNVNOtherPoolsGranularity: 16777216 + switchNVNMaxPublicTextureIDCount: 0 + switchNVNMaxPublicSamplerIDCount: 0 + stadiaPresentMode: 0 + stadiaTargetFramerate: 0 + vulkanNumSwapchainBuffers: 3 + vulkanEnableSetSRGBWrite: 0 + vulkanEnablePreTransform: 0 + vulkanEnableLateAcquireNextImage: 0 + m_SupportedAspectRatios: + 4:3: 1 + 5:4: 1 + 16:10: 1 + 16:9: 1 + Others: 1 + bundleVersion: 0.1 + preloadedAssets: [] + metroInputSource: 0 + wsaTransparentSwapchain: 0 + m_HolographicPauseOnTrackingLoss: 1 + xboxOneDisableKinectGpuReservation: 1 + xboxOneEnable7thCore: 1 + vrSettings: + enable360StereoCapture: 0 + isWsaHolographicRemotingEnabled: 0 + enableFrameTimingStats: 0 + useHDRDisplay: 0 + D3DHDRBitDepth: 0 + m_ColorGamuts: 00000000 + targetPixelDensity: 30 + resolutionScalingMode: 0 + androidSupportedAspectRatio: 1 + androidMaxAspectRatio: 2.1 + applicationIdentifier: + Standalone: com.DefaultCompany.NewUnityProject + buildNumber: + Standalone: 0 + iPhone: 0 + tvOS: 0 + overrideDefaultApplicationIdentifier: 0 + AndroidBundleVersionCode: 1 + AndroidMinSdkVersion: 19 + AndroidTargetSdkVersion: 0 + AndroidPreferredInstallLocation: 1 + aotOptions: + stripEngineCode: 1 + iPhoneStrippingLevel: 0 + iPhoneScriptCallOptimization: 0 + ForceInternetPermission: 0 + ForceSDCardPermission: 0 + CreateWallpaper: 0 + APKExpansionFiles: 0 + keepLoadedShadersAlive: 0 + StripUnusedMeshComponents: 1 + VertexChannelCompressionMask: 4054 + iPhoneSdkVersion: 988 + iOSTargetOSVersionString: 11.0 + tvOSSdkVersion: 0 + tvOSRequireExtendedGameController: 0 + tvOSTargetOSVersionString: 11.0 + uIPrerenderedIcon: 0 + uIRequiresPersistentWiFi: 0 + uIRequiresFullScreen: 1 + uIStatusBarHidden: 1 + uIExitOnSuspend: 0 + uIStatusBarStyle: 0 + appleTVSplashScreen: {fileID: 0} + appleTVSplashScreen2x: {fileID: 0} + tvOSSmallIconLayers: [] + tvOSSmallIconLayers2x: [] + tvOSLargeIconLayers: [] + tvOSLargeIconLayers2x: [] + tvOSTopShelfImageLayers: [] + tvOSTopShelfImageLayers2x: [] + tvOSTopShelfImageWideLayers: [] + tvOSTopShelfImageWideLayers2x: [] + iOSLaunchScreenType: 0 + iOSLaunchScreenPortrait: {fileID: 0} + iOSLaunchScreenLandscape: {fileID: 0} + iOSLaunchScreenBackgroundColor: + serializedVersion: 2 + rgba: 0 + iOSLaunchScreenFillPct: 100 + iOSLaunchScreenSize: 100 + iOSLaunchScreenCustomXibPath: + iOSLaunchScreeniPadType: 0 + iOSLaunchScreeniPadImage: {fileID: 0} + iOSLaunchScreeniPadBackgroundColor: + serializedVersion: 2 + rgba: 0 + iOSLaunchScreeniPadFillPct: 100 + iOSLaunchScreeniPadSize: 100 + iOSLaunchScreeniPadCustomXibPath: + iOSLaunchScreenCustomStoryboardPath: + iOSLaunchScreeniPadCustomStoryboardPath: + iOSDeviceRequirements: [] + iOSURLSchemes: [] + iOSBackgroundModes: 0 + iOSMetalForceHardShadows: 0 + metalEditorSupport: 1 + metalAPIValidation: 1 + iOSRenderExtraFrameOnPause: 0 + iosCopyPluginsCodeInsteadOfSymlink: 0 + appleDeveloperTeamID: + iOSManualSigningProvisioningProfileID: + tvOSManualSigningProvisioningProfileID: + iOSManualSigningProvisioningProfileType: 0 + tvOSManualSigningProvisioningProfileType: 0 + appleEnableAutomaticSigning: 0 + iOSRequireARKit: 0 + iOSAutomaticallyDetectAndAddCapabilities: 1 + appleEnableProMotion: 0 + shaderPrecisionModel: 0 + clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea + templatePackageId: com.unity.template.3d@5.0.4 + templateDefaultScene: Assets/Scenes/SampleScene.unity + useCustomMainManifest: 0 + useCustomLauncherManifest: 0 + useCustomMainGradleTemplate: 0 + useCustomLauncherGradleManifest: 0 + useCustomBaseGradleTemplate: 0 + useCustomGradlePropertiesTemplate: 0 + useCustomProguardFile: 0 + AndroidTargetArchitectures: 1 + AndroidSplashScreenScale: 0 + androidSplashScreen: {fileID: 0} + AndroidKeystoreName: + AndroidKeyaliasName: + AndroidBuildApkPerCpuArchitecture: 0 + AndroidTVCompatibility: 0 + AndroidIsGame: 1 + AndroidEnableTango: 0 + androidEnableBanner: 1 + androidUseLowAccuracyLocation: 0 + androidUseCustomKeystore: 0 + m_AndroidBanners: + - width: 320 + height: 180 + banner: {fileID: 0} + androidGamepadSupportLevel: 0 + AndroidMinifyWithR8: 0 + AndroidMinifyRelease: 0 + AndroidMinifyDebug: 0 + AndroidValidateAppBundleSize: 1 + AndroidAppBundleSizeToValidate: 150 + m_BuildTargetIcons: [] + m_BuildTargetPlatformIcons: [] + m_BuildTargetBatching: + - m_BuildTarget: Standalone + m_StaticBatching: 1 + m_DynamicBatching: 0 + - m_BuildTarget: tvOS + m_StaticBatching: 1 + m_DynamicBatching: 0 + - m_BuildTarget: Android + m_StaticBatching: 1 + m_DynamicBatching: 0 + - m_BuildTarget: iPhone + m_StaticBatching: 1 + m_DynamicBatching: 0 + - m_BuildTarget: WebGL + m_StaticBatching: 0 + m_DynamicBatching: 0 + m_BuildTargetGraphicsJobs: + - m_BuildTarget: MacStandaloneSupport + m_GraphicsJobs: 0 + - m_BuildTarget: Switch + m_GraphicsJobs: 1 + - m_BuildTarget: MetroSupport + m_GraphicsJobs: 1 + - m_BuildTarget: AppleTVSupport + m_GraphicsJobs: 0 + - m_BuildTarget: BJMSupport + m_GraphicsJobs: 1 + - m_BuildTarget: LinuxStandaloneSupport + m_GraphicsJobs: 1 + - m_BuildTarget: PS4Player + m_GraphicsJobs: 1 + - m_BuildTarget: iOSSupport + m_GraphicsJobs: 0 + - m_BuildTarget: WindowsStandaloneSupport + m_GraphicsJobs: 1 + - m_BuildTarget: XboxOnePlayer + m_GraphicsJobs: 1 + - m_BuildTarget: LuminSupport + m_GraphicsJobs: 0 + - m_BuildTarget: AndroidPlayer + m_GraphicsJobs: 0 + - m_BuildTarget: WebGLSupport + m_GraphicsJobs: 0 + m_BuildTargetGraphicsJobMode: + - m_BuildTarget: PS4Player + m_GraphicsJobMode: 0 + - m_BuildTarget: XboxOnePlayer + m_GraphicsJobMode: 0 + m_BuildTargetGraphicsAPIs: + - m_BuildTarget: AndroidPlayer + m_APIs: 150000000b000000 + m_Automatic: 0 + - m_BuildTarget: iOSSupport + m_APIs: 10000000 + m_Automatic: 1 + - m_BuildTarget: AppleTVSupport + m_APIs: 10000000 + m_Automatic: 1 + - m_BuildTarget: WebGLSupport + m_APIs: 0b000000 + m_Automatic: 1 + m_BuildTargetVRSettings: + - m_BuildTarget: Standalone + m_Enabled: 0 + m_Devices: + - Oculus + - OpenVR + openGLRequireES31: 0 + openGLRequireES31AEP: 0 + openGLRequireES32: 0 + m_TemplateCustomTags: {} + mobileMTRendering: + Android: 1 + iPhone: 1 + tvOS: 1 + m_BuildTargetGroupLightmapEncodingQuality: [] + m_BuildTargetGroupLightmapSettings: [] + m_BuildTargetNormalMapEncoding: [] + playModeTestRunnerEnabled: 0 + runPlayModeTestAsEditModeTest: 0 + actionOnDotNetUnhandledException: 1 + enableInternalProfiler: 0 + logObjCUncaughtExceptions: 1 + enableCrashReportAPI: 0 + cameraUsageDescription: + locationUsageDescription: + microphoneUsageDescription: + switchNMETAOverride: + switchNetLibKey: + switchSocketMemoryPoolSize: 6144 + switchSocketAllocatorPoolSize: 128 + switchSocketConcurrencyLimit: 14 + switchScreenResolutionBehavior: 2 + switchUseCPUProfiler: 0 + switchUseGOLDLinker: 0 + switchLTOSetting: 0 + switchApplicationID: 0x01004b9000490000 + switchNSODependencies: + switchTitleNames_0: + switchTitleNames_1: + switchTitleNames_2: + switchTitleNames_3: + switchTitleNames_4: + switchTitleNames_5: + switchTitleNames_6: + switchTitleNames_7: + switchTitleNames_8: + switchTitleNames_9: + switchTitleNames_10: + switchTitleNames_11: + switchTitleNames_12: + switchTitleNames_13: + switchTitleNames_14: + switchTitleNames_15: + switchPublisherNames_0: + switchPublisherNames_1: + switchPublisherNames_2: + switchPublisherNames_3: + switchPublisherNames_4: + switchPublisherNames_5: + switchPublisherNames_6: + switchPublisherNames_7: + switchPublisherNames_8: + switchPublisherNames_9: + switchPublisherNames_10: + switchPublisherNames_11: + switchPublisherNames_12: + switchPublisherNames_13: + switchPublisherNames_14: + switchPublisherNames_15: + switchIcons_0: {fileID: 0} + switchIcons_1: {fileID: 0} + switchIcons_2: {fileID: 0} + switchIcons_3: {fileID: 0} + switchIcons_4: {fileID: 0} + switchIcons_5: {fileID: 0} + switchIcons_6: {fileID: 0} + switchIcons_7: {fileID: 0} + switchIcons_8: {fileID: 0} + switchIcons_9: {fileID: 0} + switchIcons_10: {fileID: 0} + switchIcons_11: {fileID: 0} + switchIcons_12: {fileID: 0} + switchIcons_13: {fileID: 0} + switchIcons_14: {fileID: 0} + switchIcons_15: {fileID: 0} + switchSmallIcons_0: {fileID: 0} + switchSmallIcons_1: {fileID: 0} + switchSmallIcons_2: {fileID: 0} + switchSmallIcons_3: {fileID: 0} + switchSmallIcons_4: {fileID: 0} + switchSmallIcons_5: {fileID: 0} + switchSmallIcons_6: {fileID: 0} + switchSmallIcons_7: {fileID: 0} + switchSmallIcons_8: {fileID: 0} + switchSmallIcons_9: {fileID: 0} + switchSmallIcons_10: {fileID: 0} + switchSmallIcons_11: {fileID: 0} + switchSmallIcons_12: {fileID: 0} + switchSmallIcons_13: {fileID: 0} + switchSmallIcons_14: {fileID: 0} + switchSmallIcons_15: {fileID: 0} + switchManualHTML: + switchAccessibleURLs: + switchLegalInformation: + switchMainThreadStackSize: 1048576 + switchPresenceGroupId: + switchLogoHandling: 0 + switchReleaseVersion: 0 + switchDisplayVersion: 1.0.0 + switchStartupUserAccount: 0 + switchTouchScreenUsage: 0 + switchSupportedLanguagesMask: 0 + switchLogoType: 0 + switchApplicationErrorCodeCategory: + switchUserAccountSaveDataSize: 0 + switchUserAccountSaveDataJournalSize: 0 + switchApplicationAttribute: 0 + switchCardSpecSize: -1 + switchCardSpecClock: -1 + switchRatingsMask: 0 + switchRatingsInt_0: 0 + switchRatingsInt_1: 0 + switchRatingsInt_2: 0 + switchRatingsInt_3: 0 + switchRatingsInt_4: 0 + switchRatingsInt_5: 0 + switchRatingsInt_6: 0 + switchRatingsInt_7: 0 + switchRatingsInt_8: 0 + switchRatingsInt_9: 0 + switchRatingsInt_10: 0 + switchRatingsInt_11: 0 + switchRatingsInt_12: 0 + switchLocalCommunicationIds_0: + switchLocalCommunicationIds_1: + switchLocalCommunicationIds_2: + switchLocalCommunicationIds_3: + switchLocalCommunicationIds_4: + switchLocalCommunicationIds_5: + switchLocalCommunicationIds_6: + switchLocalCommunicationIds_7: + switchParentalControl: 0 + switchAllowsScreenshot: 1 + switchAllowsVideoCapturing: 1 + switchAllowsRuntimeAddOnContentInstall: 0 + switchDataLossConfirmation: 0 + switchUserAccountLockEnabled: 0 + switchSystemResourceMemory: 16777216 + switchSupportedNpadStyles: 22 + switchNativeFsCacheSize: 32 + switchIsHoldTypeHorizontal: 0 + switchSupportedNpadCount: 8 + switchSocketConfigEnabled: 0 + switchTcpInitialSendBufferSize: 32 + switchTcpInitialReceiveBufferSize: 64 + switchTcpAutoSendBufferSizeMax: 256 + switchTcpAutoReceiveBufferSizeMax: 256 + switchUdpSendBufferSize: 9 + switchUdpReceiveBufferSize: 42 + switchSocketBufferEfficiency: 4 + switchSocketInitializeEnabled: 1 + switchNetworkInterfaceManagerInitializeEnabled: 1 + switchPlayerConnectionEnabled: 1 + switchUseNewStyleFilepaths: 0 + ps4NPAgeRating: 12 + ps4NPTitleSecret: + ps4NPTrophyPackPath: + ps4ParentalLevel: 11 + ps4ContentID: ED1633-NPXX51362_00-0000000000000000 + ps4Category: 0 + ps4MasterVersion: 01.00 + ps4AppVersion: 01.00 + ps4AppType: 0 + ps4ParamSfxPath: + ps4VideoOutPixelFormat: 0 + ps4VideoOutInitialWidth: 1920 + ps4VideoOutBaseModeInitialWidth: 1920 + ps4VideoOutReprojectionRate: 60 + ps4PronunciationXMLPath: + ps4PronunciationSIGPath: + ps4BackgroundImagePath: + ps4StartupImagePath: + ps4StartupImagesFolder: + ps4IconImagesFolder: + ps4SaveDataImagePath: + ps4SdkOverride: + ps4BGMPath: + ps4ShareFilePath: + ps4ShareOverlayImagePath: + ps4PrivacyGuardImagePath: + ps4ExtraSceSysFile: + ps4NPtitleDatPath: + ps4RemotePlayKeyAssignment: -1 + ps4RemotePlayKeyMappingDir: + ps4PlayTogetherPlayerCount: 0 + ps4EnterButtonAssignment: 1 + ps4ApplicationParam1: 0 + ps4ApplicationParam2: 0 + ps4ApplicationParam3: 0 + ps4ApplicationParam4: 0 + ps4DownloadDataSize: 0 + ps4GarlicHeapSize: 2048 + ps4ProGarlicHeapSize: 2560 + playerPrefsMaxSize: 32768 + ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ + ps4pnSessions: 1 + ps4pnPresence: 1 + ps4pnFriends: 1 + ps4pnGameCustomData: 1 + playerPrefsSupport: 0 + enableApplicationExit: 0 + resetTempFolder: 1 + restrictedAudioUsageRights: 0 + ps4UseResolutionFallback: 0 + ps4ReprojectionSupport: 0 + ps4UseAudio3dBackend: 0 + ps4UseLowGarlicFragmentationMode: 1 + ps4SocialScreenEnabled: 0 + ps4ScriptOptimizationLevel: 0 + ps4Audio3dVirtualSpeakerCount: 14 + ps4attribCpuUsage: 0 + ps4PatchPkgPath: + ps4PatchLatestPkgPath: + ps4PatchChangeinfoPath: + ps4PatchDayOne: 0 + ps4attribUserManagement: 0 + ps4attribMoveSupport: 0 + ps4attrib3DSupport: 0 + ps4attribShareSupport: 0 + ps4attribExclusiveVR: 0 + ps4disableAutoHideSplash: 0 + ps4videoRecordingFeaturesUsed: 0 + ps4contentSearchFeaturesUsed: 0 + ps4CompatibilityPS5: 0 + ps4GPU800MHz: 1 + ps4attribEyeToEyeDistanceSettingVR: 0 + ps4IncludedModules: [] + ps4attribVROutputEnabled: 0 + monoEnv: + splashScreenBackgroundSourceLandscape: {fileID: 0} + splashScreenBackgroundSourcePortrait: {fileID: 0} + blurSplashScreenBackground: 1 + spritePackerPolicy: + webGLMemorySize: 16 + webGLExceptionSupport: 1 + webGLNameFilesAsHashes: 0 + webGLDataCaching: 1 + webGLDebugSymbols: 0 + webGLEmscriptenArgs: + webGLModulesDirectory: + webGLTemplate: APPLICATION:Default + webGLAnalyzeBuildSize: 0 + webGLUseEmbeddedResources: 0 + webGLCompressionFormat: 1 + webGLWasmArithmeticExceptions: 0 + webGLLinkerTarget: 1 + webGLThreadsSupport: 0 + webGLDecompressionFallback: 0 + scriptingDefineSymbols: {} + additionalCompilerArguments: {} + platformArchitecture: {} + scriptingBackend: {} + il2cppCompilerConfiguration: {} + managedStrippingLevel: {} + incrementalIl2cppBuild: {} + suppressCommonWarnings: 1 + allowUnsafeCode: 0 + useDeterministicCompilation: 1 + enableRoslynAnalyzers: 1 + additionalIl2CppArgs: + scriptingRuntimeVersion: 1 + gcIncremental: 1 + assemblyVersionValidation: 1 + gcWBarrierValidation: 0 + apiCompatibilityLevelPerPlatform: {} + m_RenderingPath: 1 + m_MobileRenderingPath: 1 + metroPackageName: Template_3D + metroPackageVersion: + metroCertificatePath: + metroCertificatePassword: + metroCertificateSubject: + metroCertificateIssuer: + metroCertificateNotAfter: 0000000000000000 + metroApplicationDescription: Template_3D + wsaImages: {} + metroTileShortName: + metroTileShowName: 0 + metroMediumTileShowName: 0 + metroLargeTileShowName: 0 + metroWideTileShowName: 0 + metroSupportStreamingInstall: 0 + metroLastRequiredScene: 0 + metroDefaultTileSize: 1 + metroTileForegroundText: 2 + metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} + metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, a: 1} + metroSplashScreenUseBackgroundColor: 0 + platformCapabilities: {} + metroTargetDeviceFamilies: {} + metroFTAName: + metroFTAFileTypes: [] + metroProtocolName: + XboxOneProductId: + XboxOneUpdateKey: + XboxOneSandboxId: + XboxOneContentId: + XboxOneTitleId: + XboxOneSCId: + XboxOneGameOsOverridePath: + XboxOnePackagingOverridePath: + XboxOneAppManifestOverridePath: + XboxOneVersion: 1.0.0.0 + XboxOnePackageEncryption: 0 + XboxOnePackageUpdateGranularity: 2 + XboxOneDescription: + XboxOneLanguage: + - enus + XboxOneCapability: [] + XboxOneGameRating: {} + XboxOneIsContentPackage: 0 + XboxOneEnhancedXboxCompatibilityMode: 0 + XboxOneEnableGPUVariability: 1 + XboxOneSockets: {} + XboxOneSplashScreen: {fileID: 0} + XboxOneAllowedProductIds: [] + XboxOnePersistentLocalStorageSize: 0 + XboxOneXTitleMemory: 8 + XboxOneOverrideIdentityName: + XboxOneOverrideIdentityPublisher: + vrEditorSettings: {} + cloudServicesEnabled: + UNet: 1 + luminIcon: + m_Name: + m_ModelFolderPath: + m_PortalFolderPath: + luminCert: + m_CertPath: + m_SignPackage: 1 + luminIsChannelApp: 0 + luminVersion: + m_VersionCode: 1 + m_VersionName: + apiCompatibilityLevel: 6 + activeInputHandler: 0 + cloudProjectId: + framebufferDepthMemorylessMode: 0 + qualitySettingsNames: [] + projectName: + organizationId: + cloudEnabled: 0 + legacyClampBlendShapeWeights: 0 + virtualTexturingSupportEnabled: 0 diff --git a/Unity Project/ProjectSettings/ProjectVersion.txt b/Unity Project/ProjectSettings/ProjectVersion.txt new file mode 100644 index 0000000..143b639 --- /dev/null +++ b/Unity Project/ProjectSettings/ProjectVersion.txt @@ -0,0 +1,2 @@ +m_EditorVersion: 2021.1.1f1 +m_EditorVersionWithRevision: 2021.1.1f1 (6fdc41dfa55a) diff --git a/Unity Project/ProjectSettings/QualitySettings.asset b/Unity Project/ProjectSettings/QualitySettings.asset new file mode 100644 index 0000000..7b7658d --- /dev/null +++ b/Unity Project/ProjectSettings/QualitySettings.asset @@ -0,0 +1,232 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!47 &1 +QualitySettings: + m_ObjectHideFlags: 0 + serializedVersion: 5 + m_CurrentQuality: 5 + m_QualitySettings: + - serializedVersion: 2 + name: Very Low + pixelLightCount: 0 + shadows: 0 + shadowResolution: 0 + shadowProjection: 1 + shadowCascades: 1 + shadowDistance: 15 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 0 + blendWeights: 1 + textureQuality: 1 + anisotropicTextures: 0 + antiAliasing: 0 + softParticles: 0 + softVegetation: 0 + realtimeReflectionProbes: 0 + billboardsFaceCameraPosition: 0 + vSyncCount: 0 + lodBias: 0.3 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 4 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: Low + pixelLightCount: 0 + shadows: 0 + shadowResolution: 0 + shadowProjection: 1 + shadowCascades: 1 + shadowDistance: 20 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 0 + blendWeights: 2 + textureQuality: 0 + anisotropicTextures: 0 + antiAliasing: 0 + softParticles: 0 + softVegetation: 0 + realtimeReflectionProbes: 0 + billboardsFaceCameraPosition: 0 + vSyncCount: 0 + lodBias: 0.4 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 16 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: Medium + pixelLightCount: 1 + shadows: 1 + shadowResolution: 0 + shadowProjection: 1 + shadowCascades: 1 + shadowDistance: 20 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 0 + blendWeights: 2 + textureQuality: 0 + anisotropicTextures: 1 + antiAliasing: 0 + softParticles: 0 + softVegetation: 0 + realtimeReflectionProbes: 0 + billboardsFaceCameraPosition: 0 + vSyncCount: 1 + lodBias: 0.7 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 64 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: High + pixelLightCount: 2 + shadows: 2 + shadowResolution: 1 + shadowProjection: 1 + shadowCascades: 2 + shadowDistance: 40 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 1 + blendWeights: 2 + textureQuality: 0 + anisotropicTextures: 1 + antiAliasing: 0 + softParticles: 0 + softVegetation: 1 + realtimeReflectionProbes: 1 + billboardsFaceCameraPosition: 1 + vSyncCount: 1 + lodBias: 1 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 256 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: Very High + pixelLightCount: 3 + shadows: 2 + shadowResolution: 2 + shadowProjection: 1 + shadowCascades: 2 + shadowDistance: 70 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 1 + blendWeights: 4 + textureQuality: 0 + anisotropicTextures: 2 + antiAliasing: 2 + softParticles: 1 + softVegetation: 1 + realtimeReflectionProbes: 1 + billboardsFaceCameraPosition: 1 + vSyncCount: 1 + lodBias: 1.5 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 1024 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: Ultra + pixelLightCount: 4 + shadows: 2 + shadowResolution: 2 + shadowProjection: 1 + shadowCascades: 4 + shadowDistance: 150 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 1 + blendWeights: 4 + textureQuality: 0 + anisotropicTextures: 2 + antiAliasing: 2 + softParticles: 1 + softVegetation: 1 + realtimeReflectionProbes: 1 + billboardsFaceCameraPosition: 1 + vSyncCount: 1 + lodBias: 2 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 4096 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + m_PerPlatformDefaultQuality: + Android: 2 + Lumin: 5 + Nintendo 3DS: 5 + Nintendo Switch: 5 + PS4: 5 + PSP2: 2 + Stadia: 5 + Standalone: 5 + WebGL: 3 + Windows Store Apps: 5 + XboxOne: 5 + iPhone: 2 + tvOS: 2 diff --git a/Unity Project/ProjectSettings/TagManager.asset b/Unity Project/ProjectSettings/TagManager.asset new file mode 100644 index 0000000..71cf2c5 --- /dev/null +++ b/Unity Project/ProjectSettings/TagManager.asset @@ -0,0 +1,45 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!78 &1 +TagManager: + serializedVersion: 2 + tags: + - LSystemLiteral + - ShadowCone + layers: + - Default + - TransparentFX + - Ignore Raycast + - + - Water + - UI + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + m_SortingLayers: + - name: Default + uniqueID: 0 + locked: 0 diff --git a/Unity Project/ProjectSettings/TimeManager.asset b/Unity Project/ProjectSettings/TimeManager.asset new file mode 100644 index 0000000..558a017 --- /dev/null +++ b/Unity Project/ProjectSettings/TimeManager.asset @@ -0,0 +1,9 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!5 &1 +TimeManager: + m_ObjectHideFlags: 0 + Fixed Timestep: 0.02 + Maximum Allowed Timestep: 0.33333334 + m_TimeScale: 1 + Maximum Particle Timestep: 0.03 diff --git a/Unity Project/ProjectSettings/UnityConnectSettings.asset b/Unity Project/ProjectSettings/UnityConnectSettings.asset new file mode 100644 index 0000000..fa0b146 --- /dev/null +++ b/Unity Project/ProjectSettings/UnityConnectSettings.asset @@ -0,0 +1,34 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!310 &1 +UnityConnectSettings: + m_ObjectHideFlags: 0 + serializedVersion: 1 + m_Enabled: 0 + m_TestMode: 0 + m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events + m_EventUrl: https://cdp.cloud.unity3d.com/v1/events + m_ConfigUrl: https://config.uca.cloud.unity3d.com + m_TestInitMode: 0 + CrashReportingSettings: + m_EventUrl: https://perf-events.cloud.unity3d.com + m_Enabled: 0 + m_LogBufferSize: 10 + m_CaptureEditorExceptions: 1 + UnityPurchasingSettings: + m_Enabled: 0 + m_TestMode: 0 + UnityAnalyticsSettings: + m_Enabled: 0 + m_TestMode: 0 + m_InitializeOnStartup: 1 + UnityAdsSettings: + m_Enabled: 0 + m_InitializeOnStartup: 1 + m_TestMode: 0 + m_IosGameId: + m_AndroidGameId: + m_GameIds: {} + m_GameId: + PerformanceReportingSettings: + m_Enabled: 0 diff --git a/Unity Project/ProjectSettings/VFXManager.asset b/Unity Project/ProjectSettings/VFXManager.asset new file mode 100644 index 0000000..3a95c98 --- /dev/null +++ b/Unity Project/ProjectSettings/VFXManager.asset @@ -0,0 +1,12 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!937362698 &1 +VFXManager: + m_ObjectHideFlags: 0 + m_IndirectShader: {fileID: 0} + m_CopyBufferShader: {fileID: 0} + m_SortShader: {fileID: 0} + m_StripUpdateShader: {fileID: 0} + m_RenderPipeSettingsPath: + m_FixedTimeStep: 0.016666668 + m_MaxDeltaTime: 0.05 diff --git a/Unity Project/ProjectSettings/VersionControlSettings.asset b/Unity Project/ProjectSettings/VersionControlSettings.asset new file mode 100644 index 0000000..dca2881 --- /dev/null +++ b/Unity Project/ProjectSettings/VersionControlSettings.asset @@ -0,0 +1,8 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!890905787 &1 +VersionControlSettings: + m_ObjectHideFlags: 0 + m_Mode: Visible Meta Files + m_CollabEditorSettings: + inProgressEnabled: 1 diff --git a/Unity Project/ProjectSettings/XRSettings.asset b/Unity Project/ProjectSettings/XRSettings.asset new file mode 100644 index 0000000..482590c --- /dev/null +++ b/Unity Project/ProjectSettings/XRSettings.asset @@ -0,0 +1,10 @@ +{ + "m_SettingKeys": [ + "VR Device Disabled", + "VR Device User Alert" + ], + "m_SettingValues": [ + "False", + "False" + ] +} \ No newline at end of file diff --git a/images/Trees in environment/inShadow-0245281.gif b/images/Trees in environment/inShadow-0245281.gif new file mode 100644 index 0000000..4266569 Binary files /dev/null and b/images/Trees in environment/inShadow-0245281.gif differ diff --git a/images/Trees in environment/manytrees-0251718.png b/images/Trees in environment/manytrees-0251718.png new file mode 100644 index 0000000..5694913 Binary files /dev/null and b/images/Trees in environment/manytrees-0251718.png differ diff --git a/images/Trees in environment/shadowBox-0244468.gif b/images/Trees in environment/shadowBox-0244468.gif new file mode 100644 index 0000000..66660a2 Binary files /dev/null and b/images/Trees in environment/shadowBox-0244468.gif differ diff --git a/images/Trees in environment/treebox.png b/images/Trees in environment/treebox.png new file mode 100644 index 0000000..e2e2879 Binary files /dev/null and b/images/Trees in environment/treebox.png differ diff --git a/images/Trees in environment/treeshadow-0250563.png b/images/Trees in environment/treeshadow-0250563.png new file mode 100644 index 0000000..0d02659 Binary files /dev/null and b/images/Trees in environment/treeshadow-0250563.png differ diff --git a/images/Trees in environment/treeshadow-0250708.png b/images/Trees in environment/treeshadow-0250708.png new file mode 100644 index 0000000..de8a5b2 Binary files /dev/null and b/images/Trees in environment/treeshadow-0250708.png differ diff --git a/images/Trees in environment/treeshadowgreen-0250548.png b/images/Trees in environment/treeshadowgreen-0250548.png new file mode 100644 index 0000000..99f2aac Binary files /dev/null and b/images/Trees in environment/treeshadowgreen-0250548.png differ