diff --git a/.claude/settings.json b/.claude/settings.json new file mode 100644 index 000000000..6a9afe285 --- /dev/null +++ b/.claude/settings.json @@ -0,0 +1,7 @@ +{ + "permissions": { + "allow": [ + "Bash(ls -la \"c:\\\\Users\\\\ANSL\\\\Desktop\\\\BoatAttack\\\\Assets\\\\Scripts\"\" | findstr /E \"RL Connect Environment \")" + ] + } +} diff --git a/.claude/settings.local.json b/.claude/settings.local.json new file mode 100644 index 000000000..27b02601a --- /dev/null +++ b/.claude/settings.local.json @@ -0,0 +1,21 @@ +{ + "permissions": { + "allow": [ + "Bash(grep:*)", + "Bash(gh repo view:*)", + "WebFetch(domain:github.com)", + "mcp__context7__resolve-library-id", + "mcp__context7__query-docs", + "Bash(gh api:*)", + "Bash(where:*)", + "WebFetch(domain:api.github.com)", + "WebFetch(domain:raw.githubusercontent.com)", + "mcp__sequential-thinking__sequentialthinking", + "WebFetch(domain:www.figma.com)", + "Bash(find:*)", + "Bash(git push:*)", + "Bash(git ls-tree:*)", + "Bash(git rm:*)" + ] + } +} diff --git a/.gitignore b/.gitignore index bb7ef21f8..f3d33a6c9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,16 +1,22 @@ -/[Ll]ibrary/ -/[Tt]emp/ -/[Oo]bj/ -/[Bb]uild/ -/[Bb]uilds/ -/Assets/AssetStoreTools* - -# Visual Studio 2015 cache directory -/.vs/ - -# Autogenerated VS/MD/Consulo solution and project files -ExportedObj/ -.consulo/ +# === Unity 무시 항목 === +[Ll]ibrary/ +[Tt]emp/ +[Oo]bj/ +[Bb]uild/ +[Bb]uilds/ +[Ll]ogs/ +[Uu]ser[Ss]ettings/ +MemoryCaptures/ +Recordings/ + +# === 에셋 메타 데이터 === +!/[Aa]ssets/**/*.meta + +# === IDE & OS 캐시 === +.vs/ +.vscode/ +.idea/ +.gradle/ *.csproj *.unityproj *.sln @@ -22,27 +28,77 @@ ExportedObj/ *.booproj *.svd *.pdb +*.mdb +*.opendb +*.VC.db +.DS_Store +.DS_Store? +._* +Thumbs.db +ehthumbs.db +Desktop.ini -# Unity3D generated meta files -*.pidb.meta - -# Unity3D Generated File On Crash Reports -sysinfo.txt - -# Builds +# === 빌드 파일 === *.apk +*.aab *.unitypackage -Assets/_Ignore -_Ignore.meta -.idea -Logs -Assets/Plugins/Editor/JetBrains -Assets/Plugins/Editor/JetBrains.meta -Recordings -Packages/com.unity.* -MemoryCaptures -Assets/BuildReports -SerializedBuildInfo -SwitchIL2CPP* +*.app + +# === 파이썬 & 가상환경 (Freqtrade/ML-Agents 관련) === +venv/ +ENV/ +env/ +bin/ +lib/ +include/ +__pycache__/ +*.py[cod] +*$py.class +Assets/ML-Agents/Timers/*.json + +# === 내비메시 데이터 (협업 시 필요하면 주석 처리하세요) === +**/NavMesh-*.asset +**/NavMesh-*.asset.meta + +# === 커스텀 무시 (임시 이미지 등) === +Assets/_Ignore/ Assets/ActualImages* -Packages/packages-lock.json + +# === 외부 에셋 (에셋 스토어/패키지) === +Assets/UMO Assets/ +Assets/**/WarFX/ +Assets/**/War FX/ +Assets/JMO Assets/ + +# === 임시/테스트 파일 === +Assets/New Material*.mat +Assets/New Material*.mat.meta +Assets/**/스크린샷*.png +Assets/**/스크린샷*.png.meta +Assets/**/스크린샷*.mat +Assets/**/스크린샷*.mat.meta + +# === Unity 자동 생성 (Lighting, Bake 데이터) === +**/LightingData.asset +**/LightingData.asset.meta +**/Lightmap-*.exr +**/Lightmap-*.exr.meta +**/Lightmap-*.png +**/Lightmap-*.png.meta +**/ReflectionProbe-*.exr +**/ReflectionProbe-*.exr.meta +**/OcclusionCullingData.asset +**/OcclusionCullingData.asset.meta + +# === 기타 대용량/캐시 파일 === +*.exr +*.tga +*.psd +*.fbx +*.FBX + +# 유령 파일 무시 +nul + +# Roonshot 프로젝트 (별도 레포) +Roonshot/ \ No newline at end of file diff --git a/ADD_AIRCRAFT_CARRIER.md b/ADD_AIRCRAFT_CARRIER.md new file mode 100644 index 000000000..fb0ffdc8b --- /dev/null +++ b/ADD_AIRCRAFT_CARRIER.md @@ -0,0 +1,317 @@ +# 항공모함(모선) 추가 가이드 + +## 🎯 목표 +씬에 큰 항공모함 같은 구조물을 추가하여 방어 대상으로 사용 + +--- + +## 방법 1: 프리미티브로 간단하게 만들기 (가장 빠름) + +### 단계: + +1. **빈 GameObject 생성** + - Hierarchy 우클릭 > Create Empty + - 이름: "AircraftCarrier" 또는 "MotherShip" + +2. **프리미티브 조합으로 만들기**: + + **선체 (Hull)**: + - Create > 3D Object > Cube + - 이름: "Hull" + - Scale: (50, 5, 15) - 길이, 높이, 너비 + - Position: (0, 0, 0) + - Material: 회색 또는 적절한 색상 + + **갑판 (Deck)**: + - Create > 3D Object > Cube + - 이름: "Deck" + - Scale: (50, 0.5, 15) + - Position: (0, 2.5, 0) - 선체 위 + - Material: 어두운 회색 + + **상부 구조물 (Superstructure)**: + - Create > 3D Object > Cube + - 이름: "Superstructure" + - Scale: (8, 10, 6) + - Position: (15, 5, 0) - 갑판 위, 한쪽 끝 + - Material: 회색 + + **비행갑판 표시**: + - Create > 3D Object > Plane + - 이름: "FlightDeck" + - Scale: (50, 1, 15) + - Position: (0, 2.75, 0) + - Material: 어두운 회색 또는 노란색 줄무늬 + +3. **모든 오브젝트를 AircraftCarrier의 자식으로**: + - Hull, Deck, Superstructure, FlightDeck을 드래그하여 AircraftCarrier 하위로 + +4. **위치 배치**: + - AircraftCarrier의 Transform 조정 + - Position: (0, 0, 0) 또는 원하는 위치 + - 물 위에 떠있도록 Y 위치 조정 + +5. **Collider 추가**: + - AircraftCarrier에 Box Collider 추가 + - Size: (50, 5, 15) + - Is Trigger: false (충돌 감지용) + +--- + +## 방법 2: 보트 프리팹을 스케일 업해서 사용 + +### 단계: + +1. **보트 프리팹 복사**: + - `Assets/Objects/boats/_BoatBase.prefab` 선택 + - Ctrl+D (Duplicate) + - 이름 변경: "AircraftCarrier" + +2. **스케일 조정**: + - Transform Scale: (5, 3, 5) 또는 원하는 크기 + - 예: (10, 5, 10) - 매우 큰 크기 + +3. **위치 조정**: + - Position: (0, 0, 0) 또는 중앙 + - 물 위에 떠있도록 Y 위치 조정 + +4. **컴포넌트 조정**: + - Rigidbody의 Mass 증가 (예: 100000) + - Is Kinematic: true (고정된 모선) + - 또는 부력 시스템 비활성화 + +5. **씬에 배치**: + - 프리팹을 씬으로 드래그 + +--- + +## 방법 3: 스크립트로 자동 생성 (권장) + +### MotherShipGenerator.cs 생성: + +```csharp +using UnityEngine; + +namespace BoatAttack +{ + /// + /// 항공모함(모선)을 자동으로 생성하는 헬퍼 스크립트 + /// + public class MotherShipGenerator : MonoBehaviour + { + [Header("Size Settings")] + public float length = 50f; + public float width = 15f; + public float height = 5f; + + [Header("Position")] + public Vector3 position = Vector3.zero; + + [Header("Materials")] + public Material hullMaterial; + public Material deckMaterial; + + [ContextMenu("Generate Aircraft Carrier")] + public void GenerateAircraftCarrier() + { + // 부모 오브젝트 생성 + GameObject carrier = new GameObject("AircraftCarrier"); + carrier.transform.position = position; + + // 선체 + GameObject hull = CreateCube("Hull", new Vector3(0, 0, 0), + new Vector3(length, height, width), hullMaterial); + hull.transform.SetParent(carrier.transform); + + // 갑판 + GameObject deck = CreateCube("Deck", new Vector3(0, height/2 + 0.25f, 0), + new Vector3(length, 0.5f, width), deckMaterial); + deck.transform.SetParent(carrier.transform); + + // 상부 구조물 + GameObject superstructure = CreateCube("Superstructure", + new Vector3(length * 0.3f, height/2 + 5f, 0), + new Vector3(8f, 10f, 6f), hullMaterial); + superstructure.transform.SetParent(carrier.transform); + + // Collider 추가 + BoxCollider collider = carrier.AddComponent(); + collider.size = new Vector3(length, height, width); + collider.center = new Vector3(0, height/2, 0); + + // Rigidbody 추가 (선택적) + Rigidbody rb = carrier.AddComponent(); + rb.isKinematic = true; // 고정된 모선 + rb.mass = 100000f; + + Debug.Log("항공모함 생성 완료!"); + } + + private GameObject CreateCube(string name, Vector3 position, Vector3 scale, Material mat) + { + GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube); + cube.name = name; + cube.transform.localPosition = position; + cube.transform.localScale = scale; + + if (mat != null) + { + cube.GetComponent().material = mat; + } + + return cube; + } + } +} +``` + +### 사용 방법: + +1. **빈 GameObject 생성** + - 이름: "CarrierGenerator" + +2. **MotherShipGenerator 스크립트 추가** + +3. **설정 조정** (Inspector): + - Length: 50 + - Width: 15 + - Height: 5 + - Position: (0, 0, 0) + +4. **생성**: + - GameObject 우클릭 > "Generate Aircraft Carrier" + - 또는 Play 모드에서 자동 생성되도록 `Start()`에 추가 + +--- + +## 방법 4: Unity Asset Store에서 가져오기 + +### 단계: + +1. **Asset Store 열기**: Window > Asset Store + +2. **검색**: "Aircraft Carrier" 또는 "Warship" + +3. **무료 에셋 다운로드**: + - "Military Ship" 등 검색 + - 무료 에셋 선택 + - Import + +4. **씬에 배치**: + - 다운로드한 프리팹을 씬으로 드래그 + - 크기 및 위치 조정 + +--- + +## 방법 5: 간단한 Low-Poly 모델 만들기 + +### Blender 또는 다른 3D 툴 사용: + +1. **기본 모델링**: + - 긴 박스 형태의 선체 + - 평평한 갑판 + - 상부 구조물 + +2. **Export**: + - FBX 형식으로 내보내기 + +3. **Unity에 Import**: + - Assets 폴더에 드래그 + - Material 생성 및 할당 + +4. **Prefab 생성**: + - 씬에 배치 후 Prefab으로 저장 + +--- + +## 🎨 디테일 추가 (선택사항) + +### 시각적 개선: + +1. **Material 추가**: + - 회색 메탈릭 재질 + - 갑판용 어두운 재질 + - 노란색 줄무늬 (비행갑판) + +2. **조명**: + - 항공모함 위에 Spot Light 추가 + - 조명 효과 + +3. **파티클 효과**: + - 배기 연기 + - 물 보트 웨이크 + +4. **디테일 오브젝트**: + - 안테나 (Cylinder) + - 함포 (Cylinder) + - 항공기 (간단한 프리미티브) + +--- + +## ⚙️ 기능 추가 + +### 체력 시스템 (나중에): + +```csharp +public class MotherShip : MonoBehaviour +{ + public float maxHealth = 1000f; + private float currentHealth; + + void Start() + { + currentHealth = maxHealth; + } + + public void TakeDamage(float damage) + { + currentHealth -= damage; + if (currentHealth <= 0) + { + DestroyShip(); + } + } + + private void DestroyShip() + { + // 파괴 효과 + Destroy(gameObject); + } +} +``` + +### 충돌 감지: + +- Box Collider 추가 +- OnCollisionEnter로 충돌 감지 +- 보트와의 충돌 처리 + +--- + +## 📋 최종 체크리스트 + +- [ ] 항공모함 오브젝트 생성됨 +- [ ] 물 위에 올바르게 배치됨 +- [ ] Collider 추가됨 +- [ ] 크기가 적절함 (보트보다 훨씬 큼) +- [ ] 위치가 적절함 (중앙 또는 전략적 위치) +- [ ] Material 적용됨 +- [ ] Rigidbody 설정됨 (Kinematic 권장) + +--- + +## 💡 추천 방법 + +**빠른 프로토타입**: 방법 1 (프리미티브) +**자동화**: 방법 3 (스크립트) +**최종 결과물**: 방법 4 (Asset Store) 또는 방법 5 (커스텀 모델) + +--- + +## 🎯 다음 단계 + +항공모함을 추가한 후: +1. **체력 시스템** 추가 +2. **방어 시스템** 구현 +3. **보트 스폰 포인트** 설정 +4. **ML-Agents 타겟**으로 설정 diff --git a/Assets/AddressableAssetsData/AssetGroups/Utility.asset b/Assets/AddressableAssetsData/AssetGroups/Utility.asset index 471de8a7e..d9985a343 100644 --- a/Assets/AddressableAssetsData/AssetGroups/Utility.asset +++ b/Assets/AddressableAssetsData/AssetGroups/Utility.asset @@ -21,14 +21,17 @@ MonoBehaviour: m_Address: camera m_ReadOnly: 0 m_SerializedLabels: [] + FlaggedDuringContentUpdateRestriction: 0 - m_GUID: 5b930c10a697b4d8c9c8084e03800523 m_Address: checkpoint m_ReadOnly: 0 m_SerializedLabels: [] + FlaggedDuringContentUpdateRestriction: 0 - m_GUID: dd76f393b89c7c043a07be4d99495f5d m_Address: Assets/Objects/environment/Clouds/Shader Graphs_Clouds.mat m_ReadOnly: 0 m_SerializedLabels: [] + FlaggedDuringContentUpdateRestriction: 0 m_ReadOnly: 0 m_Settings: {fileID: 11400000, guid: 46fc3d082b08c4dacacae72d7016c235, type: 2} m_SchemaSet: diff --git a/Assets/AddressableAssetsData/ProfileDataSourceSettings.asset b/Assets/AddressableAssetsData/ProfileDataSourceSettings.asset new file mode 100644 index 000000000..588fc4c9a --- /dev/null +++ b/Assets/AddressableAssetsData/ProfileDataSourceSettings.asset @@ -0,0 +1,34 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7e3976da977cb49238499ea3b4c237ae, type: 3} + m_Name: ProfileDataSourceSettings + m_EditorClassIdentifier: + profileGroupTypes: + - m_GroupTypePrefix: Built-In + m_Variables: + - m_Suffix: BuildPath + m_Value: '[UnityEngine.AddressableAssets.Addressables.BuildPath]/[BuildTarget]' + - m_Suffix: LoadPath + m_Value: '{UnityEngine.AddressableAssets.Addressables.RuntimePath}/[BuildTarget]' + - m_GroupTypePrefix: Editor Hosted + m_Variables: + - m_Suffix: BuildPath + m_Value: ServerData/[BuildTarget] + - m_Suffix: LoadPath + m_Value: http://[PrivateIpAddress]:[HostingServicePort] + environments: [] + currentEnvironment: + id: + projectId: + projectGenesisId: + name: + isDefault: 0 diff --git a/Assets/AddressableAssetsData/ProfileDataSourceSettings.asset.meta b/Assets/AddressableAssetsData/ProfileDataSourceSettings.asset.meta new file mode 100644 index 000000000..944cd8844 --- /dev/null +++ b/Assets/AddressableAssetsData/ProfileDataSourceSettings.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9a6e3f0cd182bd648b8913fae8323c38 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NavMeshComponents.meta b/Assets/AddressableAssetsData/Windows.meta similarity index 77% rename from Assets/NavMeshComponents.meta rename to Assets/AddressableAssetsData/Windows.meta index c18692625..6b19096c9 100644 --- a/Assets/NavMeshComponents.meta +++ b/Assets/AddressableAssetsData/Windows.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 7ba59ca44540c45eea584dbe9a47c28a +guid: d936abcddcf83c343b6068cac3765144 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/AddressableAssetsData/Windows/addressables_content_state.bin b/Assets/AddressableAssetsData/Windows/addressables_content_state.bin new file mode 100644 index 000000000..0a3440636 Binary files /dev/null and b/Assets/AddressableAssetsData/Windows/addressables_content_state.bin differ diff --git a/Assets/scenes/static_Island.unity.meta b/Assets/AddressableAssetsData/Windows/addressables_content_state.bin.meta similarity index 74% rename from Assets/scenes/static_Island.unity.meta rename to Assets/AddressableAssetsData/Windows/addressables_content_state.bin.meta index 7d68420cd..f035c6207 100644 --- a/Assets/scenes/static_Island.unity.meta +++ b/Assets/AddressableAssetsData/Windows/addressables_content_state.bin.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 353dc5681a8164b409650e1b2f813968 +guid: 278e5963ad6d0e64980a75147e75dd8c DefaultImporter: externalObjects: {} userData: diff --git a/Assets/Audio/Music/Hiroyuki_Sawano_-_Vogel_im_Kafig_OST_Shingeki_no_Kyojin_(mp3.pm).mp3 b/Assets/Audio/Music/Hiroyuki_Sawano_-_Vogel_im_Kafig_OST_Shingeki_no_Kyojin_(mp3.pm).mp3 new file mode 100644 index 000000000..65d74fb79 Binary files /dev/null and b/Assets/Audio/Music/Hiroyuki_Sawano_-_Vogel_im_Kafig_OST_Shingeki_no_Kyojin_(mp3.pm).mp3 differ diff --git a/Assets/Audio/Music/Hiroyuki_Sawano_-_Vogel_im_Kafig_OST_Shingeki_no_Kyojin_(mp3.pm).mp3.meta b/Assets/Audio/Music/Hiroyuki_Sawano_-_Vogel_im_Kafig_OST_Shingeki_no_Kyojin_(mp3.pm).mp3.meta new file mode 100644 index 000000000..ed6b018d5 --- /dev/null +++ b/Assets/Audio/Music/Hiroyuki_Sawano_-_Vogel_im_Kafig_OST_Shingeki_no_Kyojin_(mp3.pm).mp3.meta @@ -0,0 +1,23 @@ +fileFormatVersion: 2 +guid: 888b0d97d31a414499a693638d8d818d +AudioImporter: + externalObjects: {} + serializedVersion: 7 + defaultSettings: + serializedVersion: 2 + loadType: 2 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + preloadAudioData: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Audio/Music/MainTrack.wav.meta b/Assets/Audio/Music/MainTrack.wav.meta index 7d237d370..ac63938b3 100644 --- a/Assets/Audio/Music/MainTrack.wav.meta +++ b/Assets/Audio/Music/MainTrack.wav.meta @@ -2,25 +2,28 @@ fileFormatVersion: 2 guid: 643024a49360c40c0a27365c40d4d58d AudioImporter: externalObjects: {} - serializedVersion: 6 + serializedVersion: 7 defaultSettings: + serializedVersion: 2 loadType: 2 sampleRateSetting: 0 sampleRateOverride: 44100 compressionFormat: 1 quality: 1 conversionMode: 0 + preloadAudioData: 1 platformSettingOverrides: 4: + serializedVersion: 2 loadType: 2 sampleRateSetting: 0 sampleRateOverride: 44100 compressionFormat: 3 quality: 1 conversionMode: 0 + preloadAudioData: 0 forceToMono: 0 normalize: 1 - preloadAudioData: 1 loadInBackground: 0 ambisonic: 0 3D: 1 diff --git a/Assets/Audio/Music/You_See_Big_Girl_-_Hiroyuki_Sawano_(mp3.pm).mp3 b/Assets/Audio/Music/You_See_Big_Girl_-_Hiroyuki_Sawano_(mp3.pm).mp3 new file mode 100644 index 000000000..44f48adf1 Binary files /dev/null and b/Assets/Audio/Music/You_See_Big_Girl_-_Hiroyuki_Sawano_(mp3.pm).mp3 differ diff --git a/Assets/Audio/Music/You_See_Big_Girl_-_Hiroyuki_Sawano_(mp3.pm).mp3.meta b/Assets/Audio/Music/You_See_Big_Girl_-_Hiroyuki_Sawano_(mp3.pm).mp3.meta new file mode 100644 index 000000000..cbbb8c165 --- /dev/null +++ b/Assets/Audio/Music/You_See_Big_Girl_-_Hiroyuki_Sawano_(mp3.pm).mp3.meta @@ -0,0 +1,23 @@ +fileFormatVersion: 2 +guid: b0dea67667cee9e408dcec70a9844bd8 +AudioImporter: + externalObjects: {} + serializedVersion: 7 + defaultSettings: + serializedVersion: 2 + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + preloadAudioData: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Data/UniversalRP/BoatDemoRenderer.asset b/Assets/Data/UniversalRP/BoatDemoRenderer.asset index 9251fba6f..d347a9633 100644 --- a/Assets/Data/UniversalRP/BoatDemoRenderer.asset +++ b/Assets/Data/UniversalRP/BoatDemoRenderer.asset @@ -24,6 +24,9 @@ MonoBehaviour: PassNames: [] overrideMaterial: {fileID: 0} overrideMaterialPassIndex: 0 + overrideShader: {fileID: 0} + overrideShaderPassIndex: 0 + overrideMode: 1 overrideDepthState: 1 depthCompareFunction: 4 enableWrite: 0 @@ -52,15 +55,28 @@ MonoBehaviour: m_Name: SSAO m_EditorClassIdentifier: m_Active: 0 - m_Shader: {fileID: 4800000, guid: 0849e84e3d62649e8882e9d6f056a017, type: 3} m_Settings: + AOMethod: 1 Downsample: 0 + AfterOpaque: 0 Source: 0 NormalSamples: 1 Intensity: 0.5 DirectLightingStrength: 0.25 Radius: 4.2 - SampleCount: 6 + Samples: 2 + BlurQuality: 0 + Falloff: 100 + SampleCount: -1 + m_BlueNoise256Textures: + - {fileID: 2800000, guid: 36f118343fc974119bee3d09e2111500, type: 3} + - {fileID: 2800000, guid: 4b7b083e6b6734e8bb2838b0b50a0bc8, type: 3} + - {fileID: 2800000, guid: c06cc21c692f94f5fb5206247191eeee, type: 3} + - {fileID: 2800000, guid: cb76dd40fa7654f9587f6a344f125c9a, type: 3} + - {fileID: 2800000, guid: e32226222ff144b24bf3a5a451de54bc, type: 3} + - {fileID: 2800000, guid: 3302065f671a8450b82c9ddf07426f3a, type: 3} + - {fileID: 2800000, guid: 56a77a3e8d64f47b6afe9e3c95cb57d5, type: 3} + m_Shader: {fileID: 4800000, guid: 0849e84e3d62649e8882e9d6f056a017, type: 3} --- !u!114 &11400000 MonoBehaviour: m_ObjectHideFlags: 0 @@ -73,12 +89,17 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: de640fe3d0db1804a85f9fc8f5cadab6, type: 3} m_Name: BoatDemoRenderer m_EditorClassIdentifier: + debugShaders: + debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7, + type: 3} + hdrDebugViewPS: {fileID: 4800000, guid: 573620ae32aec764abd4d728906d2587, type: 3} m_RendererFeatures: - {fileID: 5126615458422300752} - {fileID: -8193634041390225171} - {fileID: -509393295192694670} - {fileID: 770174969183694509} m_RendererFeatureMap: 50a049f398652547ed286347405d4a8e72e012357f45eef8ad6e17cd0d36b00a + m_UseNativeRenderPass: 0 postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2} xrSystemData: {fileID: 11400000, guid: 60e1133243b97e347b653163a8c01b64, type: 2} shaders: @@ -87,11 +108,27 @@ MonoBehaviour: screenSpaceShadowPS: {fileID: 4800000, guid: 0f854b35a0cf61a429bd5dcfea30eddd, type: 3} samplingPS: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3} - tileDepthInfoPS: {fileID: 0} - tileDeferredPS: {fileID: 0} stencilDeferredPS: {fileID: 4800000, guid: e9155b26e1bc55942a41e518703fe304, type: 3} fallbackErrorPS: {fileID: 4800000, guid: e6e9a19c3678ded42a3bc431ebef7dbd, type: 3} + fallbackLoadingPS: {fileID: 4800000, guid: 7f888aff2ac86494babad1c2c5daeee2, type: 3} materialErrorPS: {fileID: 4800000, guid: 5fd9a8feb75a4b5894c241777f519d4e, type: 3} + coreBlitPS: {fileID: 4800000, guid: 93446b5c5339d4f00b85c159e1159b7c, type: 3} + coreBlitColorAndDepthPS: {fileID: 4800000, guid: d104b2fc1ca6445babb8e90b0758136b, + type: 3} + blitHDROverlay: {fileID: 4800000, guid: a89bee29cffa951418fc1e2da94d1959, type: 3} + cameraMotionVector: {fileID: 4800000, guid: c56b7e0d4c7cb484e959caeeedae9bbf, + type: 3} + objectMotionVector: {fileID: 4800000, guid: 7b3ede40266cd49a395def176e1bc486, + type: 3} + dataDrivenLensFlare: {fileID: 4800000, guid: 6cda457ac28612740adb23da5d39ea92, + type: 3} + terrainDetailLitPS: {fileID: 4800000, guid: f6783ab646d374f94b199774402a5144, + type: 3} + terrainDetailGrassPS: {fileID: 4800000, guid: e507fdfead5ca47e8b9a768b51c291a1, + type: 3} + terrainDetailGrassBillboardPS: {fileID: 4800000, guid: 29868e73b638e48ca99a19ea58c48d90, + type: 3} + m_AssetVersion: 2 m_OpaqueLayerMask: serializedVersion: 2 m_Bits: 2147614263 @@ -107,7 +144,10 @@ MonoBehaviour: zFailOperation: 0 m_ShadowTransparentReceive: 1 m_RenderingMode: 0 + m_DepthPrimingMode: 0 + m_CopyDepthMode: 0 m_AccurateGbufferNormals: 0 + m_IntermediateTextureMode: 1 --- !u!114 &770174969183694509 MonoBehaviour: m_ObjectHideFlags: 0 @@ -125,7 +165,7 @@ MonoBehaviour: causticScale: 0.1 causticBlendDistance: 3.36 debug: 0 - causticShader: {fileID: 4800000, guid: 90939d2e4b62841d29c136c866715501, type: 3} + causticShader: {fileID: 0} causticTexture: {fileID: 2800000, guid: f395b7d64f44848c6a3cba1f1173fe90, type: 3} --- !u!114 &1203680893676135655 MonoBehaviour: diff --git a/Assets/Data/UniversalRP/PipelineAsset_High.asset b/Assets/Data/UniversalRP/PipelineAsset_High.asset index e7a570fac..57f30442b 100644 --- a/Assets/Data/UniversalRP/PipelineAsset_High.asset +++ b/Assets/Data/UniversalRP/PipelineAsset_High.asset @@ -12,8 +12,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: bf2edee5c58d82540a51f03df9d42094, type: 3} m_Name: PipelineAsset_High m_EditorClassIdentifier: - k_AssetVersion: 6 - k_AssetPreviousVersion: 5 + k_AssetVersion: 11 + k_AssetPreviousVersion: 11 m_RendererType: 0 m_RendererData: {fileID: 0} m_RendererDataList: @@ -25,8 +25,15 @@ MonoBehaviour: m_OpaqueDownsampling: 0 m_SupportsTerrainHoles: 0 m_SupportsHDR: 1 + m_HDRColorBufferPrecision: 0 m_MSAA: 2 m_RenderScale: 1 + m_UpscalingFilter: 0 + m_FsrOverrideSharpness: 0 + m_FsrSharpness: 0.92 + m_EnableLODCrossFade: 1 + m_LODCrossFadeDitheringType: 1 + m_ShEvalMode: 0 m_MainLightRenderingMode: 1 m_MainLightShadowsSupported: 1 m_MainLightShadowmapResolution: 4096 @@ -34,25 +41,75 @@ MonoBehaviour: m_AdditionalLightsPerObjectLimit: 8 m_AdditionalLightShadowsSupported: 1 m_AdditionalLightsShadowmapResolution: 2048 + m_AdditionalLightsShadowResolutionTierLow: 512 + m_AdditionalLightsShadowResolutionTierMedium: 1024 + m_AdditionalLightsShadowResolutionTierHigh: 2048 + m_ReflectionProbeBlending: 0 + m_ReflectionProbeBoxProjection: 0 m_ShadowDistance: 250 m_ShadowCascadeCount: 4 m_Cascade2Split: 0.20930393 m_Cascade3Split: {x: 0.1, y: 0.3} m_Cascade4Split: {x: 0.053413056, y: 0.13206536, z: 0.42623913} + m_CascadeBorder: 0.1 m_ShadowDepthBias: 0.75 m_ShadowNormalBias: 0.75 + m_AnyShadowsSupported: 1 m_SoftShadowsSupported: 1 + m_ConservativeEnclosingSphere: 0 + m_NumIterationsEnclosingSphere: 64 + m_SoftShadowQuality: 2 + m_AdditionalLightsCookieResolution: 2048 + m_AdditionalLightsCookieFormat: 3 m_UseSRPBatcher: 1 m_SupportsDynamicBatching: 0 m_MixedLightingSupported: 1 + m_SupportsLightCookies: 1 + m_SupportsLightLayers: 0 m_DebugLevel: 0 + m_StoreActionsOptimization: 0 + m_EnableRenderGraph: 0 m_UseAdaptivePerformance: 1 m_ColorGradingMode: 0 m_ColorGradingLutSize: 32 + m_UseFastSRGBLinearConversion: 0 + m_SupportDataDrivenLensFlare: 1 m_ShadowType: 1 m_LocalShadowsSupported: 0 m_LocalShadowsAtlasResolution: 256 m_MaxPixelLights: 0 m_ShadowAtlasResolution: 256 + m_VolumeFrameworkUpdateMode: 0 + m_Textures: + blueNoise64LTex: {fileID: 2800000, guid: e3d24661c1e055f45a7560c033dbb837, type: 3} + bayerMatrixTex: {fileID: 2800000, guid: f9ee4ed84c1d10c49aabb9b210b0fc44, type: 3} + m_PrefilteringModeMainLightShadows: 3 + m_PrefilteringModeAdditionalLight: 3 + m_PrefilteringModeAdditionalLightShadows: 2 + m_PrefilterXRKeywords: 1 + m_PrefilteringModeForwardPlus: 0 + m_PrefilteringModeDeferredRendering: 0 + m_PrefilteringModeScreenSpaceOcclusion: 0 + m_PrefilterDebugKeywords: 1 + m_PrefilterWriteRenderingLayers: 1 + m_PrefilterHDROutput: 1 + m_PrefilterSSAODepthNormals: 1 + m_PrefilterSSAOSourceDepthLow: 1 + m_PrefilterSSAOSourceDepthMedium: 1 + m_PrefilterSSAOSourceDepthHigh: 1 + m_PrefilterSSAOInterleaved: 1 + m_PrefilterSSAOBlueNoise: 1 + m_PrefilterSSAOSampleCountLow: 1 + m_PrefilterSSAOSampleCountMedium: 1 + m_PrefilterSSAOSampleCountHigh: 1 + m_PrefilterDBufferMRT1: 1 + m_PrefilterDBufferMRT2: 1 + m_PrefilterDBufferMRT3: 1 + m_PrefilterSoftShadowsQualityLow: 1 + m_PrefilterSoftShadowsQualityMedium: 1 + m_PrefilterSoftShadowsQualityHigh: 1 + m_PrefilterSoftShadows: 0 + m_PrefilterScreenCoord: 1 + m_PrefilterNativeRenderPass: 1 m_ShaderVariantLogLevel: 0 m_ShadowCascades: 2 diff --git a/Assets/Data/UniversalRP/PipelineAsset_Low.asset b/Assets/Data/UniversalRP/PipelineAsset_Low.asset index 979ce1416..ffa9d0668 100644 --- a/Assets/Data/UniversalRP/PipelineAsset_Low.asset +++ b/Assets/Data/UniversalRP/PipelineAsset_Low.asset @@ -12,8 +12,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: bf2edee5c58d82540a51f03df9d42094, type: 3} m_Name: PipelineAsset_Low m_EditorClassIdentifier: - k_AssetVersion: 6 - k_AssetPreviousVersion: 5 + k_AssetVersion: 11 + k_AssetPreviousVersion: 11 m_RendererType: 0 m_RendererData: {fileID: 0} m_RendererDataList: @@ -25,8 +25,15 @@ MonoBehaviour: m_OpaqueDownsampling: 1 m_SupportsTerrainHoles: 0 m_SupportsHDR: 1 + m_HDRColorBufferPrecision: 0 m_MSAA: 1 m_RenderScale: 1 + m_UpscalingFilter: 0 + m_FsrOverrideSharpness: 0 + m_FsrSharpness: 0.92 + m_EnableLODCrossFade: 1 + m_LODCrossFadeDitheringType: 1 + m_ShEvalMode: 0 m_MainLightRenderingMode: 1 m_MainLightShadowsSupported: 1 m_MainLightShadowmapResolution: 1024 @@ -34,26 +41,75 @@ MonoBehaviour: m_AdditionalLightsPerObjectLimit: 1 m_AdditionalLightShadowsSupported: 0 m_AdditionalLightsShadowmapResolution: 512 + m_AdditionalLightsShadowResolutionTierLow: 128 + m_AdditionalLightsShadowResolutionTierMedium: 256 + m_AdditionalLightsShadowResolutionTierHigh: 512 + m_ReflectionProbeBlending: 0 + m_ReflectionProbeBoxProjection: 0 m_ShadowDistance: 150 m_ShadowCascadeCount: 1 m_Cascade2Split: 0.20930393 m_Cascade3Split: {x: 0.1, y: 0.3} m_Cascade4Split: {x: 0.053413056, y: 0.13206536, z: 0.42623913} + m_CascadeBorder: 0.1 m_ShadowDepthBias: 0.75 m_ShadowNormalBias: 0.75 + m_AnyShadowsSupported: 1 m_SoftShadowsSupported: 1 + m_ConservativeEnclosingSphere: 0 + m_NumIterationsEnclosingSphere: 64 + m_SoftShadowQuality: 2 + m_AdditionalLightsCookieResolution: 2048 + m_AdditionalLightsCookieFormat: 3 m_UseSRPBatcher: 1 m_SupportsDynamicBatching: 0 m_MixedLightingSupported: 1 + m_SupportsLightCookies: 1 + m_SupportsLightLayers: 0 m_DebugLevel: 0 + m_StoreActionsOptimization: 0 + m_EnableRenderGraph: 0 m_UseAdaptivePerformance: 1 m_ColorGradingMode: 0 m_ColorGradingLutSize: 16 + m_UseFastSRGBLinearConversion: 0 + m_SupportDataDrivenLensFlare: 1 m_ShadowType: 1 m_LocalShadowsSupported: 0 m_LocalShadowsAtlasResolution: 256 m_MaxPixelLights: 0 m_ShadowAtlasResolution: 256 - m_ShaderVariantLogLevel: 0 m_VolumeFrameworkUpdateMode: 0 + m_Textures: + blueNoise64LTex: {fileID: 2800000, guid: e3d24661c1e055f45a7560c033dbb837, type: 3} + bayerMatrixTex: {fileID: 2800000, guid: f9ee4ed84c1d10c49aabb9b210b0fc44, type: 3} + m_PrefilteringModeMainLightShadows: 3 + m_PrefilteringModeAdditionalLight: 3 + m_PrefilteringModeAdditionalLightShadows: 0 + m_PrefilterXRKeywords: 1 + m_PrefilteringModeForwardPlus: 0 + m_PrefilteringModeDeferredRendering: 0 + m_PrefilteringModeScreenSpaceOcclusion: 0 + m_PrefilterDebugKeywords: 1 + m_PrefilterWriteRenderingLayers: 1 + m_PrefilterHDROutput: 1 + m_PrefilterSSAODepthNormals: 1 + m_PrefilterSSAOSourceDepthLow: 1 + m_PrefilterSSAOSourceDepthMedium: 1 + m_PrefilterSSAOSourceDepthHigh: 1 + m_PrefilterSSAOInterleaved: 1 + m_PrefilterSSAOBlueNoise: 1 + m_PrefilterSSAOSampleCountLow: 1 + m_PrefilterSSAOSampleCountMedium: 1 + m_PrefilterSSAOSampleCountHigh: 1 + m_PrefilterDBufferMRT1: 1 + m_PrefilterDBufferMRT2: 1 + m_PrefilterDBufferMRT3: 1 + m_PrefilterSoftShadowsQualityLow: 1 + m_PrefilterSoftShadowsQualityMedium: 1 + m_PrefilterSoftShadowsQualityHigh: 1 + m_PrefilterSoftShadows: 0 + m_PrefilterScreenCoord: 1 + m_PrefilterNativeRenderPass: 1 + m_ShaderVariantLogLevel: 0 m_ShadowCascades: 0 diff --git a/Assets/Data/UniversalRP/PipelineAsset_Medium.asset b/Assets/Data/UniversalRP/PipelineAsset_Medium.asset index 884c6f4eb..76726cf7c 100644 --- a/Assets/Data/UniversalRP/PipelineAsset_Medium.asset +++ b/Assets/Data/UniversalRP/PipelineAsset_Medium.asset @@ -12,8 +12,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: bf2edee5c58d82540a51f03df9d42094, type: 3} m_Name: PipelineAsset_Medium m_EditorClassIdentifier: - k_AssetVersion: 6 - k_AssetPreviousVersion: 5 + k_AssetVersion: 11 + k_AssetPreviousVersion: 11 m_RendererType: 0 m_RendererData: {fileID: 0} m_RendererDataList: @@ -25,8 +25,15 @@ MonoBehaviour: m_OpaqueDownsampling: 1 m_SupportsTerrainHoles: 0 m_SupportsHDR: 1 + m_HDRColorBufferPrecision: 0 m_MSAA: 1 m_RenderScale: 1 + m_UpscalingFilter: 0 + m_FsrOverrideSharpness: 0 + m_FsrSharpness: 0.92 + m_EnableLODCrossFade: 1 + m_LODCrossFadeDitheringType: 1 + m_ShEvalMode: 0 m_MainLightRenderingMode: 1 m_MainLightShadowsSupported: 1 m_MainLightShadowmapResolution: 2048 @@ -34,26 +41,75 @@ MonoBehaviour: m_AdditionalLightsPerObjectLimit: 8 m_AdditionalLightShadowsSupported: 1 m_AdditionalLightsShadowmapResolution: 1024 + m_AdditionalLightsShadowResolutionTierLow: 256 + m_AdditionalLightsShadowResolutionTierMedium: 512 + m_AdditionalLightsShadowResolutionTierHigh: 1024 + m_ReflectionProbeBlending: 0 + m_ReflectionProbeBoxProjection: 0 m_ShadowDistance: 200 m_ShadowCascadeCount: 2 m_Cascade2Split: 0.20930393 m_Cascade3Split: {x: 0.1, y: 0.3} m_Cascade4Split: {x: 0.053413056, y: 0.13206536, z: 0.42623913} + m_CascadeBorder: 0.1 m_ShadowDepthBias: 0.75 m_ShadowNormalBias: 0.75 + m_AnyShadowsSupported: 1 m_SoftShadowsSupported: 1 + m_ConservativeEnclosingSphere: 0 + m_NumIterationsEnclosingSphere: 64 + m_SoftShadowQuality: 2 + m_AdditionalLightsCookieResolution: 2048 + m_AdditionalLightsCookieFormat: 3 m_UseSRPBatcher: 1 m_SupportsDynamicBatching: 0 m_MixedLightingSupported: 1 + m_SupportsLightCookies: 1 + m_SupportsLightLayers: 0 m_DebugLevel: 0 + m_StoreActionsOptimization: 0 + m_EnableRenderGraph: 0 m_UseAdaptivePerformance: 1 m_ColorGradingMode: 0 m_ColorGradingLutSize: 16 + m_UseFastSRGBLinearConversion: 0 + m_SupportDataDrivenLensFlare: 1 m_ShadowType: 1 m_LocalShadowsSupported: 0 m_LocalShadowsAtlasResolution: 256 m_MaxPixelLights: 0 m_ShadowAtlasResolution: 256 - m_ShaderVariantLogLevel: 0 m_VolumeFrameworkUpdateMode: 0 + m_Textures: + blueNoise64LTex: {fileID: 2800000, guid: e3d24661c1e055f45a7560c033dbb837, type: 3} + bayerMatrixTex: {fileID: 2800000, guid: f9ee4ed84c1d10c49aabb9b210b0fc44, type: 3} + m_PrefilteringModeMainLightShadows: 3 + m_PrefilteringModeAdditionalLight: 3 + m_PrefilteringModeAdditionalLightShadows: 2 + m_PrefilterXRKeywords: 1 + m_PrefilteringModeForwardPlus: 0 + m_PrefilteringModeDeferredRendering: 0 + m_PrefilteringModeScreenSpaceOcclusion: 0 + m_PrefilterDebugKeywords: 1 + m_PrefilterWriteRenderingLayers: 1 + m_PrefilterHDROutput: 1 + m_PrefilterSSAODepthNormals: 1 + m_PrefilterSSAOSourceDepthLow: 1 + m_PrefilterSSAOSourceDepthMedium: 1 + m_PrefilterSSAOSourceDepthHigh: 1 + m_PrefilterSSAOInterleaved: 1 + m_PrefilterSSAOBlueNoise: 1 + m_PrefilterSSAOSampleCountLow: 1 + m_PrefilterSSAOSampleCountMedium: 1 + m_PrefilterSSAOSampleCountHigh: 1 + m_PrefilterDBufferMRT1: 1 + m_PrefilterDBufferMRT2: 1 + m_PrefilterDBufferMRT3: 1 + m_PrefilterSoftShadowsQualityLow: 1 + m_PrefilterSoftShadowsQualityMedium: 1 + m_PrefilterSoftShadowsQualityHigh: 1 + m_PrefilterSoftShadows: 0 + m_PrefilterScreenCoord: 1 + m_PrefilterNativeRenderPass: 1 + m_ShaderVariantLogLevel: 0 m_ShadowCascades: 1 diff --git a/Assets/Data/UniversalRP/PlanarReflectionRenderer.asset b/Assets/Data/UniversalRP/PlanarReflectionRenderer.asset index 7de9e13a5..335d0d412 100644 --- a/Assets/Data/UniversalRP/PlanarReflectionRenderer.asset +++ b/Assets/Data/UniversalRP/PlanarReflectionRenderer.asset @@ -12,9 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: de640fe3d0db1804a85f9fc8f5cadab6, type: 3} m_Name: PlanarReflectionRenderer m_EditorClassIdentifier: + debugShaders: + debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7, + type: 3} + hdrDebugViewPS: {fileID: 4800000, guid: 573620ae32aec764abd4d728906d2587, type: 3} m_RendererFeatures: - {fileID: 8871527528365487580} m_RendererFeatureMap: dcf5529f48ff1d7b + m_UseNativeRenderPass: 0 postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2} xrSystemData: {fileID: 11400000, guid: 60e1133243b97e347b653163a8c01b64, type: 2} shaders: @@ -23,11 +28,27 @@ MonoBehaviour: screenSpaceShadowPS: {fileID: 4800000, guid: 0f854b35a0cf61a429bd5dcfea30eddd, type: 3} samplingPS: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3} - tileDepthInfoPS: {fileID: 0} - tileDeferredPS: {fileID: 0} stencilDeferredPS: {fileID: 4800000, guid: e9155b26e1bc55942a41e518703fe304, type: 3} fallbackErrorPS: {fileID: 4800000, guid: e6e9a19c3678ded42a3bc431ebef7dbd, type: 3} + fallbackLoadingPS: {fileID: 4800000, guid: 7f888aff2ac86494babad1c2c5daeee2, type: 3} materialErrorPS: {fileID: 4800000, guid: 5fd9a8feb75a4b5894c241777f519d4e, type: 3} + coreBlitPS: {fileID: 4800000, guid: 93446b5c5339d4f00b85c159e1159b7c, type: 3} + coreBlitColorAndDepthPS: {fileID: 4800000, guid: d104b2fc1ca6445babb8e90b0758136b, + type: 3} + blitHDROverlay: {fileID: 4800000, guid: a89bee29cffa951418fc1e2da94d1959, type: 3} + cameraMotionVector: {fileID: 4800000, guid: c56b7e0d4c7cb484e959caeeedae9bbf, + type: 3} + objectMotionVector: {fileID: 4800000, guid: 7b3ede40266cd49a395def176e1bc486, + type: 3} + dataDrivenLensFlare: {fileID: 4800000, guid: 6cda457ac28612740adb23da5d39ea92, + type: 3} + terrainDetailLitPS: {fileID: 4800000, guid: f6783ab646d374f94b199774402a5144, + type: 3} + terrainDetailGrassPS: {fileID: 4800000, guid: e507fdfead5ca47e8b9a768b51c291a1, + type: 3} + terrainDetailGrassBillboardPS: {fileID: 4800000, guid: 29868e73b638e48ca99a19ea58c48d90, + type: 3} + m_AssetVersion: 2 m_OpaqueLayerMask: serializedVersion: 2 m_Bits: 2147613751 @@ -43,7 +64,10 @@ MonoBehaviour: zFailOperation: 0 m_ShadowTransparentReceive: 1 m_RenderingMode: 0 + m_DepthPrimingMode: 0 + m_CopyDepthMode: 0 m_AccurateGbufferNormals: 0 + m_IntermediateTextureMode: 1 --- !u!114 &8871527528365487580 MonoBehaviour: m_ObjectHideFlags: 0 @@ -68,6 +92,9 @@ MonoBehaviour: PassNames: [] overrideMaterial: {fileID: 0} overrideMaterialPassIndex: 0 + overrideShader: {fileID: 0} + overrideShaderPassIndex: 0 + overrideMode: 1 overrideDepthState: 1 depthCompareFunction: 4 enableWrite: 0 diff --git a/Assets/Data/WaterSurfaceData.asset b/Assets/Data/WaterSurfaceData.asset index 62480e037..5180329d0 100644 --- a/Assets/Data/WaterSurfaceData.asset +++ b/Assets/Data/WaterSurfaceData.asset @@ -12,22 +12,22 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b17284ebf5e80436eb6089f8c7459dab, type: 3} m_Name: WaterSurfaceData m_EditorClassIdentifier: - _waterMaxVisibility: 9 + _waterMaxVisibility: 4.5 _absorptionRamp: serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 0.8117647, g: 1, b: 1, a: 1} - key2: {r: 0.13510147, g: 0.8679245, b: 0.8679245, a: 0} - key3: {r: 0.021626905, g: 0.49048996, b: 0.509434, a: 0} - key4: {r: 0, g: 0.275, b: 0.44, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} + key0: {r: 0.13510147, g: 0.8679245, b: 0.8679245, a: 1} + key1: {r: 0.021626905, g: 0.49048996, b: 0.509434, a: 1} + key2: {r: 0.05304379, g: 0.06483533, b: 0.0754717, a: 0} + key3: {r: 0, g: 0.275, b: 0.44, a: 0} + key4: {r: 0.0034180656, g: 0.2614573, b: 0.4165103, a: 0} + key5: {r: 0.10346207, g: 0.22408374, b: 0.8773585, a: 0} key6: {r: 0, g: 0, b: 0, a: 0} key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 488 - ctime2: 2338 - ctime3: 16925 - ctime4: 34547 + ctime0: 2338 + ctime1: 2891 + ctime2: 12914 + ctime3: 34547 + ctime4: 47802 ctime5: 65535 ctime6: 0 ctime7: 0 @@ -40,6 +40,7 @@ MonoBehaviour: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: 0 m_NumColorKeys: 6 m_NumAlphaKeys: 2 _scatterRamp: @@ -69,6 +70,7 @@ MonoBehaviour: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 3 m_NumAlphaKeys: 2 _waves: diff --git a/Assets/Defence.onnx b/Assets/Defence.onnx new file mode 100644 index 000000000..b9e2c7413 Binary files /dev/null and b/Assets/Defence.onnx differ diff --git a/Assets/Defence.onnx.meta b/Assets/Defence.onnx.meta new file mode 100644 index 000000000..d2845a6b2 --- /dev/null +++ b/Assets/Defence.onnx.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: 46ee9b7d83da37442a78d18c5fb8dc3b +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 683b6cb6d0a474744822c888b46772c9, type: 3} + optimizeModel: 1 + forceArbitraryBatchSize: 1 + treatErrorsAsWarnings: 0 + importMode: 1 + weightsTypeMode: 0 + activationTypeMode: 0 diff --git a/Assets/Fonts/LICENSE.txt b/Assets/Fonts/LICENSE.txt index 75b52484e..d64569567 100644 --- a/Assets/Fonts/LICENSE.txt +++ b/Assets/Fonts/LICENSE.txt @@ -1,202 +1,202 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/Assets/JMO Assets.meta b/Assets/JMO Assets.meta new file mode 100644 index 000000000..10478c36f --- /dev/null +++ b/Assets/JMO Assets.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6a13d96f6d7eba443be96d96d37c27ca +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Levels.meta b/Assets/Levels.meta new file mode 100644 index 000000000..2490da638 --- /dev/null +++ b/Assets/Levels.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 13ccb4e02f35b0645baf1044810af2f4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Levels/Level 01.asset b/Assets/Levels/Level 01.asset new file mode 100644 index 000000000..007eb84bc --- /dev/null +++ b/Assets/Levels/Level 01.asset @@ -0,0 +1,16 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0e5997dc40a2dc47afc7b9a41a9a862, type: 3} + m_Name: Level 01 + m_EditorClassIdentifier: + StartupScenes: + - GameLevel diff --git a/Assets/Levels/Level 01.asset.meta b/Assets/Levels/Level 01.asset.meta new file mode 100644 index 000000000..8fe91182f --- /dev/null +++ b/Assets/Levels/Level 01.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9f2f4106fb707f94b8ba444221854f92 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Levels/MainMenu.asset b/Assets/Levels/MainMenu.asset new file mode 100644 index 000000000..797bdc8db --- /dev/null +++ b/Assets/Levels/MainMenu.asset @@ -0,0 +1,16 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0e5997dc40a2dc47afc7b9a41a9a862, type: 3} + m_Name: MainMenu + m_EditorClassIdentifier: + StartupScenes: + - MainMenu diff --git a/Assets/Levels/MainMenu.asset.meta b/Assets/Levels/MainMenu.asset.meta new file mode 100644 index 000000000..513ed8478 --- /dev/null +++ b/Assets/Levels/MainMenu.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d99561144ab5c0345b420674ec7d0228 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ML-Agents.meta b/Assets/ML-Agents.meta new file mode 100644 index 000000000..a1702d278 --- /dev/null +++ b/Assets/ML-Agents.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a6d97c37337c8294db42ecb76ed7e654 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ML-Agents/CurriculumLearningPlan.md b/Assets/ML-Agents/CurriculumLearningPlan.md new file mode 100644 index 000000000..2c9d3e698 --- /dev/null +++ b/Assets/ML-Agents/CurriculumLearningPlan.md @@ -0,0 +1,291 @@ +# MA-PPO 방어 선박 커리큘럼 학습 계획 + +## 개요 + +두 대의 방어 선박이 협력하여 적군 선박을 포획하는 시스템을 **3단계 커리큘럼 학습**으로 구현한다. +각 단계는 이전 단계의 모델을 `--initialize-from`으로 불러와 전이 학습을 수행한다. + +--- + +## Stage 1: 대형 유지 (Formation Keeping) + +### 목표 +- 두 선박이 **나란히 이동** +- **일정 거리 유지** (이격 거리 준수) +- 기본적인 협동 기동 학습 + +### 활성화할 보상 + +| 보상 항목 | 값 | 설명 | +|----------|-----|------| +| 헤딩 동기화 | `+0.0002` | 두 선박의 방향이 일치할 때 | +| 속도 동기화 | `+0.0002` | 두 선박의 속도가 일치할 때 | +| 간격 유지 | `+0.0002` | 최적 거리(50m) 유지 시 | +| 그물 장력 | `+0.0005` | 그물 길이 90~95% 유지 시 | +| 속도 보상 | `+0.0003` | 빠를수록 높은 보상 | + +### 비활성화할 보상 + +| 보상 항목 | 값 | 이유 | +|----------|-----|------| +| 포획 보상 | `0` | Stage 2에서 활성화 | +| 수직 차단 보상 | `0` | Stage 3에서 활성화 | +| 추적 이득 보상 | `0` | Stage 3에서 활성화 | + +### 페널티 + +| 페널티 항목 | 값 | 설명 | +|------------|-----|------| +| 아군 거리 초과 | `-2.0` | 거리 > maxAllyDistance 시 에피소드 종료 | +| 대형 붕괴 | `-0.05` | 거리 > 100m 또는 헤딩 > 90° | +| 시간 패널티 | `-0.001` | 매 스텝 | +| 아군 충돌 | `-1.0` | 아군끼리 충돌 시 | + +### 에피소드 종료 조건 +- 아군 간 거리 초과 (maxAllyDistance) +- 아군 충돌 +- 최대 스텝 도달 + +### 환경 설정 +- 적군 선박: **비활성화** 또는 0대 +- 모선: 비활성화 (충돌 판정 제외) + +### 학습 명령어 +```bash +mlagents-learn config/Defense_Stage1.yaml --run-id=Defense_Stage1_Formation +``` + +### 성공 기준 +- 평균 에피소드 길이가 최대 스텝에 근접 +- 두 선박의 헤딩 차이가 지속적으로 15° 이내 +- 거리 유지율 90% 이상 + +--- + +## Stage 2: 포획 보상 학습 (Capture Reward) + +### 목표 +- Stage 1의 대형 유지 능력 보존 +- **적군 포획 시 보상** 학습 +- **빠른 포획 = 높은 보상** 개념 학습 + +### 추가 활성화할 보상 + +| 보상 항목 | 값 | 설명 | +|----------|-----|------| +| 포획 성공 | `+1.0` | 적군이 Web에 충돌 시 | +| 포획 위치 보너스 | `+0.3` (최대) | 그물 중심에서 포획 시 | +| 모선 방어 성공 | `+0.5` | 에피소드 종료 시 모선 무사 | + +### 추가 페널티 + +| 페널티 항목 | 값 | 설명 | +|------------|-----|------| +| 모선 충돌 | `-1.75` | 적군이 모선에 충돌 시 | +| 경계선 침범 | `-0.1` | 2km/1km 경계 초과 시 | + +### 에피소드 종료 조건 +- Stage 1 조건 모두 포함 +- 총 충돌 횟수 ≥ 3 (Web + MotherShip 합산) +- 모선 충돌 (게임 오버) + +### 환경 설정 +- 적군 선박: **1~2대** (단순한 경로) +- 모선: 활성화 +- 적군 속도: 느리게 설정 + +### 학습 명령어 +```bash +mlagents-learn config/Defense_Stage2.yaml \ +--run-id=Defense_Stage2_Capture \ +--initialize-from=Defense_Stage1_Formation +``` + +### 성공 기준 +- 포획 성공률 > 50% +- 평균 포획 시간 감소 추세 +- 대형 유지율 80% 이상 (Stage 1 능력 보존) + +--- + +## Stage 3: 전술 기동 (Tactical Maneuvering) + +### 목표 +- Stage 1 + Stage 2 능력 보존 +- **적극적인 추적 및 차단** 학습 +- **수직 차단 기동** 최적화 +- 다수 적군 대응 + +### 추가 활성화할 보상 + +| 보상 항목 | 값 | 설명 | +|----------|-----|------| +| 수직 차단 | `+0.0005` | 그물-적 각도 ≈ 90° | +| 추적 이득 | `+0.0002` | 적-그물 거리 감소 시 | + +### 환경 설정 +- 적군 선박: **3~5대** +- 적군 속도: 정상 또는 빠르게 +- 적군 경로: 다양화 (랜덤 요소 추가) + +### 학습 명령어 +```bash +mlagents-learn config/Defense_Stage3.yaml \ +--run-id=Defense_Stage3_Tactical \ +--initialize-from=Defense_Stage2_Capture +``` + +### 성공 기준 +- 다수 적군 포획 성공률 > 70% +- 모선 생존율 > 90% +- 평균 포획 시간 최소화 + +--- + +## YAML 설정 파일 구조 + +### config/Defense_Stage1.yaml +```yaml +behaviors: + DefenseAgent: + trainer_type: ppo + hyperparameters: + batch_size: 1024 + buffer_size: 10240 + learning_rate: 3.0e-4 + beta: 5.0e-3 + epsilon: 0.2 + lambd: 0.95 + num_epoch: 3 + learning_rate_schedule: linear + network_settings: + normalize: true + hidden_units: 256 + num_layers: 2 + reward_signals: + extrinsic: + gamma: 0.99 + strength: 1.0 + max_steps: 1000000 + time_horizon: 64 + summary_freq: 10000 +``` + +### config/Defense_Stage2.yaml +```yaml +# Stage 1과 동일하되, max_steps 증가 +behaviors: + DefenseAgent: + # ... (Stage 1과 동일) + max_steps: 2000000 +``` + +### config/Defense_Stage3.yaml +```yaml +# Stage 2와 동일하되, max_steps 증가 및 하이퍼파라미터 미세 조정 +behaviors: + DefenseAgent: + # ... (Stage 2와 동일) + max_steps: 3000000 + hyperparameters: + learning_rate: 1.0e-4 # 감소 (미세 조정) +``` + +--- + +## 코드 수정 체크리스트 + +### Stage 1 준비 +- [x] DefenseEnvController에 `currentStage` 변수 추가 ✅ +- [x] Stage별 보상 활성화/비활성화 로직 구현 ✅ +- [x] 적군 선박 비활성화 옵션 추가 ✅ +- [ ] Stage 1 전용 YAML 파일 생성 + +### Stage 2 준비 +- [x] 적군 선박 1~2대 활성화 (`stage2EnemyCount` 설정) ✅ +- [x] 포획 보상 활성화 (`IsCaptureRewardEnabled()`) ✅ +- [x] 모선 충돌 페널티 활성화 (`IsMotherShipPenaltyEnabled()`) ✅ + +### Stage 3 준비 +- [x] 적군 선박 3~5대 활성화 (`stage3EnemyCount` 설정) ✅ +- [x] 수직 차단/추적 이득 보상 활성화 (`IsTacticalRewardEnabled()`) ✅ +- [ ] 적군 경로 다양화 + +--- + +## 구현된 Inspector 설정 + +### DefenseEnvController +``` +[Training Stage] +├── Current Stage: Stage1_Formation / Stage2_Capture / Stage3_Tactical +├── Disable Enemies In Stage1: true (Stage1에서 적군 비활성화) +├── Stage1 Enemy Count: 0 +├── Stage2 Enemy Count: 2 +└── Stage3 Enemy Count: 5 +``` + +### DefenseRewardCalculator +``` +[Training Stage] +└── Current Stage: (DefenseEnvController에서 자동 동기화) +``` + +### Stage별 보상 활성화 요약 + +| 보상/페널티 | Stage1 | Stage2 | Stage3 | +|------------|--------|--------|--------| +| 헤딩 동기화 | ✅ | ✅ | ✅ | +| 속도 동기화 | ✅ | ✅ | ✅ | +| 간격 유지 | ✅ | ✅ | ✅ | +| 그물 장력 | ✅ | ✅ | ✅ | +| 속도 보상 | ✅ | ✅ | ✅ | +| 대형 붕괴 페널티 | ✅ | ✅ | ✅ | +| 시간 페널티 | ✅ | ✅ | ✅ | +| 아군 거리 초과 | ✅ | ✅ | ✅ | +| **포획 보상** | ❌ | ✅ | ✅ | +| **모선 충돌 페널티** | ❌ | ✅ | ✅ | +| **수직 차단 보상** | ❌ | ❌ | ✅ | +| **추적 이득 보상** | ❌ | ❌ | ✅ | + +--- + +## 폴더 구조 + +``` +BoatAttack/ +├── config/ +│ ├── Defense_Stage1.yaml +│ ├── Defense_Stage2.yaml +│ └── Defense_Stage3.yaml +├── results/ +│ ├── Defense_Stage1_Formation/ +│ ├── Defense_Stage2_Capture/ +│ └── Defense_Stage3_Tactical/ +└── Assets/ + └── ML-Agents/ + ├── CurriculumLearningPlan.md (이 파일) + └── Models/ + ├── Defense_Stage1.onnx + ├── Defense_Stage2.onnx + └── Defense_Stage3.onnx +``` + +--- + +## 참고 명령어 + +### TensorBoard 모니터링 +```bash +tensorboard --logdir=results +``` + +### 학습 재개 +```bash +mlagents-learn config/Defense_Stage1.yaml --run-id=Defense_Stage1_Formation --resume +``` + +### 추론 모드 (학습된 모델 테스트) +```bash +mlagents-learn config/Defense_Stage1.yaml --run-id=Defense_Stage1_Formation --inference +``` diff --git a/Assets/ML-Agents/CurriculumLearningPlan.md.meta b/Assets/ML-Agents/CurriculumLearningPlan.md.meta new file mode 100644 index 000000000..db607ceb1 --- /dev/null +++ b/Assets/ML-Agents/CurriculumLearningPlan.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e72cdc74fc9f5c349aecce163086d90c +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ML-Agents/Examples.meta b/Assets/ML-Agents/Examples.meta new file mode 100644 index 000000000..041ae8564 --- /dev/null +++ b/Assets/ML-Agents/Examples.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 99c5937b96118604fb65b043f15d0664 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ML-Agents/Examples/PushBlockWithInput.meta b/Assets/ML-Agents/Examples/PushBlockWithInput.meta new file mode 100644 index 000000000..9b27a0b20 --- /dev/null +++ b/Assets/ML-Agents/Examples/PushBlockWithInput.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 90bce63c30713a64b8158953612cc9ef +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ML-Agents/Examples/PushBlockWithInput/Scripts.meta b/Assets/ML-Agents/Examples/PushBlockWithInput/Scripts.meta new file mode 100644 index 000000000..a719995c5 --- /dev/null +++ b/Assets/ML-Agents/Examples/PushBlockWithInput/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ec9d59a8e8fcac34c8bdfbc9029dbaef +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ML-Agents/Examples/PushBlockWithInput/Scripts/PushBlockActions.cs b/Assets/ML-Agents/Examples/PushBlockWithInput/Scripts/PushBlockActions.cs new file mode 100644 index 000000000..235128b96 --- /dev/null +++ b/Assets/ML-Agents/Examples/PushBlockWithInput/Scripts/PushBlockActions.cs @@ -0,0 +1,490 @@ +//------------------------------------------------------------------------------ +// +// This code was auto-generated by com.unity.inputsystem:InputActionCodeGenerator +// version 1.14.0 +// from Assets/ml-agents-release_20/Project/Assets/ML-Agents/Examples/PushBlockWithInput/PushBlockActions.inputactions +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine.InputSystem; +using UnityEngine.InputSystem.Utilities; + +/// +/// Provides programmatic access to , , and instances defined in asset "Assets/ml-agents-release_20/Project/Assets/ML-Agents/Examples/PushBlockWithInput/PushBlockActions.inputactions". +/// +/// +/// This class is source generated and any manual edits will be discarded if the associated asset is reimported or modified. +/// +/// +/// +/// using namespace UnityEngine; +/// using UnityEngine.InputSystem; +/// +/// // Example of using an InputActionMap named "Player" from a UnityEngine.MonoBehaviour implementing callback interface. +/// public class Example : MonoBehaviour, MyActions.IPlayerActions +/// { +/// private MyActions_Actions m_Actions; // Source code representation of asset. +/// private MyActions_Actions.PlayerActions m_Player; // Source code representation of action map. +/// +/// void Awake() +/// { +/// m_Actions = new MyActions_Actions(); // Create asset object. +/// m_Player = m_Actions.Player; // Extract action map object. +/// m_Player.AddCallbacks(this); // Register callback interface IPlayerActions. +/// } +/// +/// void OnDestroy() +/// { +/// m_Actions.Dispose(); // Destroy asset object. +/// } +/// +/// void OnEnable() +/// { +/// m_Player.Enable(); // Enable all actions within map. +/// } +/// +/// void OnDisable() +/// { +/// m_Player.Disable(); // Disable all actions within map. +/// } +/// +/// #region Interface implementation of MyActions.IPlayerActions +/// +/// // Invoked when "Move" action is either started, performed or canceled. +/// public void OnMove(InputAction.CallbackContext context) +/// { +/// Debug.Log($"OnMove: {context.ReadValue<Vector2>()}"); +/// } +/// +/// // Invoked when "Attack" action is either started, performed or canceled. +/// public void OnAttack(InputAction.CallbackContext context) +/// { +/// Debug.Log($"OnAttack: {context.ReadValue<float>()}"); +/// } +/// +/// #endregion +/// } +/// +/// +public partial class @PushBlockActions: IInputActionCollection2, IDisposable +{ + /// + /// Provides access to the underlying asset instance. + /// + public InputActionAsset asset { get; } + + /// + /// Constructs a new instance. + /// + public @PushBlockActions() + { + asset = InputActionAsset.FromJson(@"{ + ""name"": ""PushBlockActions"", + ""maps"": [ + { + ""name"": ""Movement"", + ""id"": ""03a2e5d4-ae81-47f1-a575-0779fb7da538"", + ""actions"": [ + { + ""name"": ""movement"", + ""type"": ""Value"", + ""id"": ""5f47cbc6-de46-4d33-93e2-2b1af4f5996d"", + ""expectedControlType"": ""Vector2"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": true + }, + { + ""name"": ""jump"", + ""type"": ""Button"", + ""id"": ""ca5eb833-5dfb-4b7c-880d-6118bd5d1378"", + ""expectedControlType"": ""Button"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": false + } + ], + ""bindings"": [ + { + ""name"": ""gamepad_move"", + ""id"": ""477500ef-6d32-4b84-b9f8-158f18bcb906"", + ""path"": ""2DVector"", + ""interactions"": """", + ""processors"": """", + ""groups"": """", + ""action"": ""movement"", + ""isComposite"": true, + ""isPartOfComposite"": false + }, + { + ""name"": ""up"", + ""id"": ""6d2537b8-2266-4a50-8575-fb0fe310daa5"", + ""path"": ""/dpad/up"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard"", + ""action"": ""movement"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""down"", + ""id"": ""50584c83-beb6-4e90-a453-a635c03a761e"", + ""path"": ""/dpad/down"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard"", + ""action"": ""movement"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""left"", + ""id"": ""44408b8f-27e7-4c6d-b078-7536ba020d1a"", + ""path"": ""/dpad/left"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard"", + ""action"": ""movement"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""right"", + ""id"": ""f5681423-d3e3-41a5-b85e-0a7642c774aa"", + ""path"": ""/dpad/right"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard"", + ""action"": ""movement"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""keyboard_move"", + ""id"": ""6bcba4bf-5ce0-4005-9e6a-0de2487211b0"", + ""path"": ""2DVector"", + ""interactions"": """", + ""processors"": """", + ""groups"": """", + ""action"": ""movement"", + ""isComposite"": true, + ""isPartOfComposite"": false + }, + { + ""name"": ""up"", + ""id"": ""63da699e-b354-4e63-b0f8-26fb92abea41"", + ""path"": ""/w"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard"", + ""action"": ""movement"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""down"", + ""id"": ""39409748-9002-4aff-9a09-cdc05b9708ad"", + ""path"": ""/s"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard"", + ""action"": ""movement"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""left"", + ""id"": ""0afe45fc-dc45-4310-9c73-7dc3c503addf"", + ""path"": ""/a"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard"", + ""action"": ""movement"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""right"", + ""id"": ""69fe0335-9e0c-495d-a90d-4b0fcbfd2b34"", + ""path"": ""/d"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard"", + ""action"": ""movement"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": """", + ""id"": ""ab696218-63cd-4eb8-9fe1-48a68e32e92f"", + ""path"": ""/space"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard"", + ""action"": ""jump"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""7adcb138-5175-4cc4-addc-d2b02cb5f0de"", + ""path"": ""/buttonSouth"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard"", + ""action"": ""jump"", + ""isComposite"": false, + ""isPartOfComposite"": false + } + ] + } + ], + ""controlSchemes"": [ + { + ""name"": ""Keyboard"", + ""bindingGroup"": ""Keyboard"", + ""devices"": [ + { + ""devicePath"": """", + ""isOptional"": true, + ""isOR"": false + }, + { + ""devicePath"": """", + ""isOptional"": true, + ""isOR"": false + } + ] + } + ] +}"); + // Movement + m_Movement = asset.FindActionMap("Movement", throwIfNotFound: true); + m_Movement_movement = m_Movement.FindAction("movement", throwIfNotFound: true); + m_Movement_jump = m_Movement.FindAction("jump", throwIfNotFound: true); + } + + ~@PushBlockActions() + { + UnityEngine.Debug.Assert(!m_Movement.enabled, "This will cause a leak and performance issues, PushBlockActions.Movement.Disable() has not been called."); + } + + /// + /// Destroys this asset and all associated instances. + /// + public void Dispose() + { + UnityEngine.Object.Destroy(asset); + } + + /// + public InputBinding? bindingMask + { + get => asset.bindingMask; + set => asset.bindingMask = value; + } + + /// + public ReadOnlyArray? devices + { + get => asset.devices; + set => asset.devices = value; + } + + /// + public ReadOnlyArray controlSchemes => asset.controlSchemes; + + /// + public bool Contains(InputAction action) + { + return asset.Contains(action); + } + + /// + public IEnumerator GetEnumerator() + { + return asset.GetEnumerator(); + } + + /// + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + /// + public void Enable() + { + asset.Enable(); + } + + /// + public void Disable() + { + asset.Disable(); + } + + /// + public IEnumerable bindings => asset.bindings; + + /// + public InputAction FindAction(string actionNameOrId, bool throwIfNotFound = false) + { + return asset.FindAction(actionNameOrId, throwIfNotFound); + } + + /// + public int FindBinding(InputBinding bindingMask, out InputAction action) + { + return asset.FindBinding(bindingMask, out action); + } + + // Movement + private readonly InputActionMap m_Movement; + private List m_MovementActionsCallbackInterfaces = new List(); + private readonly InputAction m_Movement_movement; + private readonly InputAction m_Movement_jump; + /// + /// Provides access to input actions defined in input action map "Movement". + /// + public struct MovementActions + { + private @PushBlockActions m_Wrapper; + + /// + /// Construct a new instance of the input action map wrapper class. + /// + public MovementActions(@PushBlockActions wrapper) { m_Wrapper = wrapper; } + /// + /// Provides access to the underlying input action "Movement/movement". + /// + public InputAction @movement => m_Wrapper.m_Movement_movement; + /// + /// Provides access to the underlying input action "Movement/jump". + /// + public InputAction @jump => m_Wrapper.m_Movement_jump; + /// + /// Provides access to the underlying input action map instance. + /// + public InputActionMap Get() { return m_Wrapper.m_Movement; } + /// + public void Enable() { Get().Enable(); } + /// + public void Disable() { Get().Disable(); } + /// + public bool enabled => Get().enabled; + /// + /// Implicitly converts an to an instance. + /// + public static implicit operator InputActionMap(MovementActions set) { return set.Get(); } + /// + /// Adds , and callbacks provided via on all input actions contained in this map. + /// + /// Callback instance. + /// + /// If is null or have already been added this method does nothing. + /// + /// + public void AddCallbacks(IMovementActions instance) + { + if (instance == null || m_Wrapper.m_MovementActionsCallbackInterfaces.Contains(instance)) return; + m_Wrapper.m_MovementActionsCallbackInterfaces.Add(instance); + @movement.started += instance.OnMovement; + @movement.performed += instance.OnMovement; + @movement.canceled += instance.OnMovement; + @jump.started += instance.OnJump; + @jump.performed += instance.OnJump; + @jump.canceled += instance.OnJump; + } + + /// + /// Removes , and callbacks provided via on all input actions contained in this map. + /// + /// + /// Calling this method when have not previously been registered has no side-effects. + /// + /// + private void UnregisterCallbacks(IMovementActions instance) + { + @movement.started -= instance.OnMovement; + @movement.performed -= instance.OnMovement; + @movement.canceled -= instance.OnMovement; + @jump.started -= instance.OnJump; + @jump.performed -= instance.OnJump; + @jump.canceled -= instance.OnJump; + } + + /// + /// Unregisters and unregisters all input action callbacks via . + /// + /// + public void RemoveCallbacks(IMovementActions instance) + { + if (m_Wrapper.m_MovementActionsCallbackInterfaces.Remove(instance)) + UnregisterCallbacks(instance); + } + + /// + /// Replaces all existing callback instances and previously registered input action callbacks associated with them with callbacks provided via . + /// + /// + /// If is null, calling this method will only unregister all existing callbacks but not register any new callbacks. + /// + /// + /// + /// + public void SetCallbacks(IMovementActions instance) + { + foreach (var item in m_Wrapper.m_MovementActionsCallbackInterfaces) + UnregisterCallbacks(item); + m_Wrapper.m_MovementActionsCallbackInterfaces.Clear(); + AddCallbacks(instance); + } + } + /// + /// Provides a new instance referencing this action map. + /// + public MovementActions @Movement => new MovementActions(this); + private int m_KeyboardSchemeIndex = -1; + /// + /// Provides access to the input control scheme. + /// + /// + public InputControlScheme KeyboardScheme + { + get + { + if (m_KeyboardSchemeIndex == -1) m_KeyboardSchemeIndex = asset.FindControlSchemeIndex("Keyboard"); + return asset.controlSchemes[m_KeyboardSchemeIndex]; + } + } + /// + /// Interface to implement callback methods for all input action callbacks associated with input actions defined by "Movement" which allows adding and removing callbacks. + /// + /// + /// + public interface IMovementActions + { + /// + /// Method invoked when associated input action "movement" is either , or . + /// + /// + /// + /// + void OnMovement(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "jump" is either , or . + /// + /// + /// + /// + void OnJump(InputAction.CallbackContext context); + } +} diff --git a/Assets/NavMeshComponents/Editor/NavMeshAssetManager.cs.meta b/Assets/ML-Agents/Examples/PushBlockWithInput/Scripts/PushBlockActions.cs.meta old mode 100755 new mode 100644 similarity index 83% rename from Assets/NavMeshComponents/Editor/NavMeshAssetManager.cs.meta rename to Assets/ML-Agents/Examples/PushBlockWithInput/Scripts/PushBlockActions.cs.meta index d6567a83c..b7f0ff680 --- a/Assets/NavMeshComponents/Editor/NavMeshAssetManager.cs.meta +++ b/Assets/ML-Agents/Examples/PushBlockWithInput/Scripts/PushBlockActions.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 178d8366aa1616849b91b66285c51454 +guid: 2b219711278410843a082c7e435732ef MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/ML-Agents/Timers.meta b/Assets/ML-Agents/Timers.meta new file mode 100644 index 000000000..bb3e36e74 --- /dev/null +++ b/Assets/ML-Agents/Timers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3a3ecd9b10f40324494558a002ea5c47 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ML-Agents/Timers/ROONSHOOT_timers.json.meta b/Assets/ML-Agents/Timers/ROONSHOOT_timers.json.meta new file mode 100644 index 000000000..be546929d --- /dev/null +++ b/Assets/ML-Agents/Timers/ROONSHOOT_timers.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: bf5dba342de6d5d499af8b89b73f489c +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ML-Agents/Timers/demo_Island_timers.json.meta b/Assets/ML-Agents/Timers/demo_Island_timers.json.meta new file mode 100644 index 000000000..21cdedd55 --- /dev/null +++ b/Assets/ML-Agents/Timers/demo_Island_timers.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b6ae0b390aaec934996c85bb42820feb +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ML-Agents/Timers/level_Island_timers.json.meta b/Assets/ML-Agents/Timers/level_Island_timers.json.meta new file mode 100644 index 000000000..0301a91f8 --- /dev/null +++ b/Assets/ML-Agents/Timers/level_Island_timers.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2ca3aece4d4df7743b54864afa0782c3 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ML-Agents/Timers/main_menu_timers.json.meta b/Assets/ML-Agents/Timers/main_menu_timers.json.meta new file mode 100644 index 000000000..5bf0a006a --- /dev/null +++ b/Assets/ML-Agents/Timers/main_menu_timers.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 13979c47f83b12d4c940717edbcad9be +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Materials/BlackoutBackface.mat b/Assets/Materials/BlackoutBackface.mat index 14bf1d6b0..46b572d92 100644 --- a/Assets/Materials/BlackoutBackface.mat +++ b/Assets/Materials/BlackoutBackface.mat @@ -2,14 +2,18 @@ %TAG !u! tag:unity3d.com,2011: --- !u!21 &2100000 Material: - serializedVersion: 6 + serializedVersion: 8 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: BlackoutBackface m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} - m_ShaderKeywords: _ENVIRONMENTREFLECTIONS_OFF + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ENVIRONMENTREFLECTIONS_OFF + m_InvalidKeywords: [] m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 @@ -17,6 +21,7 @@ Material: stringTagMap: RenderType: Opaque disabledShaderPasses: [] + m_LockedProperties: m_SavedProperties: serializedVersion: 3 m_TexEnvs: @@ -28,6 +33,18 @@ Material: 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} @@ -44,29 +61,55 @@ Material: 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} - _SpecGlossMap: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] m_Floats: - _AlphaClip: 0 + - _AlphaToMask: 0 - _Blend: 0 + - _BlendModePreserveSpecular: 1 - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 - _Cull: 2 - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 - _DstBlend: 0 + - _DstBlendAlpha: 0 - _EnvironmentReflections: 0 - _GlossMapScale: 0 - _Glossiness: 0 - _GlossyReflections: 0 - _Metallic: 0 - _OcclusionStrength: 1 + - _Parallax: 0.005 - _QueueOffset: 0 - _ReceiveShadows: 1 - _Smoothness: 0 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 - _SrcBlend: 1 + - _SrcBlendAlpha: 1 - _Surface: 0 - _WorkflowMode: 1 - _ZWrite: 1 @@ -88,4 +131,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 4 + version: 7 diff --git a/Assets/Materials/Blocker.mat b/Assets/Materials/Blocker.mat index 77211a043..6ac7c5bb2 100644 --- a/Assets/Materials/Blocker.mat +++ b/Assets/Materials/Blocker.mat @@ -15,14 +15,19 @@ MonoBehaviour: version: 1 --- !u!21 &2100000 Material: - serializedVersion: 6 + serializedVersion: 8 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: Blocker m_Shader: {fileID: 4800000, guid: 8d2bb70cbf9db8d4da26e15b26e74248, type: 3} - m_ShaderKeywords: _GLOSSINESS_FROM_BASE_ALPHA _SPECULAR_COLOR + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _GLOSSINESS_FROM_BASE_ALPHA + - _SPECULAR_COLOR + m_InvalidKeywords: [] m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 @@ -30,6 +35,7 @@ Material: stringTagMap: RenderType: Opaque disabledShaderPasses: [] + m_LockedProperties: m_SavedProperties: serializedVersion: 3 m_TexEnvs: @@ -77,14 +83,30 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] m_Floats: - _AlphaClip: 0 + - _AlphaToMask: 0 - _Blend: 0 + - _BlendModePreserveSpecular: 1 - _BumpScale: 1 - _Cull: 2 - _Cutoff: 0.5 - _DetailNormalMapScale: 1 - _DstBlend: 0 + - _DstBlendAlpha: 0 - _GlossMapScale: 1 - _Glossiness: 0.5 - _GlossinessSource: 0 @@ -102,13 +124,14 @@ Material: - _SpecSource: 0 - _SpecularHighlights: 0 - _SrcBlend: 1 + - _SrcBlendAlpha: 1 - _Surface: 0 - _UVSec: 0 - _WorkflowMode: 0 - _ZWrite: 1 m_Colors: - _BaseColor: {r: 0, g: 0, b: 0, a: 0.5} - - _Color: {r: 0, g: 0, b: 0, a: 1} + - _Color: {r: 0, g: 0, b: 0, a: 0.5} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - _SpecColor: {r: 0.1999999, g: 0.1999999, b: 0.1999999, a: 1} m_BuildTextureStacks: [] @@ -124,4 +147,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 4 + version: 7 diff --git a/Assets/Materials/BushTest.mat b/Assets/Materials/BushTest.mat index 9a6b19026..5aa848a10 100644 --- a/Assets/Materials/BushTest.mat +++ b/Assets/Materials/BushTest.mat @@ -15,14 +15,20 @@ MonoBehaviour: version: 1 --- !u!21 &2100000 Material: - serializedVersion: 6 + serializedVersion: 8 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: BushTest m_Shader: {fileID: 4800000, guid: 8d2bb70cbf9db8d4da26e15b26e74248, type: 3} - m_ShaderKeywords: _ALPHATEST_ON _NORMALMAP _SPECULAR_COLOR + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ALPHATEST_ON + - _NORMALMAP + - _SPECULAR_COLOR + m_InvalidKeywords: [] m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 1 @@ -30,6 +36,7 @@ Material: stringTagMap: RenderType: TransparentCutout disabledShaderPasses: [] + m_LockedProperties: m_SavedProperties: serializedVersion: 3 m_TexEnvs: @@ -101,15 +108,31 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] m_Floats: - _AlphaClip: 1 + - _AlphaToMask: 1 - _Blend: 0 + - _BlendModePreserveSpecular: 1 - _BumpScale: 1 - _CorrectNormals: 0 - _Cull: 0 - _Cutoff: 0.8 - _DetailNormalMapScale: 1 - _DstBlend: 0 + - _DstBlendAlpha: 0 - _GlossMapScale: 1 - _Glossiness: 0 - _GlossinessSource: 1 @@ -127,6 +150,7 @@ Material: - _SpecSource: 0 - _SpecularHighlights: 0 - _SrcBlend: 1 + - _SrcBlendAlpha: 1 - _Surface: 0 - _UVSec: 0 - _WorkflowMode: 1 @@ -149,4 +173,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 4 + version: 7 diff --git a/Assets/Materials/Checkpoint.mat b/Assets/Materials/Checkpoint.mat index 403ba053a..42a24973d 100644 --- a/Assets/Materials/Checkpoint.mat +++ b/Assets/Materials/Checkpoint.mat @@ -1,8 +1,21 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!114 &-3359640960281692547 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 --- !u!21 &2100000 Material: - serializedVersion: 6 + serializedVersion: 8 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -10,16 +23,36 @@ Material: m_Name: Checkpoint m_Shader: {fileID: -6465566751694194690, guid: 2acbf7e74813d47868cad8387461befd, type: 3} - m_ShaderKeywords: + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 m_CustomRenderQueue: -1 stringTagMap: {} - disabledShaderPasses: - - SHADOWCASTER + disabledShaderPasses: [] + m_LockedProperties: m_SavedProperties: serializedVersion: 3 - m_TexEnvs: [] - m_Floats: [] - m_Colors: [] + m_TexEnvs: + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _QueueControl: 0 + - _QueueOffset: 0 + m_Colors: + - _Color: {r: 0, g: 0.582, b: 1, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Materials/Seaweed.mat b/Assets/Materials/Seaweed.mat index 5aced47f0..4c8fdee2c 100644 --- a/Assets/Materials/Seaweed.mat +++ b/Assets/Materials/Seaweed.mat @@ -2,14 +2,18 @@ %TAG !u! tag:unity3d.com,2011: --- !u!21 &2100000 Material: - serializedVersion: 6 + serializedVersion: 8 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: Seaweed m_Shader: {fileID: 4800000, guid: 8d2bb70cbf9db8d4da26e15b26e74248, type: 3} - m_ShaderKeywords: _ALPHATEST_ON + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ALPHATEST_ON + m_InvalidKeywords: [] m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 1 @@ -17,6 +21,7 @@ Material: stringTagMap: RenderType: TransparentCutout disabledShaderPasses: [] + m_LockedProperties: m_SavedProperties: serializedVersion: 3 m_TexEnvs: @@ -48,13 +53,29 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] m_Floats: - _AlphaClip: 1 + - _AlphaToMask: 1 - _Blend: 0 + - _BlendModePreserveSpecular: 1 - _BumpScale: 1 - _Cull: 0 - _Cutoff: 0.5 - _DstBlend: 0 + - _DstBlendAlpha: 0 - _EnvironmentReflections: 1 - _GlossMapScale: 0 - _Glossiness: 0 @@ -71,12 +92,13 @@ Material: - _SpecSource: 0 - _SpecularHighlights: 1 - _SrcBlend: 1 + - _SrcBlendAlpha: 1 - _Surface: 0 - _WorkflowMode: 1 - _ZWrite: 1 m_Colors: - _BaseColor: {r: 1, g: 1, b: 1, a: 1} - - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 0.5} m_BuildTextureStacks: [] @@ -92,4 +114,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 4 + version: 7 diff --git a/Assets/Materials/Shiny_Black_Gradient.mat b/Assets/Materials/Shiny_Black_Gradient.mat new file mode 100644 index 000000000..208395e05 --- /dev/null +++ b/Assets/Materials/Shiny_Black_Gradient.mat @@ -0,0 +1,133 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-9208654333811798125 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Shiny_Black_Gradient + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 6 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 8306deba45efc104b9297b5946521949, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _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: 8306deba45efc104b9297b5946521949, 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 1 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.122641504, g: 0.09313812, b: 0.09313812, a: 1} + - _Color: {r: 0.12264148, g: 0.09313808, b: 0.09313808, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Materials/Shiny_Black_Gradient.mat.meta b/Assets/Materials/Shiny_Black_Gradient.mat.meta new file mode 100644 index 000000000..763b30536 --- /dev/null +++ b/Assets/Materials/Shiny_Black_Gradient.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 60009cd09dedcdb42a57ac5af9f6a6df +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Materials/Splash.mat b/Assets/Materials/Splash.mat index 7a83c76df..544065c07 100644 --- a/Assets/Materials/Splash.mat +++ b/Assets/Materials/Splash.mat @@ -12,26 +12,34 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 4 + version: 7 --- !u!21 &2100000 Material: - serializedVersion: 6 + serializedVersion: 8 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: Splash m_Shader: {fileID: 4800000, guid: 8d2bb70cbf9db8d4da26e15b26e74248, type: 3} - m_ShaderKeywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ALPHAPREMULTIPLY_ON + - _ALPHATEST_ON + - _SURFACE_TYPE_TRANSPARENT + m_InvalidKeywords: [] m_LightmapFlags: 4 m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 3050 + m_DoubleSidedGI: 1 + m_CustomRenderQueue: 3000 stringTagMap: RenderType: Transparent disabledShaderPasses: - ALWAYS - SHADOWCASTER + - DepthOnly + m_LockedProperties: m_SavedProperties: serializedVersion: 3 m_TexEnvs: @@ -79,9 +87,24 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] m_Floats: - _AlphaClip: 1 - - _Blend: 1 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 - _BlendOp: 0 - _BumpScale: 1 - _CameraFadingEnabled: 0 @@ -96,6 +119,7 @@ Material: - _DistortionStrength: 1 - _DistortionStrengthScaled: 0.1 - _DstBlend: 10 + - _DstBlendAlpha: 10 - _EmissionEnabled: 0 - _FlipbookBlending: 0 - _FlipbookMode: 0 @@ -121,6 +145,7 @@ Material: - _SpecSource: 0 - _SpecularHighlights: 1 - _SrcBlend: 1 + - _SrcBlendAlpha: 1 - _Surface: 1 - _UVSec: 0 - _WorkflowMode: 1 @@ -129,7 +154,7 @@ Material: - _BaseColor: {r: 1, g: 1, b: 1, a: 1} - _BaseColorAddSubDiff: {r: 1, g: 0, b: 0, a: 0} - _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0} - - _Color: {r: 3.6368854, g: 3.6368854, b: 3.6368854, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} - _ColorAddSubDiff: {r: 1, g: 0, b: 0, a: 0} - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} - _SoftParticleFadeParams: {r: 0, g: 10, b: 0, a: 0} diff --git a/Assets/Materials/StudioLight.mat b/Assets/Materials/StudioLight.mat index 55532ce70..58cab22c1 100644 --- a/Assets/Materials/StudioLight.mat +++ b/Assets/Materials/StudioLight.mat @@ -12,17 +12,21 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 4 + version: 7 --- !u!21 &2100000 Material: - serializedVersion: 6 + serializedVersion: 8 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: StudioLight m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} - m_ShaderKeywords: _EMISSION + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _EMISSION + m_InvalidKeywords: [] m_LightmapFlags: 2 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 @@ -30,6 +34,7 @@ Material: stringTagMap: RenderType: Opaque disabledShaderPasses: [] + m_LockedProperties: m_SavedProperties: serializedVersion: 3 m_TexEnvs: @@ -89,9 +94,12 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + m_Ints: [] m_Floats: - _AlphaClip: 0 + - _AlphaToMask: 0 - _Blend: 0 + - _BlendModePreserveSpecular: 1 - _BumpScale: 1 - _ClearCoatMask: 0 - _ClearCoatSmoothness: 0 @@ -100,6 +108,7 @@ Material: - _DetailAlbedoMapScale: 1 - _DetailNormalMapScale: 1 - _DstBlend: 0 + - _DstBlendAlpha: 0 - _EnvironmentReflections: 1 - _GlossMapScale: 0 - _Glossiness: 0 @@ -113,12 +122,13 @@ Material: - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 - _SrcBlend: 1 + - _SrcBlendAlpha: 1 - _Surface: 0 - _WorkflowMode: 1 - _ZWrite: 1 m_Colors: - _BaseColor: {r: 0.5019608, g: 0.5019608, b: 0.5019608, a: 1} - - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _Color: {r: 0.5019608, g: 0.5019608, b: 0.5019608, a: 1} - _EmissionColor: {r: 1.4369788, g: 1.8075757, b: 2.3056736, a: 1} - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} m_BuildTextureStacks: [] diff --git a/Assets/Materials/StudioLight_Bright.mat b/Assets/Materials/StudioLight_Bright.mat index 43f5115dd..2856c34ec 100644 --- a/Assets/Materials/StudioLight_Bright.mat +++ b/Assets/Materials/StudioLight_Bright.mat @@ -12,17 +12,21 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 4 + version: 7 --- !u!21 &2100000 Material: - serializedVersion: 6 + serializedVersion: 8 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: StudioLight_Bright m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} - m_ShaderKeywords: _EMISSION + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _EMISSION + m_InvalidKeywords: [] m_LightmapFlags: 2 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 @@ -30,6 +34,7 @@ Material: stringTagMap: RenderType: Opaque disabledShaderPasses: [] + m_LockedProperties: m_SavedProperties: serializedVersion: 3 m_TexEnvs: @@ -89,9 +94,12 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + m_Ints: [] m_Floats: - _AlphaClip: 0 + - _AlphaToMask: 0 - _Blend: 0 + - _BlendModePreserveSpecular: 1 - _BumpScale: 1 - _ClearCoatMask: 0 - _ClearCoatSmoothness: 0 @@ -100,6 +108,7 @@ Material: - _DetailAlbedoMapScale: 1 - _DetailNormalMapScale: 1 - _DstBlend: 0 + - _DstBlendAlpha: 0 - _EnvironmentReflections: 1 - _GlossMapScale: 0 - _Glossiness: 0 @@ -113,6 +122,7 @@ Material: - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 - _SrcBlend: 1 + - _SrcBlendAlpha: 1 - _Surface: 0 - _WorkflowMode: 1 - _ZWrite: 1 diff --git a/Assets/Materials/Terrain.mat b/Assets/Materials/Terrain.mat index 20c532b99..110f5b0e2 100644 --- a/Assets/Materials/Terrain.mat +++ b/Assets/Materials/Terrain.mat @@ -12,23 +12,29 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 4 + version: 7 --- !u!21 &2100000 Material: - serializedVersion: 6 + serializedVersion: 8 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: Terrain m_Shader: {fileID: 4800000, guid: 69c1f799e772cb6438f56c23efccb782, type: 3} - m_ShaderKeywords: + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _TERRAIN_BLEND_HEIGHT + - _TERRAIN_INSTANCED_PERPIXEL_NORMAL + m_InvalidKeywords: [] m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 m_CustomRenderQueue: 2500 stringTagMap: {} disabledShaderPasses: [] + m_LockedProperties: m_SavedProperties: serializedVersion: 3 m_TexEnvs: @@ -116,6 +122,7 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + m_Ints: [] m_Floats: - _AlphaClip: 0 - _Blend: 0 @@ -123,7 +130,7 @@ Material: - _Cull: 2 - _Cutoff: 0.5 - _DstBlend: 0 - - _EnableHeightBlend: 0 + - _EnableHeightBlend: 1 - _EnableInstancedPerPixelNormal: 1 - _EnvironmentReflections: 1 - _GlossMapScale: 0 diff --git a/Assets/Model.meta b/Assets/Model.meta new file mode 100644 index 000000000..9db8c4291 --- /dev/null +++ b/Assets/Model.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4d1000cff02ce604cb0ccd2bbf7d20f7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Model/Defence 1.onnx b/Assets/Model/Defence 1.onnx new file mode 100644 index 000000000..c0e8cd127 Binary files /dev/null and b/Assets/Model/Defence 1.onnx differ diff --git a/Assets/Model/Defence 1.onnx.meta b/Assets/Model/Defence 1.onnx.meta new file mode 100644 index 000000000..a46f8088e --- /dev/null +++ b/Assets/Model/Defence 1.onnx.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: 30e41c972d1bab844be1750ade1b1479 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 683b6cb6d0a474744822c888b46772c9, type: 3} + optimizeModel: 1 + forceArbitraryBatchSize: 1 + treatErrorsAsWarnings: 0 + importMode: 1 + weightsTypeMode: 0 + activationTypeMode: 0 diff --git a/Assets/Model/Defence 2.onnx b/Assets/Model/Defence 2.onnx new file mode 100644 index 000000000..af634571f Binary files /dev/null and b/Assets/Model/Defence 2.onnx differ diff --git a/Assets/Model/Defence 2.onnx.meta b/Assets/Model/Defence 2.onnx.meta new file mode 100644 index 000000000..10a03e1f6 --- /dev/null +++ b/Assets/Model/Defence 2.onnx.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: aa6159e3ceabedd489047f475bf37a09 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 683b6cb6d0a474744822c888b46772c9, type: 3} + optimizeModel: 1 + forceArbitraryBatchSize: 1 + treatErrorsAsWarnings: 0 + importMode: 1 + weightsTypeMode: 0 + activationTypeMode: 0 diff --git a/Assets/Model/Defence-3854588.onnx b/Assets/Model/Defence-3854588.onnx new file mode 100644 index 000000000..d7c50b449 Binary files /dev/null and b/Assets/Model/Defence-3854588.onnx differ diff --git a/Assets/Model/Defence-3854588.onnx.meta b/Assets/Model/Defence-3854588.onnx.meta new file mode 100644 index 000000000..fd866e8ba --- /dev/null +++ b/Assets/Model/Defence-3854588.onnx.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: f8a3d74d403eb9c49be7fac1fd4080b7 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 683b6cb6d0a474744822c888b46772c9, type: 3} + optimizeModel: 1 + forceArbitraryBatchSize: 1 + treatErrorsAsWarnings: 0 + importMode: 1 + weightsTypeMode: 0 + activationTypeMode: 0 diff --git a/Assets/Model/Defence-5499994.onnx b/Assets/Model/Defence-5499994.onnx new file mode 100644 index 000000000..8c597e8fc Binary files /dev/null and b/Assets/Model/Defence-5499994.onnx differ diff --git a/Assets/Model/Defence-5499994.onnx.meta b/Assets/Model/Defence-5499994.onnx.meta new file mode 100644 index 000000000..4f082d84e --- /dev/null +++ b/Assets/Model/Defence-5499994.onnx.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: ad248a0b8d8b4304c84e5855636d0373 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 683b6cb6d0a474744822c888b46772c9, type: 3} + optimizeModel: 1 + forceArbitraryBatchSize: 1 + treatErrorsAsWarnings: 0 + importMode: 1 + weightsTypeMode: 0 + activationTypeMode: 0 diff --git a/Assets/Model/Defence-5999996.onnx b/Assets/Model/Defence-5999996.onnx new file mode 100644 index 000000000..11d4a45c0 Binary files /dev/null and b/Assets/Model/Defence-5999996.onnx differ diff --git a/Assets/Model/Defence-5999996.onnx.meta b/Assets/Model/Defence-5999996.onnx.meta new file mode 100644 index 000000000..145666dd2 --- /dev/null +++ b/Assets/Model/Defence-5999996.onnx.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: 7cd9c994e01a12a4882646e01da0f61b +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 683b6cb6d0a474744822c888b46772c9, type: 3} + optimizeModel: 1 + forceArbitraryBatchSize: 1 + treatErrorsAsWarnings: 0 + importMode: 1 + weightsTypeMode: 0 + activationTypeMode: 0 diff --git a/Assets/Model/Defence.onnx b/Assets/Model/Defence.onnx new file mode 100644 index 000000000..f56cf71b4 Binary files /dev/null and b/Assets/Model/Defence.onnx differ diff --git a/Assets/Model/Defence.onnx.meta b/Assets/Model/Defence.onnx.meta new file mode 100644 index 000000000..b3f4571d5 --- /dev/null +++ b/Assets/Model/Defence.onnx.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: c8af781d8c13ec64baebab9cc3b9a478 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 683b6cb6d0a474744822c888b46772c9, type: 3} + optimizeModel: 1 + forceArbitraryBatchSize: 1 + treatErrorsAsWarnings: 0 + importMode: 1 + weightsTypeMode: 0 + activationTypeMode: 0 diff --git a/Assets/NavMeshComponents/Editor.meta b/Assets/NavMeshComponents/Editor.meta deleted file mode 100755 index 9ca8ba655..000000000 --- a/Assets/NavMeshComponents/Editor.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: 63b588f3892bb4b5eb73ad3d2791e05c -folderAsset: yes -timeCreated: 1477656493 -licenseType: Pro -DefaultImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/NavMeshComponents/Editor/NavMeshAssetManager.cs b/Assets/NavMeshComponents/Editor/NavMeshAssetManager.cs deleted file mode 100755 index 64107b9f2..000000000 --- a/Assets/NavMeshComponents/Editor/NavMeshAssetManager.cs +++ /dev/null @@ -1,325 +0,0 @@ -using System.Collections.Generic; -using System.IO; -using UnityEditor.Experimental.SceneManagement; -using UnityEditor.SceneManagement; -using UnityEngine.AI; -using UnityEngine; - -namespace UnityEditor.AI -{ - public class NavMeshAssetManager : ScriptableSingleton - { - internal struct AsyncBakeOperation - { - public NavMeshSurface surface; - public NavMeshData bakeData; - public AsyncOperation bakeOperation; - } - - List m_BakeOperations = new List(); - internal List GetBakeOperations() { return m_BakeOperations; } - - struct SavedPrefabNavMeshData - { - public NavMeshSurface surface; - public NavMeshData navMeshData; - } - - List m_PrefabNavMeshDataAssets = new List(); - - static string GetAndEnsureTargetPath(NavMeshSurface surface) - { - // Create directory for the asset if it does not exist yet. - var activeScenePath = surface.gameObject.scene.path; - - var targetPath = "Assets"; - if (!string.IsNullOrEmpty(activeScenePath)) - { - targetPath = Path.Combine(Path.GetDirectoryName(activeScenePath), Path.GetFileNameWithoutExtension(activeScenePath)); - } - else - { - var prefabStage = PrefabStageUtility.GetPrefabStage(surface.gameObject); - var isPartOfPrefab = prefabStage != null && prefabStage.IsPartOfPrefabContents(surface.gameObject); - if (isPartOfPrefab && !string.IsNullOrEmpty(prefabStage.assetPath)) - { - var prefabDirectoryName = Path.GetDirectoryName(prefabStage.assetPath); - if (!string.IsNullOrEmpty(prefabDirectoryName)) - targetPath = prefabDirectoryName; - } - } - if (!Directory.Exists(targetPath)) - Directory.CreateDirectory(targetPath); - return targetPath; - } - - static void CreateNavMeshAsset(NavMeshSurface surface) - { - var targetPath = GetAndEnsureTargetPath(surface); - - var combinedAssetPath = Path.Combine(targetPath, "NavMesh-" + surface.name + ".asset"); - combinedAssetPath = AssetDatabase.GenerateUniqueAssetPath(combinedAssetPath); - AssetDatabase.CreateAsset(surface.navMeshData, combinedAssetPath); - } - - NavMeshData GetNavMeshAssetToDelete(NavMeshSurface navSurface) - { - if (PrefabUtility.IsPartOfPrefabInstance(navSurface) && !PrefabUtility.IsPartOfModelPrefab(navSurface)) - { - // Don't allow deleting the asset belonging to the prefab parent - var parentSurface = PrefabUtility.GetCorrespondingObjectFromSource(navSurface) as NavMeshSurface; - if (parentSurface && navSurface.navMeshData == parentSurface.navMeshData) - return null; - } - - // Do not delete the NavMeshData asset referenced from a prefab until the prefab is saved - var prefabStage = PrefabStageUtility.GetPrefabStage(navSurface.gameObject); - var isPartOfPrefab = prefabStage != null && prefabStage.IsPartOfPrefabContents(navSurface.gameObject); - if (isPartOfPrefab && IsCurrentPrefabNavMeshDataStored(navSurface)) - return null; - - return navSurface.navMeshData; - } - - void ClearSurface(NavMeshSurface navSurface) - { - var hasNavMeshData = navSurface.navMeshData != null; - StoreNavMeshDataIfInPrefab(navSurface); - - var assetToDelete = GetNavMeshAssetToDelete(navSurface); - navSurface.RemoveData(); - - if (hasNavMeshData) - { - SetNavMeshData(navSurface, null); - EditorSceneManager.MarkSceneDirty(navSurface.gameObject.scene); - } - - if (assetToDelete) - AssetDatabase.DeleteAsset(AssetDatabase.GetAssetPath(assetToDelete)); - } - - public void StartBakingSurfaces(UnityEngine.Object[] surfaces) - { - // Remove first to avoid double registration of the callback - EditorApplication.update -= UpdateAsyncBuildOperations; - EditorApplication.update += UpdateAsyncBuildOperations; - - foreach (NavMeshSurface surf in surfaces) - { - StoreNavMeshDataIfInPrefab(surf); - - var oper = new AsyncBakeOperation(); - - oper.bakeData = InitializeBakeData(surf); - oper.bakeOperation = surf.UpdateNavMesh(oper.bakeData); - oper.surface = surf; - - m_BakeOperations.Add(oper); - } - } - - static NavMeshData InitializeBakeData(NavMeshSurface surface) - { - var emptySources = new List(); - var emptyBounds = new Bounds(); - return UnityEngine.AI.NavMeshBuilder.BuildNavMeshData(surface.GetBuildSettings(), emptySources, emptyBounds - , surface.transform.position, surface.transform.rotation); - } - - void UpdateAsyncBuildOperations() - { - foreach (var oper in m_BakeOperations) - { - if (oper.surface == null || oper.bakeOperation == null) - continue; - - if (oper.bakeOperation.isDone) - { - var surface = oper.surface; - var delete = GetNavMeshAssetToDelete(surface); - if (delete != null) - AssetDatabase.DeleteAsset(AssetDatabase.GetAssetPath(delete)); - - surface.RemoveData(); - SetNavMeshData(surface, oper.bakeData); - - if (surface.isActiveAndEnabled) - surface.AddData(); - CreateNavMeshAsset(surface); - EditorSceneManager.MarkSceneDirty(surface.gameObject.scene); - } - } - m_BakeOperations.RemoveAll(o => o.bakeOperation == null || o.bakeOperation.isDone); - if (m_BakeOperations.Count == 0) - EditorApplication.update -= UpdateAsyncBuildOperations; - } - - public bool IsSurfaceBaking(NavMeshSurface surface) - { - if (surface == null) - return false; - - foreach (var oper in m_BakeOperations) - { - if (oper.surface == null || oper.bakeOperation == null) - continue; - - if (oper.surface == surface) - return true; - } - - return false; - } - - public void ClearSurfaces(UnityEngine.Object[] surfaces) - { - foreach (NavMeshSurface s in surfaces) - ClearSurface(s); - } - - static void SetNavMeshData(NavMeshSurface navSurface, NavMeshData navMeshData) - { - var so = new SerializedObject(navSurface); - var navMeshDataProperty = so.FindProperty("m_NavMeshData"); - navMeshDataProperty.objectReferenceValue = navMeshData; - so.ApplyModifiedPropertiesWithoutUndo(); - } - - void StoreNavMeshDataIfInPrefab(NavMeshSurface surfaceToStore) - { - var prefabStage = PrefabStageUtility.GetPrefabStage(surfaceToStore.gameObject); - var isPartOfPrefab = prefabStage != null && prefabStage.IsPartOfPrefabContents(surfaceToStore.gameObject); - if (!isPartOfPrefab) - return; - - // check if data has already been stored for this surface - foreach (var storedAssetInfo in m_PrefabNavMeshDataAssets) - if (storedAssetInfo.surface == surfaceToStore) - return; - - if (m_PrefabNavMeshDataAssets.Count == 0) - { - PrefabStage.prefabSaving -= DeleteStoredNavMeshDataAssetsForOwnedSurfaces; - PrefabStage.prefabSaving += DeleteStoredNavMeshDataAssetsForOwnedSurfaces; - - PrefabStage.prefabStageClosing -= ForgetUnsavedNavMeshDataChanges; - PrefabStage.prefabStageClosing += ForgetUnsavedNavMeshDataChanges; - } - - var isDataOwner = true; - if (PrefabUtility.IsPartOfPrefabInstance(surfaceToStore) && !PrefabUtility.IsPartOfModelPrefab(surfaceToStore)) - { - var basePrefabSurface = PrefabUtility.GetCorrespondingObjectFromSource(surfaceToStore) as NavMeshSurface; - isDataOwner = basePrefabSurface == null || surfaceToStore.navMeshData != basePrefabSurface.navMeshData; - } - m_PrefabNavMeshDataAssets.Add(new SavedPrefabNavMeshData { surface = surfaceToStore, navMeshData = isDataOwner ? surfaceToStore.navMeshData : null }); - } - - bool IsCurrentPrefabNavMeshDataStored(NavMeshSurface surface) - { - if (surface == null) - return false; - - foreach (var storedAssetInfo in m_PrefabNavMeshDataAssets) - { - if (storedAssetInfo.surface == surface) - return storedAssetInfo.navMeshData == surface.navMeshData; - } - - return false; - } - - void DeleteStoredNavMeshDataAssetsForOwnedSurfaces(GameObject gameObjectInPrefab) - { - // Debug.LogFormat("DeleteStoredNavMeshDataAsset() when saving prefab {0}", gameObjectInPrefab.name); - - var surfaces = gameObjectInPrefab.GetComponentsInChildren(true); - foreach (var surface in surfaces) - DeleteStoredPrefabNavMeshDataAsset(surface); - } - - void DeleteStoredPrefabNavMeshDataAsset(NavMeshSurface surface) - { - for (var i = m_PrefabNavMeshDataAssets.Count - 1; i >= 0; i--) - { - var storedAssetInfo = m_PrefabNavMeshDataAssets[i]; - if (storedAssetInfo.surface == surface) - { - var storedNavMeshData = storedAssetInfo.navMeshData; - if (storedNavMeshData != null && storedNavMeshData != surface.navMeshData) - { - var assetPath = AssetDatabase.GetAssetPath(storedNavMeshData); - AssetDatabase.DeleteAsset(assetPath); - } - - m_PrefabNavMeshDataAssets.RemoveAt(i); - break; - } - } - - if (m_PrefabNavMeshDataAssets.Count == 0) - { - PrefabStage.prefabSaving -= DeleteStoredNavMeshDataAssetsForOwnedSurfaces; - PrefabStage.prefabStageClosing -= ForgetUnsavedNavMeshDataChanges; - } - } - - void ForgetUnsavedNavMeshDataChanges(PrefabStage prefabStage) - { - // Debug.Log("On prefab closing - forget about this object's surfaces and stop caring about prefab saving"); - - if (prefabStage == null) - return; - - var allSurfacesInPrefab = prefabStage.prefabContentsRoot.GetComponentsInChildren(true); - NavMeshSurface surfaceInPrefab = null; - var index = 0; - do - { - if (allSurfacesInPrefab.Length > 0) - surfaceInPrefab = allSurfacesInPrefab[index]; - - for (var i = m_PrefabNavMeshDataAssets.Count - 1; i >= 0; i--) - { - var storedPrefabInfo = m_PrefabNavMeshDataAssets[i]; - if (storedPrefabInfo.surface == null) - { - // Debug.LogFormat("A surface from the prefab got deleted after it has baked a new NavMesh but it hasn't saved it. Now the unsaved asset gets deleted. ({0})", storedPrefabInfo.navMeshData); - - // surface got deleted, thus delete its initial NavMeshData asset - if (storedPrefabInfo.navMeshData != null) - { - var assetPath = AssetDatabase.GetAssetPath(storedPrefabInfo.navMeshData); - AssetDatabase.DeleteAsset(assetPath); - } - - m_PrefabNavMeshDataAssets.RemoveAt(i); - } - else if (surfaceInPrefab != null && storedPrefabInfo.surface == surfaceInPrefab) - { - //Debug.LogFormat("The surface {0} from the prefab was storing the original navmesh data and now will be forgotten", surfaceInPrefab); - - var baseSurface = PrefabUtility.GetCorrespondingObjectFromSource(surfaceInPrefab) as NavMeshSurface; - if (baseSurface == null || surfaceInPrefab.navMeshData != baseSurface.navMeshData) - { - var assetPath = AssetDatabase.GetAssetPath(surfaceInPrefab.navMeshData); - AssetDatabase.DeleteAsset(assetPath); - - //Debug.LogFormat("The surface {0} from the prefab has baked new NavMeshData but did not save this change so the asset has been now deleted. ({1})", - // surfaceInPrefab, assetPath); - } - - m_PrefabNavMeshDataAssets.RemoveAt(i); - } - } - } while (++index < allSurfacesInPrefab.Length); - - if (m_PrefabNavMeshDataAssets.Count == 0) - { - PrefabStage.prefabSaving -= DeleteStoredNavMeshDataAssetsForOwnedSurfaces; - PrefabStage.prefabStageClosing -= ForgetUnsavedNavMeshDataChanges; - } - } - } -} diff --git a/Assets/NavMeshComponents/Editor/NavMeshComponentsEditor.asmdef b/Assets/NavMeshComponents/Editor/NavMeshComponentsEditor.asmdef deleted file mode 100755 index 3c9827e71..000000000 --- a/Assets/NavMeshComponents/Editor/NavMeshComponentsEditor.asmdef +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "NavMeshComponentsEditor", - "references": [ - "NavMeshComponents" - ], - "optionalUnityReferences": [], - "includePlatforms": [ - "Editor" - ], - "excludePlatforms": [], - "allowUnsafeCode": false, - "overrideReferences": false, - "precompiledReferences": [], - "autoReferenced": true, - "defineConstraints": [] -} \ No newline at end of file diff --git a/Assets/NavMeshComponents/Editor/NavMeshComponentsEditor.asmdef.meta b/Assets/NavMeshComponents/Editor/NavMeshComponentsEditor.asmdef.meta deleted file mode 100755 index 75ca4c260..000000000 --- a/Assets/NavMeshComponents/Editor/NavMeshComponentsEditor.asmdef.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 86c9d8e67265f41469be06142c397d17 -AssemblyDefinitionImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/NavMeshComponents/Editor/NavMeshComponentsGUIUtility.cs b/Assets/NavMeshComponents/Editor/NavMeshComponentsGUIUtility.cs deleted file mode 100755 index 0d3a676b6..000000000 --- a/Assets/NavMeshComponents/Editor/NavMeshComponentsGUIUtility.cs +++ /dev/null @@ -1,258 +0,0 @@ -using UnityEngine; -using UnityEngine.AI; - -namespace UnityEditor.AI -{ - public static class NavMeshComponentsGUIUtility - { - public static void AreaPopup(string labelName, SerializedProperty areaProperty) - { - var areaIndex = -1; - var areaNames = GameObjectUtility.GetNavMeshAreaNames(); - for (var i = 0; i < areaNames.Length; i++) - { - var areaValue = GameObjectUtility.GetNavMeshAreaFromName(areaNames[i]); - if (areaValue == areaProperty.intValue) - areaIndex = i; - } - ArrayUtility.Add(ref areaNames, ""); - ArrayUtility.Add(ref areaNames, "Open Area Settings..."); - - var rect = EditorGUILayout.GetControlRect(true, EditorGUIUtility.singleLineHeight); - EditorGUI.BeginProperty(rect, GUIContent.none, areaProperty); - - EditorGUI.BeginChangeCheck(); - areaIndex = EditorGUI.Popup(rect, labelName, areaIndex, areaNames); - - if (EditorGUI.EndChangeCheck()) - { - if (areaIndex >= 0 && areaIndex < areaNames.Length - 2) - areaProperty.intValue = GameObjectUtility.GetNavMeshAreaFromName(areaNames[areaIndex]); - else if (areaIndex == areaNames.Length - 1) - NavMeshEditorHelpers.OpenAreaSettings(); - } - - EditorGUI.EndProperty(); - } - - public static void AgentTypePopup(string labelName, SerializedProperty agentTypeID) - { - var index = -1; - var count = NavMesh.GetSettingsCount(); - var agentTypeNames = new string[count + 2]; - for (var i = 0; i < count; i++) - { - var id = NavMesh.GetSettingsByIndex(i).agentTypeID; - var name = NavMesh.GetSettingsNameFromID(id); - agentTypeNames[i] = name; - if (id == agentTypeID.intValue) - index = i; - } - agentTypeNames[count] = ""; - agentTypeNames[count + 1] = "Open Agent Settings..."; - - bool validAgentType = index != -1; - if (!validAgentType) - { - EditorGUILayout.HelpBox("Agent Type invalid.", MessageType.Warning); - } - - var rect = EditorGUILayout.GetControlRect(true, EditorGUIUtility.singleLineHeight); - EditorGUI.BeginProperty(rect, GUIContent.none, agentTypeID); - - EditorGUI.BeginChangeCheck(); - index = EditorGUI.Popup(rect, labelName, index, agentTypeNames); - if (EditorGUI.EndChangeCheck()) - { - if (index >= 0 && index < count) - { - var id = NavMesh.GetSettingsByIndex(index).agentTypeID; - agentTypeID.intValue = id; - } - else if (index == count + 1) - { - NavMeshEditorHelpers.OpenAgentSettings(-1); - } - } - - EditorGUI.EndProperty(); - } - - // Agent mask is a set (internally array/list) of agentTypeIDs. - // It is used to describe which agents modifiers apply to. - // There is a special case of "None" which is an empty array. - // There is a special case of "All" which is an array of length 1, and value of -1. - public static void AgentMaskPopup(string labelName, SerializedProperty agentMask) - { - // Contents of the dropdown box. - string popupContent = ""; - - if (agentMask.hasMultipleDifferentValues) - popupContent = "\u2014"; - else - popupContent = GetAgentMaskLabelName(agentMask); - - var content = new GUIContent(popupContent); - var popupRect = GUILayoutUtility.GetRect(content, EditorStyles.popup); - - EditorGUI.BeginProperty(popupRect, GUIContent.none, agentMask); - popupRect = EditorGUI.PrefixLabel(popupRect, 0, new GUIContent(labelName)); - bool pressed = GUI.Button(popupRect, content, EditorStyles.popup); - - if (pressed) - { - var show = !agentMask.hasMultipleDifferentValues; - var showNone = show && agentMask.arraySize == 0; - var showAll = show && IsAll(agentMask); - - var menu = new GenericMenu(); - menu.AddItem(new GUIContent("None"), showNone, SetAgentMaskNone, agentMask); - menu.AddItem(new GUIContent("All"), showAll, SetAgentMaskAll, agentMask); - menu.AddSeparator(""); - - var count = NavMesh.GetSettingsCount(); - for (var i = 0; i < count; i++) - { - var id = NavMesh.GetSettingsByIndex(i).agentTypeID; - var sname = NavMesh.GetSettingsNameFromID(id); - - var showSelected = show && AgentMaskHasSelectedAgentTypeID(agentMask, id); - var userData = new object[] { agentMask, id, !showSelected }; - menu.AddItem(new GUIContent(sname), showSelected, ToggleAgentMaskItem, userData); - } - - menu.DropDown(popupRect); - } - - EditorGUI.EndProperty(); - } - - public static GameObject CreateAndSelectGameObject(string suggestedName, GameObject parent) - { - var parentTransform = parent != null ? parent.transform : null; - var uniqueName = GameObjectUtility.GetUniqueNameForSibling(parentTransform, suggestedName); - var child = new GameObject(uniqueName); - - Undo.RegisterCreatedObjectUndo(child, "Create " + uniqueName); - if (parentTransform != null) - Undo.SetTransformParent(child.transform, parentTransform, "Parent " + uniqueName); - - Selection.activeGameObject = child; - - return child; - } - - static bool IsAll(SerializedProperty agentMask) - { - return agentMask.arraySize == 1 && agentMask.GetArrayElementAtIndex(0).intValue == -1; - } - - static void ToggleAgentMaskItem(object userData) - { - var args = (object[])userData; - var agentMask = (SerializedProperty)args[0]; - var agentTypeID = (int)args[1]; - var value = (bool)args[2]; - - ToggleAgentMaskItem(agentMask, agentTypeID, value); - } - - static void ToggleAgentMaskItem(SerializedProperty agentMask, int agentTypeID, bool value) - { - if (agentMask.hasMultipleDifferentValues) - { - agentMask.ClearArray(); - agentMask.serializedObject.ApplyModifiedProperties(); - } - - // Find which index this agent type is in the agentMask array. - int idx = -1; - for (var j = 0; j < agentMask.arraySize; j++) - { - var elem = agentMask.GetArrayElementAtIndex(j); - if (elem.intValue == agentTypeID) - idx = j; - } - - // Handle "All" special case. - if (IsAll(agentMask)) - { - agentMask.DeleteArrayElementAtIndex(0); - } - - // Toggle value. - if (value) - { - if (idx == -1) - { - agentMask.InsertArrayElementAtIndex(agentMask.arraySize); - agentMask.GetArrayElementAtIndex(agentMask.arraySize - 1).intValue = agentTypeID; - } - } - else - { - if (idx != -1) - { - agentMask.DeleteArrayElementAtIndex(idx); - } - } - - agentMask.serializedObject.ApplyModifiedProperties(); - } - - static void SetAgentMaskNone(object data) - { - var agentMask = (SerializedProperty)data; - agentMask.ClearArray(); - agentMask.serializedObject.ApplyModifiedProperties(); - } - - static void SetAgentMaskAll(object data) - { - var agentMask = (SerializedProperty)data; - agentMask.ClearArray(); - agentMask.InsertArrayElementAtIndex(0); - agentMask.GetArrayElementAtIndex(0).intValue = -1; - agentMask.serializedObject.ApplyModifiedProperties(); - } - - static string GetAgentMaskLabelName(SerializedProperty agentMask) - { - if (agentMask.arraySize == 0) - return "None"; - - if (IsAll(agentMask)) - return "All"; - - if (agentMask.arraySize <= 3) - { - var labelName = ""; - for (var j = 0; j < agentMask.arraySize; j++) - { - var elem = agentMask.GetArrayElementAtIndex(j); - var settingsName = NavMesh.GetSettingsNameFromID(elem.intValue); - if (string.IsNullOrEmpty(settingsName)) - continue; - - if (labelName.Length > 0) - labelName += ", "; - labelName += settingsName; - } - return labelName; - } - - return "Mixed..."; - } - - static bool AgentMaskHasSelectedAgentTypeID(SerializedProperty agentMask, int agentTypeID) - { - for (var j = 0; j < agentMask.arraySize; j++) - { - var elem = agentMask.GetArrayElementAtIndex(j); - if (elem.intValue == agentTypeID) - return true; - } - return false; - } - } -} diff --git a/Assets/NavMeshComponents/Editor/NavMeshLinkEditor.cs b/Assets/NavMeshComponents/Editor/NavMeshLinkEditor.cs deleted file mode 100755 index cc4941b53..000000000 --- a/Assets/NavMeshComponents/Editor/NavMeshLinkEditor.cs +++ /dev/null @@ -1,279 +0,0 @@ -using UnityEngine; -using UnityEngine.AI; - -namespace UnityEditor.AI -{ - [CanEditMultipleObjects] - [CustomEditor(typeof(NavMeshLink))] - class NavMeshLinkEditor : Editor - { - SerializedProperty m_AgentTypeID; - SerializedProperty m_Area; - SerializedProperty m_CostModifier; - SerializedProperty m_AutoUpdatePosition; - SerializedProperty m_Bidirectional; - SerializedProperty m_EndPoint; - SerializedProperty m_StartPoint; - SerializedProperty m_Width; - - static int s_SelectedID; - static int s_SelectedPoint = -1; - - static Color s_HandleColor = new Color(255f, 167f, 39f, 210f) / 255; - static Color s_HandleColorDisabled = new Color(255f * 0.75f, 167f * 0.75f, 39f * 0.75f, 100f) / 255; - - void OnEnable() - { - m_AgentTypeID = serializedObject.FindProperty("m_AgentTypeID"); - m_Area = serializedObject.FindProperty("m_Area"); - m_CostModifier = serializedObject.FindProperty("m_CostModifier"); - m_AutoUpdatePosition = serializedObject.FindProperty("m_AutoUpdatePosition"); - m_Bidirectional = serializedObject.FindProperty("m_Bidirectional"); - m_EndPoint = serializedObject.FindProperty("m_EndPoint"); - m_StartPoint = serializedObject.FindProperty("m_StartPoint"); - m_Width = serializedObject.FindProperty("m_Width"); - - s_SelectedID = 0; - s_SelectedPoint = -1; - - NavMeshVisualizationSettings.showNavigation++; - } - - void OnDisable() - { - NavMeshVisualizationSettings.showNavigation--; - } - - static Matrix4x4 UnscaledLocalToWorldMatrix(Transform t) - { - return Matrix4x4.TRS(t.position, t.rotation, Vector3.one); - } - - void AlignTransformToEndPoints(NavMeshLink navLink) - { - var mat = UnscaledLocalToWorldMatrix(navLink.transform); - - var worldStartPt = mat.MultiplyPoint(navLink.startPoint); - var worldEndPt = mat.MultiplyPoint(navLink.endPoint); - - var forward = worldEndPt - worldStartPt; - var up = navLink.transform.up; - - // Flatten - forward -= Vector3.Dot(up, forward) * up; - - var transform = navLink.transform; - transform.rotation = Quaternion.LookRotation(forward, up); - transform.position = (worldEndPt + worldStartPt) * 0.5f; - transform.localScale = Vector3.one; - - navLink.startPoint = transform.InverseTransformPoint(worldStartPt); - navLink.endPoint = transform.InverseTransformPoint(worldEndPt); - } - - public override void OnInspectorGUI() - { - serializedObject.Update(); - - NavMeshComponentsGUIUtility.AgentTypePopup("Agent Type", m_AgentTypeID); - EditorGUILayout.Space(); - - EditorGUILayout.PropertyField(m_StartPoint); - EditorGUILayout.PropertyField(m_EndPoint); - - GUILayout.BeginHorizontal(); - GUILayout.Space(EditorGUIUtility.labelWidth); - if (GUILayout.Button("Swap")) - { - foreach (NavMeshLink navLink in targets) - { - var tmp = navLink.startPoint; - navLink.startPoint = navLink.endPoint; - navLink.endPoint = tmp; - } - SceneView.RepaintAll(); - } - if (GUILayout.Button("Align Transform")) - { - foreach (NavMeshLink navLink in targets) - { - Undo.RecordObject(navLink.transform, "Align Transform to End Points"); - Undo.RecordObject(navLink, "Align Transform to End Points"); - AlignTransformToEndPoints(navLink); - } - SceneView.RepaintAll(); - } - GUILayout.EndHorizontal(); - EditorGUILayout.Space(); - - EditorGUILayout.PropertyField(m_Width); - EditorGUILayout.PropertyField(m_CostModifier); - EditorGUILayout.PropertyField(m_AutoUpdatePosition); - EditorGUILayout.PropertyField(m_Bidirectional); - - NavMeshComponentsGUIUtility.AreaPopup("Area Type", m_Area); - - serializedObject.ApplyModifiedProperties(); - - EditorGUILayout.Space(); - } - - static Vector3 CalcLinkRight(NavMeshLink navLink) - { - var dir = navLink.endPoint - navLink.startPoint; - return (new Vector3(-dir.z, 0.0f, dir.x)).normalized; - } - - static void DrawLink(NavMeshLink navLink) - { - var right = CalcLinkRight(navLink); - var rad = navLink.width * 0.5f; - - Gizmos.DrawLine(navLink.startPoint - right * rad, navLink.startPoint + right * rad); - Gizmos.DrawLine(navLink.endPoint - right * rad, navLink.endPoint + right * rad); - Gizmos.DrawLine(navLink.startPoint - right * rad, navLink.endPoint - right * rad); - Gizmos.DrawLine(navLink.startPoint + right * rad, navLink.endPoint + right * rad); - } - - [DrawGizmo(GizmoType.Selected | GizmoType.Active | GizmoType.Pickable)] - static void RenderBoxGizmo(NavMeshLink navLink, GizmoType gizmoType) - { - if (!EditorApplication.isPlaying) - navLink.UpdateLink(); - - var color = s_HandleColor; - if (!navLink.enabled) - color = s_HandleColorDisabled; - - var oldColor = Gizmos.color; - var oldMatrix = Gizmos.matrix; - - Gizmos.matrix = UnscaledLocalToWorldMatrix(navLink.transform); - - Gizmos.color = color; - DrawLink(navLink); - - Gizmos.matrix = oldMatrix; - Gizmos.color = oldColor; - - Gizmos.DrawIcon(navLink.transform.position, "NavMeshLink Icon", true); - } - - [DrawGizmo(GizmoType.NotInSelectionHierarchy | GizmoType.Pickable)] - static void RenderBoxGizmoNotSelected(NavMeshLink navLink, GizmoType gizmoType) - { - if (NavMeshVisualizationSettings.showNavigation > 0) - { - var color = s_HandleColor; - if (!navLink.enabled) - color = s_HandleColorDisabled; - - var oldColor = Gizmos.color; - var oldMatrix = Gizmos.matrix; - - Gizmos.matrix = UnscaledLocalToWorldMatrix(navLink.transform); - - Gizmos.color = color; - DrawLink(navLink); - - Gizmos.matrix = oldMatrix; - Gizmos.color = oldColor; - } - - Gizmos.DrawIcon(navLink.transform.position, "NavMeshLink Icon", true); - } - - public void OnSceneGUI() - { - var navLink = (NavMeshLink)target; - if (!navLink.enabled) - return; - - var mat = UnscaledLocalToWorldMatrix(navLink.transform); - - var startPt = mat.MultiplyPoint(navLink.startPoint); - var endPt = mat.MultiplyPoint(navLink.endPoint); - var midPt = Vector3.Lerp(startPt, endPt, 0.35f); - var startSize = HandleUtility.GetHandleSize(startPt); - var endSize = HandleUtility.GetHandleSize(endPt); - var midSize = HandleUtility.GetHandleSize(midPt); - - var zup = Quaternion.FromToRotation(Vector3.forward, Vector3.up); - var right = mat.MultiplyVector(CalcLinkRight(navLink)); - - var oldColor = Handles.color; - Handles.color = s_HandleColor; - - Vector3 pos; - - if (navLink.GetInstanceID() == s_SelectedID && s_SelectedPoint == 0) - { - EditorGUI.BeginChangeCheck(); - Handles.CubeHandleCap(0, startPt, zup, 0.1f * startSize, Event.current.type); - pos = Handles.PositionHandle(startPt, navLink.transform.rotation); - if (EditorGUI.EndChangeCheck()) - { - Undo.RecordObject(navLink, "Move link point"); - navLink.startPoint = mat.inverse.MultiplyPoint(pos); - } - } - else - { - if (Handles.Button(startPt, zup, 0.1f * startSize, 0.1f * startSize, Handles.CubeHandleCap)) - { - s_SelectedPoint = 0; - s_SelectedID = navLink.GetInstanceID(); - } - } - - if (navLink.GetInstanceID() == s_SelectedID && s_SelectedPoint == 1) - { - EditorGUI.BeginChangeCheck(); - Handles.CubeHandleCap(0, endPt, zup, 0.1f * startSize, Event.current.type); - pos = Handles.PositionHandle(endPt, navLink.transform.rotation); - if (EditorGUI.EndChangeCheck()) - { - Undo.RecordObject(navLink, "Move link point"); - navLink.endPoint = mat.inverse.MultiplyPoint(pos); - } - } - else - { - if (Handles.Button(endPt, zup, 0.1f * endSize, 0.1f * endSize, Handles.CubeHandleCap)) - { - s_SelectedPoint = 1; - s_SelectedID = navLink.GetInstanceID(); - } - } - - EditorGUI.BeginChangeCheck(); - pos = Handles.Slider(midPt + right * navLink.width * 0.5f, right, midSize * 0.03f, Handles.DotHandleCap, 0); - if (EditorGUI.EndChangeCheck()) - { - Undo.RecordObject(navLink, "Adjust link width"); - navLink.width = Mathf.Max(0.0f, 2.0f * Vector3.Dot(right, (pos - midPt))); - } - - EditorGUI.BeginChangeCheck(); - pos = Handles.Slider(midPt - right * navLink.width * 0.5f, -right, midSize * 0.03f, Handles.DotHandleCap, 0); - if (EditorGUI.EndChangeCheck()) - { - Undo.RecordObject(navLink, "Adjust link width"); - navLink.width = Mathf.Max(0.0f, 2.0f * Vector3.Dot(-right, (pos - midPt))); - } - - Handles.color = oldColor; - } - - [MenuItem("GameObject/AI/NavMesh Link", false, 2002)] - static public void CreateNavMeshLink(MenuCommand menuCommand) - { - var parent = menuCommand.context as GameObject; - GameObject go = NavMeshComponentsGUIUtility.CreateAndSelectGameObject("NavMesh Link", parent); - go.AddComponent(); - var view = SceneView.lastActiveSceneView; - if (view != null) - view.MoveToView(go.transform); - } - } -} diff --git a/Assets/NavMeshComponents/Editor/NavMeshModifierEditor.cs b/Assets/NavMeshComponents/Editor/NavMeshModifierEditor.cs deleted file mode 100755 index a2c636ca5..000000000 --- a/Assets/NavMeshComponents/Editor/NavMeshModifierEditor.cs +++ /dev/null @@ -1,49 +0,0 @@ -using UnityEngine.AI; - -namespace UnityEditor.AI -{ - [CanEditMultipleObjects] - [CustomEditor(typeof(NavMeshModifier))] - class NavMeshModifierEditor : Editor - { - SerializedProperty m_AffectedAgents; - SerializedProperty m_Area; - SerializedProperty m_IgnoreFromBuild; - SerializedProperty m_OverrideArea; - - void OnEnable() - { - m_AffectedAgents = serializedObject.FindProperty("m_AffectedAgents"); - m_Area = serializedObject.FindProperty("m_Area"); - m_IgnoreFromBuild = serializedObject.FindProperty("m_IgnoreFromBuild"); - m_OverrideArea = serializedObject.FindProperty("m_OverrideArea"); - - NavMeshVisualizationSettings.showNavigation++; - } - - void OnDisable() - { - NavMeshVisualizationSettings.showNavigation--; - } - - public override void OnInspectorGUI() - { - serializedObject.Update(); - - EditorGUILayout.PropertyField(m_IgnoreFromBuild); - - EditorGUILayout.PropertyField(m_OverrideArea); - if (m_OverrideArea.boolValue) - { - EditorGUI.indentLevel++; - NavMeshComponentsGUIUtility.AreaPopup("Area Type", m_Area); - EditorGUI.indentLevel--; - } - - NavMeshComponentsGUIUtility.AgentMaskPopup("Affected Agents", m_AffectedAgents); - EditorGUILayout.Space(); - - serializedObject.ApplyModifiedProperties(); - } - } -} diff --git a/Assets/NavMeshComponents/Editor/NavMeshModifierVolumeEditor.cs b/Assets/NavMeshComponents/Editor/NavMeshModifierVolumeEditor.cs deleted file mode 100755 index c8f1778fc..000000000 --- a/Assets/NavMeshComponents/Editor/NavMeshModifierVolumeEditor.cs +++ /dev/null @@ -1,146 +0,0 @@ -using UnityEditor.IMGUI.Controls; -using UnityEditorInternal; -using UnityEngine.AI; -using UnityEngine; - -namespace UnityEditor.AI -{ - [CanEditMultipleObjects] - [CustomEditor(typeof(NavMeshModifierVolume))] - class NavMeshModifierVolumeEditor : Editor - { - SerializedProperty m_AffectedAgents; - SerializedProperty m_Area; - SerializedProperty m_Center; - SerializedProperty m_Size; - - static Color s_HandleColor = new Color(187f, 138f, 240f, 210f) / 255; - static Color s_HandleColorDisabled = new Color(187f * 0.75f, 138f * 0.75f, 240f * 0.75f, 100f) / 255; - - BoxBoundsHandle m_BoundsHandle = new BoxBoundsHandle(); - - bool editingCollider - { - get { return EditMode.editMode == EditMode.SceneViewEditMode.Collider && EditMode.IsOwner(this); } - } - - void OnEnable() - { - m_AffectedAgents = serializedObject.FindProperty("m_AffectedAgents"); - m_Area = serializedObject.FindProperty("m_Area"); - m_Center = serializedObject.FindProperty("m_Center"); - m_Size = serializedObject.FindProperty("m_Size"); - - NavMeshVisualizationSettings.showNavigation++; - } - - void OnDisable() - { - NavMeshVisualizationSettings.showNavigation--; - } - - Bounds GetBounds() - { - var navModifier = (NavMeshModifierVolume)target; - return new Bounds(navModifier.transform.position, navModifier.size); - } - - public override void OnInspectorGUI() - { - serializedObject.Update(); - - EditMode.DoEditModeInspectorModeButton(EditMode.SceneViewEditMode.Collider, "Edit Volume", - EditorGUIUtility.IconContent("EditCollider"), GetBounds, this); - - EditorGUILayout.PropertyField(m_Size); - EditorGUILayout.PropertyField(m_Center); - - NavMeshComponentsGUIUtility.AreaPopup("Area Type", m_Area); - NavMeshComponentsGUIUtility.AgentMaskPopup("Affected Agents", m_AffectedAgents); - EditorGUILayout.Space(); - - serializedObject.ApplyModifiedProperties(); - } - - [DrawGizmo(GizmoType.Selected | GizmoType.Active)] - static void RenderBoxGizmo(NavMeshModifierVolume navModifier, GizmoType gizmoType) - { - var color = navModifier.enabled ? s_HandleColor : s_HandleColorDisabled; - var colorTrans = new Color(color.r * 0.75f, color.g * 0.75f, color.b * 0.75f, color.a * 0.15f); - - var oldColor = Gizmos.color; - var oldMatrix = Gizmos.matrix; - - Gizmos.matrix = navModifier.transform.localToWorldMatrix; - - Gizmos.color = colorTrans; - Gizmos.DrawCube(navModifier.center, navModifier.size); - - Gizmos.color = color; - Gizmos.DrawWireCube(navModifier.center, navModifier.size); - - Gizmos.matrix = oldMatrix; - Gizmos.color = oldColor; - - Gizmos.DrawIcon(navModifier.transform.position, "NavMeshModifierVolume Icon", true); - } - - [DrawGizmo(GizmoType.NotInSelectionHierarchy | GizmoType.Pickable)] - static void RenderBoxGizmoNotSelected(NavMeshModifierVolume navModifier, GizmoType gizmoType) - { - if (NavMeshVisualizationSettings.showNavigation > 0) - { - var color = navModifier.enabled ? s_HandleColor : s_HandleColorDisabled; - var oldColor = Gizmos.color; - var oldMatrix = Gizmos.matrix; - - Gizmos.matrix = navModifier.transform.localToWorldMatrix; - - Gizmos.color = color; - Gizmos.DrawWireCube(navModifier.center, navModifier.size); - - Gizmos.matrix = oldMatrix; - Gizmos.color = oldColor; - } - - Gizmos.DrawIcon(navModifier.transform.position, "NavMeshModifierVolume Icon", true); - } - - void OnSceneGUI() - { - if (!editingCollider) - return; - - var vol = (NavMeshModifierVolume)target; - var color = vol.enabled ? s_HandleColor : s_HandleColorDisabled; - using (new Handles.DrawingScope(color, vol.transform.localToWorldMatrix)) - { - m_BoundsHandle.center = vol.center; - m_BoundsHandle.size = vol.size; - - EditorGUI.BeginChangeCheck(); - m_BoundsHandle.DrawHandle(); - if (EditorGUI.EndChangeCheck()) - { - Undo.RecordObject(vol, "Modified NavMesh Modifier Volume"); - Vector3 center = m_BoundsHandle.center; - Vector3 size = m_BoundsHandle.size; - vol.center = center; - vol.size = size; - EditorUtility.SetDirty(target); - } - } - } - - [MenuItem("GameObject/AI/NavMesh Modifier Volume", false, 2001)] - static public void CreateNavMeshModifierVolume(MenuCommand menuCommand) - { - var parent = menuCommand.context as GameObject; - var go = NavMeshComponentsGUIUtility.CreateAndSelectGameObject("NavMesh Modifier Volume", parent); - go.AddComponent(); - var view = SceneView.lastActiveSceneView; - if (view != null) - view.MoveToView(go.transform); - } - } -} diff --git a/Assets/NavMeshComponents/Editor/NavMeshModifierVolumeEditor.cs.meta b/Assets/NavMeshComponents/Editor/NavMeshModifierVolumeEditor.cs.meta deleted file mode 100755 index f974eb478..000000000 --- a/Assets/NavMeshComponents/Editor/NavMeshModifierVolumeEditor.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: c0f3bef2a67ae4e139538afec3e59b03 -timeCreated: 1477036743 -licenseType: Pro -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/NavMeshComponents/Editor/NavMeshSurfaceEditor.cs b/Assets/NavMeshComponents/Editor/NavMeshSurfaceEditor.cs deleted file mode 100755 index c9f006890..000000000 --- a/Assets/NavMeshComponents/Editor/NavMeshSurfaceEditor.cs +++ /dev/null @@ -1,400 +0,0 @@ -#define NAVMESHCOMPONENTS_SHOW_NAVMESHDATA_REF - -using System.Collections.Generic; -using System.IO; -using System.Linq; -using UnityEditor.Experimental.SceneManagement; -using UnityEditor.IMGUI.Controls; -using UnityEditor.SceneManagement; -using UnityEditorInternal; -using UnityEngine.AI; -using UnityEngine; - -namespace UnityEditor.AI -{ - [CanEditMultipleObjects] - [CustomEditor(typeof(NavMeshSurface))] - class NavMeshSurfaceEditor : Editor - { - SerializedProperty m_AgentTypeID; - SerializedProperty m_BuildHeightMesh; - SerializedProperty m_Center; - SerializedProperty m_CollectObjects; - SerializedProperty m_DefaultArea; - SerializedProperty m_LayerMask; - SerializedProperty m_OverrideTileSize; - SerializedProperty m_OverrideVoxelSize; - SerializedProperty m_Size; - SerializedProperty m_TileSize; - SerializedProperty m_UseGeometry; - SerializedProperty m_VoxelSize; - -#if NAVMESHCOMPONENTS_SHOW_NAVMESHDATA_REF - SerializedProperty m_NavMeshData; -#endif - class Styles - { - public readonly GUIContent m_LayerMask = new GUIContent("Include Layers"); - - public readonly GUIContent m_ShowInputGeom = new GUIContent("Show Input Geom"); - public readonly GUIContent m_ShowVoxels = new GUIContent("Show Voxels"); - public readonly GUIContent m_ShowRegions = new GUIContent("Show Regions"); - public readonly GUIContent m_ShowRawContours = new GUIContent("Show Raw Contours"); - public readonly GUIContent m_ShowContours = new GUIContent("Show Contours"); - public readonly GUIContent m_ShowPolyMesh = new GUIContent("Show Poly Mesh"); - public readonly GUIContent m_ShowPolyMeshDetail = new GUIContent("Show Poly Mesh Detail"); - } - - static Styles s_Styles; - - static bool s_ShowDebugOptions; - - static Color s_HandleColor = new Color(127f, 214f, 244f, 100f) / 255; - static Color s_HandleColorSelected = new Color(127f, 214f, 244f, 210f) / 255; - static Color s_HandleColorDisabled = new Color(127f * 0.75f, 214f * 0.75f, 244f * 0.75f, 100f) / 255; - - BoxBoundsHandle m_BoundsHandle = new BoxBoundsHandle(); - - bool editingCollider - { - get { return EditMode.editMode == EditMode.SceneViewEditMode.Collider && EditMode.IsOwner(this); } - } - - void OnEnable() - { - m_AgentTypeID = serializedObject.FindProperty("m_AgentTypeID"); - m_BuildHeightMesh = serializedObject.FindProperty("m_BuildHeightMesh"); - m_Center = serializedObject.FindProperty("m_Center"); - m_CollectObjects = serializedObject.FindProperty("m_CollectObjects"); - m_DefaultArea = serializedObject.FindProperty("m_DefaultArea"); - m_LayerMask = serializedObject.FindProperty("m_LayerMask"); - m_OverrideTileSize = serializedObject.FindProperty("m_OverrideTileSize"); - m_OverrideVoxelSize = serializedObject.FindProperty("m_OverrideVoxelSize"); - m_Size = serializedObject.FindProperty("m_Size"); - m_TileSize = serializedObject.FindProperty("m_TileSize"); - m_UseGeometry = serializedObject.FindProperty("m_UseGeometry"); - m_VoxelSize = serializedObject.FindProperty("m_VoxelSize"); - -#if NAVMESHCOMPONENTS_SHOW_NAVMESHDATA_REF - m_NavMeshData = serializedObject.FindProperty("m_NavMeshData"); -#endif - NavMeshVisualizationSettings.showNavigation++; - } - - void OnDisable() - { - NavMeshVisualizationSettings.showNavigation--; - } - - Bounds GetBounds() - { - var navSurface = (NavMeshSurface)target; - return new Bounds(navSurface.transform.position, navSurface.size); - } - - public override void OnInspectorGUI() - { - if (s_Styles == null) - s_Styles = new Styles(); - - serializedObject.Update(); - - var bs = NavMesh.GetSettingsByID(m_AgentTypeID.intValue); - - if (bs.agentTypeID != -1) - { - // Draw image - const float diagramHeight = 80.0f; - Rect agentDiagramRect = EditorGUILayout.GetControlRect(false, diagramHeight); - NavMeshEditorHelpers.DrawAgentDiagram(agentDiagramRect, bs.agentRadius, bs.agentHeight, bs.agentClimb, bs.agentSlope); - } - NavMeshComponentsGUIUtility.AgentTypePopup("Agent Type", m_AgentTypeID); - - EditorGUILayout.Space(); - - EditorGUILayout.PropertyField(m_CollectObjects); - if ((CollectObjects)m_CollectObjects.enumValueIndex == CollectObjects.Volume) - { - EditorGUI.indentLevel++; - - EditMode.DoEditModeInspectorModeButton(EditMode.SceneViewEditMode.Collider, "Edit Volume", - EditorGUIUtility.IconContent("EditCollider"), GetBounds, this); - EditorGUILayout.PropertyField(m_Size); - EditorGUILayout.PropertyField(m_Center); - - EditorGUI.indentLevel--; - } - else - { - if (editingCollider) - EditMode.QuitEditMode(); - } - - EditorGUILayout.PropertyField(m_LayerMask, s_Styles.m_LayerMask); - EditorGUILayout.PropertyField(m_UseGeometry); - - EditorGUILayout.Space(); - - m_OverrideVoxelSize.isExpanded = EditorGUILayout.Foldout(m_OverrideVoxelSize.isExpanded, "Advanced"); - if (m_OverrideVoxelSize.isExpanded) - { - EditorGUI.indentLevel++; - - NavMeshComponentsGUIUtility.AreaPopup("Default Area", m_DefaultArea); - - // Override voxel size. - EditorGUILayout.PropertyField(m_OverrideVoxelSize); - - using (new EditorGUI.DisabledScope(!m_OverrideVoxelSize.boolValue || m_OverrideVoxelSize.hasMultipleDifferentValues)) - { - EditorGUI.indentLevel++; - - EditorGUILayout.PropertyField(m_VoxelSize); - - if (!m_OverrideVoxelSize.hasMultipleDifferentValues) - { - if (!m_AgentTypeID.hasMultipleDifferentValues) - { - float voxelsPerRadius = m_VoxelSize.floatValue > 0.0f ? (bs.agentRadius / m_VoxelSize.floatValue) : 0.0f; - EditorGUILayout.LabelField(" ", voxelsPerRadius.ToString("0.00") + " voxels per agent radius", EditorStyles.miniLabel); - } - if (m_OverrideVoxelSize.boolValue) - EditorGUILayout.HelpBox("Voxel size controls how accurately the navigation mesh is generated from the level geometry. A good voxel size is 2-4 voxels per agent radius. Making voxel size smaller will increase build time.", MessageType.None); - } - EditorGUI.indentLevel--; - } - - // Override tile size - EditorGUILayout.PropertyField(m_OverrideTileSize); - - using (new EditorGUI.DisabledScope(!m_OverrideTileSize.boolValue || m_OverrideTileSize.hasMultipleDifferentValues)) - { - EditorGUI.indentLevel++; - - EditorGUILayout.PropertyField(m_TileSize); - - if (!m_TileSize.hasMultipleDifferentValues && !m_VoxelSize.hasMultipleDifferentValues) - { - float tileWorldSize = m_TileSize.intValue * m_VoxelSize.floatValue; - EditorGUILayout.LabelField(" ", tileWorldSize.ToString("0.00") + " world units", EditorStyles.miniLabel); - } - - if (!m_OverrideTileSize.hasMultipleDifferentValues) - { - if (m_OverrideTileSize.boolValue) - EditorGUILayout.HelpBox("Tile size controls the how local the changes to the world are (rebuild or carve). Small tile size allows more local changes, while potentially generating more data overall.", MessageType.None); - } - EditorGUI.indentLevel--; - } - - - // Height mesh - using (new EditorGUI.DisabledScope(true)) - { - EditorGUILayout.PropertyField(m_BuildHeightMesh); - } - - EditorGUILayout.Space(); - EditorGUI.indentLevel--; - } - - EditorGUILayout.Space(); - - serializedObject.ApplyModifiedProperties(); - - var hadError = false; - var multipleTargets = targets.Length > 1; - foreach (NavMeshSurface navSurface in targets) - { - var settings = navSurface.GetBuildSettings(); - // Calculating bounds is potentially expensive when unbounded - so here we just use the center/size. - // It means the validation is not checking vertical voxel limit correctly when the surface is set to something else than "in volume". - var bounds = new Bounds(Vector3.zero, Vector3.zero); - if (navSurface.collectObjects == CollectObjects.Volume) - { - bounds = new Bounds(navSurface.center, navSurface.size); - } - - var errors = settings.ValidationReport(bounds); - if (errors.Length > 0) - { - if (multipleTargets) - EditorGUILayout.LabelField(navSurface.name); - foreach (var err in errors) - { - EditorGUILayout.HelpBox(err, MessageType.Warning); - } - GUILayout.BeginHorizontal(); - GUILayout.Space(EditorGUIUtility.labelWidth); - if (GUILayout.Button("Open Agent Settings...", EditorStyles.miniButton)) - NavMeshEditorHelpers.OpenAgentSettings(navSurface.agentTypeID); - GUILayout.EndHorizontal(); - hadError = true; - } - } - - if (hadError) - EditorGUILayout.Space(); - -#if NAVMESHCOMPONENTS_SHOW_NAVMESHDATA_REF - var nmdRect = EditorGUILayout.GetControlRect(true, EditorGUIUtility.singleLineHeight); - - EditorGUI.BeginProperty(nmdRect, GUIContent.none, m_NavMeshData); - var rectLabel = EditorGUI.PrefixLabel(nmdRect, GUIUtility.GetControlID(FocusType.Passive), new GUIContent(m_NavMeshData.displayName)); - EditorGUI.EndProperty(); - - using (new EditorGUI.DisabledScope(true)) - { - EditorGUI.BeginProperty(nmdRect, GUIContent.none, m_NavMeshData); - EditorGUI.ObjectField(rectLabel, m_NavMeshData, GUIContent.none); - EditorGUI.EndProperty(); - } -#endif - using (new EditorGUI.DisabledScope(Application.isPlaying || m_AgentTypeID.intValue == -1)) - { - GUILayout.BeginHorizontal(); - GUILayout.Space(EditorGUIUtility.labelWidth); - if (GUILayout.Button("Clear")) - { - NavMeshAssetManager.instance.ClearSurfaces(targets); - SceneView.RepaintAll(); - } - - if (GUILayout.Button("Bake")) - { - NavMeshAssetManager.instance.StartBakingSurfaces(targets); - } - - GUILayout.EndHorizontal(); - } - - // Show progress for the selected targets - var bakeOperations = NavMeshAssetManager.instance.GetBakeOperations(); - for (int i = bakeOperations.Count - 1; i >= 0; --i) - { - if (!targets.Contains(bakeOperations[i].surface)) - continue; - - var oper = bakeOperations[i].bakeOperation; - if (oper == null) - continue; - - var p = oper.progress; - if (oper.isDone) - { - SceneView.RepaintAll(); - continue; - } - - GUILayout.BeginHorizontal(); - - if (GUILayout.Button("Cancel", EditorStyles.miniButton)) - { - var bakeData = bakeOperations[i].bakeData; - UnityEngine.AI.NavMeshBuilder.Cancel(bakeData); - bakeOperations.RemoveAt(i); - } - - EditorGUI.ProgressBar(EditorGUILayout.GetControlRect(), p, "Baking: " + (int)(100 * p) + "%"); - if (p <= 1) - Repaint(); - - GUILayout.EndHorizontal(); - } - } - - [DrawGizmo(GizmoType.Selected | GizmoType.Active | GizmoType.Pickable)] - static void RenderBoxGizmoSelected(NavMeshSurface navSurface, GizmoType gizmoType) - { - RenderBoxGizmo(navSurface, gizmoType, true); - } - - [DrawGizmo(GizmoType.NotInSelectionHierarchy | GizmoType.Pickable)] - static void RenderBoxGizmoNotSelected(NavMeshSurface navSurface, GizmoType gizmoType) - { - if (NavMeshVisualizationSettings.showNavigation > 0) - RenderBoxGizmo(navSurface, gizmoType, false); - else - Gizmos.DrawIcon(navSurface.transform.position, "NavMeshSurface Icon", true); - } - - static void RenderBoxGizmo(NavMeshSurface navSurface, GizmoType gizmoType, bool selected) - { - var color = selected ? s_HandleColorSelected : s_HandleColor; - if (!navSurface.enabled) - color = s_HandleColorDisabled; - - var oldColor = Gizmos.color; - var oldMatrix = Gizmos.matrix; - - // Use the unscaled matrix for the NavMeshSurface - var localToWorld = Matrix4x4.TRS(navSurface.transform.position, navSurface.transform.rotation, Vector3.one); - Gizmos.matrix = localToWorld; - - if (navSurface.collectObjects == CollectObjects.Volume) - { - Gizmos.color = color; - Gizmos.DrawWireCube(navSurface.center, navSurface.size); - - if (selected && navSurface.enabled) - { - var colorTrans = new Color(color.r * 0.75f, color.g * 0.75f, color.b * 0.75f, color.a * 0.15f); - Gizmos.color = colorTrans; - Gizmos.DrawCube(navSurface.center, navSurface.size); - } - } - else - { - if (navSurface.navMeshData != null) - { - var bounds = navSurface.navMeshData.sourceBounds; - Gizmos.color = Color.grey; - Gizmos.DrawWireCube(bounds.center, bounds.size); - } - } - - Gizmos.matrix = oldMatrix; - Gizmos.color = oldColor; - - Gizmos.DrawIcon(navSurface.transform.position, "NavMeshSurface Icon", true); - } - - void OnSceneGUI() - { - if (!editingCollider) - return; - - var navSurface = (NavMeshSurface)target; - var color = navSurface.enabled ? s_HandleColor : s_HandleColorDisabled; - var localToWorld = Matrix4x4.TRS(navSurface.transform.position, navSurface.transform.rotation, Vector3.one); - using (new Handles.DrawingScope(color, localToWorld)) - { - m_BoundsHandle.center = navSurface.center; - m_BoundsHandle.size = navSurface.size; - - EditorGUI.BeginChangeCheck(); - m_BoundsHandle.DrawHandle(); - if (EditorGUI.EndChangeCheck()) - { - Undo.RecordObject(navSurface, "Modified NavMesh Surface"); - Vector3 center = m_BoundsHandle.center; - Vector3 size = m_BoundsHandle.size; - navSurface.center = center; - navSurface.size = size; - EditorUtility.SetDirty(target); - } - } - } - - [MenuItem("GameObject/AI/NavMesh Surface", false, 2000)] - public static void CreateNavMeshSurface(MenuCommand menuCommand) - { - var parent = menuCommand.context as GameObject; - var go = NavMeshComponentsGUIUtility.CreateAndSelectGameObject("NavMesh Surface", parent); - go.AddComponent(); - var view = SceneView.lastActiveSceneView; - if (view != null) - view.MoveToView(go.transform); - } - } -} diff --git a/Assets/NavMeshComponents/Scripts.meta b/Assets/NavMeshComponents/Scripts.meta deleted file mode 100755 index 1397beca8..000000000 --- a/Assets/NavMeshComponents/Scripts.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: ce67aa87f613246dda63a54a59c6399e -folderAsset: yes -timeCreated: 1477656493 -licenseType: Pro -DefaultImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/NavMeshComponents/Scripts/NavMeshComponents.asmdef b/Assets/NavMeshComponents/Scripts/NavMeshComponents.asmdef deleted file mode 100755 index a54b5c28d..000000000 --- a/Assets/NavMeshComponents/Scripts/NavMeshComponents.asmdef +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "NavMeshComponents", - "references": [], - "optionalUnityReferences": [], - "includePlatforms": [], - "excludePlatforms": [], - "allowUnsafeCode": false, - "overrideReferences": false, - "precompiledReferences": [], - "autoReferenced": true, - "defineConstraints": [] -} \ No newline at end of file diff --git a/Assets/NavMeshComponents/Scripts/NavMeshComponents.asmdef.meta b/Assets/NavMeshComponents/Scripts/NavMeshComponents.asmdef.meta deleted file mode 100755 index 5a7b65ce9..000000000 --- a/Assets/NavMeshComponents/Scripts/NavMeshComponents.asmdef.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 8c4dd21966739024fbd72155091d199e -AssemblyDefinitionImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/NavMeshComponents/Scripts/NavMeshLink.cs b/Assets/NavMeshComponents/Scripts/NavMeshLink.cs deleted file mode 100755 index 6a9210331..000000000 --- a/Assets/NavMeshComponents/Scripts/NavMeshLink.cs +++ /dev/null @@ -1,172 +0,0 @@ -using System.Collections.Generic; - -namespace UnityEngine.AI -{ - [ExecuteInEditMode] - [DefaultExecutionOrder(-101)] - [AddComponentMenu("Navigation/NavMeshLink", 33)] - [HelpURL("https://github.com/Unity-Technologies/NavMeshComponents#documentation-draft")] - public class NavMeshLink : MonoBehaviour - { - [SerializeField] - int m_AgentTypeID; - public int agentTypeID { get { return m_AgentTypeID; } set { m_AgentTypeID = value; UpdateLink(); } } - - [SerializeField] - Vector3 m_StartPoint = new Vector3(0.0f, 0.0f, -2.5f); - public Vector3 startPoint { get { return m_StartPoint; } set { m_StartPoint = value; UpdateLink(); } } - - [SerializeField] - Vector3 m_EndPoint = new Vector3(0.0f, 0.0f, 2.5f); - public Vector3 endPoint { get { return m_EndPoint; } set { m_EndPoint = value; UpdateLink(); } } - - [SerializeField] - float m_Width; - public float width { get { return m_Width; } set { m_Width = value; UpdateLink(); } } - - [SerializeField] - int m_CostModifier = -1; - public int costModifier { get { return m_CostModifier; } set { m_CostModifier = value; UpdateLink(); } } - - [SerializeField] - bool m_Bidirectional = true; - public bool bidirectional { get { return m_Bidirectional; } set { m_Bidirectional = value; UpdateLink(); } } - - [SerializeField] - bool m_AutoUpdatePosition; - public bool autoUpdate { get { return m_AutoUpdatePosition; } set { SetAutoUpdate(value); } } - - [SerializeField] - int m_Area; - public int area { get { return m_Area; } set { m_Area = value; UpdateLink(); } } - - NavMeshLinkInstance m_LinkInstance = new NavMeshLinkInstance(); - - Vector3 m_LastPosition = Vector3.zero; - Quaternion m_LastRotation = Quaternion.identity; - - static readonly List s_Tracked = new List(); - - void OnEnable() - { - AddLink(); - if (m_AutoUpdatePosition && m_LinkInstance.valid) - AddTracking(this); - } - - void OnDisable() - { - RemoveTracking(this); - m_LinkInstance.Remove(); - } - - public void UpdateLink() - { - m_LinkInstance.Remove(); - AddLink(); - } - - static void AddTracking(NavMeshLink link) - { -#if UNITY_EDITOR - if (s_Tracked.Contains(link)) - { - Debug.LogError("Link is already tracked: " + link); - return; - } -#endif - - if (s_Tracked.Count == 0) - NavMesh.onPreUpdate += UpdateTrackedInstances; - - s_Tracked.Add(link); - } - - static void RemoveTracking(NavMeshLink link) - { - s_Tracked.Remove(link); - - if (s_Tracked.Count == 0) - NavMesh.onPreUpdate -= UpdateTrackedInstances; - } - - void SetAutoUpdate(bool value) - { - if (m_AutoUpdatePosition == value) - return; - m_AutoUpdatePosition = value; - if (value) - AddTracking(this); - else - RemoveTracking(this); - } - - void AddLink() - { -#if UNITY_EDITOR - if (m_LinkInstance.valid) - { - Debug.LogError("Link is already added: " + this); - return; - } -#endif - - var link = new NavMeshLinkData(); - link.startPosition = m_StartPoint; - link.endPosition = m_EndPoint; - link.width = m_Width; - link.costModifier = m_CostModifier; - link.bidirectional = m_Bidirectional; - link.area = m_Area; - link.agentTypeID = m_AgentTypeID; - m_LinkInstance = NavMesh.AddLink(link, transform.position, transform.rotation); - if (m_LinkInstance.valid) - m_LinkInstance.owner = this; - - m_LastPosition = transform.position; - m_LastRotation = transform.rotation; - } - - bool HasTransformChanged() - { - if (m_LastPosition != transform.position) return true; - if (m_LastRotation != transform.rotation) return true; - return false; - } - - void OnDidApplyAnimationProperties() - { - UpdateLink(); - } - - static void UpdateTrackedInstances() - { - foreach (var instance in s_Tracked) - { - if (instance.HasTransformChanged()) - instance.UpdateLink(); - } - } - -#if UNITY_EDITOR - void OnValidate() - { - m_Width = Mathf.Max(0.0f, m_Width); - - if (!m_LinkInstance.valid) - return; - - UpdateLink(); - - if (!m_AutoUpdatePosition) - { - RemoveTracking(this); - } - else if (!s_Tracked.Contains(this)) - { - AddTracking(this); - } - } -#endif - } -} diff --git a/Assets/NavMeshComponents/Scripts/NavMeshLink.cs.meta b/Assets/NavMeshComponents/Scripts/NavMeshLink.cs.meta deleted file mode 100755 index 241e536e7..000000000 --- a/Assets/NavMeshComponents/Scripts/NavMeshLink.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 6eeb5dc026fdf4b488bc7ae0138ab719 -timeCreated: 1477924439 -licenseType: Pro -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {fileID: 2800000, guid: 92f4afa3e25264f5b964937ccea49ff2, type: 3} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/NavMeshComponents/Scripts/NavMeshModifier.cs b/Assets/NavMeshComponents/Scripts/NavMeshModifier.cs deleted file mode 100755 index f32e80c77..000000000 --- a/Assets/NavMeshComponents/Scripts/NavMeshModifier.cs +++ /dev/null @@ -1,54 +0,0 @@ -using System.Collections.Generic; - -namespace UnityEngine.AI -{ - [ExecuteInEditMode] - [AddComponentMenu("Navigation/NavMeshModifier", 32)] - [HelpURL("https://github.com/Unity-Technologies/NavMeshComponents#documentation-draft")] - public class NavMeshModifier : MonoBehaviour - { - [SerializeField] - bool m_OverrideArea; - public bool overrideArea { get { return m_OverrideArea; } set { m_OverrideArea = value; } } - - [SerializeField] - int m_Area; - public int area { get { return m_Area; } set { m_Area = value; } } - - [SerializeField] - bool m_IgnoreFromBuild; - public bool ignoreFromBuild { get { return m_IgnoreFromBuild; } set { m_IgnoreFromBuild = value; } } - - // List of agent types the modifier is applied for. - // Special values: empty == None, m_AffectedAgents[0] =-1 == All. - [SerializeField] - List m_AffectedAgents = new List(new int[] { -1 }); // Default value is All - - static readonly List s_NavMeshModifiers = new List(); - - public static List activeModifiers - { - get { return s_NavMeshModifiers; } - } - - void OnEnable() - { - if (!s_NavMeshModifiers.Contains(this)) - s_NavMeshModifiers.Add(this); - } - - void OnDisable() - { - s_NavMeshModifiers.Remove(this); - } - - public bool AffectsAgentType(int agentTypeID) - { - if (m_AffectedAgents.Count == 0) - return false; - if (m_AffectedAgents[0] == -1) - return true; - return m_AffectedAgents.IndexOf(agentTypeID) != -1; - } - } -} diff --git a/Assets/NavMeshComponents/Scripts/NavMeshModifier.cs.meta b/Assets/NavMeshComponents/Scripts/NavMeshModifier.cs.meta deleted file mode 100755 index 43e5dfe92..000000000 --- a/Assets/NavMeshComponents/Scripts/NavMeshModifier.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 1e3fdca004f2d45fe8abbed571a8abd5 -timeCreated: 1477924411 -licenseType: Pro -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {fileID: 2800000, guid: cc7b9475dbddf4f9088d327d6e10ab77, type: 3} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/NavMeshComponents/Scripts/NavMeshModifierVolume.cs b/Assets/NavMeshComponents/Scripts/NavMeshModifierVolume.cs deleted file mode 100755 index faa7e6301..000000000 --- a/Assets/NavMeshComponents/Scripts/NavMeshModifierVolume.cs +++ /dev/null @@ -1,54 +0,0 @@ -using System.Collections.Generic; - -namespace UnityEngine.AI -{ - [ExecuteInEditMode] - [AddComponentMenu("Navigation/NavMeshModifierVolume", 31)] - [HelpURL("https://github.com/Unity-Technologies/NavMeshComponents#documentation-draft")] - public class NavMeshModifierVolume : MonoBehaviour - { - [SerializeField] - Vector3 m_Size = new Vector3(4.0f, 3.0f, 4.0f); - public Vector3 size { get { return m_Size; } set { m_Size = value; } } - - [SerializeField] - Vector3 m_Center = new Vector3(0, 1.0f, 0); - public Vector3 center { get { return m_Center; } set { m_Center = value; } } - - [SerializeField] - int m_Area; - public int area { get { return m_Area; } set { m_Area = value; } } - - // List of agent types the modifier is applied for. - // Special values: empty == None, m_AffectedAgents[0] =-1 == All. - [SerializeField] - List m_AffectedAgents = new List(new int[] { -1 }); // Default value is All - - static readonly List s_NavMeshModifiers = new List(); - - public static List activeModifiers - { - get { return s_NavMeshModifiers; } - } - - void OnEnable() - { - if (!s_NavMeshModifiers.Contains(this)) - s_NavMeshModifiers.Add(this); - } - - void OnDisable() - { - s_NavMeshModifiers.Remove(this); - } - - public bool AffectsAgentType(int agentTypeID) - { - if (m_AffectedAgents.Count == 0) - return false; - if (m_AffectedAgents[0] == -1) - return true; - return m_AffectedAgents.IndexOf(agentTypeID) != -1; - } - } -} diff --git a/Assets/NavMeshComponents/Scripts/NavMeshModifierVolume.cs.meta b/Assets/NavMeshComponents/Scripts/NavMeshModifierVolume.cs.meta deleted file mode 100755 index 337dbe2e3..000000000 --- a/Assets/NavMeshComponents/Scripts/NavMeshModifierVolume.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 35e95dc5ff2b64380880dd7ac5922847 -timeCreated: 1477924430 -licenseType: Pro -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {fileID: 2800000, guid: cc7b9475dbddf4f9088d327d6e10ab77, type: 3} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/NavMeshComponents/Scripts/NavMeshSurface.cs b/Assets/NavMeshComponents/Scripts/NavMeshSurface.cs deleted file mode 100755 index 9fd7dab43..000000000 --- a/Assets/NavMeshComponents/Scripts/NavMeshSurface.cs +++ /dev/null @@ -1,486 +0,0 @@ -using System.Collections.Generic; -#if UNITY_EDITOR -using UnityEditor; -using UnityEditor.SceneManagement; -#endif - -namespace UnityEngine.AI -{ - public enum CollectObjects - { - All = 0, - Volume = 1, - Children = 2, - } - - [ExecuteAlways] - [DefaultExecutionOrder(-102)] - [AddComponentMenu("Navigation/NavMeshSurface", 30)] - [HelpURL("https://github.com/Unity-Technologies/NavMeshComponents#documentation-draft")] - public class NavMeshSurface : MonoBehaviour - { - [SerializeField] - int m_AgentTypeID; - public int agentTypeID { get { return m_AgentTypeID; } set { m_AgentTypeID = value; } } - - [SerializeField] - CollectObjects m_CollectObjects = CollectObjects.All; - public CollectObjects collectObjects { get { return m_CollectObjects; } set { m_CollectObjects = value; } } - - [SerializeField] - Vector3 m_Size = new Vector3(10.0f, 10.0f, 10.0f); - public Vector3 size { get { return m_Size; } set { m_Size = value; } } - - [SerializeField] - Vector3 m_Center = new Vector3(0, 2.0f, 0); - public Vector3 center { get { return m_Center; } set { m_Center = value; } } - - [SerializeField] - LayerMask m_LayerMask = ~0; - public LayerMask layerMask { get { return m_LayerMask; } set { m_LayerMask = value; } } - - [SerializeField] - NavMeshCollectGeometry m_UseGeometry = NavMeshCollectGeometry.RenderMeshes; - public NavMeshCollectGeometry useGeometry { get { return m_UseGeometry; } set { m_UseGeometry = value; } } - - [SerializeField] - int m_DefaultArea; - public int defaultArea { get { return m_DefaultArea; } set { m_DefaultArea = value; } } - - [SerializeField] - bool m_IgnoreNavMeshAgent = true; - public bool ignoreNavMeshAgent { get { return m_IgnoreNavMeshAgent; } set { m_IgnoreNavMeshAgent = value; } } - - [SerializeField] - bool m_IgnoreNavMeshObstacle = true; - public bool ignoreNavMeshObstacle { get { return m_IgnoreNavMeshObstacle; } set { m_IgnoreNavMeshObstacle = value; } } - - [SerializeField] - bool m_OverrideTileSize; - public bool overrideTileSize { get { return m_OverrideTileSize; } set { m_OverrideTileSize = value; } } - [SerializeField] - int m_TileSize = 256; - public int tileSize { get { return m_TileSize; } set { m_TileSize = value; } } - [SerializeField] - bool m_OverrideVoxelSize; - public bool overrideVoxelSize { get { return m_OverrideVoxelSize; } set { m_OverrideVoxelSize = value; } } - [SerializeField] - float m_VoxelSize; - public float voxelSize { get { return m_VoxelSize; } set { m_VoxelSize = value; } } - - // Currently not supported advanced options - [SerializeField] - bool m_BuildHeightMesh; - public bool buildHeightMesh { get { return m_BuildHeightMesh; } set { m_BuildHeightMesh = value; } } - - // Reference to whole scene navmesh data asset. - [UnityEngine.Serialization.FormerlySerializedAs("m_BakedNavMeshData")] - [SerializeField] - NavMeshData m_NavMeshData; - public NavMeshData navMeshData { get { return m_NavMeshData; } set { m_NavMeshData = value; } } - - // Do not serialize - runtime only state. - NavMeshDataInstance m_NavMeshDataInstance; - Vector3 m_LastPosition = Vector3.zero; - Quaternion m_LastRotation = Quaternion.identity; - - static readonly List s_NavMeshSurfaces = new List(); - - public static List activeSurfaces - { - get { return s_NavMeshSurfaces; } - } - - void OnEnable() - { - Register(this); - AddData(); - } - - void OnDisable() - { - RemoveData(); - Unregister(this); - } - - public void AddData() - { -#if UNITY_EDITOR - var isInPreviewScene = EditorSceneManager.IsPreviewSceneObject(this); - var isPrefab = isInPreviewScene || EditorUtility.IsPersistent(this); - if (isPrefab) - { - //Debug.LogFormat("NavMeshData from {0}.{1} will not be added to the NavMesh world because the gameObject is a prefab.", - // gameObject.name, name); - return; - } -#endif - if (m_NavMeshDataInstance.valid) - return; - - if (m_NavMeshData != null) - { - m_NavMeshDataInstance = NavMesh.AddNavMeshData(m_NavMeshData, transform.position, transform.rotation); - m_NavMeshDataInstance.owner = this; - } - - m_LastPosition = transform.position; - m_LastRotation = transform.rotation; - } - - public void RemoveData() - { - m_NavMeshDataInstance.Remove(); - m_NavMeshDataInstance = new NavMeshDataInstance(); - } - - public NavMeshBuildSettings GetBuildSettings() - { - var buildSettings = NavMesh.GetSettingsByID(m_AgentTypeID); - if (buildSettings.agentTypeID == -1) - { - Debug.LogWarning("No build settings for agent type ID " + agentTypeID, this); - buildSettings.agentTypeID = m_AgentTypeID; - } - - if (overrideTileSize) - { - buildSettings.overrideTileSize = true; - buildSettings.tileSize = tileSize; - } - if (overrideVoxelSize) - { - buildSettings.overrideVoxelSize = true; - buildSettings.voxelSize = voxelSize; - } - return buildSettings; - } - - public void BuildNavMesh() - { - var sources = CollectSources(); - - // Use unscaled bounds - this differs in behaviour from e.g. collider components. - // But is similar to reflection probe - and since navmesh data has no scaling support - it is the right choice here. - var sourcesBounds = new Bounds(m_Center, Abs(m_Size)); - if (m_CollectObjects == CollectObjects.All || m_CollectObjects == CollectObjects.Children) - { - sourcesBounds = CalculateWorldBounds(sources); - } - - var data = NavMeshBuilder.BuildNavMeshData(GetBuildSettings(), - sources, sourcesBounds, transform.position, transform.rotation); - - if (data != null) - { - data.name = gameObject.name; - RemoveData(); - m_NavMeshData = data; - if (isActiveAndEnabled) - AddData(); - } - } - - public AsyncOperation UpdateNavMesh(NavMeshData data) - { - var sources = CollectSources(); - - // Use unscaled bounds - this differs in behaviour from e.g. collider components. - // But is similar to reflection probe - and since navmesh data has no scaling support - it is the right choice here. - var sourcesBounds = new Bounds(m_Center, Abs(m_Size)); - if (m_CollectObjects == CollectObjects.All || m_CollectObjects == CollectObjects.Children) - sourcesBounds = CalculateWorldBounds(sources); - - return NavMeshBuilder.UpdateNavMeshDataAsync(data, GetBuildSettings(), sources, sourcesBounds); - } - - static void Register(NavMeshSurface surface) - { -#if UNITY_EDITOR - var isInPreviewScene = EditorSceneManager.IsPreviewSceneObject(surface); - var isPrefab = isInPreviewScene || EditorUtility.IsPersistent(surface); - if (isPrefab) - { - //Debug.LogFormat("NavMeshData from {0}.{1} will not be added to the NavMesh world because the gameObject is a prefab.", - // surface.gameObject.name, surface.name); - return; - } -#endif - if (s_NavMeshSurfaces.Count == 0) - NavMesh.onPreUpdate += UpdateActive; - - if (!s_NavMeshSurfaces.Contains(surface)) - s_NavMeshSurfaces.Add(surface); - } - - static void Unregister(NavMeshSurface surface) - { - s_NavMeshSurfaces.Remove(surface); - - if (s_NavMeshSurfaces.Count == 0) - NavMesh.onPreUpdate -= UpdateActive; - } - - static void UpdateActive() - { - for (var i = 0; i < s_NavMeshSurfaces.Count; ++i) - s_NavMeshSurfaces[i].UpdateDataIfTransformChanged(); - } - - void AppendModifierVolumes(ref List sources) - { -#if UNITY_EDITOR - var myStage = StageUtility.GetStageHandle(gameObject); - if (!myStage.IsValid()) - return; -#endif - // Modifiers - List modifiers; - if (m_CollectObjects == CollectObjects.Children) - { - modifiers = new List(GetComponentsInChildren()); - modifiers.RemoveAll(x => !x.isActiveAndEnabled); - } - else - { - modifiers = NavMeshModifierVolume.activeModifiers; - } - - foreach (var m in modifiers) - { - if ((m_LayerMask & (1 << m.gameObject.layer)) == 0) - continue; - if (!m.AffectsAgentType(m_AgentTypeID)) - continue; -#if UNITY_EDITOR - if (!myStage.Contains(m.gameObject)) - continue; -#endif - var mcenter = m.transform.TransformPoint(m.center); - var scale = m.transform.lossyScale; - var msize = new Vector3(m.size.x * Mathf.Abs(scale.x), m.size.y * Mathf.Abs(scale.y), m.size.z * Mathf.Abs(scale.z)); - - var src = new NavMeshBuildSource(); - src.shape = NavMeshBuildSourceShape.ModifierBox; - src.transform = Matrix4x4.TRS(mcenter, m.transform.rotation, Vector3.one); - src.size = msize; - src.area = m.area; - sources.Add(src); - } - } - - List CollectSources() - { - var sources = new List(); - var markups = new List(); - - List modifiers; - if (m_CollectObjects == CollectObjects.Children) - { - modifiers = new List(GetComponentsInChildren()); - modifiers.RemoveAll(x => !x.isActiveAndEnabled); - } - else - { - modifiers = NavMeshModifier.activeModifiers; - } - - foreach (var m in modifiers) - { - if ((m_LayerMask & (1 << m.gameObject.layer)) == 0) - continue; - if (!m.AffectsAgentType(m_AgentTypeID)) - continue; - var markup = new NavMeshBuildMarkup(); - markup.root = m.transform; - markup.overrideArea = m.overrideArea; - markup.area = m.area; - markup.ignoreFromBuild = m.ignoreFromBuild; - markups.Add(markup); - } - -#if UNITY_EDITOR - if (!EditorApplication.isPlaying) - { - if (m_CollectObjects == CollectObjects.All) - { - UnityEditor.AI.NavMeshBuilder.CollectSourcesInStage( - null, m_LayerMask, m_UseGeometry, m_DefaultArea, markups, gameObject.scene, sources); - } - else if (m_CollectObjects == CollectObjects.Children) - { - UnityEditor.AI.NavMeshBuilder.CollectSourcesInStage( - transform, m_LayerMask, m_UseGeometry, m_DefaultArea, markups, gameObject.scene, sources); - } - else if (m_CollectObjects == CollectObjects.Volume) - { - Matrix4x4 localToWorld = Matrix4x4.TRS(transform.position, transform.rotation, Vector3.one); - var worldBounds = GetWorldBounds(localToWorld, new Bounds(m_Center, m_Size)); - - UnityEditor.AI.NavMeshBuilder.CollectSourcesInStage( - worldBounds, m_LayerMask, m_UseGeometry, m_DefaultArea, markups, gameObject.scene, sources); - } - } - else -#endif - { - if (m_CollectObjects == CollectObjects.All) - { - NavMeshBuilder.CollectSources(null, m_LayerMask, m_UseGeometry, m_DefaultArea, markups, sources); - } - else if (m_CollectObjects == CollectObjects.Children) - { - NavMeshBuilder.CollectSources(transform, m_LayerMask, m_UseGeometry, m_DefaultArea, markups, sources); - } - else if (m_CollectObjects == CollectObjects.Volume) - { - Matrix4x4 localToWorld = Matrix4x4.TRS(transform.position, transform.rotation, Vector3.one); - var worldBounds = GetWorldBounds(localToWorld, new Bounds(m_Center, m_Size)); - NavMeshBuilder.CollectSources(worldBounds, m_LayerMask, m_UseGeometry, m_DefaultArea, markups, sources); - } - } - - if (m_IgnoreNavMeshAgent) - sources.RemoveAll((x) => (x.component != null && x.component.gameObject.GetComponent() != null)); - - if (m_IgnoreNavMeshObstacle) - sources.RemoveAll((x) => (x.component != null && x.component.gameObject.GetComponent() != null)); - - AppendModifierVolumes(ref sources); - - return sources; - } - - static Vector3 Abs(Vector3 v) - { - return new Vector3(Mathf.Abs(v.x), Mathf.Abs(v.y), Mathf.Abs(v.z)); - } - - static Bounds GetWorldBounds(Matrix4x4 mat, Bounds bounds) - { - var absAxisX = Abs(mat.MultiplyVector(Vector3.right)); - var absAxisY = Abs(mat.MultiplyVector(Vector3.up)); - var absAxisZ = Abs(mat.MultiplyVector(Vector3.forward)); - var worldPosition = mat.MultiplyPoint(bounds.center); - var worldSize = absAxisX * bounds.size.x + absAxisY * bounds.size.y + absAxisZ * bounds.size.z; - return new Bounds(worldPosition, worldSize); - } - - Bounds CalculateWorldBounds(List sources) - { - // Use the unscaled matrix for the NavMeshSurface - Matrix4x4 worldToLocal = Matrix4x4.TRS(transform.position, transform.rotation, Vector3.one); - worldToLocal = worldToLocal.inverse; - - var result = new Bounds(); - foreach (var src in sources) - { - switch (src.shape) - { - case NavMeshBuildSourceShape.Mesh: - { - var m = src.sourceObject as Mesh; - result.Encapsulate(GetWorldBounds(worldToLocal * src.transform, m.bounds)); - break; - } - case NavMeshBuildSourceShape.Terrain: - { - // Terrain pivot is lower/left corner - shift bounds accordingly - var t = src.sourceObject as TerrainData; - result.Encapsulate(GetWorldBounds(worldToLocal * src.transform, new Bounds(0.5f * t.size, t.size))); - break; - } - case NavMeshBuildSourceShape.Box: - case NavMeshBuildSourceShape.Sphere: - case NavMeshBuildSourceShape.Capsule: - case NavMeshBuildSourceShape.ModifierBox: - result.Encapsulate(GetWorldBounds(worldToLocal * src.transform, new Bounds(Vector3.zero, src.size))); - break; - } - } - // Inflate the bounds a bit to avoid clipping co-planar sources - result.Expand(0.1f); - return result; - } - - bool HasTransformChanged() - { - if (m_LastPosition != transform.position) return true; - if (m_LastRotation != transform.rotation) return true; - return false; - } - - void UpdateDataIfTransformChanged() - { - if (HasTransformChanged()) - { - RemoveData(); - AddData(); - } - } - -#if UNITY_EDITOR - bool UnshareNavMeshAsset() - { - // Nothing to unshare - if (m_NavMeshData == null) - return false; - - // Prefab parent owns the asset reference - var isInPreviewScene = EditorSceneManager.IsPreviewSceneObject(this); - var isPersistentObject = EditorUtility.IsPersistent(this); - if (isInPreviewScene || isPersistentObject) - return false; - - // An instance can share asset reference only with its prefab parent - var prefab = UnityEditor.PrefabUtility.GetCorrespondingObjectFromSource(this) as NavMeshSurface; - if (prefab != null && prefab.navMeshData == navMeshData) - return false; - - // Don't allow referencing an asset that's assigned to another surface - for (var i = 0; i < s_NavMeshSurfaces.Count; ++i) - { - var surface = s_NavMeshSurfaces[i]; - if (surface != this && surface.m_NavMeshData == m_NavMeshData) - return true; - } - - // Asset is not referenced by known surfaces - return false; - } - - void OnValidate() - { - if (UnshareNavMeshAsset()) - { - Debug.LogWarning("Duplicating NavMeshSurface does not duplicate the referenced navmesh data", this); - m_NavMeshData = null; - } - - var settings = NavMesh.GetSettingsByID(m_AgentTypeID); - if (settings.agentTypeID != -1) - { - // When unchecking the override control, revert to automatic value. - const float kMinVoxelSize = 0.01f; - if (!m_OverrideVoxelSize) - m_VoxelSize = settings.agentRadius / 3.0f; - if (m_VoxelSize < kMinVoxelSize) - m_VoxelSize = kMinVoxelSize; - - // When unchecking the override control, revert to default value. - const int kMinTileSize = 16; - const int kMaxTileSize = 1024; - const int kDefaultTileSize = 256; - - if (!m_OverrideTileSize) - m_TileSize = kDefaultTileSize; - // Make sure tilesize is in sane range. - if (m_TileSize < kMinTileSize) - m_TileSize = kMinTileSize; - if (m_TileSize > kMaxTileSize) - m_TileSize = kMaxTileSize; - } - } -#endif - } -} diff --git a/Assets/NavMeshComponents/Scripts/NavMeshSurface.cs.meta b/Assets/NavMeshComponents/Scripts/NavMeshSurface.cs.meta deleted file mode 100755 index fa559a0dd..000000000 --- a/Assets/NavMeshComponents/Scripts/NavMeshSurface.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 7a5ac11cc976e418e8d13136b07e1f52 -timeCreated: 1477658803 -licenseType: Pro -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {fileID: 2800000, guid: e4f97225bcfb64760a1c81f460837f01, type: 3} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Navy Pack.meta b/Assets/Navy Pack.meta new file mode 100644 index 000000000..0345ce903 --- /dev/null +++ b/Assets/Navy Pack.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cd392e3523b42ac4da2bebedb86454d5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Materials.meta b/Assets/Navy Pack/Materials.meta new file mode 100644 index 000000000..3e96d9372 --- /dev/null +++ b/Assets/Navy Pack/Materials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4aec6dc17ec811347a2be35b932365be +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Materials/awacs.meta b/Assets/Navy Pack/Materials/awacs.meta new file mode 100644 index 000000000..8dea6624c --- /dev/null +++ b/Assets/Navy Pack/Materials/awacs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d6b212d76f4c3cf40a7067486ad2e7e9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Materials/awacs/awacs_airframe.mat b/Assets/Navy Pack/Materials/awacs/awacs_airframe.mat new file mode 100644 index 000000000..9c5aef5f7 --- /dev/null +++ b/Assets/Navy Pack/Materials/awacs/awacs_airframe.mat @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-4007093500107290514 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: awacs_airframe + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/scenes/Testing/3Dskybox/skyboxTest/LightingData.asset.meta b/Assets/Navy Pack/Materials/awacs/awacs_airframe.mat.meta similarity index 78% rename from Assets/scenes/Testing/3Dskybox/skyboxTest/LightingData.asset.meta rename to Assets/Navy Pack/Materials/awacs/awacs_airframe.mat.meta index 13b614002..9315a0543 100644 --- a/Assets/scenes/Testing/3Dskybox/skyboxTest/LightingData.asset.meta +++ b/Assets/Navy Pack/Materials/awacs/awacs_airframe.mat.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: bc36c1bcfe4f60d45a60f208fab76e84 +guid: 9f7e168a301c25e4285968a6d9a472eb NativeFormatImporter: externalObjects: {} mainObjectFileID: 0 diff --git a/Assets/Navy Pack/Materials/awacs/awacs_cockpit.mat b/Assets/Navy Pack/Materials/awacs/awacs_cockpit.mat new file mode 100644 index 000000000..2dc095835 --- /dev/null +++ b/Assets/Navy Pack/Materials/awacs/awacs_cockpit.mat @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: awacs_cockpit + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.33725488, g: 0.33725488, b: 0.33725488, a: 1} + - _Color: {r: 0.33725485, g: 0.33725485, b: 0.33725485, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] +--- !u!114 &7104994485625085128 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 diff --git a/Assets/scenes/Testing/Water/LightingData.asset.meta b/Assets/Navy Pack/Materials/awacs/awacs_cockpit.mat.meta similarity index 78% rename from Assets/scenes/Testing/Water/LightingData.asset.meta rename to Assets/Navy Pack/Materials/awacs/awacs_cockpit.mat.meta index 2c423d531..997cff7c9 100644 --- a/Assets/scenes/Testing/Water/LightingData.asset.meta +++ b/Assets/Navy Pack/Materials/awacs/awacs_cockpit.mat.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 97907b317c0444227b578041e4a13cb8 +guid: 6c3dd88c862e2624babbc678cf63b02a NativeFormatImporter: externalObjects: {} mainObjectFileID: 0 diff --git a/Assets/Navy Pack/Materials/awacs/awacs_dome.mat b/Assets/Navy Pack/Materials/awacs/awacs_dome.mat new file mode 100644 index 000000000..f4367f364 --- /dev/null +++ b/Assets/Navy Pack/Materials/awacs/awacs_dome.mat @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: awacs_dome + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.117647074, g: 0.117647074, b: 0.117647074, a: 1} + - _Color: {r: 0.117647044, g: 0.117647044, b: 0.117647044, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] +--- !u!114 &8552862229697224421 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 diff --git a/Assets/scenes/_levels/level_Island/OcclusionCullingData.asset.meta b/Assets/Navy Pack/Materials/awacs/awacs_dome.mat.meta similarity index 78% rename from Assets/scenes/_levels/level_Island/OcclusionCullingData.asset.meta rename to Assets/Navy Pack/Materials/awacs/awacs_dome.mat.meta index 0871113fa..92b4593e7 100644 --- a/Assets/scenes/_levels/level_Island/OcclusionCullingData.asset.meta +++ b/Assets/Navy Pack/Materials/awacs/awacs_dome.mat.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 6b1eeea183ddc40e9872d9967dc856c0 +guid: f2154c6211e7e7e4198a9cebdbea24c5 NativeFormatImporter: externalObjects: {} mainObjectFileID: 0 diff --git a/Assets/Navy Pack/Materials/awacs/awacs_engine.mat b/Assets/Navy Pack/Materials/awacs/awacs_engine.mat new file mode 100644 index 000000000..6fabad4bf --- /dev/null +++ b/Assets/Navy Pack/Materials/awacs/awacs_engine.mat @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: awacs_engine + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.22745097, g: 0.22745097, b: 0.22745097, a: 1} + - _Color: {r: 0.22745094, g: 0.22745094, b: 0.22745094, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] +--- !u!114 &4178727626497747906 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 diff --git a/Assets/Objects/Levels/Island/NavMesh-NavMesh.asset.meta b/Assets/Navy Pack/Materials/awacs/awacs_engine.mat.meta similarity index 78% rename from Assets/Objects/Levels/Island/NavMesh-NavMesh.asset.meta rename to Assets/Navy Pack/Materials/awacs/awacs_engine.mat.meta index fec575ab4..a9d0c42cb 100644 --- a/Assets/Objects/Levels/Island/NavMesh-NavMesh.asset.meta +++ b/Assets/Navy Pack/Materials/awacs/awacs_engine.mat.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: f95aec1be3501404baa37d1fad8e4509 +guid: e98ba889e895a1b4f9e3697e73f2c553 NativeFormatImporter: externalObjects: {} mainObjectFileID: 0 diff --git a/Assets/Navy Pack/Materials/carrier.meta b/Assets/Navy Pack/Materials/carrier.meta new file mode 100644 index 000000000..b4dc42b68 --- /dev/null +++ b/Assets/Navy Pack/Materials/carrier.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: be6ebdd8c0409074f879e2f13e3f9a2c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Materials/carrier/carrier_deck.mat b/Assets/Navy Pack/Materials/carrier/carrier_deck.mat new file mode 100644 index 000000000..a1078e995 --- /dev/null +++ b/Assets/Navy Pack/Materials/carrier/carrier_deck.mat @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-7345347326702788057 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: carrier_deck + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.33725488, g: 0.33725488, b: 0.33725488, a: 1} + - _Color: {r: 0.33725485, g: 0.33725485, b: 0.33725485, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Navy Pack/Materials/carrier/carrier_deck.mat.meta b/Assets/Navy Pack/Materials/carrier/carrier_deck.mat.meta new file mode 100644 index 000000000..5cff75aec --- /dev/null +++ b/Assets/Navy Pack/Materials/carrier/carrier_deck.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 162ef5d2f7748b243a98872235fa7d31 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Materials/carrier/carrier_hull.mat b/Assets/Navy Pack/Materials/carrier/carrier_hull.mat new file mode 100644 index 000000000..2a0fdc77e --- /dev/null +++ b/Assets/Navy Pack/Materials/carrier/carrier_hull.mat @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-2512451277429274852 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: carrier_hull + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.8862745, g: 0.8862745, b: 0.8862745, a: 1} + - _Color: {r: 0.8862745, g: 0.8862745, b: 0.8862745, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Navy Pack/Materials/carrier/carrier_hull.mat.meta b/Assets/Navy Pack/Materials/carrier/carrier_hull.mat.meta new file mode 100644 index 000000000..97f00dbbe --- /dev/null +++ b/Assets/Navy Pack/Materials/carrier/carrier_hull.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 293d888a347d0cc498b297a857793db2 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Materials/carrier/carrier_lines.mat b/Assets/Navy Pack/Materials/carrier/carrier_lines.mat new file mode 100644 index 000000000..479f7e211 --- /dev/null +++ b/Assets/Navy Pack/Materials/carrier/carrier_lines.mat @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-8386657174242627356 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: carrier_lines + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Navy Pack/Materials/carrier/carrier_lines.mat.meta b/Assets/Navy Pack/Materials/carrier/carrier_lines.mat.meta new file mode 100644 index 000000000..b11b2b5cd --- /dev/null +++ b/Assets/Navy Pack/Materials/carrier/carrier_lines.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7357938565cab4748b458a5749b04c98 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Materials/carrier/carrier_tower.mat b/Assets/Navy Pack/Materials/carrier/carrier_tower.mat new file mode 100644 index 000000000..bc03440aa --- /dev/null +++ b/Assets/Navy Pack/Materials/carrier/carrier_tower.mat @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: carrier_tower + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.95283014, g: 0.95283014, b: 0.95283014, a: 1} + - _Color: {r: 0.95283014, g: 0.95283014, b: 0.95283014, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] +--- !u!114 &4021504795925555889 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 diff --git a/Assets/Navy Pack/Materials/carrier/carrier_tower.mat.meta b/Assets/Navy Pack/Materials/carrier/carrier_tower.mat.meta new file mode 100644 index 000000000..a04a8848b --- /dev/null +++ b/Assets/Navy Pack/Materials/carrier/carrier_tower.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 05244d560020dd34bb5861816ba9cde4 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Materials/environment.meta b/Assets/Navy Pack/Materials/environment.meta new file mode 100644 index 000000000..a2ab5b053 --- /dev/null +++ b/Assets/Navy Pack/Materials/environment.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5c69166f7a4e21d448af92fa9dd15021 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Materials/environment/Sea.mat b/Assets/Navy Pack/Materials/environment/Sea.mat new file mode 100644 index 000000000..c60fcc198 --- /dev/null +++ b/Assets/Navy Pack/Materials/environment/Sea.mat @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-3756173494804485224 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Sea + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 6 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0, g: 0.490196, b: 0.7921569, a: 1} + - _Color: {r: 0, g: 0.490196, b: 0.7921569, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Navy Pack/Materials/environment/Sea.mat.meta b/Assets/Navy Pack/Materials/environment/Sea.mat.meta new file mode 100644 index 000000000..e5fa05d69 --- /dev/null +++ b/Assets/Navy Pack/Materials/environment/Sea.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 212e1b71f188b3140806b7a14dd347ce +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Materials/f18.meta b/Assets/Navy Pack/Materials/f18.meta new file mode 100644 index 000000000..59b318e02 --- /dev/null +++ b/Assets/Navy Pack/Materials/f18.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 582a01ab34d34dd438000470d77fc7d6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Materials/f18/f18_airframe.mat b/Assets/Navy Pack/Materials/f18/f18_airframe.mat new file mode 100644 index 000000000..e894dc117 --- /dev/null +++ b/Assets/Navy Pack/Materials/f18/f18_airframe.mat @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: f18_airframe + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.5568627, g: 0.5568627, b: 0.5568627, a: 1} + - _Color: {r: 0.5568627, g: 0.5568627, b: 0.5568627, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] +--- !u!114 &2779699898607754625 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 diff --git a/Assets/Navy Pack/Materials/f18/f18_airframe.mat.meta b/Assets/Navy Pack/Materials/f18/f18_airframe.mat.meta new file mode 100644 index 000000000..fe033d4a4 --- /dev/null +++ b/Assets/Navy Pack/Materials/f18/f18_airframe.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f4fffb334858c8c4098a0a346a343bbf +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Materials/f18/f18_cockpit.mat b/Assets/Navy Pack/Materials/f18/f18_cockpit.mat new file mode 100644 index 000000000..a0fb65283 --- /dev/null +++ b/Assets/Navy Pack/Materials/f18/f18_cockpit.mat @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-5358763249681315997 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: f18_cockpit + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.36792448, g: 0.36792448, b: 0.36792448, a: 1} + - _Color: {r: 0.36792445, g: 0.36792445, b: 0.36792445, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Navy Pack/Materials/f18/f18_cockpit.mat.meta b/Assets/Navy Pack/Materials/f18/f18_cockpit.mat.meta new file mode 100644 index 000000000..4d749d05c --- /dev/null +++ b/Assets/Navy Pack/Materials/f18/f18_cockpit.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dd36dff1ea594c2479005fb933ce2e24 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Materials/f18/f18_engine.mat b/Assets/Navy Pack/Materials/f18/f18_engine.mat new file mode 100644 index 000000000..44799ae46 --- /dev/null +++ b/Assets/Navy Pack/Materials/f18/f18_engine.mat @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-4066643960464502137 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: f18_engine + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.22745097, g: 0.22745097, b: 0.22745097, a: 1} + - _Color: {r: 0.22745094, g: 0.22745094, b: 0.22745094, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Navy Pack/Materials/f18/f18_engine.mat.meta b/Assets/Navy Pack/Materials/f18/f18_engine.mat.meta new file mode 100644 index 000000000..9beb5b0a0 --- /dev/null +++ b/Assets/Navy Pack/Materials/f18/f18_engine.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0e0d21a9a865b884797afb419e6f499e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Materials/f35.meta b/Assets/Navy Pack/Materials/f35.meta new file mode 100644 index 000000000..248755278 --- /dev/null +++ b/Assets/Navy Pack/Materials/f35.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b36b3204763042d48a6dcb22f9678043 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Materials/f35/f35_airframe.mat b/Assets/Navy Pack/Materials/f35/f35_airframe.mat new file mode 100644 index 000000000..5de536ecb --- /dev/null +++ b/Assets/Navy Pack/Materials/f35/f35_airframe.mat @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: f35_airframe + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.4470588, g: 0.4470588, b: 0.4470588, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] +--- !u!114 &5186579395091689949 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 diff --git a/Assets/Navy Pack/Materials/f35/f35_airframe.mat.meta b/Assets/Navy Pack/Materials/f35/f35_airframe.mat.meta new file mode 100644 index 000000000..bee92247f --- /dev/null +++ b/Assets/Navy Pack/Materials/f35/f35_airframe.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 95a71a8830c654f4e916ef0955f211b9 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Materials/f35/f35_cockpit.mat b/Assets/Navy Pack/Materials/f35/f35_cockpit.mat new file mode 100644 index 000000000..8a97598a9 --- /dev/null +++ b/Assets/Navy Pack/Materials/f35/f35_cockpit.mat @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-4293561979062073376 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: f35_cockpit + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.39999998, g: 0.29803917, b: 0, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Navy Pack/Materials/f35/f35_cockpit.mat.meta b/Assets/Navy Pack/Materials/f35/f35_cockpit.mat.meta new file mode 100644 index 000000000..0cd853fdd --- /dev/null +++ b/Assets/Navy Pack/Materials/f35/f35_cockpit.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 90acbf24c94372d4eaac5938eab6fbdd +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Materials/f35/f35_engine.mat b/Assets/Navy Pack/Materials/f35/f35_engine.mat new file mode 100644 index 000000000..93169dd89 --- /dev/null +++ b/Assets/Navy Pack/Materials/f35/f35_engine.mat @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: f35_engine + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.117647074, g: 0.117647074, b: 0.117647074, a: 1} + - _Color: {r: 0.117647044, g: 0.117647044, b: 0.117647044, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] +--- !u!114 &3127194328986762741 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 diff --git a/Assets/Navy Pack/Materials/f35/f35_engine.mat.meta b/Assets/Navy Pack/Materials/f35/f35_engine.mat.meta new file mode 100644 index 000000000..9625c62b6 --- /dev/null +++ b/Assets/Navy Pack/Materials/f35/f35_engine.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5ff48dd6898d3ea44ac0cd900b4ca30e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Materials/hawkeye.meta b/Assets/Navy Pack/Materials/hawkeye.meta new file mode 100644 index 000000000..da9558fc5 --- /dev/null +++ b/Assets/Navy Pack/Materials/hawkeye.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 23c3fcd7b1f46b141a999550407dc513 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Materials/hawkeye/hawkeye_airframe.mat b/Assets/Navy Pack/Materials/hawkeye/hawkeye_airframe.mat new file mode 100644 index 000000000..16b3e12d3 --- /dev/null +++ b/Assets/Navy Pack/Materials/hawkeye/hawkeye_airframe.mat @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: hawkeye_airframe + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.737255, g: 0.7294118, b: 0.7019608, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] +--- !u!114 &3086759759910231476 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 diff --git a/Assets/Navy Pack/Materials/hawkeye/hawkeye_airframe.mat.meta b/Assets/Navy Pack/Materials/hawkeye/hawkeye_airframe.mat.meta new file mode 100644 index 000000000..1d5b93cc4 --- /dev/null +++ b/Assets/Navy Pack/Materials/hawkeye/hawkeye_airframe.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3ba7393833578974dac15a91a4291a53 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Materials/hawkeye/hawkeye_cockpit.mat b/Assets/Navy Pack/Materials/hawkeye/hawkeye_cockpit.mat new file mode 100644 index 000000000..56923492a --- /dev/null +++ b/Assets/Navy Pack/Materials/hawkeye/hawkeye_cockpit.mat @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-2620691129289813845 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: hawkeye_cockpit + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.4470588, g: 0.4470588, b: 0.4470588, a: 1} + - _Color: {r: 0.4470588, g: 0.4470588, b: 0.4470588, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Navy Pack/Materials/hawkeye/hawkeye_cockpit.mat.meta b/Assets/Navy Pack/Materials/hawkeye/hawkeye_cockpit.mat.meta new file mode 100644 index 000000000..0ed234383 --- /dev/null +++ b/Assets/Navy Pack/Materials/hawkeye/hawkeye_cockpit.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 226d3470aa310ba42b4f134658304ecb +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Materials/hawkeye/hawkeye_engine.mat b/Assets/Navy Pack/Materials/hawkeye/hawkeye_engine.mat new file mode 100644 index 000000000..99d576284 --- /dev/null +++ b/Assets/Navy Pack/Materials/hawkeye/hawkeye_engine.mat @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: hawkeye_engine + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.22745097, g: 0.22745097, b: 0.22745097, a: 1} + - _Color: {r: 0.22745094, g: 0.22745094, b: 0.22745094, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] +--- !u!114 &2740170632633127576 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 diff --git a/Assets/Navy Pack/Materials/hawkeye/hawkeye_engine.mat.meta b/Assets/Navy Pack/Materials/hawkeye/hawkeye_engine.mat.meta new file mode 100644 index 000000000..a4d108f35 --- /dev/null +++ b/Assets/Navy Pack/Materials/hawkeye/hawkeye_engine.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b48aefb4dc0e07d47b2b4886515c26f2 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Materials/landinggear_back.meta b/Assets/Navy Pack/Materials/landinggear_back.meta new file mode 100644 index 000000000..a413abf96 --- /dev/null +++ b/Assets/Navy Pack/Materials/landinggear_back.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6bf2d96caab8b454fa89d436739a24bb +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Materials/landinggear_back/landinggear_back_axle.mat b/Assets/Navy Pack/Materials/landinggear_back/landinggear_back_axle.mat new file mode 100644 index 000000000..a1073702e --- /dev/null +++ b/Assets/Navy Pack/Materials/landinggear_back/landinggear_back_axle.mat @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: landinggear_back_axle + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] +--- !u!114 &1519395976495374668 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 diff --git a/Assets/Navy Pack/Materials/landinggear_back/landinggear_back_axle.mat.meta b/Assets/Navy Pack/Materials/landinggear_back/landinggear_back_axle.mat.meta new file mode 100644 index 000000000..c48ac9bcc --- /dev/null +++ b/Assets/Navy Pack/Materials/landinggear_back/landinggear_back_axle.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d9cca568db016e94e8507a413a7db906 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Materials/landinggear_back/landinggear_back_tyre.mat b/Assets/Navy Pack/Materials/landinggear_back/landinggear_back_tyre.mat new file mode 100644 index 000000000..45b2a3e73 --- /dev/null +++ b/Assets/Navy Pack/Materials/landinggear_back/landinggear_back_tyre.mat @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: landinggear_back_tyre + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.22745097, g: 0.22745097, b: 0.22745097, a: 1} + - _Color: {r: 0.22745094, g: 0.22745094, b: 0.22745094, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] +--- !u!114 &2012037968570234308 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 diff --git a/Assets/Navy Pack/Materials/landinggear_back/landinggear_back_tyre.mat.meta b/Assets/Navy Pack/Materials/landinggear_back/landinggear_back_tyre.mat.meta new file mode 100644 index 000000000..ba4caaa3b --- /dev/null +++ b/Assets/Navy Pack/Materials/landinggear_back/landinggear_back_tyre.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 80f22f2f7f01bab4888c1fd0606b4638 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Materials/landinggear_front.meta b/Assets/Navy Pack/Materials/landinggear_front.meta new file mode 100644 index 000000000..4f174a4b3 --- /dev/null +++ b/Assets/Navy Pack/Materials/landinggear_front.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 16b687e1da0249f4aa36f722072afe0d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Materials/landinggear_front/landinggear_front_axle.mat b/Assets/Navy Pack/Materials/landinggear_front/landinggear_front_axle.mat new file mode 100644 index 000000000..2b4b7d8d0 --- /dev/null +++ b/Assets/Navy Pack/Materials/landinggear_front/landinggear_front_axle.mat @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-4441964890568174352 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: landinggear_front_axle + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Navy Pack/Materials/landinggear_front/landinggear_front_axle.mat.meta b/Assets/Navy Pack/Materials/landinggear_front/landinggear_front_axle.mat.meta new file mode 100644 index 000000000..02c50b46b --- /dev/null +++ b/Assets/Navy Pack/Materials/landinggear_front/landinggear_front_axle.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 810e0268b81bdd14faa6684d901d9a2c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Materials/landinggear_front/landinggear_front_tyre.mat b/Assets/Navy Pack/Materials/landinggear_front/landinggear_front_tyre.mat new file mode 100644 index 000000000..83ba5711f --- /dev/null +++ b/Assets/Navy Pack/Materials/landinggear_front/landinggear_front_tyre.mat @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: landinggear_front_tyre + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.22745097, g: 0.22745097, b: 0.22745097, a: 1} + - _Color: {r: 0.22745094, g: 0.22745094, b: 0.22745094, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] +--- !u!114 &1375893541665793392 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 diff --git a/Assets/Navy Pack/Materials/landinggear_front/landinggear_front_tyre.mat.meta b/Assets/Navy Pack/Materials/landinggear_front/landinggear_front_tyre.mat.meta new file mode 100644 index 000000000..07de620fa --- /dev/null +++ b/Assets/Navy Pack/Materials/landinggear_front/landinggear_front_tyre.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8cda64a785e93a849bbe2f2750378458 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Materials/main_propeller.meta b/Assets/Navy Pack/Materials/main_propeller.meta new file mode 100644 index 000000000..de625d507 --- /dev/null +++ b/Assets/Navy Pack/Materials/main_propeller.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7e13cb46aea9c304780afde3fcd7ec13 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Materials/main_propeller/main_propeller.mat b/Assets/Navy Pack/Materials/main_propeller/main_propeller.mat new file mode 100644 index 000000000..be6c9563d --- /dev/null +++ b/Assets/Navy Pack/Materials/main_propeller/main_propeller.mat @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-7829410956239440443 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: main_propeller + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Navy Pack/Materials/main_propeller/main_propeller.mat.meta b/Assets/Navy Pack/Materials/main_propeller/main_propeller.mat.meta new file mode 100644 index 000000000..7c3cbfe2d --- /dev/null +++ b/Assets/Navy Pack/Materials/main_propeller/main_propeller.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 74aac81e2d3d23344a1cc7a684cab8ed +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Materials/seahawk.meta b/Assets/Navy Pack/Materials/seahawk.meta new file mode 100644 index 000000000..05576c660 --- /dev/null +++ b/Assets/Navy Pack/Materials/seahawk.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 281c940f653f4ff4cab02c01489b0e57 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Materials/seahawk/seahawk_airframe.mat b/Assets/Navy Pack/Materials/seahawk/seahawk_airframe.mat new file mode 100644 index 000000000..fd5998cbf --- /dev/null +++ b/Assets/Navy Pack/Materials/seahawk/seahawk_airframe.mat @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-4305130777649513704 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: seahawk_airframe + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.8862745, g: 0.8862745, b: 0.8862745, a: 1} + - _Color: {r: 0.8862745, g: 0.8862745, b: 0.8862745, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Navy Pack/Materials/seahawk/seahawk_airframe.mat.meta b/Assets/Navy Pack/Materials/seahawk/seahawk_airframe.mat.meta new file mode 100644 index 000000000..2e8b46426 --- /dev/null +++ b/Assets/Navy Pack/Materials/seahawk/seahawk_airframe.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 17cbe51cc8f7b8f4ebbc4467c7607e73 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Materials/seahawk/seahawk_cockpit.mat b/Assets/Navy Pack/Materials/seahawk/seahawk_cockpit.mat new file mode 100644 index 000000000..76c808d4c --- /dev/null +++ b/Assets/Navy Pack/Materials/seahawk/seahawk_cockpit.mat @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-5542831738087987424 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: seahawk_cockpit + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.5568627, g: 0.5568627, b: 0.5568627, a: 1} + - _Color: {r: 0.5568627, g: 0.5568627, b: 0.5568627, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Navy Pack/Materials/seahawk/seahawk_cockpit.mat.meta b/Assets/Navy Pack/Materials/seahawk/seahawk_cockpit.mat.meta new file mode 100644 index 000000000..4fd8fef51 --- /dev/null +++ b/Assets/Navy Pack/Materials/seahawk/seahawk_cockpit.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 50bc2aafe7af7da4b861bfc8c13ff804 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Materials/seahawk/seahawk_engine.mat b/Assets/Navy Pack/Materials/seahawk/seahawk_engine.mat new file mode 100644 index 000000000..4a2ddc2c8 --- /dev/null +++ b/Assets/Navy Pack/Materials/seahawk/seahawk_engine.mat @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: seahawk_engine + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.117647074, g: 0.117647074, b: 0.117647074, a: 1} + - _Color: {r: 0.117647044, g: 0.117647044, b: 0.117647044, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] +--- !u!114 &6718069594661038579 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 diff --git a/Assets/Navy Pack/Materials/seahawk/seahawk_engine.mat.meta b/Assets/Navy Pack/Materials/seahawk/seahawk_engine.mat.meta new file mode 100644 index 000000000..4cbb5f903 --- /dev/null +++ b/Assets/Navy Pack/Materials/seahawk/seahawk_engine.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 78982e47ce57d6643a4ac733a24971c1 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Materials/seahawk/seahawk_tyre.mat b/Assets/Navy Pack/Materials/seahawk/seahawk_tyre.mat new file mode 100644 index 000000000..8570ec014 --- /dev/null +++ b/Assets/Navy Pack/Materials/seahawk/seahawk_tyre.mat @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-6101730667614411444 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: seahawk_tyre + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.33725488, g: 0.33725488, b: 0.33725488, a: 1} + - _Color: {r: 0.33725485, g: 0.33725485, b: 0.33725485, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Navy Pack/Materials/seahawk/seahawk_tyre.mat.meta b/Assets/Navy Pack/Materials/seahawk/seahawk_tyre.mat.meta new file mode 100644 index 000000000..5519d4dd7 --- /dev/null +++ b/Assets/Navy Pack/Materials/seahawk/seahawk_tyre.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d71b22280e53c2b4aaa90fecf4bed2dc +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Materials/small_propeller.meta b/Assets/Navy Pack/Materials/small_propeller.meta new file mode 100644 index 000000000..73599f6cc --- /dev/null +++ b/Assets/Navy Pack/Materials/small_propeller.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7569c8070f278fc459abe0433dad0028 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Materials/small_propeller/small_propeller.mat b/Assets/Navy Pack/Materials/small_propeller/small_propeller.mat new file mode 100644 index 000000000..532fff4a8 --- /dev/null +++ b/Assets/Navy Pack/Materials/small_propeller/small_propeller.mat @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-7666750415535956164 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: small_propeller + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Navy Pack/Materials/small_propeller/small_propeller.mat.meta b/Assets/Navy Pack/Materials/small_propeller/small_propeller.mat.meta new file mode 100644 index 000000000..228413e25 --- /dev/null +++ b/Assets/Navy Pack/Materials/small_propeller/small_propeller.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7112e09068f6ae34db6de6d34d47f64a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Meshes.meta b/Assets/Navy Pack/Meshes.meta new file mode 100644 index 000000000..0bfe272a8 --- /dev/null +++ b/Assets/Navy Pack/Meshes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 20be88f70e3c6b646a3987454e9774a0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Meshes/Awacs.fbx.meta b/Assets/Navy Pack/Meshes/Awacs.fbx.meta new file mode 100644 index 000000000..a82619099 --- /dev/null +++ b/Assets/Navy Pack/Meshes/Awacs.fbx.meta @@ -0,0 +1,116 @@ +fileFormatVersion: 2 +guid: ab6066cb297b97442a6b18379204db4e +ModelImporter: + serializedVersion: 19300 + internalIDToNameTable: [] + externalObjects: + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: awacs_airframe + second: {fileID: 2100000, guid: 9f7e168a301c25e4285968a6d9a472eb, type: 2} + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: awacs_cockpit + second: {fileID: 2100000, guid: 6c3dd88c862e2624babbc678cf63b02a, type: 2} + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: awacs_dome + second: {fileID: 2100000, guid: f2154c6211e7e7e4198a9cebdbea24c5, type: 2} + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: awacs_engine + second: {fileID: 2100000, guid: e98ba889e895a1b4f9e3697e73f2c553, 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: 1 + 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: 1 + 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/Assets/Navy Pack/Meshes/Carrier.fbx.meta b/Assets/Navy Pack/Meshes/Carrier.fbx.meta new file mode 100644 index 000000000..160094f9e --- /dev/null +++ b/Assets/Navy Pack/Meshes/Carrier.fbx.meta @@ -0,0 +1,116 @@ +fileFormatVersion: 2 +guid: 08ec7ffde74838045a306a14372d710a +ModelImporter: + serializedVersion: 19300 + internalIDToNameTable: [] + externalObjects: + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: carrier_deck + second: {fileID: 2100000, guid: 162ef5d2f7748b243a98872235fa7d31, type: 2} + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: carrier_hull + second: {fileID: 2100000, guid: 293d888a347d0cc498b297a857793db2, type: 2} + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: carrier_lines + second: {fileID: 2100000, guid: 7357938565cab4748b458a5749b04c98, type: 2} + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: carrier_tower + second: {fileID: 2100000, guid: 05244d560020dd34bb5861816ba9cde4, 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: 1 + 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: 1 + 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/Assets/Navy Pack/Meshes/F18.fbx.meta b/Assets/Navy Pack/Meshes/F18.fbx.meta new file mode 100644 index 000000000..5ef8ef63b --- /dev/null +++ b/Assets/Navy Pack/Meshes/F18.fbx.meta @@ -0,0 +1,111 @@ +fileFormatVersion: 2 +guid: c5eadc855f505434990b0311d0649a52 +ModelImporter: + serializedVersion: 19300 + internalIDToNameTable: [] + externalObjects: + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: f18_airframe + second: {fileID: 2100000, guid: f4fffb334858c8c4098a0a346a343bbf, type: 2} + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: f18_cockpit + second: {fileID: 2100000, guid: dd36dff1ea594c2479005fb933ce2e24, type: 2} + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: f18_engine + second: {fileID: 2100000, guid: 0e0d21a9a865b884797afb419e6f499e, 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: 1 + 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: 1 + 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/Assets/Navy Pack/Meshes/F35.fbx.meta b/Assets/Navy Pack/Meshes/F35.fbx.meta new file mode 100644 index 000000000..4034355f5 --- /dev/null +++ b/Assets/Navy Pack/Meshes/F35.fbx.meta @@ -0,0 +1,111 @@ +fileFormatVersion: 2 +guid: a1a74ddd5a4165744bd89f3ebc7f4230 +ModelImporter: + serializedVersion: 19300 + internalIDToNameTable: [] + externalObjects: + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: f35_airframe + second: {fileID: 2100000, guid: 95a71a8830c654f4e916ef0955f211b9, type: 2} + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: f35_cockpit + second: {fileID: 2100000, guid: 90acbf24c94372d4eaac5938eab6fbdd, type: 2} + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: f35_engine + second: {fileID: 2100000, guid: 5ff48dd6898d3ea44ac0cd900b4ca30e, 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: 1 + 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: 1 + 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/Assets/Navy Pack/Meshes/Hawkeye.fbx.meta b/Assets/Navy Pack/Meshes/Hawkeye.fbx.meta new file mode 100644 index 000000000..cdcb7a1e3 --- /dev/null +++ b/Assets/Navy Pack/Meshes/Hawkeye.fbx.meta @@ -0,0 +1,111 @@ +fileFormatVersion: 2 +guid: c6580dbf574d5d04ba32b024f756a714 +ModelImporter: + serializedVersion: 19300 + internalIDToNameTable: [] + externalObjects: + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: hawkeye_airframe + second: {fileID: 2100000, guid: 3ba7393833578974dac15a91a4291a53, type: 2} + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: hawkeye_cockpit + second: {fileID: 2100000, guid: 226d3470aa310ba42b4f134658304ecb, type: 2} + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: hawkeye_engine + second: {fileID: 2100000, guid: b48aefb4dc0e07d47b2b4886515c26f2, 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: 1 + 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: 1 + 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/Assets/Navy Pack/Meshes/Seahawk.fbx.meta b/Assets/Navy Pack/Meshes/Seahawk.fbx.meta new file mode 100644 index 000000000..1710ad914 --- /dev/null +++ b/Assets/Navy Pack/Meshes/Seahawk.fbx.meta @@ -0,0 +1,116 @@ +fileFormatVersion: 2 +guid: 9759800d67ac18d48bcf9a10ce6aa287 +ModelImporter: + serializedVersion: 19300 + internalIDToNameTable: [] + externalObjects: + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: seahawk_airframe + second: {fileID: 2100000, guid: 17cbe51cc8f7b8f4ebbc4467c7607e73, type: 2} + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: seahawk_cockpit + second: {fileID: 2100000, guid: 50bc2aafe7af7da4b861bfc8c13ff804, type: 2} + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: seahawk_engine + second: {fileID: 2100000, guid: 78982e47ce57d6643a4ac733a24971c1, type: 2} + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: seahawk_tyre + second: {fileID: 2100000, guid: d71b22280e53c2b4aaa90fecf4bed2dc, 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: 1 + 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: 1 + 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/Assets/Navy Pack/Meshes/landinggear_back.fbx.meta b/Assets/Navy Pack/Meshes/landinggear_back.fbx.meta new file mode 100644 index 000000000..a158a9e09 --- /dev/null +++ b/Assets/Navy Pack/Meshes/landinggear_back.fbx.meta @@ -0,0 +1,106 @@ +fileFormatVersion: 2 +guid: 57cb482a463cb27468f11fdcaeceb7d9 +ModelImporter: + serializedVersion: 19300 + internalIDToNameTable: [] + externalObjects: + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: landinggear_back_axle + second: {fileID: 2100000, guid: d9cca568db016e94e8507a413a7db906, type: 2} + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: landinggear_back_tyre + second: {fileID: 2100000, guid: 80f22f2f7f01bab4888c1fd0606b4638, 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: 1 + 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: 1 + 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/Assets/Navy Pack/Meshes/landinggear_front.fbx.meta b/Assets/Navy Pack/Meshes/landinggear_front.fbx.meta new file mode 100644 index 000000000..fdd82254a --- /dev/null +++ b/Assets/Navy Pack/Meshes/landinggear_front.fbx.meta @@ -0,0 +1,106 @@ +fileFormatVersion: 2 +guid: 2673b1485fdbc0f4fbcb2612d52af06e +ModelImporter: + serializedVersion: 19300 + internalIDToNameTable: [] + externalObjects: + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: landinggear_front_axle + second: {fileID: 2100000, guid: 810e0268b81bdd14faa6684d901d9a2c, type: 2} + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: landinggear_front_tyre + second: {fileID: 2100000, guid: 8cda64a785e93a849bbe2f2750378458, 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: 1 + 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: 1 + 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/Assets/Navy Pack/Meshes/main_propeller.fbx.meta b/Assets/Navy Pack/Meshes/main_propeller.fbx.meta new file mode 100644 index 000000000..4bad6b81a --- /dev/null +++ b/Assets/Navy Pack/Meshes/main_propeller.fbx.meta @@ -0,0 +1,101 @@ +fileFormatVersion: 2 +guid: e7b5c566f78e82645ac7b8df5d68dcf5 +ModelImporter: + serializedVersion: 19300 + internalIDToNameTable: [] + externalObjects: + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: main_propeller + second: {fileID: 2100000, guid: 74aac81e2d3d23344a1cc7a684cab8ed, 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: 1 + 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: 1 + 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/Assets/Navy Pack/Meshes/small_prop.fbx.meta b/Assets/Navy Pack/Meshes/small_prop.fbx.meta new file mode 100644 index 000000000..3f5b4663a --- /dev/null +++ b/Assets/Navy Pack/Meshes/small_prop.fbx.meta @@ -0,0 +1,101 @@ +fileFormatVersion: 2 +guid: 3c8fc527dc00e944a962956335d6b438 +ModelImporter: + serializedVersion: 19300 + internalIDToNameTable: [] + externalObjects: + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: small_propeller + second: {fileID: 2100000, guid: 7112e09068f6ae34db6de6d34d47f64a, 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: 1 + 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: 1 + 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/Assets/Navy Pack/Prefabs.meta b/Assets/Navy Pack/Prefabs.meta new file mode 100644 index 000000000..5828c2c7e --- /dev/null +++ b/Assets/Navy Pack/Prefabs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7cfde23e33874064cbba2cd9b66a8ba8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Prefabs/Awacs.prefab b/Assets/Navy Pack/Prefabs/Awacs.prefab new file mode 100644 index 000000000..2c97c37b8 --- /dev/null +++ b/Assets/Navy Pack/Prefabs/Awacs.prefab @@ -0,0 +1,99 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &8683486014554234569 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5682040096812248282} + - component: {fileID: 3711440953476257516} + - component: {fileID: 6970770169568291349} + - component: {fileID: -6399919337702798095} + m_Layer: 0 + m_Name: Awacs + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5682040096812248282 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8683486014554234569} + 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: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &3711440953476257516 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8683486014554234569} + m_Mesh: {fileID: 7241036918137702786, guid: ab6066cb297b97442a6b18379204db4e, type: 3} +--- !u!23 &6970770169568291349 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8683486014554234569} + 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_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 9f7e168a301c25e4285968a6d9a472eb, type: 2} + - {fileID: 2100000, guid: 6c3dd88c862e2624babbc678cf63b02a, type: 2} + - {fileID: 2100000, guid: e98ba889e895a1b4f9e3697e73f2c553, type: 2} + - {fileID: 2100000, guid: f2154c6211e7e7e4198a9cebdbea24c5, 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 +--- !u!64 &-6399919337702798095 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8683486014554234569} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 7241036918137702786, guid: ab6066cb297b97442a6b18379204db4e, type: 3} diff --git a/Assets/Navy Pack/Prefabs/Awacs.prefab.meta b/Assets/Navy Pack/Prefabs/Awacs.prefab.meta new file mode 100644 index 000000000..0249beff5 --- /dev/null +++ b/Assets/Navy Pack/Prefabs/Awacs.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7aa603c430729ab4492ad27a400e5194 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Prefabs/Carrier.prefab b/Assets/Navy Pack/Prefabs/Carrier.prefab new file mode 100644 index 000000000..79f6ebfdf --- /dev/null +++ b/Assets/Navy Pack/Prefabs/Carrier.prefab @@ -0,0 +1,99 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &8032535109072541925 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6422719964931271414} + - component: {fileID: 2628153265397076160} + - component: {fileID: 8594444871032204345} + - component: {fileID: 4469749714964711852} + m_Layer: 0 + m_Name: Carrier + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6422719964931271414 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8032535109072541925} + 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: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &2628153265397076160 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8032535109072541925} + m_Mesh: {fileID: 512672024619533229, guid: 08ec7ffde74838045a306a14372d710a, type: 3} +--- !u!23 &8594444871032204345 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8032535109072541925} + 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_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 162ef5d2f7748b243a98872235fa7d31, type: 2} + - {fileID: 2100000, guid: 7357938565cab4748b458a5749b04c98, type: 2} + - {fileID: 2100000, guid: 293d888a347d0cc498b297a857793db2, type: 2} + - {fileID: 2100000, guid: 05244d560020dd34bb5861816ba9cde4, 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 +--- !u!64 &4469749714964711852 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8032535109072541925} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 512672024619533229, guid: 08ec7ffde74838045a306a14372d710a, type: 3} diff --git a/Assets/Navy Pack/Prefabs/Carrier.prefab.meta b/Assets/Navy Pack/Prefabs/Carrier.prefab.meta new file mode 100644 index 000000000..baa26f731 --- /dev/null +++ b/Assets/Navy Pack/Prefabs/Carrier.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: eb727f41c5e41654f8d412ad349924d2 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Prefabs/F18.prefab b/Assets/Navy Pack/Prefabs/F18.prefab new file mode 100644 index 000000000..7d832294d --- /dev/null +++ b/Assets/Navy Pack/Prefabs/F18.prefab @@ -0,0 +1,326 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &5638021280938902188 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8675375042841948351} + - component: {fileID: 377767027855395465} + - component: {fileID: 6197674879935247984} + - component: {fileID: 2616444569232832791} + m_Layer: 0 + m_Name: F18 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8675375042841948351 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5638021280938902188} + 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: 1622410643321493597} + - {fileID: 7732778015569450187} + - {fileID: 2152163144414047640} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &377767027855395465 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5638021280938902188} + m_Mesh: {fileID: 1716815184689860582, guid: c5eadc855f505434990b0311d0649a52, type: 3} +--- !u!23 &6197674879935247984 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5638021280938902188} + 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_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: f4fffb334858c8c4098a0a346a343bbf, type: 2} + - {fileID: 2100000, guid: 0e0d21a9a865b884797afb419e6f499e, type: 2} + - {fileID: 2100000, guid: dd36dff1ea594c2479005fb933ce2e24, 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 +--- !u!64 &2616444569232832791 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5638021280938902188} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 1716815184689860582, guid: c5eadc855f505434990b0311d0649a52, type: 3} +--- !u!1001 &1223504273663962702 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 8675375042841948351} + m_Modifications: + - target: {fileID: 947099927166911446, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 947099927166911446, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + propertyPath: m_LocalPosition.y + value: 25.8 + objectReference: {fileID: 0} + - target: {fileID: 947099927166911446, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + propertyPath: m_LocalPosition.z + value: 65.3 + objectReference: {fileID: 0} + - target: {fileID: 947099927166911446, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 947099927166911446, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 947099927166911446, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 947099927166911446, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 947099927166911446, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 947099927166911446, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 947099927166911446, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 947099927166911446, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4287320765101240773, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + propertyPath: m_Name + value: landinggear_front + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 7d55ae198eca90d46b6acbf94fa54b86, type: 3} +--- !u!4 &2152163144414047640 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 947099927166911446, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + m_PrefabInstance: {fileID: 1223504273663962702} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &2920099280400855057 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 8675375042841948351} + m_Modifications: + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalPosition.x + value: 46 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalPosition.y + value: 22 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalPosition.z + value: -97 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalRotation.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalRotation.w + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 180 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8470505263354074825, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_Name + value: landinggear_back_right + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: e9a661355d4b56b43bbf925a68416dda, type: 3} +--- !u!4 &7732778015569450187 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + m_PrefabInstance: {fileID: 2920099280400855057} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &6149079879601142919 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 8675375042841948351} + m_Modifications: + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalPosition.x + value: -46 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalPosition.y + value: 22 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalPosition.z + value: -97 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8470505263354074825, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_Name + value: landinggear_back_left + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: e9a661355d4b56b43bbf925a68416dda, type: 3} +--- !u!4 &1622410643321493597 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + m_PrefabInstance: {fileID: 6149079879601142919} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Navy Pack/Prefabs/F18.prefab.meta b/Assets/Navy Pack/Prefabs/F18.prefab.meta new file mode 100644 index 000000000..baaa91efc --- /dev/null +++ b/Assets/Navy Pack/Prefabs/F18.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 36a900f7af3d50f47979517514bbd237 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Prefabs/F35.prefab b/Assets/Navy Pack/Prefabs/F35.prefab new file mode 100644 index 000000000..4001aaca8 --- /dev/null +++ b/Assets/Navy Pack/Prefabs/F35.prefab @@ -0,0 +1,326 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &8913466340421308965 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5614202792729141302} + - component: {fileID: 3509044144455506432} + - component: {fileID: 7173715673114519289} + - component: {fileID: 5445843811206511792} + m_Layer: 0 + m_Name: F35 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5614202792729141302 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8913466340421308965} + 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: 1532053994092328135} + - {fileID: 3165323339649418348} + - {fileID: 4921936323972548687} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &3509044144455506432 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8913466340421308965} + m_Mesh: {fileID: -4500790672820164825, guid: a1a74ddd5a4165744bd89f3ebc7f4230, type: 3} +--- !u!23 &7173715673114519289 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8913466340421308965} + 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_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 95a71a8830c654f4e916ef0955f211b9, type: 2} + - {fileID: 2100000, guid: 90acbf24c94372d4eaac5938eab6fbdd, type: 2} + - {fileID: 2100000, guid: 5ff48dd6898d3ea44ac0cd900b4ca30e, 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 +--- !u!64 &5445843811206511792 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8913466340421308965} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: -4500790672820164825, guid: a1a74ddd5a4165744bd89f3ebc7f4230, type: 3} +--- !u!1001 &5290319300805839769 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 5614202792729141302} + m_Modifications: + - target: {fileID: 947099927166911446, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 947099927166911446, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + propertyPath: m_LocalPosition.y + value: 17.7 + objectReference: {fileID: 0} + - target: {fileID: 947099927166911446, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + propertyPath: m_LocalPosition.z + value: 102 + objectReference: {fileID: 0} + - target: {fileID: 947099927166911446, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 947099927166911446, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 947099927166911446, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 947099927166911446, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 947099927166911446, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 947099927166911446, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 947099927166911446, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 947099927166911446, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4287320765101240773, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + propertyPath: m_Name + value: landinggear_front + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 7d55ae198eca90d46b6acbf94fa54b86, type: 3} +--- !u!4 &4921936323972548687 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 947099927166911446, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + m_PrefabInstance: {fileID: 5290319300805839769} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &6238871478097039389 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 5614202792729141302} + m_Modifications: + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalPosition.x + value: -60 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalPosition.y + value: 14.8 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalPosition.z + value: -76.6 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8470505263354074825, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_Name + value: landinggear_back_left + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: e9a661355d4b56b43bbf925a68416dda, type: 3} +--- !u!4 &1532053994092328135 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + m_PrefabInstance: {fileID: 6238871478097039389} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &7510705375760588982 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 5614202792729141302} + m_Modifications: + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalPosition.x + value: 60 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalPosition.y + value: 14.8 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalPosition.z + value: -76.6 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalRotation.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalRotation.w + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 180 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8470505263354074825, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_Name + value: landinggear_back_right + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: e9a661355d4b56b43bbf925a68416dda, type: 3} +--- !u!4 &3165323339649418348 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + m_PrefabInstance: {fileID: 7510705375760588982} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Navy Pack/Prefabs/F35.prefab.meta b/Assets/Navy Pack/Prefabs/F35.prefab.meta new file mode 100644 index 000000000..eb3f131cf --- /dev/null +++ b/Assets/Navy Pack/Prefabs/F35.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 130051f3e473f0d47bd0a0e355b24fb7 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Prefabs/Hawkeye.prefab b/Assets/Navy Pack/Prefabs/Hawkeye.prefab new file mode 100644 index 000000000..ef7f47078 --- /dev/null +++ b/Assets/Navy Pack/Prefabs/Hawkeye.prefab @@ -0,0 +1,326 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1471574114191719901 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2465524004318367694} + - component: {fileID: 6875954000980047352} + - component: {fileID: 887423327425825025} + - component: {fileID: 9049725798628828331} + m_Layer: 0 + m_Name: Hawkeye + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2465524004318367694 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1471574114191719901} + 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: 2092209805363669698} + - {fileID: 9096365126191719740} + - {fileID: 8960718078697134714} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &6875954000980047352 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1471574114191719901} + m_Mesh: {fileID: 7037165829162734932, guid: c6580dbf574d5d04ba32b024f756a714, type: 3} +--- !u!23 &887423327425825025 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1471574114191719901} + 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_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 3ba7393833578974dac15a91a4291a53, type: 2} + - {fileID: 2100000, guid: 226d3470aa310ba42b4f134658304ecb, type: 2} + - {fileID: 2100000, guid: b48aefb4dc0e07d47b2b4886515c26f2, 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 +--- !u!64 &9049725798628828331 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1471574114191719901} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 7037165829162734932, guid: c6580dbf574d5d04ba32b024f756a714, type: 3} +--- !u!1001 &4461617607727219174 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2465524004318367694} + m_Modifications: + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalPosition.x + value: 128 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalPosition.y + value: 21.8 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalPosition.z + value: 20.9 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalRotation.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalRotation.w + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 180 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8470505263354074825, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_Name + value: landinggear_back_right + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: e9a661355d4b56b43bbf925a68416dda, type: 3} +--- !u!4 &9096365126191719740 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + m_PrefabInstance: {fileID: 4461617607727219174} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &6836213321311931928 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2465524004318367694} + m_Modifications: + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalPosition.x + value: -128 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalPosition.y + value: 21.8 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalPosition.z + value: 20.9 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8470505263354074825, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + propertyPath: m_Name + value: landinggear_back_left + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: e9a661355d4b56b43bbf925a68416dda, type: 3} +--- !u!4 &2092209805363669698 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4888127913651414234, guid: e9a661355d4b56b43bbf925a68416dda, + type: 3} + m_PrefabInstance: {fileID: 6836213321311931928} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &8178004486824712620 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2465524004318367694} + m_Modifications: + - target: {fileID: 947099927166911446, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 947099927166911446, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + propertyPath: m_LocalPosition.y + value: 24.7 + objectReference: {fileID: 0} + - target: {fileID: 947099927166911446, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + propertyPath: m_LocalPosition.z + value: 274 + objectReference: {fileID: 0} + - target: {fileID: 947099927166911446, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 947099927166911446, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 947099927166911446, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 947099927166911446, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 947099927166911446, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 947099927166911446, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 947099927166911446, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 947099927166911446, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4287320765101240773, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + propertyPath: m_Name + value: landinggear_front + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 7d55ae198eca90d46b6acbf94fa54b86, type: 3} +--- !u!4 &8960718078697134714 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 947099927166911446, guid: 7d55ae198eca90d46b6acbf94fa54b86, + type: 3} + m_PrefabInstance: {fileID: 8178004486824712620} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Navy Pack/Prefabs/Hawkeye.prefab.meta b/Assets/Navy Pack/Prefabs/Hawkeye.prefab.meta new file mode 100644 index 000000000..a1c5cbfff --- /dev/null +++ b/Assets/Navy Pack/Prefabs/Hawkeye.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 555eaf4e59d5e3d4f9f63c3e0f9d81c1 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Prefabs/Seahawk.prefab b/Assets/Navy Pack/Prefabs/Seahawk.prefab new file mode 100644 index 000000000..1b82455b4 --- /dev/null +++ b/Assets/Navy Pack/Prefabs/Seahawk.prefab @@ -0,0 +1,276 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &5727963831297776388 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8729815669335189783} + - component: {fileID: 323572692770083617} + - component: {fileID: 6287314032849858520} + - component: {fileID: -3723237725194910348} + m_Layer: 0 + m_Name: Seahawk + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8729815669335189783 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5727963831297776388} + 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: 5676929694636562012} + - {fileID: 9115218692978993531} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &323572692770083617 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5727963831297776388} + m_Mesh: {fileID: -9069522284548219780, guid: 9759800d67ac18d48bcf9a10ce6aa287, type: 3} +--- !u!23 &6287314032849858520 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5727963831297776388} + 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_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 17cbe51cc8f7b8f4ebbc4467c7607e73, type: 2} + - {fileID: 2100000, guid: 50bc2aafe7af7da4b861bfc8c13ff804, type: 2} + - {fileID: 2100000, guid: 78982e47ce57d6643a4ac733a24971c1, type: 2} + - {fileID: 2100000, guid: d71b22280e53c2b4aaa90fecf4bed2dc, 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 +--- !u!64 &-3723237725194910348 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5727963831297776388} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: -9069522284548219780, guid: 9759800d67ac18d48bcf9a10ce6aa287, type: 3} +--- !u!1001 &1177275522520678696 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 8729815669335189783} + m_Modifications: + - target: {fileID: 23678963723748397, guid: 949a64464f0d27b4ba52993df2c3ddb1, + type: 3} + propertyPath: m_Name + value: main_propeller + objectReference: {fileID: 0} + - target: {fileID: 3895409429212935742, guid: 949a64464f0d27b4ba52993df2c3ddb1, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3895409429212935742, guid: 949a64464f0d27b4ba52993df2c3ddb1, + type: 3} + propertyPath: m_LocalPosition.y + value: 110 + objectReference: {fileID: 0} + - target: {fileID: 3895409429212935742, guid: 949a64464f0d27b4ba52993df2c3ddb1, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3895409429212935742, guid: 949a64464f0d27b4ba52993df2c3ddb1, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3895409429212935742, guid: 949a64464f0d27b4ba52993df2c3ddb1, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3895409429212935742, guid: 949a64464f0d27b4ba52993df2c3ddb1, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3895409429212935742, guid: 949a64464f0d27b4ba52993df2c3ddb1, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3895409429212935742, guid: 949a64464f0d27b4ba52993df2c3ddb1, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3895409429212935742, guid: 949a64464f0d27b4ba52993df2c3ddb1, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3895409429212935742, guid: 949a64464f0d27b4ba52993df2c3ddb1, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3895409429212935742, guid: 949a64464f0d27b4ba52993df2c3ddb1, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6817891985843967860, guid: 949a64464f0d27b4ba52993df2c3ddb1, + type: 3} + propertyPath: m_LocalPosition.y + value: 108 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 949a64464f0d27b4ba52993df2c3ddb1, type: 3} +--- !u!4 &5676929694636562012 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 6817891985843967860, guid: 949a64464f0d27b4ba52993df2c3ddb1, + type: 3} + m_PrefabInstance: {fileID: 1177275522520678696} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &4187268308924857459 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 8729815669335189783} + m_Modifications: + - target: {fileID: 818071634408957310, guid: d2d92d3d2f51aae4cb32f292c29ae78f, + type: 3} + propertyPath: m_Name + value: small_prop + objectReference: {fileID: 0} + - target: {fileID: 4395801350744708973, guid: d2d92d3d2f51aae4cb32f292c29ae78f, + type: 3} + propertyPath: m_LocalPosition.x + value: 17 + objectReference: {fileID: 0} + - target: {fileID: 4395801350744708973, guid: d2d92d3d2f51aae4cb32f292c29ae78f, + type: 3} + propertyPath: m_LocalPosition.y + value: 102 + objectReference: {fileID: 0} + - target: {fileID: 4395801350744708973, guid: d2d92d3d2f51aae4cb32f292c29ae78f, + type: 3} + propertyPath: m_LocalPosition.z + value: -365 + objectReference: {fileID: 0} + - target: {fileID: 4395801350744708973, guid: d2d92d3d2f51aae4cb32f292c29ae78f, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4395801350744708973, guid: d2d92d3d2f51aae4cb32f292c29ae78f, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4395801350744708973, guid: d2d92d3d2f51aae4cb32f292c29ae78f, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4395801350744708973, guid: d2d92d3d2f51aae4cb32f292c29ae78f, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4395801350744708973, guid: d2d92d3d2f51aae4cb32f292c29ae78f, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4395801350744708973, guid: d2d92d3d2f51aae4cb32f292c29ae78f, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4395801350744708973, guid: d2d92d3d2f51aae4cb32f292c29ae78f, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4395801350744708973, guid: d2d92d3d2f51aae4cb32f292c29ae78f, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4928038933418480904, guid: d2d92d3d2f51aae4cb32f292c29ae78f, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4928038933418480904, guid: d2d92d3d2f51aae4cb32f292c29ae78f, + type: 3} + propertyPath: m_LocalPosition.z + value: -365 + objectReference: {fileID: 0} + - target: {fileID: 4928038933418480904, guid: d2d92d3d2f51aae4cb32f292c29ae78f, + type: 3} + propertyPath: m_LocalPosition.y + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 4928038933418480904, guid: d2d92d3d2f51aae4cb32f292c29ae78f, + type: 3} + propertyPath: m_LocalPosition.x + value: 17 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d2d92d3d2f51aae4cb32f292c29ae78f, type: 3} +--- !u!4 &9115218692978993531 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4928038933418480904, guid: d2d92d3d2f51aae4cb32f292c29ae78f, + type: 3} + m_PrefabInstance: {fileID: 4187268308924857459} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Navy Pack/Prefabs/Seahawk.prefab.meta b/Assets/Navy Pack/Prefabs/Seahawk.prefab.meta new file mode 100644 index 000000000..f20435d5f --- /dev/null +++ b/Assets/Navy Pack/Prefabs/Seahawk.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 60d236126441e7e45a148f344d341ef3 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Prefabs/landinggear_back.prefab b/Assets/Navy Pack/Prefabs/landinggear_back.prefab new file mode 100644 index 000000000..4a7ee60de --- /dev/null +++ b/Assets/Navy Pack/Prefabs/landinggear_back.prefab @@ -0,0 +1,97 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &8470505263354074825 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4888127913651414234} + - component: {fileID: 4507286081335598828} + - component: {fileID: 7904258955643838997} + - component: {fileID: 8117940935538691441} + m_Layer: 0 + m_Name: landinggear_back + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4888127913651414234 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8470505263354074825} + 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: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &4507286081335598828 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8470505263354074825} + m_Mesh: {fileID: 2563741038413474576, guid: 57cb482a463cb27468f11fdcaeceb7d9, type: 3} +--- !u!23 &7904258955643838997 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8470505263354074825} + 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_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: d9cca568db016e94e8507a413a7db906, type: 2} + - {fileID: 2100000, guid: 80f22f2f7f01bab4888c1fd0606b4638, 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 +--- !u!64 &8117940935538691441 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8470505263354074825} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 2563741038413474576, guid: 57cb482a463cb27468f11fdcaeceb7d9, type: 3} diff --git a/Assets/Navy Pack/Prefabs/landinggear_back.prefab.meta b/Assets/Navy Pack/Prefabs/landinggear_back.prefab.meta new file mode 100644 index 000000000..6b8bb7e78 --- /dev/null +++ b/Assets/Navy Pack/Prefabs/landinggear_back.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e9a661355d4b56b43bbf925a68416dda +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Prefabs/landinggear_front.prefab b/Assets/Navy Pack/Prefabs/landinggear_front.prefab new file mode 100644 index 000000000..baf7f2c19 --- /dev/null +++ b/Assets/Navy Pack/Prefabs/landinggear_front.prefab @@ -0,0 +1,97 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &4287320765101240773 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 947099927166911446} + - component: {fileID: 8106409934194358752} + - component: {fileID: 2540955471814182169} + - component: {fileID: -6456643397887935649} + m_Layer: 0 + m_Name: landinggear_front + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &947099927166911446 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4287320765101240773} + 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: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &8106409934194358752 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4287320765101240773} + m_Mesh: {fileID: -6958751953723762588, guid: 2673b1485fdbc0f4fbcb2612d52af06e, type: 3} +--- !u!23 &2540955471814182169 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4287320765101240773} + 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_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 810e0268b81bdd14faa6684d901d9a2c, type: 2} + - {fileID: 2100000, guid: 8cda64a785e93a849bbe2f2750378458, 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 +--- !u!64 &-6456643397887935649 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4287320765101240773} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: -6958751953723762588, guid: 2673b1485fdbc0f4fbcb2612d52af06e, type: 3} diff --git a/Assets/Navy Pack/Prefabs/landinggear_front.prefab.meta b/Assets/Navy Pack/Prefabs/landinggear_front.prefab.meta new file mode 100644 index 000000000..8622886ca --- /dev/null +++ b/Assets/Navy Pack/Prefabs/landinggear_front.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7d55ae198eca90d46b6acbf94fa54b86 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Prefabs/main_propeller.prefab b/Assets/Navy Pack/Prefabs/main_propeller.prefab new file mode 100644 index 000000000..a2ce3c4e5 --- /dev/null +++ b/Assets/Navy Pack/Prefabs/main_propeller.prefab @@ -0,0 +1,96 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &7549543135410431335 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6817891985843967860} + - component: {fileID: 2577468683101760834} + - component: {fileID: 8140691145592312251} + - component: {fileID: -2470337697308860091} + m_Layer: 0 + m_Name: main_propeller + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6817891985843967860 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7549543135410431335} + 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: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &2577468683101760834 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7549543135410431335} + m_Mesh: {fileID: 5396606519411297917, guid: e7b5c566f78e82645ac7b8df5d68dcf5, type: 3} +--- !u!23 &8140691145592312251 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7549543135410431335} + 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_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 74aac81e2d3d23344a1cc7a684cab8ed, 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 +--- !u!64 &-2470337697308860091 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7549543135410431335} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 5396606519411297917, guid: e7b5c566f78e82645ac7b8df5d68dcf5, type: 3} diff --git a/Assets/Navy Pack/Prefabs/main_propeller.prefab.meta b/Assets/Navy Pack/Prefabs/main_propeller.prefab.meta new file mode 100644 index 000000000..3196e38c3 --- /dev/null +++ b/Assets/Navy Pack/Prefabs/main_propeller.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 949a64464f0d27b4ba52993df2c3ddb1 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Prefabs/small_prop.prefab b/Assets/Navy Pack/Prefabs/small_prop.prefab new file mode 100644 index 000000000..ced00941b --- /dev/null +++ b/Assets/Navy Pack/Prefabs/small_prop.prefab @@ -0,0 +1,96 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &8230522469763704603 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4928038933418480904} + - component: {fileID: 4123309289160519486} + - component: {fileID: 7639343673291887559} + - component: {fileID: -524519230301733054} + m_Layer: 0 + m_Name: small_prop + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4928038933418480904 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8230522469763704603} + 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: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &4123309289160519486 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8230522469763704603} + m_Mesh: {fileID: 7403769273968972748, guid: 3c8fc527dc00e944a962956335d6b438, type: 3} +--- !u!23 &7639343673291887559 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8230522469763704603} + 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_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 7112e09068f6ae34db6de6d34d47f64a, 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 +--- !u!64 &-524519230301733054 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8230522469763704603} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 7403769273968972748, guid: 3c8fc527dc00e944a962956335d6b438, type: 3} diff --git a/Assets/Navy Pack/Prefabs/small_prop.prefab.meta b/Assets/Navy Pack/Prefabs/small_prop.prefab.meta new file mode 100644 index 000000000..6e86162e3 --- /dev/null +++ b/Assets/Navy Pack/Prefabs/small_prop.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d2d92d3d2f51aae4cb32f292c29ae78f +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Scenes.meta b/Assets/Navy Pack/Scenes.meta new file mode 100644 index 000000000..d6f418a6a --- /dev/null +++ b/Assets/Navy Pack/Scenes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5553947dbca95f94fa40cccebfd425a3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Navy Pack/Scenes/DemoScene.unity b/Assets/Navy Pack/Scenes/DemoScene.unity new file mode 100644 index 000000000..3a60e3412 --- /dev/null +++ b/Assets/Navy Pack/Scenes/DemoScene.unity @@ -0,0 +1,2002 @@ +%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: 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: 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_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!1001 &27800758 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalPosition.x + value: -159 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalPosition.y + value: 164 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalPosition.z + value: -188 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalRotation.y + value: 0.59913194 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalRotation.w + value: 0.80065036 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_RootOrder + value: 13 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 73.616005 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalScale.x + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalScale.y + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalScale.z + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 8913466340421308965, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_Name + value: F35 (4) + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 130051f3e473f0d47bd0a0e355b24fb7, type: 3} +--- !u!1001 &228671188 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalPosition.x + value: -62 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalPosition.y + value: 164 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalPosition.z + value: 504 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalRotation.y + value: 0.043619405 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalRotation.w + value: 0.9990483 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_RootOrder + value: 9 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalScale.x + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalScale.y + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalScale.z + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 8913466340421308965, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_Name + value: F35 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 130051f3e473f0d47bd0a0e355b24fb7, type: 3} +--- !u!1001 &284581575 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 5727963831297776388, guid: 60d236126441e7e45a148f344d341ef3, + type: 3} + propertyPath: m_Name + value: Seahawk + objectReference: {fileID: 0} + - target: {fileID: 8729815669335189783, guid: 60d236126441e7e45a148f344d341ef3, + type: 3} + propertyPath: m_LocalPosition.x + value: 92 + objectReference: {fileID: 0} + - target: {fileID: 8729815669335189783, guid: 60d236126441e7e45a148f344d341ef3, + type: 3} + propertyPath: m_LocalPosition.y + value: 162 + objectReference: {fileID: 0} + - target: {fileID: 8729815669335189783, guid: 60d236126441e7e45a148f344d341ef3, + type: 3} + propertyPath: m_LocalPosition.z + value: 254 + objectReference: {fileID: 0} + - target: {fileID: 8729815669335189783, guid: 60d236126441e7e45a148f344d341ef3, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8729815669335189783, guid: 60d236126441e7e45a148f344d341ef3, + type: 3} + propertyPath: m_LocalRotation.y + value: -0.79863554 + objectReference: {fileID: 0} + - target: {fileID: 8729815669335189783, guid: 60d236126441e7e45a148f344d341ef3, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8729815669335189783, guid: 60d236126441e7e45a148f344d341ef3, + type: 3} + propertyPath: m_LocalRotation.w + value: 0.60181504 + objectReference: {fileID: 0} + - target: {fileID: 8729815669335189783, guid: 60d236126441e7e45a148f344d341ef3, + type: 3} + propertyPath: m_RootOrder + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 8729815669335189783, guid: 60d236126441e7e45a148f344d341ef3, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8729815669335189783, guid: 60d236126441e7e45a148f344d341ef3, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: -106 + objectReference: {fileID: 0} + - target: {fileID: 8729815669335189783, guid: 60d236126441e7e45a148f344d341ef3, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8729815669335189783, guid: 60d236126441e7e45a148f344d341ef3, + type: 3} + propertyPath: m_LocalScale.x + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 8729815669335189783, guid: 60d236126441e7e45a148f344d341ef3, + type: 3} + propertyPath: m_LocalScale.y + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 8729815669335189783, guid: 60d236126441e7e45a148f344d341ef3, + type: 3} + propertyPath: m_LocalScale.z + value: 0.2 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 60d236126441e7e45a148f344d341ef3, type: 3} +--- !u!1 &306637201 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 306637202} + m_Layer: 0 + m_Name: Environment + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &306637202 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 306637201} + 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: 654255852} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &392920539 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 392920540} + - component: {fileID: 392920541} + m_Layer: 0 + m_Name: Point Light 1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &392920540 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 392920539} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -731, y: 974, z: 826} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 650969805} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!108 &392920541 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 392920539} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 2 + m_Shape: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 0.84 + m_Range: 10000 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 0 + 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!1001 &522634408 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 5638021280938902188, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_Name + value: F18 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalPosition.x + value: 61 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalPosition.y + value: 164 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalPosition.z + value: 514 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalRotation.x + value: -0.00022838938 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalRotation.y + value: -0.04361881 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalRotation.z + value: 0.0052309753 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalRotation.w + value: 0.9990346 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_RootOrder + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: -5 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0.6 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalScale.x + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalScale.y + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalScale.z + value: 0.2 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 36a900f7af3d50f47979517514bbd237, type: 3} +--- !u!1001 &589388549 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 1471574114191719901, guid: 555eaf4e59d5e3d4f9f63c3e0f9d81c1, + type: 3} + propertyPath: m_Name + value: Hawkeye + objectReference: {fileID: 0} + - target: {fileID: 2465524004318367694, guid: 555eaf4e59d5e3d4f9f63c3e0f9d81c1, + type: 3} + propertyPath: m_LocalPosition.x + value: 99 + objectReference: {fileID: 0} + - target: {fileID: 2465524004318367694, guid: 555eaf4e59d5e3d4f9f63c3e0f9d81c1, + type: 3} + propertyPath: m_LocalPosition.y + value: 162 + objectReference: {fileID: 0} + - target: {fileID: 2465524004318367694, guid: 555eaf4e59d5e3d4f9f63c3e0f9d81c1, + type: 3} + propertyPath: m_LocalPosition.z + value: 132 + objectReference: {fileID: 0} + - target: {fileID: 2465524004318367694, guid: 555eaf4e59d5e3d4f9f63c3e0f9d81c1, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2465524004318367694, guid: 555eaf4e59d5e3d4f9f63c3e0f9d81c1, + type: 3} + propertyPath: m_LocalRotation.y + value: -0.79863554 + objectReference: {fileID: 0} + - target: {fileID: 2465524004318367694, guid: 555eaf4e59d5e3d4f9f63c3e0f9d81c1, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2465524004318367694, guid: 555eaf4e59d5e3d4f9f63c3e0f9d81c1, + type: 3} + propertyPath: m_LocalRotation.w + value: 0.60181504 + objectReference: {fileID: 0} + - target: {fileID: 2465524004318367694, guid: 555eaf4e59d5e3d4f9f63c3e0f9d81c1, + type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 2465524004318367694, guid: 555eaf4e59d5e3d4f9f63c3e0f9d81c1, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2465524004318367694, guid: 555eaf4e59d5e3d4f9f63c3e0f9d81c1, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: -106 + objectReference: {fileID: 0} + - target: {fileID: 2465524004318367694, guid: 555eaf4e59d5e3d4f9f63c3e0f9d81c1, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2465524004318367694, guid: 555eaf4e59d5e3d4f9f63c3e0f9d81c1, + type: 3} + propertyPath: m_LocalScale.x + value: 0.15 + objectReference: {fileID: 0} + - target: {fileID: 2465524004318367694, guid: 555eaf4e59d5e3d4f9f63c3e0f9d81c1, + type: 3} + propertyPath: m_LocalScale.y + value: 0.15 + objectReference: {fileID: 0} + - target: {fileID: 2465524004318367694, guid: 555eaf4e59d5e3d4f9f63c3e0f9d81c1, + type: 3} + propertyPath: m_LocalScale.z + value: 0.15 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 555eaf4e59d5e3d4f9f63c3e0f9d81c1, type: 3} +--- !u!1 &650969804 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 650969805} + m_Layer: 0 + m_Name: Lights + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &650969805 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 650969804} + 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: 705507995} + - {fileID: 392920540} + - {fileID: 2102803105} + - {fileID: 1504315865} + - {fileID: 657962411} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &654255851 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 654255852} + - component: {fileID: 654255855} + - component: {fileID: 654255854} + - component: {fileID: 654255853} + m_Layer: 0 + m_Name: Sea + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &654255852 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 654255851} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 700, y: 1, z: 700} + m_Children: [] + m_Father: {fileID: 306637202} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!64 &654255853 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 654255851} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &654255854 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 654255851} + 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_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 212e1b71f188b3140806b7a14dd347ce, 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 +--- !u!33 &654255855 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 654255851} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &657962410 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 657962411} + - component: {fileID: 657962412} + m_Layer: 0 + m_Name: Point Light 4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &657962411 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 657962410} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -341, y: -1992, z: 1303} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 650969805} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!108 &657962412 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 657962410} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 2 + m_Shape: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 0.84 + m_Range: 10000 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 0 + 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!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: 1, b: 1, a: 1} + m_Intensity: 0.32 + 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_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.38457707, y: -0.29742125, z: 0.13242047, w: 0.86377424} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 650969805} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 48, y: -38, 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} + 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: 5000 + field of view: 27 + 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.10779307, y: 0.8625027, z: -0.20706856, w: 0.44899046} + m_LocalPosition: {x: -1164, y: 933, z: 1001} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 27, y: 125, z: 0} +--- !u!1001 &998993872 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 6422719964931271414, guid: eb727f41c5e41654f8d412ad349924d2, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6422719964931271414, guid: eb727f41c5e41654f8d412ad349924d2, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6422719964931271414, guid: eb727f41c5e41654f8d412ad349924d2, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6422719964931271414, guid: eb727f41c5e41654f8d412ad349924d2, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6422719964931271414, guid: eb727f41c5e41654f8d412ad349924d2, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6422719964931271414, guid: eb727f41c5e41654f8d412ad349924d2, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6422719964931271414, guid: eb727f41c5e41654f8d412ad349924d2, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6422719964931271414, guid: eb727f41c5e41654f8d412ad349924d2, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 6422719964931271414, guid: eb727f41c5e41654f8d412ad349924d2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6422719964931271414, guid: eb727f41c5e41654f8d412ad349924d2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6422719964931271414, guid: eb727f41c5e41654f8d412ad349924d2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6422719964931271414, guid: eb727f41c5e41654f8d412ad349924d2, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6422719964931271414, guid: eb727f41c5e41654f8d412ad349924d2, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6422719964931271414, guid: eb727f41c5e41654f8d412ad349924d2, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8032535109072541925, guid: eb727f41c5e41654f8d412ad349924d2, + type: 3} + propertyPath: m_Name + value: Carrier + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: eb727f41c5e41654f8d412ad349924d2, type: 3} +--- !u!1001 &1284757626 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalPosition.x + value: -158 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalPosition.y + value: 164 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalPosition.z + value: -474 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalRotation.y + value: 0.59913194 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalRotation.w + value: 0.80065036 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_RootOrder + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 73.616005 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalScale.x + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalScale.y + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalScale.z + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 8913466340421308965, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_Name + value: F35 (1) + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 130051f3e473f0d47bd0a0e355b24fb7, type: 3} +--- !u!1001 &1361244300 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalPosition.x + value: -161 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalPosition.y + value: 164 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalPosition.z + value: -377 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalRotation.y + value: 0.59913194 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalRotation.w + value: 0.80065036 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_RootOrder + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 73.616005 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalScale.x + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalScale.y + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalScale.z + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 8913466340421308965, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_Name + value: F35 (2) + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 130051f3e473f0d47bd0a0e355b24fb7, type: 3} +--- !u!1 &1504315864 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1504315865} + - component: {fileID: 1504315866} + m_Layer: 0 + m_Name: Point Light 3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1504315865 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1504315864} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -120, y: -1992, z: -1701} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 650969805} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!108 &1504315866 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1504315864} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 2 + m_Shape: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 0.84 + m_Range: 10000 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 0 + 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!1001 &1556364762 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 5638021280938902188, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_Name + value: F18 (2) + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalPosition.x + value: 107.5 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalPosition.y + value: 163.6 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalPosition.z + value: -420.5 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalRotation.x + value: 0.002495211 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalRotation.y + value: -0.55135447 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalRotation.z + value: 0.0046031713 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalRotation.w + value: 0.8342547 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_RootOrder + value: 15 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0.52900004 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: -66.920006 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0.282 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalScale.x + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalScale.y + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalScale.z + value: 0.2 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 36a900f7af3d50f47979517514bbd237, type: 3} +--- !u!1001 &1598735485 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 5682040096812248282, guid: 7aa603c430729ab4492ad27a400e5194, + type: 3} + propertyPath: m_LocalPosition.x + value: 398 + objectReference: {fileID: 0} + - target: {fileID: 5682040096812248282, guid: 7aa603c430729ab4492ad27a400e5194, + type: 3} + propertyPath: m_LocalPosition.y + value: 325 + objectReference: {fileID: 0} + - target: {fileID: 5682040096812248282, guid: 7aa603c430729ab4492ad27a400e5194, + type: 3} + propertyPath: m_LocalPosition.z + value: 155 + objectReference: {fileID: 0} + - target: {fileID: 5682040096812248282, guid: 7aa603c430729ab4492ad27a400e5194, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5682040096812248282, guid: 7aa603c430729ab4492ad27a400e5194, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5682040096812248282, guid: 7aa603c430729ab4492ad27a400e5194, + type: 3} + propertyPath: m_LocalRotation.z + value: 0.16504757 + objectReference: {fileID: 0} + - target: {fileID: 5682040096812248282, guid: 7aa603c430729ab4492ad27a400e5194, + type: 3} + propertyPath: m_LocalRotation.w + value: 0.9862857 + objectReference: {fileID: 0} + - target: {fileID: 5682040096812248282, guid: 7aa603c430729ab4492ad27a400e5194, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 5682040096812248282, guid: 7aa603c430729ab4492ad27a400e5194, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5682040096812248282, guid: 7aa603c430729ab4492ad27a400e5194, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5682040096812248282, guid: 7aa603c430729ab4492ad27a400e5194, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 19 + objectReference: {fileID: 0} + - target: {fileID: 5682040096812248282, guid: 7aa603c430729ab4492ad27a400e5194, + type: 3} + propertyPath: m_LocalScale.x + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 5682040096812248282, guid: 7aa603c430729ab4492ad27a400e5194, + type: 3} + propertyPath: m_LocalScale.y + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 5682040096812248282, guid: 7aa603c430729ab4492ad27a400e5194, + type: 3} + propertyPath: m_LocalScale.z + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 8683486014554234569, guid: 7aa603c430729ab4492ad27a400e5194, + type: 3} + propertyPath: m_Name + value: Awacs + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 7aa603c430729ab4492ad27a400e5194, type: 3} +--- !u!1001 &1621799885 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 5727963831297776388, guid: 60d236126441e7e45a148f344d341ef3, + type: 3} + propertyPath: m_Name + value: Seahawk (1) + objectReference: {fileID: 0} + - target: {fileID: 8729815669335189783, guid: 60d236126441e7e45a148f344d341ef3, + type: 3} + propertyPath: m_LocalPosition.x + value: 86.2 + objectReference: {fileID: 0} + - target: {fileID: 8729815669335189783, guid: 60d236126441e7e45a148f344d341ef3, + type: 3} + propertyPath: m_LocalPosition.y + value: 162 + objectReference: {fileID: 0} + - target: {fileID: 8729815669335189783, guid: 60d236126441e7e45a148f344d341ef3, + type: 3} + propertyPath: m_LocalPosition.z + value: 366.1 + objectReference: {fileID: 0} + - target: {fileID: 8729815669335189783, guid: 60d236126441e7e45a148f344d341ef3, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8729815669335189783, guid: 60d236126441e7e45a148f344d341ef3, + type: 3} + propertyPath: m_LocalRotation.y + value: -0.79863554 + objectReference: {fileID: 0} + - target: {fileID: 8729815669335189783, guid: 60d236126441e7e45a148f344d341ef3, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8729815669335189783, guid: 60d236126441e7e45a148f344d341ef3, + type: 3} + propertyPath: m_LocalRotation.w + value: 0.60181504 + objectReference: {fileID: 0} + - target: {fileID: 8729815669335189783, guid: 60d236126441e7e45a148f344d341ef3, + type: 3} + propertyPath: m_RootOrder + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 8729815669335189783, guid: 60d236126441e7e45a148f344d341ef3, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8729815669335189783, guid: 60d236126441e7e45a148f344d341ef3, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: -106 + objectReference: {fileID: 0} + - target: {fileID: 8729815669335189783, guid: 60d236126441e7e45a148f344d341ef3, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8729815669335189783, guid: 60d236126441e7e45a148f344d341ef3, + type: 3} + propertyPath: m_LocalScale.x + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 8729815669335189783, guid: 60d236126441e7e45a148f344d341ef3, + type: 3} + propertyPath: m_LocalScale.y + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 8729815669335189783, guid: 60d236126441e7e45a148f344d341ef3, + type: 3} + propertyPath: m_LocalScale.z + value: 0.2 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 60d236126441e7e45a148f344d341ef3, type: 3} +--- !u!1001 &1820609263 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 5638021280938902188, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_Name + value: F18 (3) + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalPosition.x + value: 93 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalPosition.y + value: 233 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalPosition.z + value: -950 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalRotation.x + value: -0.0696704 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalRotation.y + value: -0.09544107 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalRotation.z + value: -0.004242251 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalRotation.w + value: 0.9929849 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_RootOrder + value: 16 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: -8 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: -11 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0.282 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalScale.x + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalScale.y + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalScale.z + value: 0.2 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 36a900f7af3d50f47979517514bbd237, type: 3} +--- !u!1001 &1959852306 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 5638021280938902188, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_Name + value: F18 (1) + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalPosition.x + value: 100.7 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalPosition.y + value: 163.6 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalPosition.z + value: -336.8 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalRotation.x + value: 0.002495211 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalRotation.y + value: -0.55135447 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalRotation.z + value: 0.0046031713 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalRotation.w + value: 0.8342547 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_RootOrder + value: 14 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0.52900004 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: -66.920006 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0.282 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalScale.x + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalScale.y + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 8675375042841948351, guid: 36a900f7af3d50f47979517514bbd237, + type: 3} + propertyPath: m_LocalScale.z + value: 0.2 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 36a900f7af3d50f47979517514bbd237, type: 3} +--- !u!1001 &2089275839 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalPosition.x + value: -157 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalPosition.y + value: 164 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalPosition.z + value: -284 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalRotation.y + value: 0.59913194 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalRotation.w + value: 0.80065036 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_RootOrder + value: 12 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 73.616005 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalScale.x + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalScale.y + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 5614202792729141302, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_LocalScale.z + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 8913466340421308965, guid: 130051f3e473f0d47bd0a0e355b24fb7, + type: 3} + propertyPath: m_Name + value: F35 (3) + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 130051f3e473f0d47bd0a0e355b24fb7, type: 3} +--- !u!1 &2102803104 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2102803105} + - component: {fileID: 2102803106} + m_Layer: 0 + m_Name: Point Light 2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2102803105 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102803104} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 206, y: 974, z: -83} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 650969805} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!108 &2102803106 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102803104} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 2 + m_Shape: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 0.84 + m_Range: 10000 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 0 + 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 diff --git a/Assets/scenes/main_menu.unity.meta b/Assets/Navy Pack/Scenes/DemoScene.unity.meta similarity index 74% rename from Assets/scenes/main_menu.unity.meta rename to Assets/Navy Pack/Scenes/DemoScene.unity.meta index 573defe79..952bd1e9e 100644 --- a/Assets/scenes/main_menu.unity.meta +++ b/Assets/Navy Pack/Scenes/DemoScene.unity.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: c817c1b09586c49e5b4a849ce1cf119b +guid: 9fc0d4010bbf28b4594072e72b8655ab DefaultImporter: externalObjects: {} userData: diff --git a/Assets/Navy Pack/readme.pdf b/Assets/Navy Pack/readme.pdf new file mode 100644 index 000000000..f6a3bd30d Binary files /dev/null and b/Assets/Navy Pack/readme.pdf differ diff --git a/Assets/scenes/menu_benchmark.unity.meta b/Assets/Navy Pack/readme.pdf.meta similarity index 74% rename from Assets/scenes/menu_benchmark.unity.meta rename to Assets/Navy Pack/readme.pdf.meta index 086fb9b54..b49c2473d 100644 --- a/Assets/scenes/menu_benchmark.unity.meta +++ b/Assets/Navy Pack/readme.pdf.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a18cbb07ef76d49fba92642ea25b7188 +guid: f4f1895bba46cb440900b695644a03f6 DefaultImporter: externalObjects: {} userData: diff --git a/Assets/New Folder.meta b/Assets/New Folder.meta new file mode 100644 index 000000000..3431dcd31 --- /dev/null +++ b/Assets/New Folder.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3d7c545287865fb4694916674eb38c28 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Objects/Levels/Island/ClearSky/Island_Post_Clear.asset b/Assets/Objects/Levels/Island/ClearSky/Island_Post_Clear.asset index 0b8c9f457..130fa0084 100644 --- a/Assets/Objects/Levels/Island/ClearSky/Island_Post_Clear.asset +++ b/Assets/Objects/Levels/Island/ClearSky/Island_Post_Clear.asset @@ -13,17 +13,12 @@ MonoBehaviour: m_Name: WhiteBalance m_EditorClassIdentifier: active: 1 - m_AdvancedMode: 0 temperature: m_OverrideState: 1 m_Value: -13.5 - min: -100 - max: 100 tint: m_OverrideState: 1 m_Value: 7.2 - min: -100 - max: 100 --- !u!114 &-7200118074554914838 MonoBehaviour: m_ObjectHideFlags: 3 @@ -37,7 +32,6 @@ MonoBehaviour: m_Name: LiftGammaGain m_EditorClassIdentifier: active: 1 - m_AdvancedMode: 0 lift: m_OverrideState: 1 m_Value: {x: 1, y: 0.8553331, z: 0.8301194, w: 0.007127695} @@ -60,24 +54,15 @@ MonoBehaviour: m_Name: SplitToning m_EditorClassIdentifier: active: 1 - m_AdvancedMode: 0 shadows: m_OverrideState: 1 m_Value: {r: 0.14386791, g: 0.4331201, b: 0.5, a: 1} - hdr: 0 - showAlpha: 0 - showEyeDropper: 1 highlights: m_OverrideState: 0 m_Value: {r: 0.5, g: 0.5, b: 0.5, a: 1} - hdr: 0 - showAlpha: 0 - showEyeDropper: 1 balance: m_OverrideState: 1 m_Value: 22.5 - min: -100 - max: 100 --- !u!114 &-1389446927207168906 MonoBehaviour: m_ObjectHideFlags: 3 @@ -91,7 +76,6 @@ MonoBehaviour: m_Name: ShadowsMidtonesHighlights m_EditorClassIdentifier: active: 1 - m_AdvancedMode: 0 shadows: m_OverrideState: 1 m_Value: {x: 0.93244046, y: 0.87692595, z: 1, w: 0.0071276994} @@ -104,19 +88,15 @@ MonoBehaviour: shadowsStart: m_OverrideState: 0 m_Value: 0 - min: 0 shadowsEnd: m_OverrideState: 1 m_Value: 0.5 - min: 0 highlightsStart: m_OverrideState: 0 m_Value: 0.55 - min: 0 highlightsEnd: m_OverrideState: 0 m_Value: 1 - min: 0 --- !u!114 &11400000 MonoBehaviour: m_ObjectHideFlags: 0 @@ -148,28 +128,18 @@ MonoBehaviour: m_Name: ColorAdjustments m_EditorClassIdentifier: active: 1 - m_AdvancedMode: 0 postExposure: m_OverrideState: 1 m_Value: -1.5 contrast: m_OverrideState: 1 m_Value: 10 - min: -100 - max: 100 colorFilter: m_OverrideState: 0 m_Value: {r: 1, g: 1, b: 1, a: 1} - hdr: 1 - showAlpha: 0 - showEyeDropper: 1 hueShift: m_OverrideState: 0 m_Value: 0 - min: -180 - max: 180 saturation: m_OverrideState: 1 m_Value: 25 - min: -100 - max: 100 diff --git a/Assets/Objects/Levels/Island/NavMesh-NavMesh.asset b/Assets/Objects/Levels/Island/NavMesh-NavMesh.asset deleted file mode 100644 index f4c784f3e..000000000 Binary files a/Assets/Objects/Levels/Island/NavMesh-NavMesh.asset and /dev/null differ diff --git a/Assets/Objects/UI/BoatImage.renderTexture b/Assets/Objects/UI/BoatImage.renderTexture index 7ab21dca7..73deca664 100644 --- a/Assets/Objects/UI/BoatImage.renderTexture +++ b/Assets/Objects/UI/BoatImage.renderTexture @@ -12,12 +12,13 @@ RenderTexture: Hash: 00000000000000000000000000000000 m_ForcedFallbackFormat: 4 m_DownscaleFallback: 0 - serializedVersion: 3 + m_IsAlphaChannelOptional: 0 + serializedVersion: 5 m_Width: 1024 m_Height: 640 m_AntiAliasing: 2 m_MipCount: -1 - m_DepthFormat: 0 + m_DepthStencilFormat: 0 m_ColorFormat: 74 m_MipMap: 0 m_GenerateMips: 1 @@ -25,6 +26,7 @@ RenderTexture: m_UseDynamicScale: 0 m_BindMS: 0 m_EnableCompatibleFormat: 1 + m_EnableRandomWrite: 0 m_TextureSettings: serializedVersion: 2 m_FilterMode: 1 @@ -35,3 +37,4 @@ RenderTexture: m_WrapW: 1 m_Dimension: 2 m_VolumeDepth: 1 + m_ShadowSamplingMode: 2 diff --git a/Assets/Objects/UI/meshes/checkpoint.fbx b/Assets/Objects/UI/meshes/checkpoint.fbx deleted file mode 100644 index 25100aa33..000000000 --- a/Assets/Objects/UI/meshes/checkpoint.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:744df248385ce2fb86aaf037ee95ed4ac0c7df9d1f45b28e255ffddf63b39b2d -size 47632 diff --git a/Assets/Objects/UI/prefabs/Image_square.prefab b/Assets/Objects/UI/prefabs/Image_square.prefab index 92b756870..bc310e456 100644 --- a/Assets/Objects/UI/prefabs/Image_square.prefab +++ b/Assets/Objects/UI/prefabs/Image_square.prefab @@ -28,12 +28,12 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 7793403690807032957} - {fileID: 4083271907634887187} - {fileID: 5378577178172698880} m_Father: {fileID: 0} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -63,6 +63,8 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -104,9 +106,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4436374301465765625} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 0} @@ -136,6 +138,8 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -160,13 +164,12 @@ MonoBehaviour: m_fontColorGradientPreset: {fileID: 0} m_spriteAsset: {fileID: 0} m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: 0 m_overrideHtmlColors: 0 m_faceColor: serializedVersion: 2 rgba: 4294967295 - m_outlineColor: - serializedVersion: 2 - rgba: 4278190080 m_fontSize: 24 m_fontSizeBase: 24 m_fontWeight: 400 @@ -174,6 +177,8 @@ MonoBehaviour: m_fontSizeMin: 18 m_fontSizeMax: 72 m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 m_textAlignment: 514 m_characterSpacing: 0 m_wordSpacing: 0 @@ -184,10 +189,8 @@ MonoBehaviour: m_enableWordWrapping: 1 m_wordWrappingRatios: 0.4 m_overflowMode: 0 - m_firstOverflowCharacterIndex: -1 m_linkedTextComponent: {fileID: 0} - m_isLinkedTextComponent: 0 - m_isTextTruncated: 0 + parentLinkedComponent: {fileID: 0} m_enableKerning: 1 m_enableExtraPadding: 0 checkPaddingRequired: 0 @@ -195,40 +198,18 @@ MonoBehaviour: m_parseCtrlCharacters: 1 m_isOrthographic: 1 m_isCullingEnabled: 0 - m_ignoreRectMaskCulling: 0 - m_ignoreCulling: 1 m_horizontalMapping: 0 m_verticalMapping: 0 m_uvLineOffset: 0 m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 m_VertexBufferAutoSizeReduction: 1 - m_firstVisibleCharacter: 0 m_useMaxVisibleDescender: 1 m_pageToDisplay: 1 m_margin: {x: 0, y: 0, z: 0, w: 0} - m_textInfo: - textComponent: {fileID: 3372134579990183133} - characterCount: 26 - spriteCount: 0 - spaceCount: 3 - wordCount: 4 - linkCount: 0 - lineCount: 1 - pageCount: 1 - materialCount: 1 m_isUsingLegacyAnimationComponent: 0 m_isVolumetricText: 0 - m_spriteAnimator: {fileID: 0} m_hasFontAssetChanged: 0 - m_subTextObjects: - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} --- !u!1 &3080200043643811428 @@ -259,9 +240,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4436374301465765625} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 0} @@ -291,6 +272,8 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -315,13 +298,12 @@ MonoBehaviour: m_fontColorGradientPreset: {fileID: 0} m_spriteAsset: {fileID: 0} m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: 0 m_overrideHtmlColors: 0 m_faceColor: serializedVersion: 2 rgba: 4294967295 - m_outlineColor: - serializedVersion: 2 - rgba: 4278190080 m_fontSize: 48 m_fontSizeBase: 48 m_fontWeight: 400 @@ -329,6 +311,8 @@ MonoBehaviour: m_fontSizeMin: 18 m_fontSizeMax: 72 m_fontStyle: 16 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 m_textAlignment: 514 m_characterSpacing: 5 m_wordSpacing: 0 @@ -339,10 +323,8 @@ MonoBehaviour: m_enableWordWrapping: 1 m_wordWrappingRatios: 0.4 m_overflowMode: 0 - m_firstOverflowCharacterIndex: 0 m_linkedTextComponent: {fileID: 0} - m_isLinkedTextComponent: 0 - m_isTextTruncated: 0 + parentLinkedComponent: {fileID: 0} m_enableKerning: 1 m_enableExtraPadding: 0 checkPaddingRequired: 0 @@ -350,40 +332,18 @@ MonoBehaviour: m_parseCtrlCharacters: 1 m_isOrthographic: 1 m_isCullingEnabled: 0 - m_ignoreRectMaskCulling: 0 - m_ignoreCulling: 1 m_horizontalMapping: 0 m_verticalMapping: 0 m_uvLineOffset: 0 m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 m_VertexBufferAutoSizeReduction: 1 - m_firstVisibleCharacter: 0 m_useMaxVisibleDescender: 1 m_pageToDisplay: 1 m_margin: {x: 0, y: 0, z: 0, w: 0} - m_textInfo: - textComponent: {fileID: 9017806971496136961} - characterCount: 12 - spriteCount: 0 - spaceCount: 0 - wordCount: 1 - linkCount: 0 - lineCount: 1 - pageCount: 1 - materialCount: 1 m_isUsingLegacyAnimationComponent: 0 m_isVolumetricText: 0 - m_spriteAnimator: {fileID: 0} m_hasFontAssetChanged: 0 - m_subTextObjects: - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} --- !u!1 &4346368796927862640 @@ -414,10 +374,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 717938677714433720} m_Father: {fileID: 4436374301465765625} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -447,6 +407,8 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -488,9 +450,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 7793403690807032957} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -520,6 +482,8 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] diff --git a/Assets/Objects/UI/prefabs/Image_square_singleplayer.prefab b/Assets/Objects/UI/prefabs/Image_square_singleplayer.prefab index 076cd06ad..17f540bab 100644 --- a/Assets/Objects/UI/prefabs/Image_square_singleplayer.prefab +++ b/Assets/Objects/UI/prefabs/Image_square_singleplayer.prefab @@ -1,76 +1,11 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: ---- !u!114 &570424265157894244 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 9075010700535047964} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Selected - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 7418773533516689025} - m_OnClick: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 8490184438857729681, guid: 7ad8269e6bbda4db3a76a6e41c11a5db, - type: 3} - m_MethodName: SetupGame - m_Mode: 3 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - - m_Target: {fileID: 0} - m_MethodName: - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 --- !u!1001 &6694908601038766838 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: - target: {fileID: 2385216480269379050, guid: 0fbbf7d7351874fa2a260a2d2286652c, @@ -80,126 +15,202 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_RootOrder - value: 0 + propertyPath: m_SizeDelta.x + value: 500 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 + propertyPath: m_SizeDelta.y + value: 400 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_SizeDelta.x - value: 500 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_SizeDelta.y - value: 400 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_AnchorMax.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_Pivot.x - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_Pivot.y - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 2385216480269379050, guid: 0fbbf7d7351874fa2a260a2d2286652c, + type: 3} + insertIndex: -1 + addedObject: {fileID: 570424265157894244} m_SourcePrefab: {fileID: 100100000, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} +--- !u!114 &7418773533516689025 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 4187732881076612215, guid: 0fbbf7d7351874fa2a260a2d2286652c, + type: 3} + m_PrefabInstance: {fileID: 6694908601038766838} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9075010700535047964} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1 &9075010700535047964 stripped GameObject: m_CorrespondingSourceObject: {fileID: 2385216480269379050, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} m_PrefabInstance: {fileID: 6694908601038766838} m_PrefabAsset: {fileID: 0} ---- !u!114 &7418773533516689025 stripped +--- !u!114 &570424265157894244 MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 4187732881076612215, guid: 0fbbf7d7351874fa2a260a2d2286652c, - type: 3} - m_PrefabInstance: {fileID: 6694908601038766838} + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 9075010700535047964} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} m_Name: m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 7418773533516689025} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 8490184438857729681, guid: 7ad8269e6bbda4db3a76a6e41c11a5db, + type: 3} + m_TargetAssemblyTypeName: + m_MethodName: SetupGame + m_Mode: 3 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 0} + m_TargetAssemblyTypeName: + m_MethodName: + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 diff --git a/Assets/Objects/UI/prefabs/Image_square_spectator.prefab b/Assets/Objects/UI/prefabs/Image_square_spectator.prefab index 240c9b170..7a6b8d754 100644 --- a/Assets/Objects/UI/prefabs/Image_square_spectator.prefab +++ b/Assets/Objects/UI/prefabs/Image_square_spectator.prefab @@ -1,53 +1,11 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: ---- !u!114 &7439659265635515354 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2266699601162746537} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Selected - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 319969262792176436} - m_OnClick: - m_PersistentCalls: - m_Calls: [] --- !u!1001 &4498271974934323011 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: - target: {fileID: 2385216480269379050, guid: 0fbbf7d7351874fa2a260a2d2286652c, @@ -62,8 +20,8 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3372134579990183133, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_textInfo.characterCount - value: 36 + propertyPath: m_textInfo.wordCount + value: 8 objectReference: {fileID: 0} - target: {fileID: 3372134579990183133, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} @@ -72,113 +30,113 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3372134579990183133, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_textInfo.wordCount - value: 8 + propertyPath: m_textInfo.characterCount + value: 36 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_RootOrder - value: 0 + propertyPath: m_SizeDelta.x + value: 500 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 + propertyPath: m_SizeDelta.y + value: 400 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_SizeDelta.x - value: 500 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_SizeDelta.y - value: 400 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_AnchorMax.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_Pivot.x - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 4436374301465765625, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} - propertyPath: m_Pivot.y - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 9017806971496136961, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} @@ -191,22 +149,73 @@ PrefabInstance: value: 9 objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 2385216480269379050, guid: 0fbbf7d7351874fa2a260a2d2286652c, + type: 3} + insertIndex: -1 + addedObject: {fileID: 7439659265635515354} m_SourcePrefab: {fileID: 100100000, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} +--- !u!114 &319969262792176436 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 4187732881076612215, guid: 0fbbf7d7351874fa2a260a2d2286652c, + type: 3} + m_PrefabInstance: {fileID: 4498271974934323011} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2266699601162746537} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1 &2266699601162746537 stripped GameObject: m_CorrespondingSourceObject: {fileID: 2385216480269379050, guid: 0fbbf7d7351874fa2a260a2d2286652c, type: 3} m_PrefabInstance: {fileID: 4498271974934323011} m_PrefabAsset: {fileID: 0} ---- !u!114 &319969262792176436 stripped +--- !u!114 &7439659265635515354 MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 4187732881076612215, guid: 0fbbf7d7351874fa2a260a2d2286652c, - type: 3} - m_PrefabInstance: {fileID: 4498271974934323011} + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2266699601162746537} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} m_Name: m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 319969262792176436} + m_OnClick: + m_PersistentCalls: + m_Calls: [] diff --git a/Assets/Objects/UI/prefabs/InGame/PlayerMapMarker.prefab b/Assets/Objects/UI/prefabs/InGame/PlayerMapMarker.prefab index 70a6e2fb4..4854e1a5e 100644 --- a/Assets/Objects/UI/prefabs/InGame/PlayerMapMarker.prefab +++ b/Assets/Objects/UI/prefabs/InGame/PlayerMapMarker.prefab @@ -28,9 +28,9 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0.38268343, w: 0.92387956} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 6559714379407293361} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 45} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} @@ -60,6 +60,8 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -102,10 +104,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 819696510986052958} m_Father: {fileID: 0} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} @@ -135,6 +137,8 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 0, b: 0, a: 1} m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] diff --git a/Assets/Objects/UI/prefabs/InGame/PlayerMarker.prefab b/Assets/Objects/UI/prefabs/InGame/PlayerMarker.prefab index 8348771e6..6cca522e3 100644 --- a/Assets/Objects/UI/prefabs/InGame/PlayerMarker.prefab +++ b/Assets/Objects/UI/prefabs/InGame/PlayerMarker.prefab @@ -28,9 +28,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4261262850135397659} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 1} @@ -60,6 +60,8 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 0.5019608} m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -101,9 +103,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4261262850135397659} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -133,6 +135,8 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -157,13 +161,12 @@ MonoBehaviour: m_fontColorGradientPreset: {fileID: 0} m_spriteAsset: {fileID: 0} m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: 0 m_overrideHtmlColors: 0 m_faceColor: serializedVersion: 2 rgba: 4294967295 - m_outlineColor: - serializedVersion: 2 - rgba: 4278190080 m_fontSize: 36 m_fontSizeBase: 36 m_fontWeight: 400 @@ -171,6 +174,8 @@ MonoBehaviour: m_fontSizeMin: 18 m_fontSizeMax: 72 m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 m_textAlignment: 514 m_characterSpacing: 5 m_wordSpacing: 0 @@ -181,10 +186,8 @@ MonoBehaviour: m_enableWordWrapping: 0 m_wordWrappingRatios: 0 m_overflowMode: 1 - m_firstOverflowCharacterIndex: -1 m_linkedTextComponent: {fileID: 0} - m_isLinkedTextComponent: 0 - m_isTextTruncated: 0 + parentLinkedComponent: {fileID: 0} m_enableKerning: 1 m_enableExtraPadding: 0 checkPaddingRequired: 0 @@ -192,40 +195,18 @@ MonoBehaviour: m_parseCtrlCharacters: 1 m_isOrthographic: 1 m_isCullingEnabled: 0 - m_ignoreRectMaskCulling: 0 - m_ignoreCulling: 1 m_horizontalMapping: 0 m_verticalMapping: 0 m_uvLineOffset: 0 m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 m_VertexBufferAutoSizeReduction: 1 - m_firstVisibleCharacter: 0 m_useMaxVisibleDescender: 1 m_pageToDisplay: 1 m_margin: {x: 0, y: 0, z: 0, w: 0} - m_textInfo: - textComponent: {fileID: 6421718595936595691} - characterCount: 7 - spriteCount: 0 - spaceCount: 0 - wordCount: 1 - linkCount: 0 - lineCount: 1 - pageCount: 1 - materialCount: 1 m_isUsingLegacyAnimationComponent: 0 m_isVolumetricText: 0 - m_spriteAnimator: {fileID: 0} m_hasFontAssetChanged: 0 - m_subTextObjects: - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} --- !u!1 &3337456683261141793 @@ -256,9 +237,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4261262850135397659} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 1} @@ -288,6 +269,8 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -312,13 +295,12 @@ MonoBehaviour: m_fontColorGradientPreset: {fileID: 0} m_spriteAsset: {fileID: 0} m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: 0 m_overrideHtmlColors: 0 m_faceColor: serializedVersion: 2 rgba: 4294967295 - m_outlineColor: - serializedVersion: 2 - rgba: 4278190080 m_fontSize: 36 m_fontSizeBase: 36 m_fontWeight: 400 @@ -326,6 +308,8 @@ MonoBehaviour: m_fontSizeMin: 18 m_fontSizeMax: 72 m_fontStyle: 16 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 m_textAlignment: 514 m_characterSpacing: 5 m_wordSpacing: 0 @@ -336,10 +320,8 @@ MonoBehaviour: m_enableWordWrapping: 0 m_wordWrappingRatios: 0 m_overflowMode: 4 - m_firstOverflowCharacterIndex: 0 m_linkedTextComponent: {fileID: 0} - m_isLinkedTextComponent: 0 - m_isTextTruncated: 0 + parentLinkedComponent: {fileID: 0} m_enableKerning: 1 m_enableExtraPadding: 0 checkPaddingRequired: 0 @@ -347,40 +329,18 @@ MonoBehaviour: m_parseCtrlCharacters: 1 m_isOrthographic: 1 m_isCullingEnabled: 0 - m_ignoreRectMaskCulling: 0 - m_ignoreCulling: 1 m_horizontalMapping: 0 m_verticalMapping: 0 m_uvLineOffset: 0 m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 m_VertexBufferAutoSizeReduction: 1 - m_firstVisibleCharacter: 0 m_useMaxVisibleDescender: 1 m_pageToDisplay: 1 m_margin: {x: 0, y: 0, z: 0, w: 0} - m_textInfo: - textComponent: {fileID: 9063798457440919915} - characterCount: 1 - spriteCount: 0 - spaceCount: 0 - wordCount: 1 - linkCount: 0 - lineCount: 1 - pageCount: 1 - materialCount: 1 m_isUsingLegacyAnimationComponent: 0 m_isVolumetricText: 0 - m_spriteAnimator: {fileID: 0} m_hasFontAssetChanged: 0 - m_subTextObjects: - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} --- !u!1 &6414587244416865795 @@ -412,12 +372,12 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 7970220736493734237} - {fileID: 2727826838796494380} - {fileID: 6981622591664246083} m_Father: {fileID: 0} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} @@ -447,6 +407,8 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 0, g: 0, b: 0, a: 0.392} m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] diff --git a/Assets/Objects/UI/prefabs/InGame/RaceStats_Player.prefab b/Assets/Objects/UI/prefabs/InGame/RaceStats_Player.prefab index cabf7c471..164494e0c 100644 --- a/Assets/Objects/UI/prefabs/InGame/RaceStats_Player.prefab +++ b/Assets/Objects/UI/prefabs/InGame/RaceStats_Player.prefab @@ -28,9 +28,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1651242306443558259} - m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -60,6 +60,8 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -84,13 +86,12 @@ MonoBehaviour: m_fontColorGradientPreset: {fileID: 0} m_spriteAsset: {fileID: 0} m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: 0 m_overrideHtmlColors: 0 m_faceColor: serializedVersion: 2 rgba: 4294967295 - m_outlineColor: - serializedVersion: 2 - rgba: 4278190080 m_fontSize: 36 m_fontSizeBase: 36 m_fontWeight: 400 @@ -98,6 +99,8 @@ MonoBehaviour: m_fontSizeMin: 18 m_fontSizeMax: 72 m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 m_textAlignment: 513 m_characterSpacing: 5 m_wordSpacing: 0 @@ -108,10 +111,8 @@ MonoBehaviour: m_enableWordWrapping: 1 m_wordWrappingRatios: 0 m_overflowMode: 1 - m_firstOverflowCharacterIndex: -1 m_linkedTextComponent: {fileID: 0} - m_isLinkedTextComponent: 0 - m_isTextTruncated: 0 + parentLinkedComponent: {fileID: 0} m_enableKerning: 1 m_enableExtraPadding: 0 checkPaddingRequired: 0 @@ -119,40 +120,18 @@ MonoBehaviour: m_parseCtrlCharacters: 1 m_isOrthographic: 1 m_isCullingEnabled: 0 - m_ignoreRectMaskCulling: 0 - m_ignoreCulling: 1 m_horizontalMapping: 0 m_verticalMapping: 0 m_uvLineOffset: 0 m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 m_VertexBufferAutoSizeReduction: 1 - m_firstVisibleCharacter: 0 m_useMaxVisibleDescender: 1 m_pageToDisplay: 1 m_margin: {x: 0, y: 0, z: 0, w: 0} - m_textInfo: - textComponent: {fileID: 8410545364529771218} - characterCount: 9 - spriteCount: 0 - spaceCount: 0 - wordCount: 3 - linkCount: 0 - lineCount: 1 - pageCount: 1 - materialCount: 1 m_isUsingLegacyAnimationComponent: 0 m_isVolumetricText: 0 - m_spriteAnimator: {fileID: 0} m_hasFontAssetChanged: 0 - m_subTextObjects: - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} --- !u!1 &2698428838123643335 @@ -183,9 +162,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1651242306443558259} - m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -215,6 +194,8 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -239,13 +220,12 @@ MonoBehaviour: m_fontColorGradientPreset: {fileID: 0} m_spriteAsset: {fileID: 0} m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: 0 m_overrideHtmlColors: 0 m_faceColor: serializedVersion: 2 rgba: 4294967295 - m_outlineColor: - serializedVersion: 2 - rgba: 4278190080 m_fontSize: 36 m_fontSizeBase: 36 m_fontWeight: 400 @@ -253,6 +233,8 @@ MonoBehaviour: m_fontSizeMin: 18 m_fontSizeMax: 72 m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 m_textAlignment: 513 m_characterSpacing: 5 m_wordSpacing: 0 @@ -263,10 +245,8 @@ MonoBehaviour: m_enableWordWrapping: 1 m_wordWrappingRatios: 0 m_overflowMode: 1 - m_firstOverflowCharacterIndex: -1 m_linkedTextComponent: {fileID: 0} - m_isLinkedTextComponent: 0 - m_isTextTruncated: 0 + parentLinkedComponent: {fileID: 0} m_enableKerning: 1 m_enableExtraPadding: 0 checkPaddingRequired: 0 @@ -274,40 +254,18 @@ MonoBehaviour: m_parseCtrlCharacters: 1 m_isOrthographic: 1 m_isCullingEnabled: 0 - m_ignoreRectMaskCulling: 0 - m_ignoreCulling: 1 m_horizontalMapping: 0 m_verticalMapping: 0 m_uvLineOffset: 0 m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 m_VertexBufferAutoSizeReduction: 1 - m_firstVisibleCharacter: 0 m_useMaxVisibleDescender: 1 m_pageToDisplay: 1 m_margin: {x: 0, y: 0, z: 0, w: 0} - m_textInfo: - textComponent: {fileID: 3608511208612296465} - characterCount: 9 - spriteCount: 0 - spaceCount: 0 - wordCount: 3 - linkCount: 0 - lineCount: 1 - pageCount: 1 - materialCount: 1 m_isUsingLegacyAnimationComponent: 0 m_isVolumetricText: 0 - m_spriteAnimator: {fileID: 0} m_hasFontAssetChanged: 0 - m_subTextObjects: - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} --- !u!1 &3361683635333884076 @@ -340,6 +298,7 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 2427694164499877701} - {fileID: 4853612697922662547} @@ -347,7 +306,6 @@ RectTransform: - {fileID: 3849491572532317107} - {fileID: 2805909154493863314} m_Father: {fileID: 0} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -379,6 +337,7 @@ MonoBehaviour: m_ChildControlHeight: 1 m_ChildScaleWidth: 0 m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 --- !u!222 &270868407313706351 CanvasRenderer: m_ObjectHideFlags: 0 @@ -402,6 +361,8 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 0.21176472, g: 0.8078432, b: 0.94117653, a: 0.5019608} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -460,9 +421,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1651242306443558259} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -492,6 +453,8 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -516,13 +479,12 @@ MonoBehaviour: m_fontColorGradientPreset: {fileID: 0} m_spriteAsset: {fileID: 0} m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: 0 m_overrideHtmlColors: 0 m_faceColor: serializedVersion: 2 rgba: 4294967295 - m_outlineColor: - serializedVersion: 2 - rgba: 4278190080 m_fontSize: 36 m_fontSizeBase: 36 m_fontWeight: 400 @@ -530,6 +492,8 @@ MonoBehaviour: m_fontSizeMin: 18 m_fontSizeMax: 72 m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 m_textAlignment: 513 m_characterSpacing: 5 m_wordSpacing: 0 @@ -540,10 +504,8 @@ MonoBehaviour: m_enableWordWrapping: 1 m_wordWrappingRatios: 0 m_overflowMode: 1 - m_firstOverflowCharacterIndex: -1 m_linkedTextComponent: {fileID: 0} - m_isLinkedTextComponent: 0 - m_isTextTruncated: 0 + parentLinkedComponent: {fileID: 0} m_enableKerning: 1 m_enableExtraPadding: 0 checkPaddingRequired: 0 @@ -551,40 +513,18 @@ MonoBehaviour: m_parseCtrlCharacters: 1 m_isOrthographic: 1 m_isCullingEnabled: 0 - m_ignoreRectMaskCulling: 0 - m_ignoreCulling: 1 m_horizontalMapping: 0 m_verticalMapping: 0 m_uvLineOffset: 0 m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 m_VertexBufferAutoSizeReduction: 1 - m_firstVisibleCharacter: 0 m_useMaxVisibleDescender: 1 m_pageToDisplay: 1 m_margin: {x: 0, y: 0, z: 0, w: 0} - m_textInfo: - textComponent: {fileID: 3393974456527619347} - characterCount: 8 - spriteCount: 0 - spaceCount: 0 - wordCount: 1 - linkCount: 0 - lineCount: 1 - pageCount: 1 - materialCount: 1 m_isUsingLegacyAnimationComponent: 0 m_isVolumetricText: 0 - m_spriteAnimator: {fileID: 0} m_hasFontAssetChanged: 0 - m_subTextObjects: - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} --- !u!1 &8355593077391515718 @@ -615,9 +555,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1651242306443558259} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -647,6 +587,8 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -671,13 +613,12 @@ MonoBehaviour: m_fontColorGradientPreset: {fileID: 0} m_spriteAsset: {fileID: 0} m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: 0 m_overrideHtmlColors: 0 m_faceColor: serializedVersion: 2 rgba: 4294967295 - m_outlineColor: - serializedVersion: 2 - rgba: 4278190080 m_fontSize: 36 m_fontSizeBase: 36 m_fontWeight: 400 @@ -685,6 +626,8 @@ MonoBehaviour: m_fontSizeMin: 18 m_fontSizeMax: 72 m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 m_textAlignment: 513 m_characterSpacing: 5 m_wordSpacing: 0 @@ -695,10 +638,8 @@ MonoBehaviour: m_enableWordWrapping: 1 m_wordWrappingRatios: 0 m_overflowMode: 1 - m_firstOverflowCharacterIndex: -1 m_linkedTextComponent: {fileID: 0} - m_isLinkedTextComponent: 0 - m_isTextTruncated: 0 + parentLinkedComponent: {fileID: 0} m_enableKerning: 1 m_enableExtraPadding: 0 checkPaddingRequired: 0 @@ -706,40 +647,18 @@ MonoBehaviour: m_parseCtrlCharacters: 1 m_isOrthographic: 1 m_isCullingEnabled: 0 - m_ignoreRectMaskCulling: 0 - m_ignoreCulling: 1 m_horizontalMapping: 0 m_verticalMapping: 0 m_uvLineOffset: 0 m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 m_VertexBufferAutoSizeReduction: 1 - m_firstVisibleCharacter: 0 m_useMaxVisibleDescender: 1 m_pageToDisplay: 1 m_margin: {x: 0, y: 0, z: 0, w: 0} - m_textInfo: - textComponent: {fileID: 1155670549187173950} - characterCount: 3 - spriteCount: 0 - spaceCount: 0 - wordCount: 1 - linkCount: 0 - lineCount: 1 - pageCount: 1 - materialCount: 1 m_isUsingLegacyAnimationComponent: 0 m_isVolumetricText: 0 - m_spriteAnimator: {fileID: 0} m_hasFontAssetChanged: 0 - m_subTextObjects: - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} --- !u!1 &9120483241784819981 @@ -770,9 +689,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1651242306443558259} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -802,6 +721,8 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -826,13 +747,12 @@ MonoBehaviour: m_fontColorGradientPreset: {fileID: 0} m_spriteAsset: {fileID: 0} m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: 0 m_overrideHtmlColors: 0 m_faceColor: serializedVersion: 2 rgba: 4294967295 - m_outlineColor: - serializedVersion: 2 - rgba: 4278190080 m_fontSize: 36 m_fontSizeBase: 36 m_fontWeight: 400 @@ -840,6 +760,8 @@ MonoBehaviour: m_fontSizeMin: 18 m_fontSizeMax: 72 m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 m_textAlignment: 513 m_characterSpacing: 5 m_wordSpacing: 0 @@ -850,10 +772,8 @@ MonoBehaviour: m_enableWordWrapping: 1 m_wordWrappingRatios: 0 m_overflowMode: 1 - m_firstOverflowCharacterIndex: -1 m_linkedTextComponent: {fileID: 0} - m_isLinkedTextComponent: 0 - m_isTextTruncated: 0 + parentLinkedComponent: {fileID: 0} m_enableKerning: 1 m_enableExtraPadding: 0 checkPaddingRequired: 0 @@ -861,39 +781,17 @@ MonoBehaviour: m_parseCtrlCharacters: 1 m_isOrthographic: 1 m_isCullingEnabled: 0 - m_ignoreRectMaskCulling: 0 - m_ignoreCulling: 1 m_horizontalMapping: 0 m_verticalMapping: 0 m_uvLineOffset: 0 m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 m_VertexBufferAutoSizeReduction: 1 - m_firstVisibleCharacter: 0 m_useMaxVisibleDescender: 1 m_pageToDisplay: 1 m_margin: {x: 0, y: 0, z: 0, w: 0} - m_textInfo: - textComponent: {fileID: 5324532405065709284} - characterCount: 11 - spriteCount: 0 - spaceCount: 1 - wordCount: 2 - linkCount: 0 - lineCount: 1 - pageCount: 1 - materialCount: 1 m_isUsingLegacyAnimationComponent: 0 m_isVolumetricText: 0 - m_spriteAnimator: {fileID: 0} m_hasFontAssetChanged: 0 - m_subTextObjects: - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} diff --git a/Assets/Objects/UI/prefabs/InGame/Race_Canvas.prefab b/Assets/Objects/UI/prefabs/InGame/Race_Canvas.prefab index 0f352354c..a3df994b5 100644 --- a/Assets/Objects/UI/prefabs/InGame/Race_Canvas.prefab +++ b/Assets/Objects/UI/prefabs/InGame/Race_Canvas.prefab @@ -28,9 +28,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 6548380304833109455} - m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -60,6 +60,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -161,9 +162,9 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 7300133658760232463} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0.5, y: 1} @@ -193,6 +194,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -293,11 +295,11 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 2322729500896713539} - {fileID: 16794611894021369} m_Father: {fileID: 6721600935011419911} - m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 1, y: 0} m_AnchorMax: {x: 1, y: 0} @@ -338,13 +340,13 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 5347790856843233973} - {fileID: 5347790856688489105} - {fileID: 5347790855586753531} - {fileID: 7300133658760232463} m_Father: {fileID: 5347790855530666829} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -379,9 +381,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5347790855586753531} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -411,6 +413,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 0.7490196} m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -457,12 +460,12 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 6721600935011419911} - {fileID: 1544795113959586861} - {fileID: 3606642798283586563} m_Father: {fileID: 0} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -486,7 +489,9 @@ Canvas: m_OverrideSorting: 0 m_OverridePixelPerfect: 0 m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 m_AdditionalShaderChannelsFlag: 1 + m_UpdateRectTransformForStandalone: 0 m_SortingLayerID: 0 m_SortingOrder: 0 m_TargetDisplay: 0 @@ -512,6 +517,7 @@ MonoBehaviour: m_FallbackScreenDPI: 96 m_DefaultSpriteDPI: 96 m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 --- !u!114 &4682807467005571516 MonoBehaviour: m_ObjectHideFlags: 0 @@ -537,12 +543,18 @@ MonoBehaviour: playerMarker: m_AssetGUID: 34b5c45ac411341838c26dd7e127563e m_SubObjectName: + m_SubObjectType: + m_EditorAssetChanged: 0 playerMapMarker: m_AssetGUID: d6294ade8f31d403eaab049b86f2ed11 m_SubObjectName: + m_SubObjectType: + m_EditorAssetChanged: 0 raceStatsPlayer: m_AssetGUID: 4823b5c430af647578af56a5d37f7276 m_SubObjectName: + m_SubObjectType: + m_EditorAssetChanged: 0 --- !u!114 &3273538309571339402 MonoBehaviour: m_ObjectHideFlags: 0 @@ -587,8 +599,10 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 01614664b831546d2ae94a42149d80ac, type: 3} m_Name: m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 m_MoveRepeatDelay: 0.5 m_MoveRepeatRate: 0.1 + m_XRTrackingOrigin: {fileID: 0} m_ActionsAsset: {fileID: -944628639613478452, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} m_PointAction: {fileID: 1054132383583890850, guid: ca9f5fa95ffab41fb9a615ab714db018, @@ -613,6 +627,8 @@ MonoBehaviour: type: 3} m_DeselectOnBackgroundClick: 1 m_PointerBehavior: 0 + m_CursorLockBehavior: 0 + m_ScrollDeltaPerTick: 6 --- !u!1 &5347790855547287923 GameObject: m_ObjectHideFlags: 0 @@ -641,9 +657,9 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5347790856843233973} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -673,6 +689,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -774,10 +791,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1886402391124204874} m_Father: {fileID: 6721600935011419911} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -807,6 +824,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 0.21176472, g: 0.8078432, b: 0.94117653, a: 0.5019608} m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -849,9 +867,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5347790856983547794} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: -1} m_AnchorMax: {x: 1, y: 0} @@ -881,6 +899,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -982,9 +1001,9 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5347790856688489105} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0.5, y: 1} @@ -1014,6 +1033,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -1115,9 +1135,9 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5347790856688489105} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -1147,6 +1167,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -1248,9 +1269,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5347790856983547794} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -1280,6 +1301,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -1380,12 +1402,12 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 5347790856091705332} - {fileID: 5347790855832232832} - {fileID: 5347790856983547794} m_Father: {fileID: 6721600935011419911} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -1427,11 +1449,11 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 5347790857331151360} - {fileID: 5347790855547287922} m_Father: {fileID: 6721600935011419911} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 1, y: 1} m_AnchorMax: {x: 1, y: 1} @@ -1474,11 +1496,11 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 5347790856266267882} - {fileID: 5347790855668333725} m_Father: {fileID: 5347790856688489105} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 0} @@ -1508,6 +1530,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 0.21176472, g: 0.8078432, b: 0.94117653, a: 0.5019608} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -1550,9 +1573,9 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5347790856843233973} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0.5, y: 1} @@ -1582,6 +1605,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -1681,11 +1705,11 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1531208815120022709} - {fileID: 752230290687444200} m_Father: {fileID: 5347790855530666829} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -1720,9 +1744,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 6548380304833109455} - m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -1752,6 +1776,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -1853,9 +1878,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 6548380304833109455} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -1885,6 +1910,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -1986,9 +2012,9 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 7300133658760232463} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -2018,6 +2044,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -2120,10 +2147,10 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 6548380304833109455} m_Father: {fileID: 5347790855530666829} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.1, y: 0} m_AnchorMax: {x: 0.9, y: 1} @@ -2163,6 +2190,7 @@ MonoBehaviour: m_ChildControlHeight: 0 m_ChildScaleWidth: 0 m_ChildScaleHeight: 1 + m_ReverseArrangement: 0 --- !u!114 &1583428134841937876 MonoBehaviour: m_ObjectHideFlags: 0 @@ -2205,9 +2233,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 6548380304833109455} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -2237,6 +2265,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -2339,6 +2368,7 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 7674469293639866560} - {fileID: 4271000520175623691} @@ -2346,7 +2376,6 @@ RectTransform: - {fileID: 6488416380379324206} - {fileID: 1232651898752258166} m_Father: {fileID: 1544795113959586861} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -2378,6 +2407,7 @@ MonoBehaviour: m_ChildControlHeight: 1 m_ChildScaleWidth: 0 m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 --- !u!222 &1317092357428940044 CanvasRenderer: m_ObjectHideFlags: 0 @@ -2401,6 +2431,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -2443,9 +2474,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 6548380304833109455} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -2475,6 +2506,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -2553,26 +2585,27 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 3606642798283586563} m_Modifications: - target: {fileID: 1705088698142256427, guid: 2e802695a225e48efb842122e2423314, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 1705088698142256427, guid: 2e802695a225e48efb842122e2423314, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 1705088698142256427, guid: 2e802695a225e48efb842122e2423314, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 1705088698142256427, guid: 2e802695a225e48efb842122e2423314, type: 3} - propertyPath: m_RootOrder + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 1705088698142256427, guid: 2e802695a225e48efb842122e2423314, @@ -2601,40 +2634,44 @@ PrefabInstance: value: objectReference: {fileID: 4682807467005571516} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 2e802695a225e48efb842122e2423314, type: 3} ---- !u!1 &2530314209084421739 stripped -GameObject: - m_CorrespondingSourceObject: {fileID: 2417087417245247477, guid: 2e802695a225e48efb842122e2423314, - type: 3} - m_PrefabInstance: {fileID: 186410578290512286} - m_PrefabAsset: {fileID: 0} --- !u!224 &1531208815120022709 stripped RectTransform: m_CorrespondingSourceObject: {fileID: 1705088698142256427, guid: 2e802695a225e48efb842122e2423314, type: 3} m_PrefabInstance: {fileID: 186410578290512286} m_PrefabAsset: {fileID: 0} +--- !u!1 &2530314209084421739 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 2417087417245247477, guid: 2e802695a225e48efb842122e2423314, + type: 3} + m_PrefabInstance: {fileID: 186410578290512286} + m_PrefabAsset: {fileID: 0} --- !u!1001 &1027489185883053443 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 3606642798283586563} m_Modifications: - target: {fileID: 302350917559884139, guid: dbcc8ad9df6a14eb89c6443a6667122e, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_RootOrder + value: 1 objectReference: {fileID: 0} - target: {fileID: 302350917559884139, guid: dbcc8ad9df6a14eb89c6443a6667122e, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 302350917559884139, guid: dbcc8ad9df6a14eb89c6443a6667122e, type: 3} - propertyPath: m_RootOrder - value: 1 + propertyPath: m_LocalPosition.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 302350917559884139, guid: dbcc8ad9df6a14eb89c6443a6667122e, type: 3} @@ -2658,25 +2695,28 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6200252423622398695, guid: dbcc8ad9df6a14eb89c6443a6667122e, type: 3} - propertyPath: m_textInfo.characterCount - value: 5 + propertyPath: m_textInfo.lineCount + value: 1 objectReference: {fileID: 0} - target: {fileID: 6200252423622398695, guid: dbcc8ad9df6a14eb89c6443a6667122e, type: 3} - propertyPath: m_textInfo.wordCount + propertyPath: m_textInfo.pageCount value: 1 objectReference: {fileID: 0} - target: {fileID: 6200252423622398695, guid: dbcc8ad9df6a14eb89c6443a6667122e, type: 3} - propertyPath: m_textInfo.lineCount + propertyPath: m_textInfo.wordCount value: 1 objectReference: {fileID: 0} - target: {fileID: 6200252423622398695, guid: dbcc8ad9df6a14eb89c6443a6667122e, type: 3} - propertyPath: m_textInfo.pageCount - value: 1 + propertyPath: m_textInfo.characterCount + value: 5 objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: dbcc8ad9df6a14eb89c6443a6667122e, type: 3} --- !u!224 &752230290687444200 stripped RectTransform: diff --git a/Assets/Objects/UI/prefabs/InGame/Race_Canvas_touch.prefab b/Assets/Objects/UI/prefabs/InGame/Race_Canvas_touch.prefab index 951a60ce4..f7bff8fea 100644 --- a/Assets/Objects/UI/prefabs/InGame/Race_Canvas_touch.prefab +++ b/Assets/Objects/UI/prefabs/InGame/Race_Canvas_touch.prefab @@ -29,9 +29,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 7347935808317397271} - m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -61,6 +61,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 0.2509804} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -88,7 +89,28 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_MovementRange: 150 + m_DynamicOriginRange: 100 m_ControlPath: /leftStick + m_Behaviour: 0 + m_UseIsolatedInputActions: 0 + m_PointerDownAction: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: c155c75f-7384-4525-910e-a6bdaed281f4 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_PointerMoveAction: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 870c6240-8673-44df-aa99-8ae966043d17 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 --- !u!1 &4263278522678891939 GameObject: m_ObjectHideFlags: 0 @@ -118,9 +140,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 7347935808317397271} - m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 1, y: 0} m_AnchorMax: {x: 1, y: 0} @@ -150,6 +172,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 0.2509804} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -206,9 +229,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 7347935808317397271} - m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 1, y: 0} m_AnchorMax: {x: 1, y: 0} @@ -238,6 +261,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 0.2509804} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -270,6 +294,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: - target: {fileID: 5347790855530666824, guid: 0482dcbdb79ee4d7eb43a774a90bda4e, @@ -279,107 +304,107 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 5347790855530666829, guid: 0482dcbdb79ee4d7eb43a774a90bda4e, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_Pivot.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5347790855530666829, guid: 0482dcbdb79ee4d7eb43a774a90bda4e, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5347790855530666829, guid: 0482dcbdb79ee4d7eb43a774a90bda4e, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 5347790855530666829, guid: 0482dcbdb79ee4d7eb43a774a90bda4e, type: 3} - propertyPath: m_LocalRotation.x + propertyPath: m_AnchorMax.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5347790855530666829, guid: 0482dcbdb79ee4d7eb43a774a90bda4e, type: 3} - propertyPath: m_LocalRotation.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5347790855530666829, guid: 0482dcbdb79ee4d7eb43a774a90bda4e, type: 3} - propertyPath: m_LocalRotation.z + propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5347790855530666829, guid: 0482dcbdb79ee4d7eb43a774a90bda4e, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 5347790855530666829, guid: 0482dcbdb79ee4d7eb43a774a90bda4e, type: 3} - propertyPath: m_RootOrder + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5347790855530666829, guid: 0482dcbdb79ee4d7eb43a774a90bda4e, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5347790855530666829, guid: 0482dcbdb79ee4d7eb43a774a90bda4e, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5347790855530666829, guid: 0482dcbdb79ee4d7eb43a774a90bda4e, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5347790855530666829, guid: 0482dcbdb79ee4d7eb43a774a90bda4e, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 5347790855530666829, guid: 0482dcbdb79ee4d7eb43a774a90bda4e, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 5347790855530666829, guid: 0482dcbdb79ee4d7eb43a774a90bda4e, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5347790855530666829, guid: 0482dcbdb79ee4d7eb43a774a90bda4e, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5347790855530666829, guid: 0482dcbdb79ee4d7eb43a774a90bda4e, type: 3} - propertyPath: m_AnchorMin.x + propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - target: {fileID: 5347790855530666829, guid: 0482dcbdb79ee4d7eb43a774a90bda4e, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5347790855530666829, guid: 0482dcbdb79ee4d7eb43a774a90bda4e, type: 3} - propertyPath: m_AnchorMax.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5347790855530666829, guid: 0482dcbdb79ee4d7eb43a774a90bda4e, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5347790855530666829, guid: 0482dcbdb79ee4d7eb43a774a90bda4e, type: 3} - propertyPath: m_Pivot.x + propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5347790855530666829, guid: 0482dcbdb79ee4d7eb43a774a90bda4e, type: 3} - propertyPath: m_Pivot.y + propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - target: {fileID: 5347790855586753531, guid: 0482dcbdb79ee4d7eb43a774a90bda4e, @@ -393,6 +418,21 @@ PrefabInstance: value: 300 objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: + - targetCorrespondingSourceObject: {fileID: 6721600935011419911, guid: 0482dcbdb79ee4d7eb43a774a90bda4e, + type: 3} + insertIndex: -1 + addedObject: {fileID: 894742572018467444} + - targetCorrespondingSourceObject: {fileID: 6721600935011419911, guid: 0482dcbdb79ee4d7eb43a774a90bda4e, + type: 3} + insertIndex: -1 + addedObject: {fileID: 62009398339669683} + - targetCorrespondingSourceObject: {fileID: 6721600935011419911, guid: 0482dcbdb79ee4d7eb43a774a90bda4e, + type: 3} + insertIndex: -1 + addedObject: {fileID: 3492154910095032093} + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 0482dcbdb79ee4d7eb43a774a90bda4e, type: 3} --- !u!224 &7347935808317397271 stripped RectTransform: diff --git a/Assets/Objects/UI/prefabs/Level.prefab b/Assets/Objects/UI/prefabs/Level.prefab index f5a0b63e3..8135b42c3 100644 --- a/Assets/Objects/UI/prefabs/Level.prefab +++ b/Assets/Objects/UI/prefabs/Level.prefab @@ -28,10 +28,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 7069523438192860402} m_Father: {fileID: 8422994282727022450} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -61,6 +61,8 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -85,13 +87,12 @@ MonoBehaviour: m_fontColorGradientPreset: {fileID: 0} m_spriteAsset: {fileID: 0} m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: 0 m_overrideHtmlColors: 0 m_faceColor: serializedVersion: 2 rgba: 4294967295 - m_outlineColor: - serializedVersion: 2 - rgba: 4278190080 m_fontSize: 48 m_fontSizeBase: 48 m_fontWeight: 400 @@ -99,6 +100,8 @@ MonoBehaviour: m_fontSizeMin: 18 m_fontSizeMax: 72 m_fontStyle: 18 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 m_textAlignment: 514 m_characterSpacing: 5 m_wordSpacing: 0 @@ -109,10 +112,8 @@ MonoBehaviour: m_enableWordWrapping: 1 m_wordWrappingRatios: 0.4 m_overflowMode: 0 - m_firstOverflowCharacterIndex: 0 m_linkedTextComponent: {fileID: 0} - m_isLinkedTextComponent: 0 - m_isTextTruncated: 0 + parentLinkedComponent: {fileID: 0} m_enableKerning: 1 m_enableExtraPadding: 0 checkPaddingRequired: 0 @@ -120,40 +121,18 @@ MonoBehaviour: m_parseCtrlCharacters: 1 m_isOrthographic: 1 m_isCullingEnabled: 0 - m_ignoreRectMaskCulling: 0 - m_ignoreCulling: 1 m_horizontalMapping: 0 m_verticalMapping: 0 m_uvLineOffset: 0 m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 m_VertexBufferAutoSizeReduction: 1 - m_firstVisibleCharacter: 0 m_useMaxVisibleDescender: 1 m_pageToDisplay: 1 m_margin: {x: 0, y: 0, z: 0, w: 0} - m_textInfo: - textComponent: {fileID: 7792224875137659014} - characterCount: 8 - spriteCount: 0 - spaceCount: 1 - wordCount: 2 - linkCount: 0 - lineCount: 1 - pageCount: 1 - materialCount: 1 m_isUsingLegacyAnimationComponent: 0 m_isVolumetricText: 0 - m_spriteAnimator: {fileID: 0} m_hasFontAssetChanged: 0 - m_subTextObjects: - - {fileID: 0} - - {fileID: 1449696588432919243} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} --- !u!1 &3516234836466072059 @@ -184,9 +163,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 8422994282727022450} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -216,6 +195,8 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 0.21176472, g: 0.8078432, b: 0.94117653, a: 0.5019608} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -257,11 +238,11 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 511866338823883487} - {fileID: 4696272771198996516} m_Father: {fileID: 0} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -290,6 +271,7 @@ MonoBehaviour: m_EditorClassIdentifier: m_Navigation: m_Mode: 3 + m_WrapAround: 0 m_SelectOnUp: {fileID: 0} m_SelectOnDown: {fileID: 0} m_SelectOnLeft: {fileID: 0} @@ -321,6 +303,7 @@ MonoBehaviour: m_Calls: - m_Target: {fileID: 8490184438857729681, guid: 7ad8269e6bbda4db3a76a6e41c11a5db, type: 3} + m_TargetAssemblyTypeName: m_MethodName: SetLevel m_Mode: 3 m_Arguments: @@ -332,6 +315,7 @@ MonoBehaviour: m_BoolArgument: 0 m_CallState: 2 - m_Target: {fileID: 0} + m_TargetAssemblyTypeName: m_MethodName: m_Mode: 1 m_Arguments: @@ -343,6 +327,7 @@ MonoBehaviour: m_BoolArgument: 0 m_CallState: 2 - m_Target: {fileID: 0} + m_TargetAssemblyTypeName: m_MethodName: m_Mode: 1 m_Arguments: @@ -381,9 +366,9 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4696272771198996516} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -413,6 +398,8 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -422,6 +409,5 @@ MonoBehaviour: m_sharedMaterial: {fileID: 0} m_isDefaultMaterial: 0 m_padding: 9.032028 - m_canvasRenderer: {fileID: 940912394851499189} m_TextComponent: {fileID: 7792224875137659014} m_materialReferenceIndex: 1 diff --git a/Assets/Objects/UI/prefabs/LoadingScreen.prefab b/Assets/Objects/UI/prefabs/LoadingScreen.prefab index 2649a9927..65a612b76 100644 --- a/Assets/Objects/UI/prefabs/LoadingScreen.prefab +++ b/Assets/Objects/UI/prefabs/LoadingScreen.prefab @@ -28,10 +28,10 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 7959097910410934255} m_Father: {fileID: 7959097910893621726} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -104,9 +104,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: -0.1} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 7959097908968624669} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -179,9 +179,9 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: -0.2} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 7959097910893621726} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -314,11 +314,11 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 7959097908968624669} - {fileID: 7959097910863956438} m_Father: {fileID: 0} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -342,7 +342,9 @@ Canvas: m_OverrideSorting: 0 m_OverridePixelPerfect: 0 m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 m_AdditionalShaderChannelsFlag: 25 + m_UpdateRectTransformForStandalone: 0 m_SortingLayerID: 0 m_SortingOrder: 1000 m_TargetDisplay: 0 diff --git a/Assets/Objects/UI/prefabs/MainMenu/BenchmarkPanel.prefab b/Assets/Objects/UI/prefabs/MainMenu/BenchmarkPanel.prefab index 00a1c98f7..2021e0ef7 100644 --- a/Assets/Objects/UI/prefabs/MainMenu/BenchmarkPanel.prefab +++ b/Assets/Objects/UI/prefabs/MainMenu/BenchmarkPanel.prefab @@ -27,10 +27,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 7261581779796408551} m_Father: {fileID: 8308484576369727823} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -73,11 +73,11 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 555911760503307710} - {fileID: 4498310017831071890} m_Father: {fileID: 0} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -137,13 +137,13 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 555911760623570510} - {fileID: 555911761273092721} - {fileID: 555911762422888514} - {fileID: 555911761156195312} m_Father: {fileID: 555911760475124057} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -178,12 +178,12 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 555911762263563660} - {fileID: 555911761757482383} - {fileID: 555911761106985423} m_Father: {fileID: 555911760503307710} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0.85} m_AnchorMax: {x: 1, y: 1} @@ -255,10 +255,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 5893084992375076201} m_Father: {fileID: 555911760623570510} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.7, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -301,9 +301,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 555911760503307710} - m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0} m_AnchorMax: {x: 1, y: 0.4} @@ -376,11 +376,11 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 555911761458424434} - {fileID: 555911762313806815} m_Father: {fileID: 555911760503307710} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.4} m_AnchorMax: {x: 1, y: 0.85} @@ -452,9 +452,9 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 555911761273092721} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0.5, y: 1} @@ -514,10 +514,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 5893084992630605681} m_Father: {fileID: 555911760623570510} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.15, y: 0} m_AnchorMax: {x: 0.7, y: 1} @@ -560,9 +560,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 555911762422888514} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} @@ -641,9 +641,9 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 555911762282417229} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -775,10 +775,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 555911762282417229} m_Father: {fileID: 555911760623570510} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0.15, y: 1} @@ -913,10 +913,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 555911762224307304} m_Father: {fileID: 555911762263563660} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -1056,9 +1056,9 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 555911761273092721} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -1119,10 +1119,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 555911762198385360} m_Father: {fileID: 555911760503307710} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0.5, y: 0.85} @@ -1196,10 +1196,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1251916003832178803} m_Father: {fileID: 1193954169925069151} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -1352,11 +1352,11 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 719989350168508388} - {fileID: 1193954169925069151} m_Father: {fileID: 4498310017831071890} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0.85} m_AnchorMax: {x: 1, y: 1} @@ -1430,10 +1430,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 2498151567178910431} m_Father: {fileID: 4529424659315011279} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -1561,11 +1561,11 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4529424659315011279} - {fileID: 290636045995068861} m_Father: {fileID: 4498310017831071890} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.25, y: 0} m_AnchorMax: {x: 0.75, y: 0.85} @@ -1627,10 +1627,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 3632252139646528828} m_Father: {fileID: 719989350168508388} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -1760,10 +1760,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4381723225375620773} m_Father: {fileID: 290636045995068861} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -1892,9 +1892,9 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1699380933731315074} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -2024,11 +2024,11 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 7209733419408134187} - {fileID: 8308484576369727823} m_Father: {fileID: 555911760475124057} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -2062,10 +2062,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 887632406786195568} m_Father: {fileID: 8308484576369727823} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -2108,9 +2108,9 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 887632406786195568} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -2242,10 +2242,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1699380933731315074} m_Father: {fileID: 7209733419408134187} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0.2, y: 1} @@ -2379,9 +2379,9 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 7261581779796408551} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -2513,10 +2513,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 6336640031673963673} m_Father: {fileID: 7209733419408134187} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.8, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -2650,9 +2650,9 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 6336640031673963673} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -2761,6 +2761,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 555911761106985423} m_Modifications: - target: {fileID: 6232576570469918013, guid: ee7232b8e02a2d343a512f6077934232, @@ -2775,108 +2776,108 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 1 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 1 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_RootOrder - value: 0 + propertyPath: m_SizeDelta.x + value: -30 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 + propertyPath: m_SizeDelta.y + value: -40 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_AnchoredPosition.x - value: -5 + propertyPath: m_LocalPosition.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_SizeDelta.x - value: -30 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_SizeDelta.y - value: -40 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_AnchorMin.y - value: 0 + propertyPath: m_AnchoredPosition.x + value: -5 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_AnchorMax.x - value: 1 + propertyPath: m_AnchoredPosition.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_AnchorMax.y - value: 1 + propertyPath: m_LocalEulerAnglesHint.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_Pivot.x - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_Pivot.y - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 6232576571583490351, guid: ee7232b8e02a2d343a512f6077934232, type: 3} @@ -2884,13 +2885,10 @@ PrefabInstance: value: Dropdown objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: ee7232b8e02a2d343a512f6077934232, type: 3} ---- !u!224 &5893084992375076201 stripped -RectTransform: - m_CorrespondingSourceObject: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, - type: 3} - m_PrefabInstance: {fileID: 555911761137785927} - m_PrefabAsset: {fileID: 0} --- !u!114 &4349500922024502926 stripped MonoBehaviour: m_CorrespondingSourceObject: {fileID: 4317393785942538953, guid: ee7232b8e02a2d343a512f6077934232, @@ -2903,11 +2901,18 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7b743370ac3e4ec2a1668f5455a8ef8a, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!224 &5893084992375076201 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, + type: 3} + m_PrefabInstance: {fileID: 555911761137785927} + m_PrefabAsset: {fileID: 0} --- !u!1001 &555911761392905823 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 555911761757482383} m_Modifications: - target: {fileID: 6232576570469918013, guid: ee7232b8e02a2d343a512f6077934232, @@ -2937,108 +2942,108 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 1 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 1 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_RootOrder - value: 0 + propertyPath: m_SizeDelta.x + value: -20 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 + propertyPath: m_SizeDelta.y + value: -40 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_SizeDelta.x - value: -20 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_SizeDelta.y - value: -40 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_AnchorMax.x - value: 1 + propertyPath: m_AnchoredPosition.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_AnchorMax.y - value: 1 + propertyPath: m_LocalEulerAnglesHint.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_Pivot.x - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, type: 3} - propertyPath: m_Pivot.y - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 6232576571583490351, guid: ee7232b8e02a2d343a512f6077934232, type: 3} @@ -3051,13 +3056,10 @@ PrefabInstance: value: 1 objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: ee7232b8e02a2d343a512f6077934232, type: 3} ---- !u!224 &5893084992630605681 stripped -RectTransform: - m_CorrespondingSourceObject: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, - type: 3} - m_PrefabInstance: {fileID: 555911761392905823} - m_PrefabAsset: {fileID: 0} --- !u!114 &4349500921745265814 stripped MonoBehaviour: m_CorrespondingSourceObject: {fileID: 4317393785942538953, guid: ee7232b8e02a2d343a512f6077934232, @@ -3070,3 +3072,9 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7b743370ac3e4ec2a1668f5455a8ef8a, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!224 &5893084992630605681 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 6232576571583490350, guid: ee7232b8e02a2d343a512f6077934232, + type: 3} + m_PrefabInstance: {fileID: 555911761392905823} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Objects/UI/prefabs/MainMenu/MainMenuUI.prefab b/Assets/Objects/UI/prefabs/MainMenu/MainMenuUI.prefab index 318f48539..067f157b8 100644 --- a/Assets/Objects/UI/prefabs/MainMenu/MainMenuUI.prefab +++ b/Assets/Objects/UI/prefabs/MainMenu/MainMenuUI.prefab @@ -27,13 +27,13 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 5975441792461032481} - {fileID: 6586527480826535880} - {fileID: 4631664004069129997} - {fileID: 7308870853560031275} m_Father: {fileID: 5207042214453139230} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0.5, y: 1} @@ -94,10 +94,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 3526173317250951753} m_Father: {fileID: 3644197056844246198} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -229,9 +229,9 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5166109939762744887} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -303,12 +303,12 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 2583173807326995234} - {fileID: 1711109886568183026} - {fileID: 3280194166093118297} m_Father: {fileID: 2483712070395034532} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -395,9 +395,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 948491959647957940} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -466,10 +466,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4559160113779247964} m_Father: {fileID: 3943413126786587729} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -530,10 +530,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 8223905671867719008} m_Father: {fileID: 6579042049359713682} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -665,10 +665,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 7459254619566573763} m_Father: {fileID: 7860368546965670178} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0.14} m_AnchorMax: {x: 1, y: 0.25} @@ -800,10 +800,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1781128405264505150} m_Father: {fileID: 3893494376592108040} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -933,11 +933,11 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1406770832804645538} - {fileID: 4395754948322860327} m_Father: {fileID: 4603593415221689277} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -972,9 +972,9 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5764655486072398269} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -1045,9 +1045,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 8802111069979096020} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -1119,6 +1119,7 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 2406859931362570060} - {fileID: 3943413126786587729} @@ -1128,7 +1129,6 @@ RectTransform: - {fileID: 1297213354555609066} - {fileID: 5706178149847880064} m_Father: {fileID: 7907029378987110433} - m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0.15} m_AnchorMax: {x: 1, y: 0.8} @@ -1171,10 +1171,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 8422155124128721573} m_Father: {fileID: 7860368546965670178} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 0.14} @@ -1305,10 +1305,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1140639340486532233} m_Father: {fileID: 3943413126786587729} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -1369,9 +1369,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5599669319891883259} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -1444,9 +1444,9 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5975441792461032481} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -1516,10 +1516,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 7860368546965670178} m_Father: {fileID: 4917528799211966126} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -1562,10 +1562,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 2926976255489505197} m_Father: {fileID: 441664188382872731} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0.4, y: 1} @@ -1697,9 +1697,9 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1403391315988433970} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -1769,12 +1769,12 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 2570633047177290801} - {fileID: 948491959647957940} - {fileID: 324747761305206209} m_Father: {fileID: 4603593415221689277} - m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -1835,9 +1835,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0.8000001, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 8510006101677214044} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -1969,9 +1969,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 2631180408981975328} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -2044,9 +2044,9 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1711109886568183026} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -2117,9 +2117,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0.8000001, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1829430646817347859} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -2251,9 +2251,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 7907029378987110433} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 1, y: 1} @@ -2323,9 +2323,9 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0.8, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 950811265803580643} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -2455,11 +2455,11 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 3644197056844246198} - {fileID: 2483712070395034532} m_Father: {fileID: 8802111069979096020} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -2492,10 +2492,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 7907029378344209924} m_Father: {fileID: 7907029378987110433} - m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -2530,9 +2530,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 324747761305206209} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -2603,9 +2603,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4395754948322860327} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.2, y: 0} m_AnchorMax: {x: 0.8, y: 1} @@ -2845,11 +2845,11 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4603593415221689277} - {fileID: 7417488473820929829} m_Father: {fileID: 8802111069979096020} - m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -2885,12 +2885,12 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 2631180408981975328} - {fileID: 1403391315988433970} - {fileID: 5166109939762744887} m_Father: {fileID: 7417488473820929829} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -2978,10 +2978,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4878659850823854751} m_Father: {fileID: 948491959647957940} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 1, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -3108,12 +3108,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 4862975062816744032} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 7907029380085608247} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!20 &3459289610322885288 Camera: @@ -3129,9 +3130,17 @@ Camera: m_projectionMatrixMode: 1 m_GateFitMode: 2 m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 m_SensorSize: {x: 36, y: 24} m_LensShift: {x: 0, y: 0} - m_FocalLength: 50 m_NormalizedViewPortRect: serializedVersion: 2 x: 0 @@ -3188,6 +3197,7 @@ MonoBehaviour: serializedVersion: 2 m_Bits: 1 m_VolumeTrigger: {fileID: 0} + m_VolumeFrameworkUpdateModeOption: 2 m_RenderPostProcessing: 1 m_Antialiasing: 0 m_AntialiasingQuality: 2 @@ -3195,9 +3205,20 @@ MonoBehaviour: m_Dithering: 0 m_ClearDepth: 1 m_AllowXRRendering: 1 + m_AllowHDROutput: 1 + m_UseScreenCoordOverride: 0 + m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} + m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} m_RequiresDepthTexture: 0 m_RequiresColorTexture: 0 m_Version: 2 + m_TaaSettings: + m_Quality: 3 + m_FrameInfluence: 0.1 + m_JitterScale: 1 + m_MipBias: 0 + m_VarianceClampScale: 0.9 + m_ContrastAdaptiveSharpening: 0 --- !u!1 &5002275752692081992 GameObject: m_ObjectHideFlags: 0 @@ -3227,9 +3248,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 6579042049359713682} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -3370,10 +3391,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 9010851507174784628} m_Father: {fileID: 4603593415221689277} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -3506,10 +3527,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4764257357243624608} m_Father: {fileID: 948491959647957940} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 1} @@ -3639,12 +3660,12 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 950811265803580643} - {fileID: 5106063520538367869} - {fileID: 8510006101677214044} m_Father: {fileID: 3893494376592108040} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -3732,9 +3753,9 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 2570633047177290801} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -3805,10 +3826,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 3830651516789246170} m_Father: {fileID: 2583173807326995234} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -3882,12 +3903,12 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1646340931393483619} - {fileID: 1103734758653570439} - {fileID: 1829430646817347859} m_Father: {fileID: 3893494376592108040} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -3975,9 +3996,9 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0.8, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1646340931393483619} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -4110,10 +4131,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 6517661629991267220} m_Father: {fileID: 324747761305206209} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 1} @@ -4242,11 +4263,11 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 5875251298499702281} - {fileID: 5599669319891883259} m_Father: {fileID: 6083943551725646513} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0.25} m_AnchorMax: {x: 1, y: 1} @@ -4319,9 +4340,9 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 2392179485422591978} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -4392,10 +4413,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 3785390145920923684} m_Father: {fileID: 6083943551725646513} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0.14} m_AnchorMax: {x: 1, y: 0.25} @@ -4527,9 +4548,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 2583173807326995234} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -4601,10 +4622,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 6083943551725646513} m_Father: {fileID: 5207042214453139230} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -4647,10 +4668,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 8927531745412246093} m_Father: {fileID: 7860368546965670178} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -4720,9 +4741,9 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 3280194166093118297} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -4793,12 +4814,12 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 2} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4376516045305876914} - {fileID: 4612491773756503954} - {fileID: 2396697376959644701} m_Father: {fileID: 7241324373451386652} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0.5} m_AnchorMax: {x: 1, y: 0.5} @@ -4868,6 +4889,7 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 2168370788733313540} - {fileID: 7907029379116912004} @@ -4876,7 +4898,6 @@ RectTransform: - {fileID: 8802111069979096020} - {fileID: 1553643131225060080} m_Father: {fileID: 7907029380085608247} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -4900,7 +4921,9 @@ Canvas: m_OverrideSorting: 0 m_OverridePixelPerfect: 0 m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 m_AdditionalShaderChannelsFlag: 25 + m_UpdateRectTransformForStandalone: 0 m_SortingLayerID: 0 m_SortingOrder: 0 m_TargetDisplay: 0 @@ -4972,9 +4995,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 1} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 7907029378987110433} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -5047,9 +5070,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 7907029378987110433} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 1} @@ -5119,12 +5142,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 7907029379700984250} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.000030517578, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 7907029380085608247} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &7907029379700984248 MonoBehaviour: @@ -5153,8 +5177,10 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 01614664b831546d2ae94a42149d80ac, type: 3} m_Name: m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 m_MoveRepeatDelay: 0.5 m_MoveRepeatRate: 0.1 + m_XRTrackingOrigin: {fileID: 0} m_ActionsAsset: {fileID: -944628639613478452, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} m_PointAction: {fileID: 1054132383583890850, guid: ca9f5fa95ffab41fb9a615ab714db018, @@ -5179,6 +5205,8 @@ MonoBehaviour: type: 3} m_DeselectOnBackgroundClick: 1 m_PointerBehavior: 0 + m_CursorLockBehavior: 0 + m_ScrollDeltaPerTick: 6 --- !u!1 &7907029380085608248 GameObject: m_ObjectHideFlags: 0 @@ -5204,20 +5232,21 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 7907029380085608248} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 632517551718986922} - {fileID: 7907029379700984249} - {fileID: 7907029378987110433} - {fileID: 6677724032546433143} m_Father: {fileID: 0} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!95 &3300335164659556536 Animator: - serializedVersion: 3 + serializedVersion: 5 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -5230,10 +5259,12 @@ Animator: m_UpdateMode: 0 m_ApplyRootMotion: 0 m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 m_WarningMessage: m_HasTransformHierarchy: 1 m_AllowConstantClipSamplingOptimization: 1 - m_KeepAnimatorControllerStateOnDisable: 0 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 --- !u!114 &8803882710196166548 MonoBehaviour: m_ObjectHideFlags: 0 @@ -5284,12 +5315,12 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 6579042049359713682} - {fileID: 8412186144379556017} - {fileID: 5173670630180522257} m_Father: {fileID: 8802111069979096020} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -5359,10 +5390,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 6625323426447594141} m_Father: {fileID: 324747761305206209} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 1, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -5491,10 +5522,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 342155042700800551} m_Father: {fileID: 6083943551725646513} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 0.14} @@ -5625,11 +5656,11 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 2050324361617852656} - {fileID: 5764655486072398269} m_Father: {fileID: 3943413126786587729} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0.5, y: 1} @@ -5671,13 +5702,13 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 2392179485422591978} - {fileID: 441664188382872731} - {fileID: 3459718024052074071} - {fileID: 3893494376592108040} m_Father: {fileID: 4917528799211966126} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0.5, y: 1} @@ -5738,9 +5769,9 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1406770832804645538} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -5811,10 +5842,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4573444277201158932} m_Father: {fileID: 441664188382872731} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.4, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -5864,18 +5895,24 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 7907029378987110433} m_Modifications: - target: {fileID: 290636045995068861, guid: c3ff0a5c94dd0e94388e60d78157ed5c, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - target: {fileID: 290636045995068861, guid: c3ff0a5c94dd0e94388e60d78157ed5c, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} + - target: {fileID: 290636045995068861, guid: c3ff0a5c94dd0e94388e60d78157ed5c, + type: 3} + propertyPath: m_SizeDelta.x + value: 610 + objectReference: {fileID: 0} - target: {fileID: 290636045995068861, guid: c3ff0a5c94dd0e94388e60d78157ed5c, type: 3} propertyPath: m_AnchoredPosition.x @@ -5886,16 +5923,16 @@ PrefabInstance: propertyPath: m_AnchoredPosition.y value: -90 objectReference: {fileID: 0} - - target: {fileID: 290636045995068861, guid: c3ff0a5c94dd0e94388e60d78157ed5c, - type: 3} - propertyPath: m_SizeDelta.x - value: 610 - objectReference: {fileID: 0} - target: {fileID: 445688999390828274, guid: c3ff0a5c94dd0e94388e60d78157ed5c, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size value: 2 objectReference: {fileID: 0} + - target: {fileID: 445688999390828274, guid: c3ff0a5c94dd0e94388e60d78157ed5c, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 6 + objectReference: {fileID: 0} - target: {fileID: 445688999390828274, guid: c3ff0a5c94dd0e94388e60d78157ed5c, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target @@ -5903,8 +5940,8 @@ PrefabInstance: objectReference: {fileID: 4123585949464230279} - target: {fileID: 445688999390828274, guid: c3ff0a5c94dd0e94388e60d78157ed5c, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName - value: UnityEngine.GameObject, UnityEngine + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 objectReference: {fileID: 0} - target: {fileID: 445688999390828274, guid: c3ff0a5c94dd0e94388e60d78157ed5c, type: 3} @@ -5913,23 +5950,18 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 445688999390828274, guid: c3ff0a5c94dd0e94388e60d78157ed5c, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode - value: 6 - objectReference: {fileID: 0} - - target: {fileID: 445688999390828274, guid: c3ff0a5c94dd0e94388e60d78157ed5c, - type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName + value: UnityEngine.GameObject, UnityEngine objectReference: {fileID: 0} - target: {fileID: 445688999390828274, guid: c3ff0a5c94dd0e94388e60d78157ed5c, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState - value: 2 + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_BoolArgument + value: 1 objectReference: {fileID: 0} - target: {fileID: 445688999390828274, guid: c3ff0a5c94dd0e94388e60d78157ed5c, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_BoolArgument - value: 1 + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine objectReference: {fileID: 0} - target: {fileID: 555911760475124056, guid: c3ff0a5c94dd0e94388e60d78157ed5c, type: 3} @@ -5943,108 +5975,113 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 555911760475124057, guid: c3ff0a5c94dd0e94388e60d78157ed5c, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 555911760475124057, guid: c3ff0a5c94dd0e94388e60d78157ed5c, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 555911760475124057, guid: c3ff0a5c94dd0e94388e60d78157ed5c, type: 3} - propertyPath: m_LocalPosition.z - value: 0 + propertyPath: m_RootOrder + value: 5 objectReference: {fileID: 0} - target: {fileID: 555911760475124057, guid: c3ff0a5c94dd0e94388e60d78157ed5c, type: 3} - propertyPath: m_LocalRotation.x - value: 0 + propertyPath: m_AnchorMax.x + value: 1 objectReference: {fileID: 0} - target: {fileID: 555911760475124057, guid: c3ff0a5c94dd0e94388e60d78157ed5c, type: 3} - propertyPath: m_LocalRotation.y + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 555911760475124057, guid: c3ff0a5c94dd0e94388e60d78157ed5c, + type: 3} + propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - target: {fileID: 555911760475124057, guid: c3ff0a5c94dd0e94388e60d78157ed5c, type: 3} - propertyPath: m_LocalRotation.z + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 555911760475124057, guid: c3ff0a5c94dd0e94388e60d78157ed5c, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_SizeDelta.x + value: -40 objectReference: {fileID: 0} - target: {fileID: 555911760475124057, guid: c3ff0a5c94dd0e94388e60d78157ed5c, type: 3} - propertyPath: m_RootOrder - value: 5 + propertyPath: m_SizeDelta.y + value: -40 objectReference: {fileID: 0} - target: {fileID: 555911760475124057, guid: c3ff0a5c94dd0e94388e60d78157ed5c, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 555911760475124057, guid: c3ff0a5c94dd0e94388e60d78157ed5c, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 555911760475124057, guid: c3ff0a5c94dd0e94388e60d78157ed5c, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 555911760475124057, guid: c3ff0a5c94dd0e94388e60d78157ed5c, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 555911760475124057, guid: c3ff0a5c94dd0e94388e60d78157ed5c, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - target: {fileID: 555911760475124057, guid: c3ff0a5c94dd0e94388e60d78157ed5c, type: 3} - propertyPath: m_SizeDelta.x - value: -40 + propertyPath: m_LocalRotation.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 555911760475124057, guid: c3ff0a5c94dd0e94388e60d78157ed5c, type: 3} - propertyPath: m_SizeDelta.y - value: -40 + propertyPath: m_LocalRotation.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 555911760475124057, guid: c3ff0a5c94dd0e94388e60d78157ed5c, type: 3} - propertyPath: m_AnchorMin.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 555911760475124057, guid: c3ff0a5c94dd0e94388e60d78157ed5c, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 555911760475124057, guid: c3ff0a5c94dd0e94388e60d78157ed5c, type: 3} - propertyPath: m_AnchorMax.x - value: 1 + propertyPath: m_LocalEulerAnglesHint.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 555911760475124057, guid: c3ff0a5c94dd0e94388e60d78157ed5c, type: 3} - propertyPath: m_AnchorMax.y - value: 1 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 555911760475124057, guid: c3ff0a5c94dd0e94388e60d78157ed5c, type: 3} - propertyPath: m_Pivot.x - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} - - target: {fileID: 555911760475124057, guid: c3ff0a5c94dd0e94388e60d78157ed5c, + - target: {fileID: 4529424659315011279, guid: c3ff0a5c94dd0e94388e60d78157ed5c, type: 3} - propertyPath: m_Pivot.y - value: 0.5 + propertyPath: m_AnchorMax.y + value: 1 objectReference: {fileID: 0} - target: {fileID: 4529424659315011279, guid: c3ff0a5c94dd0e94388e60d78157ed5c, type: 3} @@ -6053,8 +6090,8 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4529424659315011279, guid: c3ff0a5c94dd0e94388e60d78157ed5c, type: 3} - propertyPath: m_AnchorMax.y - value: 1 + propertyPath: m_SizeDelta.x + value: 610 objectReference: {fileID: 0} - target: {fileID: 4529424659315011279, guid: c3ff0a5c94dd0e94388e60d78157ed5c, type: 3} @@ -6066,30 +6103,29 @@ PrefabInstance: propertyPath: m_AnchoredPosition.y value: -30 objectReference: {fileID: 0} - - target: {fileID: 4529424659315011279, guid: c3ff0a5c94dd0e94388e60d78157ed5c, - type: 3} - propertyPath: m_SizeDelta.x - value: 610 - objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: c3ff0a5c94dd0e94388e60d78157ed5c, type: 3} ---- !u!1 &1553643131225060081 stripped -GameObject: - m_CorrespondingSourceObject: {fileID: 555911760475124056, guid: c3ff0a5c94dd0e94388e60d78157ed5c, - type: 3} - m_PrefabInstance: {fileID: 1313178619701478313} - m_PrefabAsset: {fileID: 0} --- !u!224 &1553643131225060080 stripped RectTransform: m_CorrespondingSourceObject: {fileID: 555911760475124057, guid: c3ff0a5c94dd0e94388e60d78157ed5c, type: 3} m_PrefabInstance: {fileID: 1313178619701478313} m_PrefabAsset: {fileID: 0} +--- !u!1 &1553643131225060081 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 555911760475124056, guid: c3ff0a5c94dd0e94388e60d78157ed5c, + type: 3} + m_PrefabInstance: {fileID: 1313178619701478313} + m_PrefabAsset: {fileID: 0} --- !u!1001 &2046405910375332430 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 7907029378344209924} m_Modifications: - target: {fileID: 59890226972047620, guid: 9c2a38523400349b29e5a37a5b202ea6, @@ -6099,128 +6135,128 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 59890228045598728, guid: 9c2a38523400349b29e5a37a5b202ea6, type: 3} - propertyPath: m_textInfo.characterCount - value: 4 + propertyPath: m_textInfo.lineCount + value: 1 objectReference: {fileID: 0} - target: {fileID: 59890228045598728, guid: 9c2a38523400349b29e5a37a5b202ea6, type: 3} - propertyPath: m_textInfo.wordCount + propertyPath: m_textInfo.pageCount value: 1 objectReference: {fileID: 0} - target: {fileID: 59890228045598728, guid: 9c2a38523400349b29e5a37a5b202ea6, type: 3} - propertyPath: m_textInfo.lineCount + propertyPath: m_textInfo.wordCount value: 1 objectReference: {fileID: 0} - target: {fileID: 59890228045598728, guid: 9c2a38523400349b29e5a37a5b202ea6, type: 3} - propertyPath: m_textInfo.pageCount - value: 1 + propertyPath: m_textInfo.characterCount + value: 4 objectReference: {fileID: 0} - target: {fileID: 2367426047754857468, guid: 9c2a38523400349b29e5a37a5b202ea6, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 2367426047754857468, guid: 9c2a38523400349b29e5a37a5b202ea6, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 2367426047754857468, guid: 9c2a38523400349b29e5a37a5b202ea6, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 2367426047754857468, guid: 9c2a38523400349b29e5a37a5b202ea6, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 2367426047754857468, guid: 9c2a38523400349b29e5a37a5b202ea6, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 2367426047754857468, guid: 9c2a38523400349b29e5a37a5b202ea6, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 2367426047754857468, guid: 9c2a38523400349b29e5a37a5b202ea6, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 2367426047754857468, guid: 9c2a38523400349b29e5a37a5b202ea6, type: 3} - propertyPath: m_RootOrder + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2367426047754857468, guid: 9c2a38523400349b29e5a37a5b202ea6, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 + propertyPath: m_SizeDelta.y + value: 60 objectReference: {fileID: 0} - target: {fileID: 2367426047754857468, guid: 9c2a38523400349b29e5a37a5b202ea6, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2367426047754857468, guid: 9c2a38523400349b29e5a37a5b202ea6, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2367426047754857468, guid: 9c2a38523400349b29e5a37a5b202ea6, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 2367426047754857468, guid: 9c2a38523400349b29e5a37a5b202ea6, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 2367426047754857468, guid: 9c2a38523400349b29e5a37a5b202ea6, type: 3} - propertyPath: m_SizeDelta.x - value: 0 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 2367426047754857468, guid: 9c2a38523400349b29e5a37a5b202ea6, type: 3} - propertyPath: m_SizeDelta.y - value: 60 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 2367426047754857468, guid: 9c2a38523400349b29e5a37a5b202ea6, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 2367426047754857468, guid: 9c2a38523400349b29e5a37a5b202ea6, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2367426047754857468, guid: 9c2a38523400349b29e5a37a5b202ea6, type: 3} - propertyPath: m_AnchorMax.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2367426047754857468, guid: 9c2a38523400349b29e5a37a5b202ea6, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2367426047754857468, guid: 9c2a38523400349b29e5a37a5b202ea6, type: 3} - propertyPath: m_Pivot.x - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 2367426047754857468, guid: 9c2a38523400349b29e5a37a5b202ea6, type: 3} - propertyPath: m_Pivot.y - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 6835454259844634052, guid: 9c2a38523400349b29e5a37a5b202ea6, type: 3} @@ -6238,6 +6274,9 @@ PrefabInstance: value: Catergory_mainmenu_race objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 9c2a38523400349b29e5a37a5b202ea6, type: 3} --- !u!224 &4376516045305876914 stripped RectTransform: @@ -6250,6 +6289,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 4603593415221689277} m_Modifications: - target: {fileID: 293417428647739207, guid: e641672c17c8e4fa598ae375d62f92d0, @@ -6259,158 +6299,158 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1636223838501202631, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 1636223838501202631, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 1636223838501202631, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_LocalPosition.z - value: 0 + propertyPath: m_RootOrder + value: 2 objectReference: {fileID: 0} - target: {fileID: 1636223838501202631, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 1636223838501202631, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 1 objectReference: {fileID: 0} - target: {fileID: 1636223838501202631, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 1636223838501202631, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_LocalRotation.w + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - target: {fileID: 1636223838501202631, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_RootOrder - value: 2 + propertyPath: m_SizeDelta.x + value: 610 objectReference: {fileID: 0} - target: {fileID: 1636223838501202631, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 + propertyPath: m_SizeDelta.y + value: 60 objectReference: {fileID: 0} - target: {fileID: 1636223838501202631, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 1636223838501202631, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 1636223838501202631, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_AnchoredPosition.x - value: 305 + propertyPath: m_LocalPosition.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 1636223838501202631, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_AnchoredPosition.y - value: -180 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 1636223838501202631, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_SizeDelta.x - value: 610 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 1636223838501202631, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_SizeDelta.y - value: 60 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 1636223838501202631, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 1636223838501202631, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_AnchorMin.y - value: 1 + propertyPath: m_AnchoredPosition.x + value: 305 objectReference: {fileID: 0} - target: {fileID: 1636223838501202631, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_AnchorMax.x - value: 0 + propertyPath: m_AnchoredPosition.y + value: -180 objectReference: {fileID: 0} - target: {fileID: 1636223838501202631, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_AnchorMax.y - value: 1 + propertyPath: m_LocalEulerAnglesHint.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 1636223838501202631, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_Pivot.x - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 1636223838501202631, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_Pivot.y - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 3355826776686620820, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_textInfo.characterCount + propertyPath: m_textInfo.lineCount value: 1 objectReference: {fileID: 0} - target: {fileID: 3355826776686620820, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_textInfo.wordCount + propertyPath: m_textInfo.pageCount value: 1 objectReference: {fileID: 0} - target: {fileID: 3355826776686620820, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_textInfo.lineCount + propertyPath: m_textInfo.wordCount value: 1 objectReference: {fileID: 0} - target: {fileID: 3355826776686620820, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_textInfo.pageCount + propertyPath: m_textInfo.characterCount value: 1 objectReference: {fileID: 0} - target: {fileID: 4145383538461210715, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_textInfo.characterCount - value: 11 + propertyPath: m_isTextTruncated + value: 0 objectReference: {fileID: 0} - target: {fileID: 4145383538461210715, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_textInfo.wordCount + propertyPath: m_textInfo.lineCount value: 1 objectReference: {fileID: 0} - target: {fileID: 4145383538461210715, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_textInfo.lineCount + propertyPath: m_textInfo.pageCount value: 1 objectReference: {fileID: 0} - target: {fileID: 4145383538461210715, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_textInfo.pageCount + propertyPath: m_textInfo.wordCount value: 1 objectReference: {fileID: 0} - target: {fileID: 4145383538461210715, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_firstOverflowCharacterIndex - value: -1 + propertyPath: m_textInfo.characterCount + value: 11 objectReference: {fileID: 0} - target: {fileID: 4145383538461210715, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_isTextTruncated - value: 0 + propertyPath: m_firstOverflowCharacterIndex + value: -1 objectReference: {fileID: 0} - target: {fileID: 4165739792466630093, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} @@ -6419,43 +6459,43 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4528881512793225869, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_textInfo.characterCount + propertyPath: m_textInfo.lineCount value: 1 objectReference: {fileID: 0} - target: {fileID: 4528881512793225869, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_textInfo.wordCount + propertyPath: m_textInfo.pageCount value: 1 objectReference: {fileID: 0} - target: {fileID: 4528881512793225869, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_textInfo.lineCount + propertyPath: m_textInfo.wordCount value: 1 objectReference: {fileID: 0} - target: {fileID: 4528881512793225869, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_textInfo.pageCount + propertyPath: m_textInfo.characterCount value: 1 objectReference: {fileID: 0} - target: {fileID: 4898991619777394856, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_textInfo.characterCount - value: 9 + propertyPath: m_textInfo.lineCount + value: 1 objectReference: {fileID: 0} - target: {fileID: 4898991619777394856, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_textInfo.wordCount - value: 2 + propertyPath: m_textInfo.pageCount + value: 1 objectReference: {fileID: 0} - target: {fileID: 4898991619777394856, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_textInfo.lineCount - value: 1 + propertyPath: m_textInfo.wordCount + value: 2 objectReference: {fileID: 0} - target: {fileID: 4898991619777394856, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} - propertyPath: m_textInfo.pageCount - value: 1 + propertyPath: m_textInfo.characterCount + value: 9 objectReference: {fileID: 0} - target: {fileID: 4898991619777394856, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} @@ -6463,6 +6503,9 @@ PrefabInstance: value: -1 objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: e641672c17c8e4fa598ae375d62f92d0, type: 3} --- !u!224 &3459718024052074071 stripped RectTransform: @@ -6487,6 +6530,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 7907029378344209924} m_Modifications: - target: {fileID: 1387412097423351230, guid: 6c4c432a58e904349aa3da4121ddc39a, @@ -6496,28 +6540,28 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1387412097423351230, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode value: 6 objectReference: {fileID: 0} - target: {fileID: 1387412097423351230, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState - value: 2 + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 6 objectReference: {fileID: 0} - target: {fileID: 1387412097423351230, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target value: - objectReference: {fileID: 1553643131225060081} + objectReference: {fileID: 4123585949464230279} - target: {fileID: 1387412097423351230, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target value: - objectReference: {fileID: 4123585949464230279} + objectReference: {fileID: 1553643131225060081} - target: {fileID: 1387412097423351230, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName - value: UnityEngine.GameObject, UnityEngine + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 objectReference: {fileID: 0} - target: {fileID: 1387412097423351230, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} @@ -6526,13 +6570,13 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1387412097423351230, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode - value: 6 + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName + value: SetActive objectReference: {fileID: 0} - target: {fileID: 1387412097423351230, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName + value: UnityEngine.GameObject, UnityEngine objectReference: {fileID: 0} - target: {fileID: 1387412097423351230, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} @@ -6541,18 +6585,18 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1387412097423351230, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName - value: SetActive + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_BoolArgument + value: 1 objectReference: {fileID: 0} - target: {fileID: 1387412097423351230, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName value: UnityEngine.Object, UnityEngine objectReference: {fileID: 0} - target: {fileID: 1387412097423351230, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_BoolArgument - value: 1 + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine objectReference: {fileID: 0} - target: {fileID: 3005896382906109012, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} @@ -6566,23 +6610,23 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 5569192717355522162, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} - propertyPath: m_textInfo.characterCount - value: 9 + propertyPath: m_textInfo.lineCount + value: 1 objectReference: {fileID: 0} - target: {fileID: 5569192717355522162, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} - propertyPath: m_textInfo.wordCount + propertyPath: m_textInfo.pageCount value: 1 objectReference: {fileID: 0} - target: {fileID: 5569192717355522162, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} - propertyPath: m_textInfo.lineCount + propertyPath: m_textInfo.wordCount value: 1 objectReference: {fileID: 0} - target: {fileID: 5569192717355522162, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} - propertyPath: m_textInfo.pageCount - value: 1 + propertyPath: m_textInfo.characterCount + value: 9 objectReference: {fileID: 0} - target: {fileID: 5569192718429090174, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} @@ -6591,110 +6635,113 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 7874460316248613766, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 7874460316248613766, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 7874460316248613766, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} - propertyPath: m_LocalPosition.z - value: 0 + propertyPath: m_RootOrder + value: 1 objectReference: {fileID: 0} - target: {fileID: 7874460316248613766, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 7874460316248613766, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 1 objectReference: {fileID: 0} - target: {fileID: 7874460316248613766, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 7874460316248613766, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} - propertyPath: m_LocalRotation.w + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - target: {fileID: 7874460316248613766, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} - propertyPath: m_RootOrder - value: 1 + propertyPath: m_SizeDelta.x + value: 1426.2534 objectReference: {fileID: 0} - target: {fileID: 7874460316248613766, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 + propertyPath: m_SizeDelta.y + value: 60 objectReference: {fileID: 0} - target: {fileID: 7874460316248613766, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7874460316248613766, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7874460316248613766, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} - propertyPath: m_AnchoredPosition.x - value: 763.1267 + propertyPath: m_LocalPosition.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 7874460316248613766, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} - propertyPath: m_AnchoredPosition.y - value: -90 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 7874460316248613766, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} - propertyPath: m_SizeDelta.x - value: 1426.2534 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 7874460316248613766, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} - propertyPath: m_SizeDelta.y - value: 60 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 7874460316248613766, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 7874460316248613766, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} - propertyPath: m_AnchorMin.y - value: 1 + propertyPath: m_AnchoredPosition.x + value: 763.1267 objectReference: {fileID: 0} - target: {fileID: 7874460316248613766, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} - propertyPath: m_AnchorMax.x - value: 0 + propertyPath: m_AnchoredPosition.y + value: -90 objectReference: {fileID: 0} - target: {fileID: 7874460316248613766, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} - propertyPath: m_AnchorMax.y - value: 1 + propertyPath: m_LocalEulerAnglesHint.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 7874460316248613766, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} - propertyPath: m_Pivot.x - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 7874460316248613766, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} - propertyPath: m_Pivot.y - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 6c4c432a58e904349aa3da4121ddc39a, type: 3} --- !u!224 &4612491773756503954 stripped RectTransform: @@ -6707,6 +6754,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 8802111069979096020} m_Modifications: - target: {fileID: 3483432873453881459, guid: 3aa15030c01b44e1981a625cc3f1ec72, @@ -6714,6 +6762,11 @@ PrefabInstance: propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size value: 1 objectReference: {fileID: 0} + - target: {fileID: 3483432873453881459, guid: 3aa15030c01b44e1981a625cc3f1ec72, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 5 + objectReference: {fileID: 0} - target: {fileID: 3483432873453881459, guid: 3aa15030c01b44e1981a625cc3f1ec72, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target @@ -6724,11 +6777,6 @@ PrefabInstance: propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName value: SetTrigger objectReference: {fileID: 0} - - target: {fileID: 3483432873453881459, guid: 3aa15030c01b44e1981a625cc3f1ec72, - type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode - value: 5 - objectReference: {fileID: 0} - target: {fileID: 3483432873453881459, guid: 3aa15030c01b44e1981a625cc3f1ec72, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_StringArgument @@ -6741,23 +6789,23 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6656838211862073268, guid: 3aa15030c01b44e1981a625cc3f1ec72, type: 3} - propertyPath: m_padding - value: 0 + propertyPath: m_Enabled + value: 1 objectReference: {fileID: 0} - target: {fileID: 6656838211862073268, guid: 3aa15030c01b44e1981a625cc3f1ec72, type: 3} - propertyPath: m_Enabled - value: 1 + propertyPath: m_padding + value: 0 objectReference: {fileID: 0} - target: {fileID: 7393333455624452490, guid: 3aa15030c01b44e1981a625cc3f1ec72, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_Pivot.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7393333455624452490, guid: 3aa15030c01b44e1981a625cc3f1ec72, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 1 objectReference: {fileID: 0} - target: {fileID: 7393333455624452490, guid: 3aa15030c01b44e1981a625cc3f1ec72, type: 3} @@ -6766,60 +6814,63 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 7393333455624452490, guid: 3aa15030c01b44e1981a625cc3f1ec72, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_AnchorMax.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7393333455624452490, guid: 3aa15030c01b44e1981a625cc3f1ec72, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7393333455624452490, guid: 3aa15030c01b44e1981a625cc3f1ec72, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 + propertyPath: m_AnchorMin.y + value: -0.23 objectReference: {fileID: 0} - target: {fileID: 7393333455624452490, guid: 3aa15030c01b44e1981a625cc3f1ec72, type: 3} - propertyPath: m_Pivot.x - value: 0 + propertyPath: m_SizeDelta.y + value: -40 objectReference: {fileID: 0} - target: {fileID: 7393333455624452490, guid: 3aa15030c01b44e1981a625cc3f1ec72, type: 3} - propertyPath: m_Pivot.y - value: 1 + propertyPath: m_LocalPosition.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 7393333455624452490, guid: 3aa15030c01b44e1981a625cc3f1ec72, type: 3} - propertyPath: m_AnchoredPosition.x - value: 20 + propertyPath: m_LocalPosition.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 7393333455624452490, guid: 3aa15030c01b44e1981a625cc3f1ec72, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_AnchoredPosition.x + value: 20 objectReference: {fileID: 0} - target: {fileID: 7393333455624452490, guid: 3aa15030c01b44e1981a625cc3f1ec72, type: 3} - propertyPath: m_AnchorMax.x - value: 0 + propertyPath: m_AnchoredPosition.y + value: -20 objectReference: {fileID: 0} - target: {fileID: 7393333455624452490, guid: 3aa15030c01b44e1981a625cc3f1ec72, type: 3} - propertyPath: m_AnchorMin.y - value: -0.23 + propertyPath: m_LocalEulerAnglesHint.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 7393333455624452490, guid: 3aa15030c01b44e1981a625cc3f1ec72, type: 3} - propertyPath: m_SizeDelta.y - value: -40 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 7393333455624452490, guid: 3aa15030c01b44e1981a625cc3f1ec72, type: 3} - propertyPath: m_AnchoredPosition.y - value: -20 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 3aa15030c01b44e1981a625cc3f1ec72, type: 3} --- !u!224 &5222232652279626277 stripped RectTransform: @@ -6832,6 +6883,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 7907029380085608247} m_Modifications: - target: {fileID: 7803164479145020861, guid: 5aec52444778a4ef2b11847564e94866, @@ -6846,18 +6898,18 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 7803164479520924053, guid: 5aec52444778a4ef2b11847564e94866, type: 3} - propertyPath: m_LocalRotation.x - value: 0.07858009 + propertyPath: m_LocalPosition.x + value: -2.8925436 objectReference: {fileID: 0} - target: {fileID: 7803164479520924053, guid: 5aec52444778a4ef2b11847564e94866, type: 3} - propertyPath: m_LocalRotation.y - value: 0.91455495 + propertyPath: m_LocalPosition.y + value: 2.7719994 objectReference: {fileID: 0} - target: {fileID: 7803164479520924053, guid: 5aec52444778a4ef2b11847564e94866, type: 3} - propertyPath: m_LocalRotation.z - value: -0.21589711 + propertyPath: m_LocalPosition.z + value: 3.044201 objectReference: {fileID: 0} - target: {fileID: 7803164479520924053, guid: 5aec52444778a4ef2b11847564e94866, type: 3} @@ -6866,18 +6918,18 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 7803164479520924053, guid: 5aec52444778a4ef2b11847564e94866, type: 3} - propertyPath: m_LocalPosition.x - value: -2.8925436 + propertyPath: m_LocalRotation.x + value: 0.07858009 objectReference: {fileID: 0} - target: {fileID: 7803164479520924053, guid: 5aec52444778a4ef2b11847564e94866, type: 3} - propertyPath: m_LocalPosition.y - value: 2.7719994 + propertyPath: m_LocalRotation.y + value: 0.91455495 objectReference: {fileID: 0} - target: {fileID: 7803164479520924053, guid: 5aec52444778a4ef2b11847564e94866, type: 3} - propertyPath: m_LocalPosition.z - value: 3.044201 + propertyPath: m_LocalRotation.z + value: -0.21589711 objectReference: {fileID: 0} - target: {fileID: 7803164479520924054, guid: 5aec52444778a4ef2b11847564e94866, type: 3} @@ -6894,6 +6946,11 @@ PrefabInstance: propertyPath: m_IsActive value: 1 objectReference: {fileID: 0} + - target: {fileID: 7803164479910481701, guid: 5aec52444778a4ef2b11847564e94866, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} - target: {fileID: 7803164479910481701, guid: 5aec52444778a4ef2b11847564e94866, type: 3} propertyPath: m_LocalPosition.x @@ -6909,6 +6966,11 @@ PrefabInstance: propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 7803164479910481701, guid: 5aec52444778a4ef2b11847564e94866, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} - target: {fileID: 7803164479910481701, guid: 5aec52444778a4ef2b11847564e94866, type: 3} propertyPath: m_LocalRotation.x @@ -6924,16 +6986,6 @@ PrefabInstance: propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 7803164479910481701, guid: 5aec52444778a4ef2b11847564e94866, - type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 7803164479910481701, guid: 5aec52444778a4ef2b11847564e94866, - type: 3} - propertyPath: m_RootOrder - value: 3 - objectReference: {fileID: 0} - target: {fileID: 7803164479910481701, guid: 5aec52444778a4ef2b11847564e94866, type: 3} propertyPath: m_LocalEulerAnglesHint.x @@ -6950,6 +7002,9 @@ PrefabInstance: value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 5aec52444778a4ef2b11847564e94866, type: 3} --- !u!1 &3426649662696253841 stripped GameObject: @@ -6957,149 +7012,150 @@ GameObject: type: 3} m_PrefabInstance: {fileID: 3523611926158796626} m_PrefabAsset: {fileID: 0} ---- !u!1 &6677724032547962557 stripped -GameObject: - m_CorrespondingSourceObject: {fileID: 7803164479912040943, guid: 5aec52444778a4ef2b11847564e94866, - type: 3} - m_PrefabInstance: {fileID: 3523611926158796626} - m_PrefabAsset: {fileID: 0} --- !u!4 &6677724032546433143 stripped Transform: m_CorrespondingSourceObject: {fileID: 7803164479910481701, guid: 5aec52444778a4ef2b11847564e94866, type: 3} m_PrefabInstance: {fileID: 3523611926158796626} m_PrefabAsset: {fileID: 0} +--- !u!1 &6677724032547962557 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 7803164479912040943, guid: 5aec52444778a4ef2b11847564e94866, + type: 3} + m_PrefabInstance: {fileID: 3523611926158796626} + m_PrefabAsset: {fileID: 0} --- !u!1001 &3593248499807004690 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 7907029378344209924} m_Modifications: - target: {fileID: 1197693523323382799, guid: e95c985f007f74332872b8e64035af9d, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 1197693523323382799, guid: e95c985f007f74332872b8e64035af9d, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 1197693523323382799, guid: e95c985f007f74332872b8e64035af9d, type: 3} - propertyPath: m_LocalPosition.z - value: 0 + propertyPath: m_RootOrder + value: 2 objectReference: {fileID: 0} - target: {fileID: 1197693523323382799, guid: e95c985f007f74332872b8e64035af9d, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 1197693523323382799, guid: e95c985f007f74332872b8e64035af9d, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 1197693523323382799, guid: e95c985f007f74332872b8e64035af9d, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 1197693523323382799, guid: e95c985f007f74332872b8e64035af9d, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 1197693523323382799, guid: e95c985f007f74332872b8e64035af9d, type: 3} - propertyPath: m_RootOrder - value: 2 + propertyPath: m_SizeDelta.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 1197693523323382799, guid: e95c985f007f74332872b8e64035af9d, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 + propertyPath: m_SizeDelta.y + value: 60 objectReference: {fileID: 0} - target: {fileID: 1197693523323382799, guid: e95c985f007f74332872b8e64035af9d, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 1197693523323382799, guid: e95c985f007f74332872b8e64035af9d, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 1197693523323382799, guid: e95c985f007f74332872b8e64035af9d, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 1197693523323382799, guid: e95c985f007f74332872b8e64035af9d, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 1197693523323382799, guid: e95c985f007f74332872b8e64035af9d, type: 3} - propertyPath: m_SizeDelta.x - value: 0 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 1197693523323382799, guid: e95c985f007f74332872b8e64035af9d, type: 3} - propertyPath: m_SizeDelta.y - value: 60 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 1197693523323382799, guid: e95c985f007f74332872b8e64035af9d, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 1197693523323382799, guid: e95c985f007f74332872b8e64035af9d, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 1197693523323382799, guid: e95c985f007f74332872b8e64035af9d, type: 3} - propertyPath: m_AnchorMax.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 1197693523323382799, guid: e95c985f007f74332872b8e64035af9d, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 1197693523323382799, guid: e95c985f007f74332872b8e64035af9d, type: 3} - propertyPath: m_Pivot.x - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 1197693523323382799, guid: e95c985f007f74332872b8e64035af9d, type: 3} - propertyPath: m_Pivot.y - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 3499581972667848699, guid: e95c985f007f74332872b8e64035af9d, type: 3} - propertyPath: m_textInfo.characterCount - value: 4 + propertyPath: m_textInfo.lineCount + value: 1 objectReference: {fileID: 0} - target: {fileID: 3499581972667848699, guid: e95c985f007f74332872b8e64035af9d, type: 3} - propertyPath: m_textInfo.wordCount + propertyPath: m_textInfo.pageCount value: 1 objectReference: {fileID: 0} - target: {fileID: 3499581972667848699, guid: e95c985f007f74332872b8e64035af9d, type: 3} - propertyPath: m_textInfo.lineCount + propertyPath: m_textInfo.wordCount value: 1 objectReference: {fileID: 0} - target: {fileID: 3499581972667848699, guid: e95c985f007f74332872b8e64035af9d, type: 3} - propertyPath: m_textInfo.pageCount - value: 1 + propertyPath: m_textInfo.characterCount + value: 4 objectReference: {fileID: 0} - target: {fileID: 3499581973741518583, guid: e95c985f007f74332872b8e64035af9d, type: 3} @@ -7112,6 +7168,9 @@ PrefabInstance: value: Catergory_mainmenu_exit objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: e95c985f007f74332872b8e64035af9d, type: 3} --- !u!224 &2396697376959644701 stripped RectTransform: @@ -7124,27 +7183,28 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 3644197056844246198} m_Modifications: - target: {fileID: 2457640407412653492, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} - propertyPath: m_textInfo.characterCount - value: 4 + propertyPath: m_textInfo.lineCount + value: 1 objectReference: {fileID: 0} - target: {fileID: 2457640407412653492, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} - propertyPath: m_textInfo.wordCount + propertyPath: m_textInfo.pageCount value: 1 objectReference: {fileID: 0} - target: {fileID: 2457640407412653492, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} - propertyPath: m_textInfo.lineCount + propertyPath: m_textInfo.wordCount value: 1 objectReference: {fileID: 0} - target: {fileID: 2457640407412653492, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} - propertyPath: m_textInfo.pageCount - value: 1 + propertyPath: m_textInfo.characterCount + value: 4 objectReference: {fileID: 0} - target: {fileID: 2457640407412653492, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} @@ -7153,22 +7213,22 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 5725683357886330248, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} - propertyPath: m_textInfo.characterCount + propertyPath: m_textInfo.lineCount value: 1 objectReference: {fileID: 0} - target: {fileID: 5725683357886330248, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} - propertyPath: m_textInfo.wordCount + propertyPath: m_textInfo.pageCount value: 1 objectReference: {fileID: 0} - target: {fileID: 5725683357886330248, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} - propertyPath: m_textInfo.lineCount + propertyPath: m_textInfo.wordCount value: 1 objectReference: {fileID: 0} - target: {fileID: 5725683357886330248, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} - propertyPath: m_textInfo.pageCount + propertyPath: m_textInfo.characterCount value: 1 objectReference: {fileID: 0} - target: {fileID: 6352417730035355857, guid: 6849ec929aa994895a25cfcfcae2527f, @@ -7178,47 +7238,47 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6368266192392764743, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} - propertyPath: m_textInfo.characterCount - value: 1 + propertyPath: m_isTextTruncated + value: 0 objectReference: {fileID: 0} - target: {fileID: 6368266192392764743, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} - propertyPath: m_textInfo.wordCount + propertyPath: m_textInfo.lineCount value: 1 objectReference: {fileID: 0} - target: {fileID: 6368266192392764743, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} - propertyPath: m_textInfo.lineCount + propertyPath: m_textInfo.pageCount value: 1 objectReference: {fileID: 0} - target: {fileID: 6368266192392764743, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} - propertyPath: m_textInfo.pageCount + propertyPath: m_textInfo.wordCount value: 1 objectReference: {fileID: 0} - target: {fileID: 6368266192392764743, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} - propertyPath: m_isTextTruncated - value: 0 + propertyPath: m_textInfo.characterCount + value: 1 objectReference: {fileID: 0} - target: {fileID: 6862973169193975697, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} - propertyPath: m_textInfo.characterCount + propertyPath: m_textInfo.lineCount value: 1 objectReference: {fileID: 0} - target: {fileID: 6862973169193975697, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} - propertyPath: m_textInfo.wordCount + propertyPath: m_textInfo.pageCount value: 1 objectReference: {fileID: 0} - target: {fileID: 6862973169193975697, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} - propertyPath: m_textInfo.lineCount + propertyPath: m_textInfo.wordCount value: 1 objectReference: {fileID: 0} - target: {fileID: 6862973169193975697, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} - propertyPath: m_textInfo.pageCount + propertyPath: m_textInfo.characterCount value: 1 objectReference: {fileID: 0} - target: {fileID: 7346938454489217627, guid: 6849ec929aa994895a25cfcfcae2527f, @@ -7228,117 +7288,114 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8598203918052995035, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 8598203918052995035, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 8598203918052995035, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} - propertyPath: m_LocalPosition.z - value: 0 + propertyPath: m_RootOrder + value: 2 objectReference: {fileID: 0} - target: {fileID: 8598203918052995035, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 8598203918052995035, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 1 objectReference: {fileID: 0} - target: {fileID: 8598203918052995035, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 8598203918052995035, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} - propertyPath: m_LocalRotation.w + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - target: {fileID: 8598203918052995035, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} - propertyPath: m_RootOrder - value: 2 + propertyPath: m_SizeDelta.x + value: 610 objectReference: {fileID: 0} - target: {fileID: 8598203918052995035, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 + propertyPath: m_SizeDelta.y + value: 60 objectReference: {fileID: 0} - target: {fileID: 8598203918052995035, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8598203918052995035, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8598203918052995035, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} - propertyPath: m_AnchoredPosition.x - value: 305 + propertyPath: m_LocalPosition.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 8598203918052995035, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} - propertyPath: m_AnchoredPosition.y - value: -180 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 8598203918052995035, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} - propertyPath: m_SizeDelta.x - value: 610 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 8598203918052995035, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} - propertyPath: m_SizeDelta.y - value: 60 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 8598203918052995035, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 8598203918052995035, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} - propertyPath: m_AnchorMin.y - value: 1 + propertyPath: m_AnchoredPosition.x + value: 305 objectReference: {fileID: 0} - target: {fileID: 8598203918052995035, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} - propertyPath: m_AnchorMax.x - value: 0 + propertyPath: m_AnchoredPosition.y + value: -180 objectReference: {fileID: 0} - target: {fileID: 8598203918052995035, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} - propertyPath: m_AnchorMax.y - value: 1 + propertyPath: m_LocalEulerAnglesHint.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 8598203918052995035, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} - propertyPath: m_Pivot.x - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 8598203918052995035, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} - propertyPath: m_Pivot.y - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 6849ec929aa994895a25cfcfcae2527f, type: 3} ---- !u!224 &4631664004069129997 stripped -RectTransform: - m_CorrespondingSourceObject: {fileID: 8598203918052995035, guid: 6849ec929aa994895a25cfcfcae2527f, - type: 3} - m_PrefabInstance: {fileID: 3968811704722870486} - m_PrefabAsset: {fileID: 0} --- !u!114 &1202543925499199682 stripped MonoBehaviour: m_CorrespondingSourceObject: {fileID: 2856485458740006932, guid: 6849ec929aa994895a25cfcfcae2527f, @@ -7351,127 +7408,134 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d4e955686e91b45e085af22325bce692, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!224 &4631664004069129997 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 8598203918052995035, guid: 6849ec929aa994895a25cfcfcae2527f, + type: 3} + m_PrefabInstance: {fileID: 3968811704722870486} + m_PrefabAsset: {fileID: 0} --- !u!1001 &4375629241081328358 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 5173670630180522257} m_Modifications: - target: {fileID: 287166509942831546, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 287166509942831546, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 287166509942831546, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 287166509942831546, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 287166509942831546, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 1 objectReference: {fileID: 0} - target: {fileID: 287166509942831546, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 287166509942831546, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} - propertyPath: m_LocalRotation.w + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - target: {fileID: 287166509942831546, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} - propertyPath: m_RootOrder - value: 0 + propertyPath: m_SizeDelta.x + value: 625 objectReference: {fileID: 0} - target: {fileID: 287166509942831546, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 + propertyPath: m_SizeDelta.y + value: 428 objectReference: {fileID: 0} - target: {fileID: 287166509942831546, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 287166509942831546, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 287166509942831546, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} - propertyPath: m_AnchoredPosition.x - value: 312.5 + propertyPath: m_LocalPosition.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 287166509942831546, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} - propertyPath: m_AnchoredPosition.y - value: -214 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 287166509942831546, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} - propertyPath: m_SizeDelta.x - value: 625 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 287166509942831546, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} - propertyPath: m_SizeDelta.y - value: 428 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 287166509942831546, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 287166509942831546, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} - propertyPath: m_AnchorMin.y - value: 1 + propertyPath: m_AnchoredPosition.x + value: 312.5 objectReference: {fileID: 0} - target: {fileID: 287166509942831546, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} - propertyPath: m_AnchorMax.x - value: 0 + propertyPath: m_AnchoredPosition.y + value: -214 objectReference: {fileID: 0} - target: {fileID: 287166509942831546, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} - propertyPath: m_AnchorMax.y - value: 1 + propertyPath: m_LocalEulerAnglesHint.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 287166509942831546, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} - propertyPath: m_Pivot.x - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 287166509942831546, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} - propertyPath: m_Pivot.y - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 1198283025011319710, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} - propertyPath: m_textInfo.characterCount - value: 36 + propertyPath: m_textInfo.lineCount + value: 1 objectReference: {fileID: 0} - target: {fileID: 1198283025011319710, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} - propertyPath: m_textInfo.spaceCount - value: 7 + propertyPath: m_textInfo.pageCount + value: 1 objectReference: {fileID: 0} - target: {fileID: 1198283025011319710, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} @@ -7480,13 +7544,13 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1198283025011319710, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} - propertyPath: m_textInfo.lineCount - value: 1 + propertyPath: m_textInfo.spaceCount + value: 7 objectReference: {fileID: 0} - target: {fileID: 1198283025011319710, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} - propertyPath: m_textInfo.pageCount - value: 1 + propertyPath: m_textInfo.characterCount + value: 36 objectReference: {fileID: 0} - target: {fileID: 2266699601162746537, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} @@ -7495,23 +7559,23 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4848333007420890690, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} - propertyPath: m_textInfo.characterCount - value: 9 + propertyPath: m_textInfo.lineCount + value: 1 objectReference: {fileID: 0} - target: {fileID: 4848333007420890690, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} - propertyPath: m_textInfo.wordCount + propertyPath: m_textInfo.pageCount value: 1 objectReference: {fileID: 0} - target: {fileID: 4848333007420890690, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} - propertyPath: m_textInfo.lineCount + propertyPath: m_textInfo.wordCount value: 1 objectReference: {fileID: 0} - target: {fileID: 4848333007420890690, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} - propertyPath: m_textInfo.pageCount - value: 1 + propertyPath: m_textInfo.characterCount + value: 9 objectReference: {fileID: 0} - target: {fileID: 7439659265635515354, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} @@ -7525,8 +7589,8 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 7439659265635515354, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState - value: 2 + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 5 objectReference: {fileID: 0} - target: {fileID: 7439659265635515354, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} @@ -7535,18 +7599,13 @@ PrefabInstance: objectReference: {fileID: 8803882710196166548} - target: {fileID: 7439659265635515354, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: SetupSpectatorGame - objectReference: {fileID: 0} - - target: {fileID: 7439659265635515354, guid: 0546f910860404e4cab301da1ed75fe5, - type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine - objectReference: {fileID: 0} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 3300335164659556536} - target: {fileID: 7439659265635515354, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode - value: 5 + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 objectReference: {fileID: 0} - target: {fileID: 7439659265635515354, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} @@ -7555,9 +7614,9 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 7439659265635515354, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target - value: - objectReference: {fileID: 3300335164659556536} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: SetupSpectatorGame + objectReference: {fileID: 0} - target: {fileID: 7439659265635515354, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName @@ -7565,15 +7624,23 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 7439659265635515354, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_StringArgument + value: Spectator + objectReference: {fileID: 0} + - target: {fileID: 7439659265635515354, guid: 0546f910860404e4cab301da1ed75fe5, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName value: UnityEngine.Object, UnityEngine objectReference: {fileID: 0} - target: {fileID: 7439659265635515354, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_StringArgument - value: Spectator + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 0546f910860404e4cab301da1ed75fe5, type: 3} --- !u!224 &4559160113779247964 stripped RectTransform: @@ -7586,33 +7653,39 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 8802111069979096020} m_Modifications: - target: {fileID: 78310429394321073, guid: cbc4f194f3c894ba0a4d4f8171b7a1e9, type: 3} - propertyPath: m_textInfo.characterCount - value: 4 + propertyPath: m_textInfo.lineCount + value: 1 objectReference: {fileID: 0} - target: {fileID: 78310429394321073, guid: cbc4f194f3c894ba0a4d4f8171b7a1e9, type: 3} - propertyPath: m_textInfo.wordCount + propertyPath: m_textInfo.pageCount value: 1 objectReference: {fileID: 0} - target: {fileID: 78310429394321073, guid: cbc4f194f3c894ba0a4d4f8171b7a1e9, type: 3} - propertyPath: m_textInfo.lineCount + propertyPath: m_textInfo.wordCount value: 1 objectReference: {fileID: 0} - target: {fileID: 78310429394321073, guid: cbc4f194f3c894ba0a4d4f8171b7a1e9, type: 3} - propertyPath: m_textInfo.pageCount - value: 1 + propertyPath: m_textInfo.characterCount + value: 4 objectReference: {fileID: 0} - target: {fileID: 424010144004441284, guid: cbc4f194f3c894ba0a4d4f8171b7a1e9, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size value: 1 objectReference: {fileID: 0} + - target: {fileID: 424010144004441284, guid: cbc4f194f3c894ba0a4d4f8171b7a1e9, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 1 + objectReference: {fileID: 0} - target: {fileID: 424010144004441284, guid: cbc4f194f3c894ba0a4d4f8171b7a1e9, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target @@ -7623,115 +7696,110 @@ PrefabInstance: propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName value: StartRace objectReference: {fileID: 0} - - target: {fileID: 424010144004441284, guid: cbc4f194f3c894ba0a4d4f8171b7a1e9, + - target: {fileID: 5994190909073175869, guid: cbc4f194f3c894ba0a4d4f8171b7a1e9, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + propertyPath: m_Pivot.x value: 1 objectReference: {fileID: 0} - target: {fileID: 5994190909073175869, guid: cbc4f194f3c894ba0a4d4f8171b7a1e9, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.y + value: 1 objectReference: {fileID: 0} - target: {fileID: 5994190909073175869, guid: cbc4f194f3c894ba0a4d4f8171b7a1e9, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_RootOrder + value: 5 objectReference: {fileID: 0} - target: {fileID: 5994190909073175869, guid: cbc4f194f3c894ba0a4d4f8171b7a1e9, type: 3} - propertyPath: m_LocalPosition.z - value: 0 + propertyPath: m_AnchorMax.x + value: 1 objectReference: {fileID: 0} - target: {fileID: 5994190909073175869, guid: cbc4f194f3c894ba0a4d4f8171b7a1e9, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 5994190909073175869, guid: cbc4f194f3c894ba0a4d4f8171b7a1e9, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMin.x + value: 1 objectReference: {fileID: 0} - target: {fileID: 5994190909073175869, guid: cbc4f194f3c894ba0a4d4f8171b7a1e9, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.y + value: -0.23 objectReference: {fileID: 0} - target: {fileID: 5994190909073175869, guid: cbc4f194f3c894ba0a4d4f8171b7a1e9, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_SizeDelta.x + value: 200 objectReference: {fileID: 0} - target: {fileID: 5994190909073175869, guid: cbc4f194f3c894ba0a4d4f8171b7a1e9, type: 3} - propertyPath: m_RootOrder - value: 5 + propertyPath: m_SizeDelta.y + value: -40 objectReference: {fileID: 0} - target: {fileID: 5994190909073175869, guid: cbc4f194f3c894ba0a4d4f8171b7a1e9, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5994190909073175869, guid: cbc4f194f3c894ba0a4d4f8171b7a1e9, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5994190909073175869, guid: cbc4f194f3c894ba0a4d4f8171b7a1e9, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 5994190909073175869, guid: cbc4f194f3c894ba0a4d4f8171b7a1e9, type: 3} - propertyPath: m_AnchoredPosition.x - value: -20 - objectReference: {fileID: 0} - - target: {fileID: 5994190909073175869, guid: cbc4f194f3c894ba0a4d4f8171b7a1e9, - type: 3} - propertyPath: m_AnchoredPosition.y - value: -20 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 5994190909073175869, guid: cbc4f194f3c894ba0a4d4f8171b7a1e9, type: 3} - propertyPath: m_SizeDelta.x - value: 200 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 5994190909073175869, guid: cbc4f194f3c894ba0a4d4f8171b7a1e9, type: 3} - propertyPath: m_SizeDelta.y - value: -40 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 5994190909073175869, guid: cbc4f194f3c894ba0a4d4f8171b7a1e9, type: 3} - propertyPath: m_AnchorMin.x - value: 1 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 5994190909073175869, guid: cbc4f194f3c894ba0a4d4f8171b7a1e9, type: 3} - propertyPath: m_AnchorMin.y - value: -0.23 + propertyPath: m_AnchoredPosition.x + value: -20 objectReference: {fileID: 0} - target: {fileID: 5994190909073175869, guid: cbc4f194f3c894ba0a4d4f8171b7a1e9, type: 3} - propertyPath: m_AnchorMax.x - value: 1 + propertyPath: m_AnchoredPosition.y + value: -20 objectReference: {fileID: 0} - target: {fileID: 5994190909073175869, guid: cbc4f194f3c894ba0a4d4f8171b7a1e9, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5994190909073175869, guid: cbc4f194f3c894ba0a4d4f8171b7a1e9, type: 3} - propertyPath: m_Pivot.x - value: 1 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 5994190909073175869, guid: cbc4f194f3c894ba0a4d4f8171b7a1e9, type: 3} - propertyPath: m_Pivot.y - value: 1 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 7281526541884588003, guid: cbc4f194f3c894ba0a4d4f8171b7a1e9, type: 3} @@ -7744,6 +7812,9 @@ PrefabInstance: value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: cbc4f194f3c894ba0a4d4f8171b7a1e9, type: 3} --- !u!224 &1297213354555609066 stripped RectTransform: @@ -7756,6 +7827,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 3644197056844246198} m_Modifications: - target: {fileID: 78158264318192071, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, @@ -7765,178 +7837,178 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1419418896399957063, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 1419418896399957063, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 1419418896399957063, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_LocalPosition.z - value: 0 + propertyPath: m_RootOrder + value: 1 objectReference: {fileID: 0} - target: {fileID: 1419418896399957063, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 1419418896399957063, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 1 objectReference: {fileID: 0} - target: {fileID: 1419418896399957063, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 1419418896399957063, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_LocalRotation.w + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - target: {fileID: 1419418896399957063, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_RootOrder - value: 1 + propertyPath: m_SizeDelta.x + value: 610 objectReference: {fileID: 0} - target: {fileID: 1419418896399957063, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 + propertyPath: m_SizeDelta.y + value: 60 objectReference: {fileID: 0} - target: {fileID: 1419418896399957063, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 1419418896399957063, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 1419418896399957063, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_AnchoredPosition.x - value: 305 + propertyPath: m_LocalPosition.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 1419418896399957063, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_AnchoredPosition.y - value: -110 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 1419418896399957063, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_SizeDelta.x - value: 610 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 1419418896399957063, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_SizeDelta.y - value: 60 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 1419418896399957063, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 1419418896399957063, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_AnchorMin.y - value: 1 + propertyPath: m_AnchoredPosition.x + value: 305 objectReference: {fileID: 0} - target: {fileID: 1419418896399957063, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_AnchorMax.x - value: 0 + propertyPath: m_AnchoredPosition.y + value: -110 objectReference: {fileID: 0} - target: {fileID: 1419418896399957063, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_AnchorMax.y - value: 1 + propertyPath: m_LocalEulerAnglesHint.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 1419418896399957063, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_Pivot.x - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 1419418896399957063, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_Pivot.y - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 3140569913150727700, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_textInfo.characterCount + propertyPath: m_textInfo.lineCount value: 1 objectReference: {fileID: 0} - target: {fileID: 3140569913150727700, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_textInfo.wordCount + propertyPath: m_textInfo.pageCount value: 1 objectReference: {fileID: 0} - target: {fileID: 3140569913150727700, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_textInfo.lineCount + propertyPath: m_textInfo.wordCount value: 1 objectReference: {fileID: 0} - target: {fileID: 3140569913150727700, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_textInfo.pageCount + propertyPath: m_textInfo.characterCount value: 1 objectReference: {fileID: 0} - target: {fileID: 4313903787989871629, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_textInfo.characterCount + propertyPath: m_textInfo.lineCount value: 1 objectReference: {fileID: 0} - target: {fileID: 4313903787989871629, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_textInfo.wordCount + propertyPath: m_textInfo.pageCount value: 1 objectReference: {fileID: 0} - target: {fileID: 4313903787989871629, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_textInfo.lineCount + propertyPath: m_textInfo.wordCount value: 1 objectReference: {fileID: 0} - target: {fileID: 4313903787989871629, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_textInfo.pageCount + propertyPath: m_textInfo.characterCount value: 1 objectReference: {fileID: 0} - target: {fileID: 4359657351628582619, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_textInfo.characterCount - value: 6 + propertyPath: m_isTextTruncated + value: 0 objectReference: {fileID: 0} - target: {fileID: 4359657351628582619, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_textInfo.wordCount + propertyPath: m_textInfo.lineCount value: 1 objectReference: {fileID: 0} - target: {fileID: 4359657351628582619, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_textInfo.lineCount + propertyPath: m_textInfo.pageCount value: 1 objectReference: {fileID: 0} - target: {fileID: 4359657351628582619, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_textInfo.pageCount + propertyPath: m_textInfo.wordCount value: 1 objectReference: {fileID: 0} - target: {fileID: 4359657351628582619, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_firstOverflowCharacterIndex - value: -1 + propertyPath: m_textInfo.characterCount + value: 6 objectReference: {fileID: 0} - target: {fileID: 4359657351628582619, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_isTextTruncated - value: 0 + propertyPath: m_firstOverflowCharacterIndex + value: -1 objectReference: {fileID: 0} - target: {fileID: 4379873074605474637, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} @@ -7945,23 +8017,23 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 5114813683879702056, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_textInfo.characterCount - value: 5 + propertyPath: m_textInfo.lineCount + value: 1 objectReference: {fileID: 0} - target: {fileID: 5114813683879702056, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_textInfo.wordCount + propertyPath: m_textInfo.pageCount value: 1 objectReference: {fileID: 0} - target: {fileID: 5114813683879702056, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_textInfo.lineCount + propertyPath: m_textInfo.wordCount value: 1 objectReference: {fileID: 0} - target: {fileID: 5114813683879702056, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} - propertyPath: m_textInfo.pageCount - value: 1 + propertyPath: m_textInfo.characterCount + value: 5 objectReference: {fileID: 0} - target: {fileID: 5114813683879702056, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} @@ -7969,13 +8041,10 @@ PrefabInstance: value: -1 objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, type: 3} ---- !u!224 &6586527480826535880 stripped -RectTransform: - m_CorrespondingSourceObject: {fileID: 1419418896399957063, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, - type: 3} - m_PrefabInstance: {fileID: 5249721825145316239} - m_PrefabAsset: {fileID: 0} --- !u!114 &837310350053105671 stripped MonoBehaviour: m_CorrespondingSourceObject: {fileID: 4847134872282235784, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, @@ -7988,22 +8057,29 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d4e955686e91b45e085af22325bce692, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!224 &6586527480826535880 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 1419418896399957063, guid: f6fa26ee1af1c43ccb777b80eb7e8a02, + type: 3} + m_PrefabInstance: {fileID: 5249721825145316239} + m_PrefabAsset: {fileID: 0} --- !u!1001 &5634064345594304585 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 8802111069979096020} m_Modifications: - target: {fileID: 72160263453854153, guid: 7d74b45c74ce64ef1b66ab68a9d5be51, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 1 objectReference: {fileID: 0} - target: {fileID: 72160263453854153, guid: 7d74b45c74ce64ef1b66ab68a9d5be51, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 1 objectReference: {fileID: 0} - target: {fileID: 72160263453854153, guid: 7d74b45c74ce64ef1b66ab68a9d5be51, type: 3} @@ -8012,43 +8088,43 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 72160263453854153, guid: 7d74b45c74ce64ef1b66ab68a9d5be51, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 + propertyPath: m_AnchorMin.y + value: -0.23 objectReference: {fileID: 0} - target: {fileID: 72160263453854153, guid: 7d74b45c74ce64ef1b66ab68a9d5be51, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 + propertyPath: m_SizeDelta.y + value: -40 objectReference: {fileID: 0} - target: {fileID: 72160263453854153, guid: 7d74b45c74ce64ef1b66ab68a9d5be51, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 72160263453854153, guid: 7d74b45c74ce64ef1b66ab68a9d5be51, type: 3} - propertyPath: m_Pivot.x - value: 1 + propertyPath: m_LocalPosition.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 72160263453854153, guid: 7d74b45c74ce64ef1b66ab68a9d5be51, type: 3} - propertyPath: m_Pivot.y - value: 1 + propertyPath: m_AnchoredPosition.y + value: -20 objectReference: {fileID: 0} - target: {fileID: 72160263453854153, guid: 7d74b45c74ce64ef1b66ab68a9d5be51, type: 3} - propertyPath: m_AnchorMin.y - value: -0.23 + propertyPath: m_LocalEulerAnglesHint.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 72160263453854153, guid: 7d74b45c74ce64ef1b66ab68a9d5be51, type: 3} - propertyPath: m_SizeDelta.y - value: -40 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 72160263453854153, guid: 7d74b45c74ce64ef1b66ab68a9d5be51, type: 3} - propertyPath: m_AnchoredPosition.y - value: -20 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 3972971401390162711, guid: 7d74b45c74ce64ef1b66ab68a9d5be51, type: 3} @@ -8062,12 +8138,12 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4322312073944530935, guid: 7d74b45c74ce64ef1b66ab68a9d5be51, type: 3} - propertyPath: m_padding + propertyPath: m_Enabled value: 0 objectReference: {fileID: 0} - target: {fileID: 4322312073944530935, guid: 7d74b45c74ce64ef1b66ab68a9d5be51, type: 3} - propertyPath: m_Enabled + propertyPath: m_padding value: 0 objectReference: {fileID: 0} - target: {fileID: 6326883774926846000, guid: 7d74b45c74ce64ef1b66ab68a9d5be51, @@ -8075,6 +8151,11 @@ PrefabInstance: propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size value: 1 objectReference: {fileID: 0} + - target: {fileID: 6326883774926846000, guid: 7d74b45c74ce64ef1b66ab68a9d5be51, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 5 + objectReference: {fileID: 0} - target: {fileID: 6326883774926846000, guid: 7d74b45c74ce64ef1b66ab68a9d5be51, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target @@ -8085,17 +8166,15 @@ PrefabInstance: propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName value: SetTrigger objectReference: {fileID: 0} - - target: {fileID: 6326883774926846000, guid: 7d74b45c74ce64ef1b66ab68a9d5be51, - type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode - value: 5 - objectReference: {fileID: 0} - target: {fileID: 6326883774926846000, guid: 7d74b45c74ce64ef1b66ab68a9d5be51, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_StringArgument value: Next objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 7d74b45c74ce64ef1b66ab68a9d5be51, type: 3} --- !u!224 &5706178149847880064 stripped RectTransform: @@ -8108,46 +8187,47 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 3644197056844246198} m_Modifications: - target: {fileID: 285741469465936373, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} - propertyPath: m_textInfo.characterCount + propertyPath: m_textInfo.lineCount value: 1 objectReference: {fileID: 0} - target: {fileID: 285741469465936373, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} - propertyPath: m_textInfo.wordCount + propertyPath: m_textInfo.pageCount value: 1 objectReference: {fileID: 0} - target: {fileID: 285741469465936373, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} - propertyPath: m_textInfo.lineCount + propertyPath: m_textInfo.wordCount value: 1 objectReference: {fileID: 0} - target: {fileID: 285741469465936373, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} - propertyPath: m_textInfo.pageCount + propertyPath: m_textInfo.characterCount value: 1 objectReference: {fileID: 0} - target: {fileID: 1422208719443479532, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} - propertyPath: m_textInfo.characterCount + propertyPath: m_textInfo.lineCount value: 1 objectReference: {fileID: 0} - target: {fileID: 1422208719443479532, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} - propertyPath: m_textInfo.wordCount + propertyPath: m_textInfo.pageCount value: 1 objectReference: {fileID: 0} - target: {fileID: 1422208719443479532, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} - propertyPath: m_textInfo.lineCount + propertyPath: m_textInfo.wordCount value: 1 objectReference: {fileID: 0} - target: {fileID: 1422208719443479532, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} - propertyPath: m_textInfo.pageCount + propertyPath: m_textInfo.characterCount value: 1 objectReference: {fileID: 0} - target: {fileID: 1489227696064242860, guid: 6312e4271f86843a59d483d5e26cbe7f, @@ -8157,33 +8237,33 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1504834131173869882, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} - propertyPath: m_textInfo.characterCount - value: 3 + propertyPath: m_isTextTruncated + value: 0 objectReference: {fileID: 0} - target: {fileID: 1504834131173869882, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} - propertyPath: m_textInfo.wordCount + propertyPath: m_textInfo.lineCount value: 1 objectReference: {fileID: 0} - target: {fileID: 1504834131173869882, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} - propertyPath: m_textInfo.lineCount + propertyPath: m_textInfo.pageCount value: 1 objectReference: {fileID: 0} - target: {fileID: 1504834131173869882, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} - propertyPath: m_textInfo.pageCount + propertyPath: m_textInfo.wordCount value: 1 objectReference: {fileID: 0} - target: {fileID: 1504834131173869882, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} - propertyPath: m_firstOverflowCharacterIndex - value: -1 + propertyPath: m_textInfo.characterCount + value: 3 objectReference: {fileID: 0} - target: {fileID: 1504834131173869882, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} - propertyPath: m_isTextTruncated - value: 0 + propertyPath: m_firstOverflowCharacterIndex + value: -1 objectReference: {fileID: 0} - target: {fileID: 2987873846869036582, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} @@ -8192,123 +8272,123 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4310061526176766886, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 4310061526176766886, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 4310061526176766886, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} - propertyPath: m_LocalPosition.z - value: 0 + propertyPath: m_RootOrder + value: 3 objectReference: {fileID: 0} - target: {fileID: 4310061526176766886, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 4310061526176766886, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 1 objectReference: {fileID: 0} - target: {fileID: 4310061526176766886, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 4310061526176766886, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} - propertyPath: m_LocalRotation.w + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - target: {fileID: 4310061526176766886, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} - propertyPath: m_RootOrder - value: 3 + propertyPath: m_SizeDelta.x + value: 610 objectReference: {fileID: 0} - target: {fileID: 4310061526176766886, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4310061526176766886, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4310061526176766886, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 4310061526176766886, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 4310061526176766886, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} - propertyPath: m_AnchorMin.y - value: 1 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 4310061526176766886, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} - propertyPath: m_AnchorMax.x - value: 0 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 4310061526176766886, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} - propertyPath: m_AnchorMax.y - value: 1 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 4310061526176766886, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} - propertyPath: m_Pivot.x - value: 0.5 + propertyPath: m_AnchoredPosition.x + value: 305 objectReference: {fileID: 0} - target: {fileID: 4310061526176766886, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} - propertyPath: m_Pivot.y - value: 0.5 + propertyPath: m_AnchoredPosition.y + value: -250 objectReference: {fileID: 0} - target: {fileID: 4310061526176766886, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} - propertyPath: m_AnchoredPosition.x - value: 305 + propertyPath: m_LocalEulerAnglesHint.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 4310061526176766886, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} - propertyPath: m_AnchoredPosition.y - value: -250 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 4310061526176766886, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} - propertyPath: m_SizeDelta.x - value: 610 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 7969634224804825545, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} - propertyPath: m_textInfo.characterCount - value: 7 + propertyPath: m_textInfo.lineCount + value: 1 objectReference: {fileID: 0} - target: {fileID: 7969634224804825545, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} - propertyPath: m_textInfo.wordCount + propertyPath: m_textInfo.pageCount value: 1 objectReference: {fileID: 0} - target: {fileID: 7969634224804825545, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} - propertyPath: m_textInfo.lineCount + propertyPath: m_textInfo.wordCount value: 1 objectReference: {fileID: 0} - target: {fileID: 7969634224804825545, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} - propertyPath: m_textInfo.pageCount - value: 1 + propertyPath: m_textInfo.characterCount + value: 7 objectReference: {fileID: 0} - target: {fileID: 7969634224804825545, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} @@ -8316,6 +8396,9 @@ PrefabInstance: value: -1 objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 6312e4271f86843a59d483d5e26cbe7f, type: 3} --- !u!114 &3862085008030771172 stripped MonoBehaviour: @@ -8340,38 +8423,29 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 8412186144379556017} m_Modifications: - target: {fileID: 570424265157894244, guid: 6cccc980771d74815aecbcc8255eaf3c, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target - value: - objectReference: {fileID: 3300335164659556536} - - target: {fileID: 570424265157894244, guid: 6cccc980771d74815aecbcc8255eaf3c, - type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName - value: SetTrigger + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 1 objectReference: {fileID: 0} - target: {fileID: 570424265157894244, guid: 6cccc980771d74815aecbcc8255eaf3c, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode value: 5 objectReference: {fileID: 0} - - target: {fileID: 570424265157894244, guid: 6cccc980771d74815aecbcc8255eaf3c, - type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine - objectReference: {fileID: 0} - - target: {fileID: 570424265157894244, guid: 6cccc980771d74815aecbcc8255eaf3c, - type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_StringArgument - value: Singleplayer - objectReference: {fileID: 0} - target: {fileID: 570424265157894244, guid: 6cccc980771d74815aecbcc8255eaf3c, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target value: objectReference: {fileID: 8803882710196166548} + - target: {fileID: 570424265157894244, guid: 6cccc980771d74815aecbcc8255eaf3c, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 3300335164659556536} - target: {fileID: 570424265157894244, guid: 6cccc980771d74815aecbcc8255eaf3c, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName @@ -8379,18 +8453,18 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 570424265157894244, guid: 6cccc980771d74815aecbcc8255eaf3c, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode - value: 1 + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName + value: SetTrigger objectReference: {fileID: 0} - - target: {fileID: 2435524149243675639, guid: 6cccc980771d74815aecbcc8255eaf3c, + - target: {fileID: 570424265157894244, guid: 6cccc980771d74815aecbcc8255eaf3c, type: 3} - propertyPath: m_textInfo.characterCount - value: 12 + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_StringArgument + value: Singleplayer objectReference: {fileID: 0} - - target: {fileID: 2435524149243675639, guid: 6cccc980771d74815aecbcc8255eaf3c, + - target: {fileID: 570424265157894244, guid: 6cccc980771d74815aecbcc8255eaf3c, type: 3} - propertyPath: m_textInfo.wordCount - value: 1 + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine objectReference: {fileID: 0} - target: {fileID: 2435524149243675639, guid: 6cccc980771d74815aecbcc8255eaf3c, type: 3} @@ -8402,120 +8476,130 @@ PrefabInstance: propertyPath: m_textInfo.pageCount value: 1 objectReference: {fileID: 0} + - target: {fileID: 2435524149243675639, guid: 6cccc980771d74815aecbcc8255eaf3c, + type: 3} + propertyPath: m_textInfo.wordCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2435524149243675639, guid: 6cccc980771d74815aecbcc8255eaf3c, + type: 3} + propertyPath: m_textInfo.characterCount + value: 12 + objectReference: {fileID: 0} - target: {fileID: 7023430735551161359, guid: 6cccc980771d74815aecbcc8255eaf3c, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 7023430735551161359, guid: 6cccc980771d74815aecbcc8255eaf3c, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 7023430735551161359, guid: 6cccc980771d74815aecbcc8255eaf3c, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 7023430735551161359, guid: 6cccc980771d74815aecbcc8255eaf3c, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 7023430735551161359, guid: 6cccc980771d74815aecbcc8255eaf3c, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 1 objectReference: {fileID: 0} - target: {fileID: 7023430735551161359, guid: 6cccc980771d74815aecbcc8255eaf3c, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 7023430735551161359, guid: 6cccc980771d74815aecbcc8255eaf3c, type: 3} - propertyPath: m_LocalRotation.w + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - target: {fileID: 7023430735551161359, guid: 6cccc980771d74815aecbcc8255eaf3c, type: 3} - propertyPath: m_RootOrder - value: 0 + propertyPath: m_SizeDelta.x + value: 625 objectReference: {fileID: 0} - target: {fileID: 7023430735551161359, guid: 6cccc980771d74815aecbcc8255eaf3c, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 + propertyPath: m_SizeDelta.y + value: 428 objectReference: {fileID: 0} - target: {fileID: 7023430735551161359, guid: 6cccc980771d74815aecbcc8255eaf3c, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7023430735551161359, guid: 6cccc980771d74815aecbcc8255eaf3c, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7023430735551161359, guid: 6cccc980771d74815aecbcc8255eaf3c, type: 3} - propertyPath: m_AnchoredPosition.x - value: 312.5 + propertyPath: m_LocalPosition.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 7023430735551161359, guid: 6cccc980771d74815aecbcc8255eaf3c, type: 3} - propertyPath: m_AnchoredPosition.y - value: -214 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 7023430735551161359, guid: 6cccc980771d74815aecbcc8255eaf3c, type: 3} - propertyPath: m_SizeDelta.x - value: 625 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 7023430735551161359, guid: 6cccc980771d74815aecbcc8255eaf3c, type: 3} - propertyPath: m_SizeDelta.y - value: 428 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 7023430735551161359, guid: 6cccc980771d74815aecbcc8255eaf3c, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 7023430735551161359, guid: 6cccc980771d74815aecbcc8255eaf3c, type: 3} - propertyPath: m_AnchorMin.y - value: 1 + propertyPath: m_AnchoredPosition.x + value: 312.5 objectReference: {fileID: 0} - target: {fileID: 7023430735551161359, guid: 6cccc980771d74815aecbcc8255eaf3c, type: 3} - propertyPath: m_AnchorMax.x - value: 0 + propertyPath: m_AnchoredPosition.y + value: -214 objectReference: {fileID: 0} - target: {fileID: 7023430735551161359, guid: 6cccc980771d74815aecbcc8255eaf3c, type: 3} - propertyPath: m_AnchorMax.y - value: 1 + propertyPath: m_LocalEulerAnglesHint.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 7023430735551161359, guid: 6cccc980771d74815aecbcc8255eaf3c, type: 3} - propertyPath: m_Pivot.x - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 7023430735551161359, guid: 6cccc980771d74815aecbcc8255eaf3c, type: 3} - propertyPath: m_Pivot.y - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 8225030246940786219, guid: 6cccc980771d74815aecbcc8255eaf3c, type: 3} - propertyPath: m_textInfo.characterCount - value: 26 + propertyPath: m_textInfo.lineCount + value: 1 objectReference: {fileID: 0} - target: {fileID: 8225030246940786219, guid: 6cccc980771d74815aecbcc8255eaf3c, type: 3} - propertyPath: m_textInfo.spaceCount - value: 3 + propertyPath: m_textInfo.pageCount + value: 1 objectReference: {fileID: 0} - target: {fileID: 8225030246940786219, guid: 6cccc980771d74815aecbcc8255eaf3c, type: 3} @@ -8524,13 +8608,13 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8225030246940786219, guid: 6cccc980771d74815aecbcc8255eaf3c, type: 3} - propertyPath: m_textInfo.lineCount - value: 1 + propertyPath: m_textInfo.spaceCount + value: 3 objectReference: {fileID: 0} - target: {fileID: 8225030246940786219, guid: 6cccc980771d74815aecbcc8255eaf3c, type: 3} - propertyPath: m_textInfo.pageCount - value: 1 + propertyPath: m_textInfo.characterCount + value: 26 objectReference: {fileID: 0} - target: {fileID: 9075010700535047964, guid: 6cccc980771d74815aecbcc8255eaf3c, type: 3} @@ -8538,6 +8622,9 @@ PrefabInstance: value: Image_square_singleplayer objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 6cccc980771d74815aecbcc8255eaf3c, type: 3} --- !u!224 &1140639340486532233 stripped RectTransform: diff --git a/Assets/Objects/UI/prefabs/MainMenu/MenuOption.prefab b/Assets/Objects/UI/prefabs/MainMenu/MenuOption.prefab index c85d8a7ea..7e62f831e 100644 --- a/Assets/Objects/UI/prefabs/MainMenu/MenuOption.prefab +++ b/Assets/Objects/UI/prefabs/MainMenu/MenuOption.prefab @@ -28,9 +28,9 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0.8, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5257665403206791738} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -60,6 +60,8 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -84,13 +86,12 @@ MonoBehaviour: m_fontColorGradientPreset: {fileID: 0} m_spriteAsset: {fileID: 0} m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: 0 m_overrideHtmlColors: 0 m_faceColor: serializedVersion: 2 rgba: 4294967295 - m_outlineColor: - serializedVersion: 2 - rgba: 4278190080 m_fontSize: 50 m_fontSizeBase: 50 m_fontWeight: 400 @@ -98,6 +99,8 @@ MonoBehaviour: m_fontSizeMin: 18 m_fontSizeMax: 72 m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 m_textAlignment: 514 m_characterSpacing: 0 m_wordSpacing: 0 @@ -108,10 +111,8 @@ MonoBehaviour: m_enableWordWrapping: 1 m_wordWrappingRatios: 0.4 m_overflowMode: 0 - m_firstOverflowCharacterIndex: 0 m_linkedTextComponent: {fileID: 0} - m_isLinkedTextComponent: 0 - m_isTextTruncated: 0 + parentLinkedComponent: {fileID: 0} m_enableKerning: 1 m_enableExtraPadding: 0 checkPaddingRequired: 0 @@ -119,40 +120,18 @@ MonoBehaviour: m_parseCtrlCharacters: 1 m_isOrthographic: 1 m_isCullingEnabled: 0 - m_ignoreRectMaskCulling: 0 - m_ignoreCulling: 1 m_horizontalMapping: 0 m_verticalMapping: 0 m_uvLineOffset: 0 m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 m_VertexBufferAutoSizeReduction: 1 - m_firstVisibleCharacter: 0 m_useMaxVisibleDescender: 1 m_pageToDisplay: 1 m_margin: {x: 0, y: 0, z: 0, w: 0} - m_textInfo: - textComponent: {fileID: 5764953102979559682} - characterCount: 1 - spriteCount: 0 - spaceCount: 0 - wordCount: 1 - linkCount: 0 - lineCount: 1 - pageCount: 1 - materialCount: 1 m_isUsingLegacyAnimationComponent: 0 m_isVolumetricText: 0 - m_spriteAnimator: {fileID: 0} m_hasFontAssetChanged: 0 - m_subTextObjects: - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} --- !u!1 &1236348407884958776 @@ -183,12 +162,12 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 5257665403206791738} - {fileID: 5872483233314680030} - {fileID: 5137888035373209674} m_Father: {fileID: 7504817807149001553} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.4, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -218,6 +197,8 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 0.21176472, g: 0.8078432, b: 0.94117653, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -259,9 +240,9 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 9043995148757067112} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -291,6 +272,8 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -300,7 +283,6 @@ MonoBehaviour: m_sharedMaterial: {fileID: 0} m_isDefaultMaterial: 0 m_padding: 9.032028 - m_canvasRenderer: {fileID: 7324536109537907891} m_TextComponent: {fileID: 4426974721752824126} m_materialReferenceIndex: 1 --- !u!1 &1777659438628074741 @@ -332,10 +314,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 2031134814914522617} m_Father: {fileID: 5982953903267115757} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0.15, y: 1} @@ -365,6 +347,8 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -392,6 +376,7 @@ MonoBehaviour: m_EditorClassIdentifier: m_Navigation: m_Mode: 3 + m_WrapAround: 0 m_SelectOnUp: {fileID: 0} m_SelectOnDown: {fileID: 0} m_SelectOnLeft: {fileID: 0} @@ -422,6 +407,7 @@ MonoBehaviour: m_PersistentCalls: m_Calls: - m_Target: {fileID: 4093994729439204510} + m_TargetAssemblyTypeName: m_MethodName: PreviousOption m_Mode: 1 m_Arguments: @@ -461,10 +447,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 2133153440035269574} m_Father: {fileID: 5982953903267115757} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.85, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -494,6 +480,8 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -521,6 +509,7 @@ MonoBehaviour: m_EditorClassIdentifier: m_Navigation: m_Mode: 3 + m_WrapAround: 0 m_SelectOnUp: {fileID: 0} m_SelectOnDown: {fileID: 0} m_SelectOnLeft: {fileID: 0} @@ -551,6 +540,7 @@ MonoBehaviour: m_PersistentCalls: m_Calls: - m_Target: {fileID: 4093994729439204510} + m_TargetAssemblyTypeName: m_MethodName: NextOption m_Mode: 1 m_Arguments: @@ -589,10 +579,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 5087332894515566695} m_Father: {fileID: 7504817807149001553} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0.4, y: 1} @@ -622,6 +612,8 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -646,13 +638,12 @@ MonoBehaviour: m_fontColorGradientPreset: {fileID: 0} m_spriteAsset: {fileID: 0} m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: 0 m_overrideHtmlColors: 0 m_faceColor: serializedVersion: 2 rgba: 4294967295 - m_outlineColor: - serializedVersion: 2 - rgba: 4278190080 m_fontSize: 32 m_fontSizeBase: 32 m_fontWeight: 400 @@ -660,6 +651,8 @@ MonoBehaviour: m_fontSizeMin: 18 m_fontSizeMax: 72 m_fontStyle: 16 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 m_textAlignment: 513 m_characterSpacing: 5 m_wordSpacing: 0 @@ -670,10 +663,8 @@ MonoBehaviour: m_enableWordWrapping: 1 m_wordWrappingRatios: 0.4 m_overflowMode: 0 - m_firstOverflowCharacterIndex: 1 m_linkedTextComponent: {fileID: 0} - m_isLinkedTextComponent: 0 - m_isTextTruncated: 0 + parentLinkedComponent: {fileID: 0} m_enableKerning: 1 m_enableExtraPadding: 0 checkPaddingRequired: 0 @@ -681,40 +672,18 @@ MonoBehaviour: m_parseCtrlCharacters: 1 m_isOrthographic: 1 m_isCullingEnabled: 0 - m_ignoreRectMaskCulling: 0 - m_ignoreCulling: 1 m_horizontalMapping: 0 m_verticalMapping: 0 m_uvLineOffset: 0 m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 m_VertexBufferAutoSizeReduction: 1 - m_firstVisibleCharacter: 0 m_useMaxVisibleDescender: 1 m_pageToDisplay: 1 m_margin: {x: 0, y: 0, z: 0, w: 0} - m_textInfo: - textComponent: {fileID: 4426974721752824126} - characterCount: 6 - spriteCount: 0 - spaceCount: 0 - wordCount: 1 - linkCount: 0 - lineCount: 6 - pageCount: 1 - materialCount: 1 m_isUsingLegacyAnimationComponent: 0 m_isVolumetricText: 0 - m_spriteAnimator: {fileID: 0} m_hasFontAssetChanged: 0 - m_subTextObjects: - - {fileID: 0} - - {fileID: 5142229674220934235} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} --- !u!1 &5952309057412319736 @@ -745,9 +714,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5982953903267115757} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.15, y: 0} m_AnchorMax: {x: 0.85, y: 1} @@ -777,6 +746,8 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -801,13 +772,12 @@ MonoBehaviour: m_fontColorGradientPreset: {fileID: 0} m_spriteAsset: {fileID: 0} m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: 0 m_overrideHtmlColors: 0 m_faceColor: serializedVersion: 2 rgba: 4294967295 - m_outlineColor: - serializedVersion: 2 - rgba: 4278190080 m_fontSize: 32 m_fontSizeBase: 32 m_fontWeight: 400 @@ -815,6 +785,8 @@ MonoBehaviour: m_fontSizeMin: 18 m_fontSizeMax: 72 m_fontStyle: 16 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 m_textAlignment: 514 m_characterSpacing: 0 m_wordSpacing: 0 @@ -825,10 +797,8 @@ MonoBehaviour: m_enableWordWrapping: 1 m_wordWrappingRatios: 0.4 m_overflowMode: 1 - m_firstOverflowCharacterIndex: -1 m_linkedTextComponent: {fileID: 0} - m_isLinkedTextComponent: 0 - m_isTextTruncated: 1 + parentLinkedComponent: {fileID: 0} m_enableKerning: 1 m_enableExtraPadding: 0 checkPaddingRequired: 0 @@ -836,40 +806,18 @@ MonoBehaviour: m_parseCtrlCharacters: 1 m_isOrthographic: 1 m_isCullingEnabled: 0 - m_ignoreRectMaskCulling: 0 - m_ignoreCulling: 1 m_horizontalMapping: 0 m_verticalMapping: 0 m_uvLineOffset: 0 m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 m_VertexBufferAutoSizeReduction: 1 - m_firstVisibleCharacter: 0 m_useMaxVisibleDescender: 1 m_pageToDisplay: 1 m_margin: {x: 0, y: 0, z: 0, w: 0} - m_textInfo: - textComponent: {fileID: 5121767864381798861} - characterCount: 1 - spriteCount: 0 - spaceCount: 0 - wordCount: 1 - linkCount: 0 - lineCount: 1 - pageCount: 1 - materialCount: 1 m_isUsingLegacyAnimationComponent: 0 m_isVolumetricText: 0 - m_spriteAnimator: {fileID: 0} m_hasFontAssetChanged: 0 - m_subTextObjects: - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} --- !u!1 &8470363699566211922 @@ -900,9 +848,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0.8000001, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5137888035373209674} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -932,6 +880,8 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -956,13 +906,12 @@ MonoBehaviour: m_fontColorGradientPreset: {fileID: 0} m_spriteAsset: {fileID: 0} m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: 0 m_overrideHtmlColors: 0 m_faceColor: serializedVersion: 2 rgba: 4294967295 - m_outlineColor: - serializedVersion: 2 - rgba: 4278190080 m_fontSize: 50 m_fontSizeBase: 50 m_fontWeight: 400 @@ -970,6 +919,8 @@ MonoBehaviour: m_fontSizeMin: 18 m_fontSizeMax: 72 m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 m_textAlignment: 514 m_characterSpacing: 0 m_wordSpacing: 0 @@ -980,10 +931,8 @@ MonoBehaviour: m_enableWordWrapping: 1 m_wordWrappingRatios: 0.4 m_overflowMode: 0 - m_firstOverflowCharacterIndex: 0 m_linkedTextComponent: {fileID: 0} - m_isLinkedTextComponent: 0 - m_isTextTruncated: 0 + parentLinkedComponent: {fileID: 0} m_enableKerning: 1 m_enableExtraPadding: 0 checkPaddingRequired: 0 @@ -991,40 +940,18 @@ MonoBehaviour: m_parseCtrlCharacters: 1 m_isOrthographic: 1 m_isCullingEnabled: 0 - m_ignoreRectMaskCulling: 0 - m_ignoreCulling: 1 m_horizontalMapping: 0 m_verticalMapping: 0 m_uvLineOffset: 0 m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 m_VertexBufferAutoSizeReduction: 1 - m_firstVisibleCharacter: 0 m_useMaxVisibleDescender: 1 m_pageToDisplay: 1 m_margin: {x: 0, y: 0, z: 0, w: 0} - m_textInfo: - textComponent: {fileID: 4632692584657468187} - characterCount: 1 - spriteCount: 0 - spaceCount: 0 - wordCount: 1 - linkCount: 0 - lineCount: 1 - pageCount: 1 - materialCount: 1 m_isUsingLegacyAnimationComponent: 0 m_isVolumetricText: 0 - m_spriteAnimator: {fileID: 0} m_hasFontAssetChanged: 0 - m_subTextObjects: - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} --- !u!1 &8827369151035309777 @@ -1054,11 +981,11 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 9043995148757067112} - {fileID: 5982953903267115757} m_Father: {fileID: 0} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -1080,7 +1007,5 @@ MonoBehaviour: options: - Value text: {fileID: 5121767864381798861} - next: {fileID: 2319450317343573824} - previous: {fileID: 7100323514810347311} loop: 1 startOption: 0 diff --git a/Assets/Objects/UI/prefabs/MainMenu/MenuOption_BoatType.prefab b/Assets/Objects/UI/prefabs/MainMenu/MenuOption_BoatType.prefab index dd31eaa92..a2531e8b6 100644 --- a/Assets/Objects/UI/prefabs/MainMenu/MenuOption_BoatType.prefab +++ b/Assets/Objects/UI/prefabs/MainMenu/MenuOption_BoatType.prefab @@ -5,6 +5,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: - target: {fileID: 4093994729439204510, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, @@ -14,24 +15,19 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4093994729439204510, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: options.Array.data[1] - value: Renegade + propertyPath: options.Array.data[0] + value: Interceptor objectReference: {fileID: 0} - target: {fileID: 4093994729439204510, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: options.Array.data[0] - value: Interceptor + propertyPath: options.Array.data[1] + value: Renegade objectReference: {fileID: 0} - target: {fileID: 4426974721752824126, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} propertyPath: m_text value: Hull Type objectReference: {fileID: 0} - - target: {fileID: 4426974721752824126, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, - type: 3} - propertyPath: m_firstOverflowCharacterIndex - value: 1 - objectReference: {fileID: 0} - target: {fileID: 4426974721752824126, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} propertyPath: m_textInfo.lineCount @@ -39,8 +35,8 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4426974721752824126, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_textInfo.characterCount - value: 9 + propertyPath: m_textInfo.pageCount + value: 1 objectReference: {fileID: 0} - target: {fileID: 4426974721752824126, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} @@ -49,12 +45,17 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4426974721752824126, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_textInfo.pageCount + propertyPath: m_textInfo.spaceCount value: 1 objectReference: {fileID: 0} - target: {fileID: 4426974721752824126, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_textInfo.spaceCount + propertyPath: m_textInfo.characterCount + value: 9 + objectReference: {fileID: 0} + - target: {fileID: 4426974721752824126, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, + type: 3} + propertyPath: m_firstOverflowCharacterIndex value: 1 objectReference: {fileID: 0} - target: {fileID: 5121767864381798861, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, @@ -64,13 +65,13 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 5121767864381798861, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_firstOverflowCharacterIndex - value: -1 + propertyPath: m_textInfo.lineCount + value: 1 objectReference: {fileID: 0} - target: {fileID: 5121767864381798861, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_textInfo.lineCount - value: 1 + propertyPath: m_textInfo.spaceCount + value: 0 objectReference: {fileID: 0} - target: {fileID: 5121767864381798861, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} @@ -79,113 +80,113 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 5121767864381798861, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_textInfo.spaceCount - value: 0 + propertyPath: m_firstOverflowCharacterIndex + value: -1 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_RootOrder + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 + propertyPath: m_SizeDelta.y + value: 60 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_AnchoredPosition.y - value: 3.6551514 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_SizeDelta.x - value: 0 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_SizeDelta.y - value: 60 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_AnchorMax.x - value: 0 + propertyPath: m_AnchoredPosition.y + value: 3.6551514 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_Pivot.x - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_Pivot.y - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 8827369151035309777, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} @@ -193,4 +194,7 @@ PrefabInstance: value: MenuOption_BoatType objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} diff --git a/Assets/Objects/UI/prefabs/MainMenu/MenuOption_Laps.prefab b/Assets/Objects/UI/prefabs/MainMenu/MenuOption_Laps.prefab index c1956dc7a..0a8d5ffa3 100644 --- a/Assets/Objects/UI/prefabs/MainMenu/MenuOption_Laps.prefab +++ b/Assets/Objects/UI/prefabs/MainMenu/MenuOption_Laps.prefab @@ -5,6 +5,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: - target: {fileID: 4093994729439204510, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, @@ -12,6 +13,11 @@ PrefabInstance: propertyPath: options.Array.size value: 4 objectReference: {fileID: 0} + - target: {fileID: 4093994729439204510, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, + type: 3} + propertyPath: options.Array.data[0] + value: 1 + objectReference: {fileID: 0} - target: {fileID: 4093994729439204510, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} propertyPath: options.Array.data[1] @@ -22,11 +28,6 @@ PrefabInstance: propertyPath: options.Array.data[2] value: 6 objectReference: {fileID: 0} - - target: {fileID: 4093994729439204510, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, - type: 3} - propertyPath: options.Array.data[0] - value: 1 - objectReference: {fileID: 0} - target: {fileID: 4093994729439204510, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} propertyPath: options.Array.data[3] @@ -39,31 +40,36 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4426974721752824126, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_firstOverflowCharacterIndex - value: 1 + propertyPath: m_textAlignment + value: 65535 objectReference: {fileID: 0} - target: {fileID: 4426974721752824126, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_textInfo.lineCount - value: 4 + propertyPath: m_TextStyleHashCode + value: -1183493901 objectReference: {fileID: 0} - target: {fileID: 4426974721752824126, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_textInfo.characterCount - value: 4 + propertyPath: m_VerticalAlignment + value: 512 objectReference: {fileID: 0} - target: {fileID: 4426974721752824126, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_TextStyleHashCode - value: -1183493901 + propertyPath: m_textInfo.lineCount + value: 4 objectReference: {fileID: 0} - target: {fileID: 4426974721752824126, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_VerticalAlignment - value: 512 + propertyPath: m_textInfo.characterCount + value: 4 objectReference: {fileID: 0} - target: {fileID: 4426974721752824126, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} + propertyPath: m_firstOverflowCharacterIndex + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4632692584657468187, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, + type: 3} propertyPath: m_textAlignment value: 65535 objectReference: {fileID: 0} @@ -72,11 +78,6 @@ PrefabInstance: propertyPath: m_TextStyleHashCode value: -1183493901 objectReference: {fileID: 0} - - target: {fileID: 4632692584657468187, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, - type: 3} - propertyPath: m_HorizontalAlignment - value: 2 - objectReference: {fileID: 0} - target: {fileID: 4632692584657468187, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} propertyPath: m_VerticalAlignment @@ -84,8 +85,8 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4632692584657468187, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_textAlignment - value: 65535 + propertyPath: m_HorizontalAlignment + value: 2 objectReference: {fileID: 0} - target: {fileID: 5121767864381798861, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} @@ -94,23 +95,23 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 5121767864381798861, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_firstOverflowCharacterIndex - value: -1 + propertyPath: m_textAlignment + value: 65535 objectReference: {fileID: 0} - target: {fileID: 5121767864381798861, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_textInfo.lineCount - value: 1 + propertyPath: m_TextStyleHashCode + value: -1183493901 objectReference: {fileID: 0} - target: {fileID: 5121767864381798861, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_textInfo.characterCount - value: 1 + propertyPath: m_VerticalAlignment + value: 512 objectReference: {fileID: 0} - target: {fileID: 5121767864381798861, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_TextStyleHashCode - value: -1183493901 + propertyPath: m_textInfo.lineCount + value: 1 objectReference: {fileID: 0} - target: {fileID: 5121767864381798861, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} @@ -119,11 +120,16 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 5121767864381798861, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_VerticalAlignment - value: 512 + propertyPath: m_textInfo.characterCount + value: 1 objectReference: {fileID: 0} - target: {fileID: 5121767864381798861, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} + propertyPath: m_firstOverflowCharacterIndex + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 5764953102979559682, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, + type: 3} propertyPath: m_textAlignment value: 65535 objectReference: {fileID: 0} @@ -132,11 +138,6 @@ PrefabInstance: propertyPath: m_TextStyleHashCode value: -1183493901 objectReference: {fileID: 0} - - target: {fileID: 5764953102979559682, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, - type: 3} - propertyPath: m_HorizontalAlignment - value: 2 - objectReference: {fileID: 0} - target: {fileID: 5764953102979559682, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} propertyPath: m_VerticalAlignment @@ -144,113 +145,113 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 5764953102979559682, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_textAlignment - value: 65535 + propertyPath: m_HorizontalAlignment + value: 2 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_RootOrder + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 + propertyPath: m_SizeDelta.y + value: 60 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_SizeDelta.x - value: 0 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_SizeDelta.y - value: 60 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_AnchorMax.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_Pivot.x - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_Pivot.y - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 8827369151035309777, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} @@ -258,4 +259,7 @@ PrefabInstance: value: MenuOption_Laps objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} diff --git a/Assets/Objects/UI/prefabs/MainMenu/MenuOption_Level.prefab b/Assets/Objects/UI/prefabs/MainMenu/MenuOption_Level.prefab index ef1ac52f1..b5f5d005f 100644 --- a/Assets/Objects/UI/prefabs/MainMenu/MenuOption_Level.prefab +++ b/Assets/Objects/UI/prefabs/MainMenu/MenuOption_Level.prefab @@ -5,6 +5,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: - target: {fileID: 4093994729439204510, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, @@ -17,11 +18,6 @@ PrefabInstance: propertyPath: m_text value: Level objectReference: {fileID: 0} - - target: {fileID: 4426974721752824126, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, - type: 3} - propertyPath: m_firstOverflowCharacterIndex - value: 1 - objectReference: {fileID: 0} - target: {fileID: 4426974721752824126, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} propertyPath: m_textInfo.lineCount @@ -32,15 +28,15 @@ PrefabInstance: propertyPath: m_textInfo.characterCount value: 5 objectReference: {fileID: 0} - - target: {fileID: 5121767864381798861, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, + - target: {fileID: 4426974721752824126, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_text - value: Island + propertyPath: m_firstOverflowCharacterIndex + value: 1 objectReference: {fileID: 0} - target: {fileID: 5121767864381798861, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_firstOverflowCharacterIndex - value: -1 + propertyPath: m_text + value: Island objectReference: {fileID: 0} - target: {fileID: 5121767864381798861, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} @@ -52,110 +48,115 @@ PrefabInstance: propertyPath: m_textInfo.characterCount value: 1 objectReference: {fileID: 0} + - target: {fileID: 5121767864381798861, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, + type: 3} + propertyPath: m_firstOverflowCharacterIndex + value: -1 + objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_RootOrder + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 + propertyPath: m_SizeDelta.y + value: 60 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_SizeDelta.x - value: 0 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_SizeDelta.y - value: 60 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_AnchorMax.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_Pivot.x - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_Pivot.y - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 8827369151035309777, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} @@ -163,4 +164,7 @@ PrefabInstance: value: MenuOption_Level objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} diff --git a/Assets/Objects/UI/prefabs/MainMenu/MenuOption_Reverse.prefab b/Assets/Objects/UI/prefabs/MainMenu/MenuOption_Reverse.prefab index 3b1c4abe2..b214cdda2 100644 --- a/Assets/Objects/UI/prefabs/MainMenu/MenuOption_Reverse.prefab +++ b/Assets/Objects/UI/prefabs/MainMenu/MenuOption_Reverse.prefab @@ -5,6 +5,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: - target: {fileID: 4093994729439204510, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, @@ -14,24 +15,19 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4093994729439204510, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: options.Array.data[1] - value: On + propertyPath: options.Array.data[0] + value: Off objectReference: {fileID: 0} - target: {fileID: 4093994729439204510, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: options.Array.data[0] - value: Off + propertyPath: options.Array.data[1] + value: On objectReference: {fileID: 0} - target: {fileID: 4426974721752824126, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} propertyPath: m_text value: Reverse objectReference: {fileID: 0} - - target: {fileID: 4426974721752824126, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, - type: 3} - propertyPath: m_firstOverflowCharacterIndex - value: 1 - objectReference: {fileID: 0} - target: {fileID: 4426974721752824126, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} propertyPath: m_textInfo.lineCount @@ -42,15 +38,15 @@ PrefabInstance: propertyPath: m_textInfo.characterCount value: 7 objectReference: {fileID: 0} - - target: {fileID: 5121767864381798861, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, + - target: {fileID: 4426974721752824126, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_text - value: Off + propertyPath: m_firstOverflowCharacterIndex + value: 1 objectReference: {fileID: 0} - target: {fileID: 5121767864381798861, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_firstOverflowCharacterIndex - value: -1 + propertyPath: m_text + value: Off objectReference: {fileID: 0} - target: {fileID: 5121767864381798861, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} @@ -62,90 +58,95 @@ PrefabInstance: propertyPath: m_textInfo.characterCount value: 1 objectReference: {fileID: 0} + - target: {fileID: 5121767864381798861, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, + type: 3} + propertyPath: m_firstOverflowCharacterIndex + value: -1 + objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_RootOrder + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_AnchorMin.y - value: 0 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_AnchorMax.x - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_Pivot.x - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 7504817807149001553, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} - propertyPath: m_Pivot.y - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 8827369151035309777, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} @@ -153,4 +154,7 @@ PrefabInstance: value: MenuOption_Reverse objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 4ed6a17b8f9c64727bbb59e18c3022ac, type: 3} diff --git a/Assets/Objects/UI/prefabs/Utility/BaseButton.prefab b/Assets/Objects/UI/prefabs/Utility/BaseButton.prefab index 996c1254a..c258c0beb 100644 --- a/Assets/Objects/UI/prefabs/Utility/BaseButton.prefab +++ b/Assets/Objects/UI/prefabs/Utility/BaseButton.prefab @@ -28,9 +28,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 2656612146096480889} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -60,6 +60,8 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -84,13 +86,12 @@ MonoBehaviour: m_fontColorGradientPreset: {fileID: 0} m_spriteAsset: {fileID: 0} m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: 0 m_overrideHtmlColors: 0 m_faceColor: serializedVersion: 2 rgba: 4294967295 - m_outlineColor: - serializedVersion: 2 - rgba: 4278190080 m_fontSize: 36 m_fontSizeBase: 36 m_fontWeight: 400 @@ -98,6 +99,8 @@ MonoBehaviour: m_fontSizeMin: 18 m_fontSizeMax: 72 m_fontStyle: 16 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 m_textAlignment: 514 m_characterSpacing: 5 m_wordSpacing: 0 @@ -108,10 +111,8 @@ MonoBehaviour: m_enableWordWrapping: 1 m_wordWrappingRatios: 0.4 m_overflowMode: 0 - m_firstOverflowCharacterIndex: -1 m_linkedTextComponent: {fileID: 0} - m_isLinkedTextComponent: 0 - m_isTextTruncated: 0 + parentLinkedComponent: {fileID: 0} m_enableKerning: 1 m_enableExtraPadding: 0 checkPaddingRequired: 0 @@ -119,40 +120,18 @@ MonoBehaviour: m_parseCtrlCharacters: 1 m_isOrthographic: 1 m_isCullingEnabled: 0 - m_ignoreRectMaskCulling: 0 - m_ignoreCulling: 1 m_horizontalMapping: 0 m_verticalMapping: 0 m_uvLineOffset: 0 m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 m_VertexBufferAutoSizeReduction: 1 - m_firstVisibleCharacter: 0 m_useMaxVisibleDescender: 1 m_pageToDisplay: 1 m_margin: {x: 0, y: 0, z: 0, w: 0} - m_textInfo: - textComponent: {fileID: 8568024210662664693} - characterCount: 6 - spriteCount: 0 - spaceCount: 0 - wordCount: 1 - linkCount: 0 - lineCount: 1 - pageCount: 1 - materialCount: 1 m_isUsingLegacyAnimationComponent: 0 m_isVolumetricText: 0 - m_spriteAnimator: {fileID: 0} m_hasFontAssetChanged: 0 - m_subTextObjects: - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} --- !u!1 &1368152812284078247 @@ -184,10 +163,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4893208344589219966} m_Father: {fileID: 0} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 1, y: 0} m_AnchorMax: {x: 1, y: 0} @@ -217,6 +196,8 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -244,6 +225,7 @@ MonoBehaviour: m_EditorClassIdentifier: m_Navigation: m_Mode: 3 + m_WrapAround: 0 m_SelectOnUp: {fileID: 0} m_SelectOnDown: {fileID: 0} m_SelectOnLeft: {fileID: 0} @@ -274,6 +256,7 @@ MonoBehaviour: m_PersistentCalls: m_Calls: - m_Target: {fileID: 0} + m_TargetAssemblyTypeName: m_MethodName: m_Mode: 6 m_Arguments: @@ -285,6 +268,7 @@ MonoBehaviour: m_BoolArgument: 0 m_CallState: 2 - m_Target: {fileID: 0} + m_TargetAssemblyTypeName: m_MethodName: m_Mode: 6 m_Arguments: diff --git a/Assets/Objects/UI/prefabs/Utility/BaseButton_Back.prefab b/Assets/Objects/UI/prefabs/Utility/BaseButton_Back.prefab index ae5986e14..9cc9d3fd5 100644 --- a/Assets/Objects/UI/prefabs/Utility/BaseButton_Back.prefab +++ b/Assets/Objects/UI/prefabs/Utility/BaseButton_Back.prefab @@ -5,6 +5,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: - target: {fileID: 1368152812284078247, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, @@ -14,88 +15,88 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 1 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 1 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_RootOrder + value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.x + value: 1 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMax.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalRotation.w + propertyPath: m_AnchorMin.x value: 1 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_RootOrder + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_AnchorMin.x - value: 1 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_AnchorMin.y - value: 0 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_AnchorMax.x - value: 1 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_Pivot.x - value: 1 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_Pivot.y - value: 1 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 8568024210662664693, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_firstOverflowCharacterIndex - value: -1 + propertyPath: m_text + value: Back objectReference: {fileID: 0} - target: {fileID: 8568024210662664693, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} @@ -104,13 +105,16 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8568024210662664693, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_text - value: Back + propertyPath: m_textInfo.characterCount + value: 4 objectReference: {fileID: 0} - target: {fileID: 8568024210662664693, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_textInfo.characterCount - value: 4 + propertyPath: m_firstOverflowCharacterIndex + value: -1 objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} diff --git a/Assets/Objects/UI/prefabs/Utility/BaseButton_Finish.prefab b/Assets/Objects/UI/prefabs/Utility/BaseButton_Finish.prefab index fce9fcad9..07be14195 100644 --- a/Assets/Objects/UI/prefabs/Utility/BaseButton_Finish.prefab +++ b/Assets/Objects/UI/prefabs/Utility/BaseButton_Finish.prefab @@ -5,6 +5,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: - target: {fileID: 1368152812284078247, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, @@ -14,107 +15,107 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 1 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 1 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 1 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_RootOrder - value: 0 + propertyPath: m_SizeDelta.x + value: 200 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 + propertyPath: m_SizeDelta.y + value: 60 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_AnchoredPosition.x - value: -20 + propertyPath: m_LocalPosition.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_AnchoredPosition.y - value: 20 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_SizeDelta.x - value: 200 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_SizeDelta.y - value: 60 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_AnchorMin.x - value: 1 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_AnchorMin.y - value: 0 + propertyPath: m_AnchoredPosition.x + value: -20 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_AnchorMax.x - value: 1 + propertyPath: m_AnchoredPosition.y + value: 20 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_Pivot.x - value: 1 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_Pivot.y + propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - target: {fileID: 8220169445217342336, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, @@ -122,6 +123,11 @@ PrefabInstance: propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size value: 1 objectReference: {fileID: 0} + - target: {fileID: 8220169445217342336, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 1 + objectReference: {fileID: 0} - target: {fileID: 8220169445217342336, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target @@ -132,11 +138,6 @@ PrefabInstance: propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName value: FinishMatch objectReference: {fileID: 0} - - target: {fileID: 8220169445217342336, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, - type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode - value: 1 - objectReference: {fileID: 0} - target: {fileID: 8568024210662664693, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} propertyPath: m_text @@ -148,4 +149,7 @@ PrefabInstance: value: 6 objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} diff --git a/Assets/Objects/UI/prefabs/Utility/BaseButton_Next.prefab b/Assets/Objects/UI/prefabs/Utility/BaseButton_Next.prefab index 841b48288..e3e3e20cd 100644 --- a/Assets/Objects/UI/prefabs/Utility/BaseButton_Next.prefab +++ b/Assets/Objects/UI/prefabs/Utility/BaseButton_Next.prefab @@ -5,6 +5,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: - target: {fileID: 1368152812284078247, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, @@ -14,13 +15,13 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 1 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 1 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} @@ -29,34 +30,39 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_Pivot.x - value: 1 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_Pivot.y - value: 1 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 8568024210662664693, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} propertyPath: m_text value: Next objectReference: {fileID: 0} + - target: {fileID: 8568024210662664693, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, + type: 3} + propertyPath: m_textInfo.lineCount + value: 1 + objectReference: {fileID: 0} - target: {fileID: 8568024210662664693, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} propertyPath: m_textInfo.characterCount @@ -67,10 +73,8 @@ PrefabInstance: propertyPath: m_firstOverflowCharacterIndex value: -1 objectReference: {fileID: 0} - - target: {fileID: 8568024210662664693, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, - type: 3} - propertyPath: m_textInfo.lineCount - value: 1 - objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} diff --git a/Assets/Objects/UI/prefabs/Utility/BaseButton_Race.prefab b/Assets/Objects/UI/prefabs/Utility/BaseButton_Race.prefab index 8f70cf2af..2c2a6a5e4 100644 --- a/Assets/Objects/UI/prefabs/Utility/BaseButton_Race.prefab +++ b/Assets/Objects/UI/prefabs/Utility/BaseButton_Race.prefab @@ -5,6 +5,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: - target: {fileID: 1368152812284078247, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, @@ -14,108 +15,108 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 1 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 1 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 1 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 1 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_RootOrder - value: 0 + propertyPath: m_SizeDelta.x + value: 200 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 + propertyPath: m_SizeDelta.y + value: 60 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_AnchoredPosition.x - value: -20 + propertyPath: m_LocalPosition.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_SizeDelta.x - value: 200 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_SizeDelta.y - value: 60 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_AnchorMin.x - value: 1 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_AnchorMin.y - value: 0 + propertyPath: m_AnchoredPosition.x + value: -20 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_AnchorMax.x - value: 1 + propertyPath: m_AnchoredPosition.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_Pivot.x - value: 1 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_Pivot.y - value: 1 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 8568024210662664693, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} @@ -124,13 +125,16 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8568024210662664693, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_textInfo.characterCount - value: 4 + propertyPath: m_textInfo.spaceCount + value: 0 objectReference: {fileID: 0} - target: {fileID: 8568024210662664693, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_textInfo.spaceCount - value: 0 + propertyPath: m_textInfo.characterCount + value: 4 objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} diff --git a/Assets/Objects/UI/prefabs/Utility/BaseButton_Rematch.prefab b/Assets/Objects/UI/prefabs/Utility/BaseButton_Rematch.prefab index 5423a5d50..2de1e2b41 100644 --- a/Assets/Objects/UI/prefabs/Utility/BaseButton_Rematch.prefab +++ b/Assets/Objects/UI/prefabs/Utility/BaseButton_Rematch.prefab @@ -5,6 +5,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: - target: {fileID: 1368152812284078247, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, @@ -14,107 +15,107 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_Pivot.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_RootOrder - value: 0 + propertyPath: m_SizeDelta.x + value: 200 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 + propertyPath: m_SizeDelta.y + value: 60 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_AnchoredPosition.x - value: 20 + propertyPath: m_LocalPosition.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_AnchoredPosition.y - value: 20 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_SizeDelta.x - value: 200 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_SizeDelta.y - value: 60 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_AnchorMin.y - value: 0 + propertyPath: m_AnchoredPosition.x + value: 20 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_AnchorMax.x - value: 0 + propertyPath: m_AnchoredPosition.y + value: 20 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_Pivot.x + propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2656612146096480889, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} - propertyPath: m_Pivot.y + propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - target: {fileID: 8568024210662664693, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, @@ -128,4 +129,7 @@ PrefabInstance: value: 5 objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 4d4a28cdbf9c64075b5b6cd9779ceed1, type: 3} diff --git a/Assets/Objects/UI/prefabs/Utility/BenchMarkCanvas.prefab b/Assets/Objects/UI/prefabs/Utility/BenchMarkCanvas.prefab index 4c67e9ba1..85595be2d 100644 --- a/Assets/Objects/UI/prefabs/Utility/BenchMarkCanvas.prefab +++ b/Assets/Objects/UI/prefabs/Utility/BenchMarkCanvas.prefab @@ -28,10 +28,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 7075963741889142639} m_Father: {fileID: 7075963740778909906} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 1, y: 1} @@ -105,11 +105,11 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 7075963741021053144} - {fileID: 7075963740509830242} m_Father: {fileID: 0} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -133,7 +133,9 @@ Canvas: m_OverrideSorting: 0 m_OverridePixelPerfect: 0 m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 m_AdditionalShaderChannelsFlag: 0 + m_UpdateRectTransformForStandalone: 0 m_SortingLayerID: 0 m_SortingOrder: 0 m_TargetDisplay: 0 @@ -205,9 +207,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 7075963741021053144} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -295,10 +297,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 7075963740996157780} m_Father: {fileID: 7075963740778909906} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 1, y: 1} @@ -371,9 +373,9 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 7075963740509830242} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} diff --git a/Assets/Objects/boats/Interceptor/Interceptor.fbx b/Assets/Objects/boats/Interceptor/Interceptor.fbx deleted file mode 100644 index d5cfdc491..000000000 --- a/Assets/Objects/boats/Interceptor/Interceptor.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3f13e768201122675f0a90e888c377fd1bea716ad879e95069b8453e1a912342 -size 123376 diff --git a/Assets/Objects/boats/Interceptor/Interceptor.mat b/Assets/Objects/boats/Interceptor/Interceptor.mat index 6e8fcc638..9c76d0d07 100644 --- a/Assets/Objects/boats/Interceptor/Interceptor.mat +++ b/Assets/Objects/boats/Interceptor/Interceptor.mat @@ -1,21 +1,38 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!114 &-6212392552803268508 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 --- !u!21 &2100000 Material: - serializedVersion: 6 + serializedVersion: 8 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: Interceptor m_Shader: {fileID: 4800000, guid: 7cc6d8245162d41df970ab2856566de3, type: 3} - m_ShaderKeywords: + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 m_CustomRenderQueue: 2200 stringTagMap: {} disabledShaderPasses: [] + m_LockedProperties: m_SavedProperties: serializedVersion: 3 m_TexEnvs: @@ -87,6 +104,19 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] m_Floats: - _AlphaClip: 0 - _Blend: 0 @@ -101,6 +131,8 @@ Material: - _Metallic: 0 - _OcclusionStrength: 1 - _Parallax: 0.02 + - _QueueControl: 1 + - _QueueOffset: 0 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 - _SrcBlend: 1 @@ -116,3 +148,4 @@ Material: - _Color2: {r: 1, g: 0, b: 0, a: 0} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Objects/boats/Interceptor/_Interceptor.prefab b/Assets/Objects/boats/Interceptor/_Interceptor.prefab index 66d5f2378..dc0bad98f 100644 --- a/Assets/Objects/boats/Interceptor/_Interceptor.prefab +++ b/Assets/Objects/boats/Interceptor/_Interceptor.prefab @@ -1,47 +1,412 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!1 &3125026613083320418 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3464085134263471136} + - component: {fileID: 2513851991194804495} + - component: {fileID: 1017375092362584558} + - component: {fileID: 2501009050752125051} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3464085134263471136 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3125026613083320418} + serializedVersion: 2 + m_LocalRotation: {x: 0.13052616, y: 0, z: 0, w: 0.9914449} + m_LocalPosition: {x: 0, y: 5, z: -20} + m_LocalScale: {x: 0.5, y: 0.7101235, z: 2} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 9080735299852188497} + m_LocalEulerAnglesHint: {x: 15, y: 0, z: 0} +--- !u!20 &2513851991194804495 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3125026613083320418} + 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_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + 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!81 &1017375092362584558 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3125026613083320418} + m_Enabled: 1 +--- !u!114 &2501009050752125051 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3125026613083320418} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_VolumeFrameworkUpdateModeOption: 2 + m_RenderPostProcessing: 0 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_AllowXRRendering: 1 + m_AllowHDROutput: 1 + m_UseScreenCoordOverride: 0 + m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} + m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_Version: 2 + m_TaaSettings: + m_Quality: 3 + m_FrameInfluence: 0.1 + m_JitterScale: 1 + m_MipBias: 0 + m_VarianceClampScale: 0.9 + m_ContrastAdaptiveSharpening: 0 +--- !u!1 &3649823962821705476 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3424923805950555559} + - component: {fileID: 3524099766198684950} + - component: {fileID: 5506027710389389344} + - component: {fileID: 4134048856350382664} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &3424923805950555559 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3649823962821705476} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -10, y: -1, z: 0} + m_LocalScale: {x: 20, y: 2, z: 0.71428573} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2444024786999144974} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 180} +--- !u!33 &3524099766198684950 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3649823962821705476} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &5506027710389389344 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3649823962821705476} + 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: 79950a27324579c439adfed4e0a9a44d, 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!65 &4134048856350382664 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3649823962821705476} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 0 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!1 &8032142450470698577 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2444024786999144974} + - component: {fileID: 1390154897689948173} + - component: {fileID: 7914160230827127930} + - component: {fileID: 4639394316942058709} + m_Layer: 0 + m_Name: Cube (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &2444024786999144974 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8032142450470698577} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: 1, w: 0} + m_LocalPosition: {x: 0, y: 1.36, z: 0} + m_LocalScale: {x: 0.1, y: 0.6, z: 2} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3424923805950555559} + m_Father: {fileID: 9080735299852188497} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 180} +--- !u!33 &1390154897689948173 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8032142450470698577} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &7914160230827127930 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8032142450470698577} + 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: eb3527794c06cce40b3f411a7d3ee9ff, 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!65 &4639394316942058709 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8032142450470698577} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 0 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} --- !u!1001 &9085269829827428123 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: - target: {fileID: 1553288845585282, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, type: 3} propertyPath: m_Name value: _Interceptor objectReference: {fileID: 0} + - target: {fileID: 4154958958717284, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, type: 3} + propertyPath: m_LocalScale.z + value: 2 + objectReference: {fileID: 0} - target: {fileID: 4534809148113994, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 4534809148113994, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_LocalScale.x + value: 2.2 objectReference: {fileID: 0} - target: {fileID: 4534809148113994, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, type: 3} - propertyPath: m_LocalPosition.z - value: 0 + propertyPath: m_LocalScale.y + value: 3 objectReference: {fileID: 0} - target: {fileID: 4534809148113994, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, type: 3} - propertyPath: m_LocalRotation.x - value: 0 + propertyPath: m_LocalScale.z + value: 1.2 objectReference: {fileID: 0} - target: {fileID: 4534809148113994, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, type: 3} - propertyPath: m_LocalRotation.y - value: 0 + propertyPath: m_LocalPosition.x + value: -58.1 objectReference: {fileID: 0} - target: {fileID: 4534809148113994, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, type: 3} - propertyPath: m_LocalRotation.z - value: 0 + propertyPath: m_LocalPosition.y + value: 0.6000004 + objectReference: {fileID: 0} + - target: {fileID: 4534809148113994, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, type: 3} + propertyPath: m_LocalPosition.z + value: 81.4 objectReference: {fileID: 0} - target: {fileID: 4534809148113994, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, type: 3} propertyPath: m_LocalRotation.w - value: 1 + value: -0.0005531598 objectReference: {fileID: 0} - target: {fileID: 4534809148113994, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, type: 3} - propertyPath: m_RootOrder - value: 0 + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4534809148113994, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, type: 3} + propertyPath: m_LocalRotation.y + value: 0.9999999 + objectReference: {fileID: 0} + - target: {fileID: 4534809148113994, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, type: 3} + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 4534809148113994, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, type: 3} propertyPath: m_LocalEulerAnglesHint.x @@ -49,12 +414,35 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4534809148113994, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, type: 3} propertyPath: m_LocalEulerAnglesHint.y - value: 0 + value: 180.063 objectReference: {fileID: 0} - target: {fileID: 4534809148113994, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 4566539937980892, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, type: 3} + propertyPath: m_LocalScale.z + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 4603238648617514, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, type: 3} + propertyPath: m_LocalScale.z + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 23139903168929634, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 7dc5b4500b2ab6446908dcdad6abf2de, type: 2} + - target: {fileID: 54710712322113256, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, + type: 3} + propertyPath: m_Drag + value: 0.1 + objectReference: {fileID: 0} + - target: {fileID: 54710712322113256, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, + type: 3} + propertyPath: m_Mass + value: 2500 + objectReference: {fileID: 0} - target: {fileID: 114135153223430406, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, type: 3} propertyPath: wakes.Array.size @@ -65,6 +453,11 @@ PrefabInstance: propertyPath: wakes.Array.data[0].origin.x value: 0.47 objectReference: {fileID: 0} + - target: {fileID: 114135153223430406, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, + type: 3} + propertyPath: wakes.Array.data[0].origin.y + value: -0.12 + objectReference: {fileID: 0} - target: {fileID: 114135153223430406, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, type: 3} propertyPath: wakes.Array.data[0].origin.z @@ -80,10 +473,222 @@ PrefabInstance: propertyPath: wakes.Array.data[1].origin.z value: -3.55 objectReference: {fileID: 0} - - target: {fileID: 114135153223430406, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, + - target: {fileID: 199152748015587266, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, type: 3} - propertyPath: wakes.Array.data[0].origin.y - value: -0.12 + propertyPath: m_Materials.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 199225191338268698, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, + type: 3} + propertyPath: m_Materials.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 199341962634037936, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, + type: 3} + propertyPath: m_Materials.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 199393572592775896, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, + type: 3} + propertyPath: m_Materials.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 199628764852399946, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, + type: 3} + propertyPath: m_Materials.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 199879863142729572, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, + type: 3} + propertyPath: m_Materials.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 199967527911923330, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, + type: 3} + propertyPath: m_Materials.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 199967527911923330, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 92e3a622aaf5e4fadab4253ad1853184, type: 2} + - target: {fileID: 1857749394586354482, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.05 + objectReference: {fileID: 0} + - target: {fileID: 2901399632790975270, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, + type: 3} + propertyPath: m_LocalScale.z + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 2901399632790975270, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.000000078739085 + objectReference: {fileID: 0} + - target: {fileID: 2901399632790975270, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.5666667 + objectReference: {fileID: 0} + - target: {fileID: 2901399632790975270, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, + type: 3} + propertyPath: m_LocalPosition.z + value: -2.5000017 + objectReference: {fileID: 0} + - target: {fileID: 2901399632790975270, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, + type: 3} + propertyPath: m_LocalRotation.w + value: 0.9934388 + objectReference: {fileID: 0} + - target: {fileID: 2901399632790975270, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, + type: 3} + propertyPath: m_LocalRotation.x + value: 0.11436519 + objectReference: {fileID: 0} + - target: {fileID: 2901399632790975270, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, + type: 3} + propertyPath: m_LocalRotation.y + value: -0.00000002564023 + objectReference: {fileID: 0} + - target: {fileID: 2901399632790975270, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, + type: 3} + propertyPath: m_LocalRotation.z + value: 0.0000000029517164 + objectReference: {fileID: 0} + - target: {fileID: 4301521246144889673, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, + type: 3} + propertyPath: horsePower + value: 200 + objectReference: {fileID: 0} + - target: {fileID: 4399986893398198514, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, + type: 3} + propertyPath: m_LocalScale.z + value: 2 objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: + - targetCorrespondingSourceObject: {fileID: 4534809148113994, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, + type: 3} + insertIndex: -1 + addedObject: {fileID: 3464085134263471136} + - targetCorrespondingSourceObject: {fileID: 4534809148113994, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, + type: 3} + insertIndex: -1 + addedObject: {fileID: 2444024786999144974} + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 1553288845585282, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, + type: 3} + insertIndex: -1 + addedObject: {fileID: 38375215458064404} + - targetCorrespondingSourceObject: {fileID: 1553288845585282, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, + type: 3} + insertIndex: -1 + addedObject: {fileID: 2560287575307401612} + - targetCorrespondingSourceObject: {fileID: 1553288845585282, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, + type: 3} + insertIndex: -1 + addedObject: {fileID: 7411346295538081491} m_SourcePrefab: {fileID: 100100000, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, type: 3} +--- !u!4 &9080735299852188497 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4534809148113994, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, + type: 3} + m_PrefabInstance: {fileID: 9085269829827428123} + m_PrefabAsset: {fileID: 0} +--- !u!1 &9083998436884223129 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1553288845585282, guid: fc3ffb83d6eafb1489a5b23bc82d25b6, + type: 3} + m_PrefabInstance: {fileID: 9085269829827428123} + m_PrefabAsset: {fileID: 0} +--- !u!114 &38375215458064404 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9083998436884223129} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5d1c4e0b1822b495aa52bc52839ecb30, type: 3} + m_Name: + m_EditorClassIdentifier: + m_BrainParameters: + VectorObservationSize: 23 + NumStackedVectorObservations: 1 + m_ActionSpec: + m_NumContinuousActions: 2 + BranchSizes: + VectorActionSize: 02000000 + VectorActionDescriptions: [] + VectorActionSpaceType: 1 + hasUpgradedBrainParametersWithActionSpec: 1 + m_Model: {fileID: 0} + m_InferenceDevice: 0 + m_BehaviorType: 0 + m_BehaviorName: Defence + TeamId: 0 + m_UseChildSensors: 1 + m_UseChildActuators: 1 + m_DeterministicInference: 0 + m_ObservableAttributeHandling: 0 +--- !u!114 &2560287575307401612 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9083998436884223129} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92a15c9c448152e4eb10928b63837ccb, type: 3} + m_Name: + m_EditorClassIdentifier: + agentParameters: + maxStep: 0 + hasUpgradedFromAgentParameters: 1 + MaxStep: 200 + _engine: {fileID: 0} + enemyShips: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + maxEnemyCount: 5 + partnerAgent: {fileID: 0} + motherShip: {fileID: 0} + motherShipTag: MotherShip + webObject: {fileID: 0} + maxLinearVelocity: 20 + maxAngularVelocity: 90 + velocityControlGain: 1 + angularVelocityControlGain: 1 + maxLinearAcceleration: 5 + maxAngularAcceleration: 45 + baseThrottle: 0.5 + minThrottle: 0.5 + steeringSensitivity: 0.3 + inputSmoothing: 0.2 + showRaycasts: 1 + enableDebugLog: 1 + _totalReward: 0 + _lastStepReward: 0 +--- !u!114 &7411346295538081491 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9083998436884223129} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3a5c9d521e5ef4759a8246a07d52221e, type: 3} + m_Name: + m_EditorClassIdentifier: + DecisionPeriod: 5 + TakeActionsBetweenDecisions: 1 diff --git a/Assets/Objects/boats/renegade/Materials.meta b/Assets/Objects/boats/renegade/Materials.meta new file mode 100644 index 000000000..4abadf550 --- /dev/null +++ b/Assets/Objects/boats/renegade/Materials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7cce67f2f6497d746b91ca4e91545f68 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Objects/boats/renegade/Materials/AlbedoAO.mat b/Assets/Objects/boats/renegade/Materials/AlbedoAO.mat new file mode 100644 index 000000000..12ab131c4 --- /dev/null +++ b/Assets/Objects/boats/renegade/Materials/AlbedoAO.mat @@ -0,0 +1,70 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: AlbedoAO + m_Shader: {fileID: 4800000, guid: 7cc6d8245162d41df970ab2856566de3, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 2 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 2800000, guid: a8c39540c3f76fa4d931108db103074f, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MRLL: + m_Texture: {fileID: 2800000, guid: dec66e24ca0bddf41bc6bacbbf657b04, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: aac90f3d81d202b4f8a9d2a4e00fa9ff, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _QueueControl: 0 + - _QueueOffset: 0 + m_Colors: + - _Color1: {r: 0.08669997, g: 0.13133055, b: 0.33999997, a: 0} + - _Color2: {r: 0.766, g: 0.766, b: 0.766, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &7411976783594163066 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 diff --git a/Assets/Objects/boats/renegade/Materials/AlbedoAO.mat.meta b/Assets/Objects/boats/renegade/Materials/AlbedoAO.mat.meta new file mode 100644 index 000000000..6c9a77c89 --- /dev/null +++ b/Assets/Objects/boats/renegade/Materials/AlbedoAO.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 239175a5b28666e4ca942de6a41cadec +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Objects/boats/renegade/Renegade.fbx b/Assets/Objects/boats/renegade/Renegade.fbx deleted file mode 100644 index 2daa5d1f9..000000000 --- a/Assets/Objects/boats/renegade/Renegade.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:327e98abdcecc9db12f0a4873174d6fa6c4289385a6b01a8ba4a9f4d328f3e0d -size 94496 diff --git a/Assets/Objects/boats/renegade/Renegade.mat b/Assets/Objects/boats/renegade/Renegade.mat index c88db09b9..13e83ac80 100644 --- a/Assets/Objects/boats/renegade/Renegade.mat +++ b/Assets/Objects/boats/renegade/Renegade.mat @@ -2,20 +2,24 @@ %TAG !u! tag:unity3d.com,2011: --- !u!21 &2100000 Material: - serializedVersion: 6 + serializedVersion: 8 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: Renegade m_Shader: {fileID: 4800000, guid: 7cc6d8245162d41df970ab2856566de3, type: 3} - m_ShaderKeywords: + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 m_CustomRenderQueue: -1 stringTagMap: {} disabledShaderPasses: [] + m_LockedProperties: m_SavedProperties: serializedVersion: 3 m_TexEnvs: @@ -51,6 +55,19 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] m_Floats: - _AlphaClip: 0 - _Blend: 0 @@ -64,6 +81,7 @@ Material: - _GlossyReflections: 0 - _Metallic: 0 - _OcclusionStrength: 1 + - _QueueControl: 0 - _QueueOffset: 0 - _ReceiveShadows: 1 - _Smoothness: 0.5 @@ -80,6 +98,7 @@ Material: - _Color2: {r: 0.12388753, g: 0.9056604, b: 0.1416862, a: 0} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] --- !u!114 &6154660042868129058 MonoBehaviour: m_ObjectHideFlags: 11 @@ -92,4 +111,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 1 + version: 7 diff --git a/Assets/Objects/environment/Cliffs/Materials/Env_Cliff_Full_01.mat b/Assets/Objects/environment/Cliffs/Materials/Env_Cliff_Full_01.mat index bb5decaf4..dc21ad8a4 100644 --- a/Assets/Objects/environment/Cliffs/Materials/Env_Cliff_Full_01.mat +++ b/Assets/Objects/environment/Cliffs/Materials/Env_Cliff_Full_01.mat @@ -12,23 +12,28 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 1 + version: 7 --- !u!21 &2100000 Material: - serializedVersion: 6 + serializedVersion: 8 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: Env_Cliff_Full_01 m_Shader: {fileID: 4800000, guid: 7cd247c7cbda54323b0e395ea419af3d, type: 3} - m_ShaderKeywords: _NORMALMAP + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: + - _NORMALMAP m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 1 m_CustomRenderQueue: -1 stringTagMap: {} disabledShaderPasses: [] + m_LockedProperties: m_SavedProperties: serializedVersion: 3 m_TexEnvs: @@ -60,6 +65,10 @@ Material: m_Texture: {fileID: 2800000, guid: 0732d346e038a499bacca628b5dc8f4a, type: 3} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - _SampleTexture2D_a490b3241735d68e9ee2d1f1bbfed8dc_Texture_1_Texture2D: + m_Texture: {fileID: 2800000, guid: 0732d346e038a499bacca628b5dc8f4a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} - unity_Lightmaps: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} @@ -72,10 +81,13 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + m_Ints: [] m_Floats: - Vector1_6E11FCEA: 0.8 - Vector1_8B35DE98: 65 - Vector1_90E376AD: 0.5 - Vector1_A492C01C: 10.3 + - _QueueControl: 0 + - _QueueOffset: 0 m_Colors: [] m_BuildTextureStacks: [] diff --git a/Assets/Objects/environment/Cliffs/Materials/Env_Cliffs.mat b/Assets/Objects/environment/Cliffs/Materials/Env_Cliffs.mat index 336b127c2..831c463f1 100644 --- a/Assets/Objects/environment/Cliffs/Materials/Env_Cliffs.mat +++ b/Assets/Objects/environment/Cliffs/Materials/Env_Cliffs.mat @@ -12,23 +12,28 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 1 + version: 7 --- !u!21 &2100000 Material: - serializedVersion: 6 + serializedVersion: 8 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: Env_Cliffs m_Shader: {fileID: 4800000, guid: 7cd247c7cbda54323b0e395ea419af3d, type: 3} - m_ShaderKeywords: _NORMALMAP + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: + - _NORMALMAP m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 1 m_CustomRenderQueue: -1 stringTagMap: {} disabledShaderPasses: [] + m_LockedProperties: m_SavedProperties: serializedVersion: 3 m_TexEnvs: @@ -60,6 +65,10 @@ Material: m_Texture: {fileID: 2800000, guid: 0732d346e038a499bacca628b5dc8f4a, type: 3} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - _SampleTexture2D_a490b3241735d68e9ee2d1f1bbfed8dc_Texture_1_Texture2D: + m_Texture: {fileID: 2800000, guid: 0732d346e038a499bacca628b5dc8f4a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} - unity_Lightmaps: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} @@ -72,10 +81,13 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + m_Ints: [] m_Floats: - Vector1_6E11FCEA: 0.8 - Vector1_8B35DE98: 65 - Vector1_90E376AD: 0.5 - Vector1_A492C01C: 10.3 + - _QueueControl: 0 + - _QueueOffset: 0 m_Colors: [] m_BuildTextureStacks: [] diff --git a/Assets/Objects/environment/Cliffs/Materials/Env_HeroCave.mat b/Assets/Objects/environment/Cliffs/Materials/Env_HeroCave.mat index d83e9f457..993d0b296 100644 --- a/Assets/Objects/environment/Cliffs/Materials/Env_HeroCave.mat +++ b/Assets/Objects/environment/Cliffs/Materials/Env_HeroCave.mat @@ -2,20 +2,27 @@ %TAG !u! tag:unity3d.com,2011: --- !u!21 &2100000 Material: - serializedVersion: 6 + serializedVersion: 8 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: Env_HeroCave m_Shader: {fileID: 4800000, guid: 7cd247c7cbda54323b0e395ea419af3d, type: 3} - m_ShaderKeywords: _GLOSSINESS_FROM_BASE_ALPHA _NORMALMAP _SPECULAR_COLOR + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: + - _GLOSSINESS_FROM_BASE_ALPHA + - _NORMALMAP + - _SPECULAR_COLOR m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 1 m_CustomRenderQueue: -1 stringTagMap: {} disabledShaderPasses: [] + m_LockedProperties: m_SavedProperties: serializedVersion: 3 m_TexEnvs: @@ -47,6 +54,10 @@ Material: m_Texture: {fileID: 2800000, guid: 0732d346e038a499bacca628b5dc8f4a, type: 3} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - _SampleTexture2D_a490b3241735d68e9ee2d1f1bbfed8dc_Texture_1_Texture2D: + m_Texture: {fileID: 2800000, guid: 0732d346e038a499bacca628b5dc8f4a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} - unity_Lightmaps: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} @@ -59,10 +70,26 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + m_Ints: [] m_Floats: - Vector1_6E11FCEA: 0.8 - Vector1_8B35DE98: 65 - Vector1_90E376AD: 0.5 - Vector1_A492C01C: 10.3 + - _QueueControl: 0 + - _QueueOffset: 0 m_Colors: [] m_BuildTextureStacks: [] +--- !u!114 &2634058345858685300 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 diff --git a/Assets/Objects/environment/Cliffs/Materials/Env_HeroLarge.mat b/Assets/Objects/environment/Cliffs/Materials/Env_HeroLarge.mat index 59d1bad16..469b14f20 100644 --- a/Assets/Objects/environment/Cliffs/Materials/Env_HeroLarge.mat +++ b/Assets/Objects/environment/Cliffs/Materials/Env_HeroLarge.mat @@ -2,20 +2,24 @@ %TAG !u! tag:unity3d.com,2011: --- !u!21 &2100000 Material: - serializedVersion: 6 + serializedVersion: 8 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: Env_HeroLarge m_Shader: {fileID: 4800000, guid: 7cd247c7cbda54323b0e395ea419af3d, type: 3} - m_ShaderKeywords: + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 1 m_CustomRenderQueue: -1 stringTagMap: {} disabledShaderPasses: [] + m_LockedProperties: m_SavedProperties: serializedVersion: 3 m_TexEnvs: @@ -47,6 +51,10 @@ Material: m_Texture: {fileID: 2800000, guid: 0732d346e038a499bacca628b5dc8f4a, type: 3} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - _SampleTexture2D_a490b3241735d68e9ee2d1f1bbfed8dc_Texture_1_Texture2D: + m_Texture: {fileID: 2800000, guid: 0732d346e038a499bacca628b5dc8f4a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} - unity_Lightmaps: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} @@ -59,10 +67,26 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + m_Ints: [] m_Floats: - Vector1_6E11FCEA: 0.8 - Vector1_8B35DE98: 65 - Vector1_90E376AD: 0.5 - Vector1_A492C01C: 10.3 + - _QueueControl: 0 + - _QueueOffset: 0 m_Colors: [] m_BuildTextureStacks: [] +--- !u!114 &2209386903114306077 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 diff --git a/Assets/Objects/environment/Cliffs/Materials/Env_Rocks.mat b/Assets/Objects/environment/Cliffs/Materials/Env_Rocks.mat index 578f0549b..be8354af6 100644 --- a/Assets/Objects/environment/Cliffs/Materials/Env_Rocks.mat +++ b/Assets/Objects/environment/Cliffs/Materials/Env_Rocks.mat @@ -1,21 +1,38 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!114 &-7029662659645193583 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 --- !u!21 &2100000 Material: - serializedVersion: 6 + serializedVersion: 8 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: Env_Rocks m_Shader: {fileID: 4800000, guid: 7cd247c7cbda54323b0e395ea419af3d, type: 3} - m_ShaderKeywords: + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 m_CustomRenderQueue: -1 stringTagMap: {} disabledShaderPasses: [] + m_LockedProperties: m_SavedProperties: serializedVersion: 3 m_TexEnvs: @@ -47,6 +64,10 @@ Material: m_Texture: {fileID: 2800000, guid: 0732d346e038a499bacca628b5dc8f4a, type: 3} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - _SampleTexture2D_a490b3241735d68e9ee2d1f1bbfed8dc_Texture_1_Texture2D: + m_Texture: {fileID: 2800000, guid: 0732d346e038a499bacca628b5dc8f4a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} - unity_Lightmaps: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} @@ -59,10 +80,13 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + m_Ints: [] m_Floats: - Vector1_6E11FCEA: 0.8 - Vector1_8B35DE98: 65 - Vector1_90E376AD: 0.5 - Vector1_A492C01C: 10.3 + - _QueueControl: 0 + - _QueueOffset: 0 m_Colors: [] m_BuildTextureStacks: [] diff --git a/Assets/Objects/environment/Cliffs/Meshes/Env_Cave.fbx b/Assets/Objects/environment/Cliffs/Meshes/Env_Cave.fbx deleted file mode 100644 index e32124035..000000000 --- a/Assets/Objects/environment/Cliffs/Meshes/Env_Cave.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f0edf970533c42d0cbaabd56895ee170945f9ea27c1404f32920563af0356b3a -size 1881856 diff --git a/Assets/Objects/environment/Cliffs/Meshes/Env_Cliff_Full_01.fbx b/Assets/Objects/environment/Cliffs/Meshes/Env_Cliff_Full_01.fbx deleted file mode 100644 index 8a9ba95f1..000000000 --- a/Assets/Objects/environment/Cliffs/Meshes/Env_Cliff_Full_01.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:de9df6fd437099496fff63e5efe2c730ae99e767b254b2d7dd6a05270263ce60 -size 595808 diff --git a/Assets/Objects/environment/Cliffs/Meshes/Env_Cliffs.fbx b/Assets/Objects/environment/Cliffs/Meshes/Env_Cliffs.fbx deleted file mode 100644 index 20c8ceeaf..000000000 --- a/Assets/Objects/environment/Cliffs/Meshes/Env_Cliffs.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8151dc2dc860bc2aae433a92e3b66c036a7590b0d7de9e581a82122c1e94039b -size 2119280 diff --git a/Assets/Objects/environment/Cliffs/Meshes/Env_Hero_Mountain.fbx b/Assets/Objects/environment/Cliffs/Meshes/Env_Hero_Mountain.fbx deleted file mode 100644 index 80f9bc6c2..000000000 --- a/Assets/Objects/environment/Cliffs/Meshes/Env_Hero_Mountain.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:706a5be49d651c92d29e7abac1a53a3d70e9ed4f2f73969261f595a26e001bdb -size 775872 diff --git a/Assets/Objects/environment/Cliffs/Meshes/Env_Hero_Tower.fbx b/Assets/Objects/environment/Cliffs/Meshes/Env_Hero_Tower.fbx deleted file mode 100644 index ae1262144..000000000 --- a/Assets/Objects/environment/Cliffs/Meshes/Env_Hero_Tower.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:12645878f3f623b65810da5d6475e3f114be53b4aec9a056f17e606689e75d6b -size 772192 diff --git a/Assets/Objects/environment/Cliffs/Meshes/Env_Rocks.fbx b/Assets/Objects/environment/Cliffs/Meshes/Env_Rocks.fbx deleted file mode 100644 index 9bfe433f5..000000000 --- a/Assets/Objects/environment/Cliffs/Meshes/Env_Rocks.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0343b4f0d1c9df24d7bce27790523340eb3e3d20e3fe2f6156b5311a86116d17 -size 1854448 diff --git a/Assets/Objects/environment/Clouds/CloudLayer.fbx b/Assets/Objects/environment/Clouds/CloudLayer.fbx deleted file mode 100644 index 44c0a9ce5..000000000 --- a/Assets/Objects/environment/Clouds/CloudLayer.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cd9c0a8ec74f95c34975048bfb6e42a0e97441ae6522123f2588a8b64ddb6ab6 -size 63696 diff --git a/Assets/Objects/environment/Clouds/CloudLayer.mat b/Assets/Objects/environment/Clouds/CloudLayer.mat index 9ff46ef41..870cc032b 100644 --- a/Assets/Objects/environment/Clouds/CloudLayer.mat +++ b/Assets/Objects/environment/Clouds/CloudLayer.mat @@ -2,7 +2,7 @@ %TAG !u! tag:unity3d.com,2011: --- !u!21 &2100000 Material: - serializedVersion: 6 + serializedVersion: 8 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -10,14 +10,17 @@ Material: m_Name: CloudLayer m_Shader: {fileID: -6465566751694194690, guid: 74509fb8cc4f14b4c847689e4ddd65ba, type: 3} - m_ShaderKeywords: + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 m_CustomRenderQueue: 3300 stringTagMap: {} - disabledShaderPasses: - - SHADOWCASTER + disabledShaderPasses: [] + m_LockedProperties: m_SavedProperties: serializedVersion: 3 m_TexEnvs: @@ -81,6 +84,7 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + m_Ints: [] m_Floats: - Vector1_5938df77fca14c0db6439fcfee84628c: 0 - _AlphaClip: 0 @@ -100,6 +104,7 @@ Material: - _Metallic: 0.547 - _OcclusionStrength: 1 - _Parallax: 0.005 + - _QueueControl: 1 - _QueueOffset: 0 - _ReceiveShadows: 1 - _Smoothness: 0.635 @@ -127,4 +132,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 4 + version: 7 diff --git a/Assets/Objects/environment/Clouds/Clouds.FBDA.tif.meta b/Assets/Objects/environment/Clouds/Clouds.FBDA.tif.meta index 3c3835b72..a1f159dab 100644 --- a/Assets/Objects/environment/Clouds/Clouds.FBDA.tif.meta +++ b/Assets/Objects/environment/Clouds/Clouds.FBDA.tif.meta @@ -1470,7 +1470,7 @@ TextureImporter: 213: -6920707464630794948 second: Clouds.FBDA_243 externalObjects: {} - serializedVersion: 11 + serializedVersion: 13 mipmaps: mipMapMode: 1 enableMipMap: 1 @@ -1487,10 +1487,12 @@ TextureImporter: externalNormalMap: 0 heightScale: 0.25 normalMapFilter: 0 + flipGreenChannel: 0 isReadable: 0 streamingMipmaps: 0 streamingMipmapsPriority: 0 vTOnly: 0 + ignoreMipmapLimit: 0 grayScaleToAlpha: 0 generateCubemap: 6 cubemapConvolution: 0 @@ -1529,6 +1531,8 @@ TextureImporter: textureFormatSet: 0 ignorePngGamma: 1 applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 1 platformSettings: - serializedVersion: 3 buildTarget: DefaultTexturePlatform @@ -1540,6 +1544,7 @@ TextureImporter: crunchedCompression: 0 allowsAlphaSplitting: 0 overridden: 0 + ignorePlatformSupport: 0 androidETC2FallbackOverride: 0 forceMaximumCompressionQuality_BC6H_BC7: 0 - serializedVersion: 3 @@ -1552,6 +1557,7 @@ TextureImporter: crunchedCompression: 0 allowsAlphaSplitting: 0 overridden: 0 + ignorePlatformSupport: 0 androidETC2FallbackOverride: 0 forceMaximumCompressionQuality_BC6H_BC7: 0 - serializedVersion: 3 @@ -1564,6 +1570,7 @@ TextureImporter: crunchedCompression: 0 allowsAlphaSplitting: 0 overridden: 0 + ignorePlatformSupport: 0 androidETC2FallbackOverride: 0 forceMaximumCompressionQuality_BC6H_BC7: 0 - serializedVersion: 3 @@ -1576,6 +1583,7 @@ TextureImporter: crunchedCompression: 0 allowsAlphaSplitting: 0 overridden: 0 + ignorePlatformSupport: 0 androidETC2FallbackOverride: 0 forceMaximumCompressionQuality_BC6H_BC7: 0 - serializedVersion: 3 @@ -1588,6 +1596,7 @@ TextureImporter: crunchedCompression: 0 allowsAlphaSplitting: 0 overridden: 0 + ignorePlatformSupport: 0 androidETC2FallbackOverride: 0 forceMaximumCompressionQuality_BC6H_BC7: 0 - serializedVersion: 3 @@ -1600,6 +1609,7 @@ TextureImporter: crunchedCompression: 0 allowsAlphaSplitting: 0 overridden: 0 + ignorePlatformSupport: 0 androidETC2FallbackOverride: 0 forceMaximumCompressionQuality_BC6H_BC7: 0 - serializedVersion: 3 @@ -1612,6 +1622,7 @@ TextureImporter: crunchedCompression: 0 allowsAlphaSplitting: 0 overridden: 0 + ignorePlatformSupport: 0 androidETC2FallbackOverride: 0 forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: @@ -1648,7 +1659,7 @@ TextureImporter: tessellationDetail: 0.0001 bones: [] spriteID: 1688a34ef7c56efb0800000000000000 - internalID: -4618902663462221727 + internalID: 7036826218055600575 vertices: [] indices: edges: [] @@ -1682,7 +1693,7 @@ TextureImporter: tessellationDetail: 0 bones: [] spriteID: 720cbdff5139e2140800000000000000 - internalID: 4696853184090193959 + internalID: 5267090216612187275 vertices: [] indices: edges: [] @@ -1716,7 +1727,7 @@ TextureImporter: tessellationDetail: 0 bones: [] spriteID: a87f43b24810a5c80800000000000000 - internalID: -8333346493323479158 + internalID: -2028122982951741611 vertices: [] indices: edges: [] @@ -1752,7 +1763,7 @@ TextureImporter: tessellationDetail: 0 bones: [] spriteID: 00de54e899c740f90800000000000000 - internalID: -6988323722813379328 + internalID: -5693033590976618241 vertices: [] indices: edges: [] @@ -1790,7 +1801,7 @@ TextureImporter: tessellationDetail: 0 bones: [] spriteID: 0bd78d93dee62d710800000000000000 - internalID: 1716556373138374064 + internalID: -6011895722572053554 vertices: [] indices: edges: [] @@ -1823,7 +1834,7 @@ TextureImporter: tessellationDetail: 0 bones: [] spriteID: 01e7d3473ea687060800000000000000 - internalID: 6951423549986668048 + internalID: -2009903931605109925 vertices: [] indices: edges: [] @@ -1855,7 +1866,7 @@ TextureImporter: tessellationDetail: 0 bones: [] spriteID: 647f5b43101b8f470800000000000000 - internalID: 8428681321361307462 + internalID: 1525974591805142018 vertices: [] indices: edges: [] @@ -1889,7 +1900,7 @@ TextureImporter: tessellationDetail: 0.1 bones: [] spriteID: a54da6d930639a420800000000000000 - internalID: 2641702045583332442 + internalID: 2718705153219231221 vertices: [] indices: edges: [] @@ -1904,9 +1915,17 @@ TextureImporter: edges: [] weights: [] secondaryTextures: [] - spritePackingTag: + nameFileIdTable: + Clouds.FBDA_0: 7036826218055600575 + Clouds.FBDA_1: 5267090216612187275 + Clouds.FBDA_2: -2028122982951741611 + Clouds.FBDA_3: -5693033590976618241 + Clouds.FBDA_4: -6011895722572053554 + Clouds.FBDA_5: -2009903931605109925 + Clouds.FBDA_6: 1525974591805142018 + Clouds.FBDA_7: 2718705153219231221 + mipmapLimitGroupName: pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 userData: assetBundleName: assetBundleVariant: diff --git a/Assets/Objects/environment/Clouds/Clouds.mat b/Assets/Objects/environment/Clouds/Clouds.mat index 232e1c88d..e947ec432 100644 --- a/Assets/Objects/environment/Clouds/Clouds.mat +++ b/Assets/Objects/environment/Clouds/Clouds.mat @@ -2,7 +2,7 @@ %TAG !u! tag:unity3d.com,2011: --- !u!21 &2100000 Material: - serializedVersion: 6 + serializedVersion: 8 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -10,14 +10,21 @@ Material: m_Name: Clouds m_Shader: {fileID: -6465566751694194690, guid: db0b334ed7edc2149a5c784f34eefeba, type: 3} - m_ShaderKeywords: BOOLEAN_3A4FA4CB1FE54F0D8BDC5D502F6ADCB0_ON BOOLEAN_68600FB702FC441CA4969E5B54503936_ON - BOOLEAN_9A9F210EF4D44680B8F0CB7ACD99DFBB_ON ETC1_EXTERNAL_ALPHA + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - BOOLEAN_9A9F210EF4D44680B8F0CB7ACD99DFBB_ON + m_InvalidKeywords: + - BOOLEAN_3A4FA4CB1FE54F0D8BDC5D502F6ADCB0_ON + - BOOLEAN_68600FB702FC441CA4969E5B54503936_ON + - ETC1_EXTERNAL_ALPHA m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 m_CustomRenderQueue: 3600 stringTagMap: {} disabledShaderPasses: [] + m_LockedProperties: m_SavedProperties: serializedVersion: 3 m_TexEnvs: @@ -37,6 +44,10 @@ Material: m_Texture: {fileID: 2800000, guid: 7247454f970266b4c8d99e1f01e15296, type: 3} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - _Texture2DAsset_36aff2641eb842bfb8ac1025d9bb12f9_Out_0_Texture2D: + m_Texture: {fileID: 2800000, guid: 7247454f970266b4c8d99e1f01e15296, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} - _Texture2DAsset_bd2a7217cfc44a0095b8acce83da0833_Out_0: m_Texture: {fileID: 2800000, guid: 7247454f970266b4c8d99e1f01e15296, type: 3} m_Scale: {x: 1, y: 1} @@ -53,6 +64,7 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + m_Ints: [] m_Floats: - BOOLEAN_12063517206649E192703C709593BEE9: 0 - BOOLEAN_3A4FA4CB1FE54F0D8BDC5D502F6ADCB0: 1 @@ -67,8 +79,23 @@ Material: - Vector1_2d1f70e8efb04843b1f8184ae06925e0: 119.23 - Vector1_33982692: 150 - Vector1_5f4b185241524942830132fc71554a33: 1 + - _QueueControl: 1 + - _QueueOffset: 0 m_Colors: - Color_7eff2e7fc27440719d0a871a39dabdd3: {r: 1, g: 1, b: 1, a: 0} - Vector2_65050940ec244ae3bf42db206c2dccca: {r: 0, g: 50, b: 0, a: 0} - _Color: {r: 0, g: 0, b: 0, a: 0} m_BuildTextureStacks: [] +--- !u!114 &5120713988704982054 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 diff --git a/Assets/Objects/environment/Trees/Materials/Bushes.mat b/Assets/Objects/environment/Trees/Materials/Bushes.mat index f0a760851..fdbd6f85f 100644 --- a/Assets/Objects/environment/Trees/Materials/Bushes.mat +++ b/Assets/Objects/environment/Trees/Materials/Bushes.mat @@ -1,8 +1,21 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!114 &-9206910958661453605 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 --- !u!21 &2100000 Material: - serializedVersion: 6 + serializedVersion: 8 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -10,14 +23,23 @@ Material: m_Name: Bushes m_Shader: {fileID: -6465566751694194690, guid: 4003ffa965d444d209561b52e55c61fc, type: 3} - m_ShaderKeywords: BOOLEAN_5C6B42CA_ON BOOLEAN_D0D03BFD_ON VERTEX_ANIMATION_ON _CORRECTNORMALS - _NORMALMAP _VERTEXANIMATION + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - BOOLEAN_5C6B42CA_ON + m_InvalidKeywords: + - BOOLEAN_D0D03BFD_ON + - VERTEX_ANIMATION_ON + - _CORRECTNORMALS + - _NORMALMAP + - _VERTEXANIMATION m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 1 m_CustomRenderQueue: -1 stringTagMap: {} disabledShaderPasses: [] + m_LockedProperties: m_SavedProperties: serializedVersion: 3 m_TexEnvs: @@ -73,6 +95,19 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] m_Floats: - BOOLEAN_5C6B42CA: 1 - BOOLEAN_7021FEFA: 0 @@ -99,6 +134,8 @@ Material: - _Mode: 1 - _OcclusionStrength: 1 - _Parallax: 0.02 + - _QueueControl: 0 + - _QueueOffset: 0 - _ReceiveShadows: 0 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 @@ -114,3 +151,4 @@ Material: - _Color: {r: 1, g: 1, b: 1, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Objects/environment/Trees/Materials/Trees.mat b/Assets/Objects/environment/Trees/Materials/Trees.mat index f49d7ca14..82f18256c 100644 --- a/Assets/Objects/environment/Trees/Materials/Trees.mat +++ b/Assets/Objects/environment/Trees/Materials/Trees.mat @@ -1,8 +1,21 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!114 &-1779779989978355145 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 --- !u!21 &2100000 Material: - serializedVersion: 6 + serializedVersion: 8 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -10,14 +23,23 @@ Material: m_Name: Trees m_Shader: {fileID: -6465566751694194690, guid: 4003ffa965d444d209561b52e55c61fc, type: 3} - m_ShaderKeywords: BOOLEAN_5C6B42CA_ON BOOLEAN_D0D03BFD_ON VERTEX_ANIMATION_ON _CORRECTNORMALS - _NORMALMAP _VERTEXANIMATION + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - BOOLEAN_5C6B42CA_ON + m_InvalidKeywords: + - BOOLEAN_D0D03BFD_ON + - VERTEX_ANIMATION_ON + - _CORRECTNORMALS + - _NORMALMAP + - _VERTEXANIMATION m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 1 m_CustomRenderQueue: -1 stringTagMap: {} disabledShaderPasses: [] + m_LockedProperties: m_SavedProperties: serializedVersion: 3 m_TexEnvs: @@ -73,6 +95,19 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] m_Floats: - BOOLEAN_5C6B42CA: 1 - BOOLEAN_7021FEFA: 0 @@ -99,6 +134,8 @@ Material: - _Mode: 1 - _OcclusionStrength: 1 - _Parallax: 0.02 + - _QueueControl: 0 + - _QueueOffset: 0 - _ReceiveShadows: 0 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 @@ -109,7 +146,9 @@ Material: - _WorkflowMode: 1 - _ZWrite: 0 m_Colors: + - Color_C30C7CA3: {r: 1, g: 1, b: 1, a: 0} - WindDirection: {r: 0.4, g: 0.4, b: 0, a: 0} - _Color: {r: 1, g: 1, b: 1, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Objects/environment/Trees/Materials/Trees_billboards.mat b/Assets/Objects/environment/Trees/Materials/Trees_billboards.mat index cdc1888c5..2703cde2a 100644 --- a/Assets/Objects/environment/Trees/Materials/Trees_billboards.mat +++ b/Assets/Objects/environment/Trees/Materials/Trees_billboards.mat @@ -2,7 +2,7 @@ %TAG !u! tag:unity3d.com,2011: --- !u!21 &2100000 Material: - serializedVersion: 6 + serializedVersion: 8 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -10,14 +10,22 @@ Material: m_Name: Trees_billboards m_Shader: {fileID: -6465566751694194690, guid: 4003ffa965d444d209561b52e55c61fc, type: 3} - m_ShaderKeywords: BOOLEAN_7021FEFA_ON BOOLEAN_D0D03BFD_ON _ALPHATEST_ON _CORRECTNORMALS - _NORMALMAP _OCCLUSIONMAP + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - BOOLEAN_7021FEFA_ON + m_InvalidKeywords: + - BOOLEAN_D0D03BFD_ON + - _CORRECTNORMALS + - _NORMALMAP + - _OCCLUSIONMAP m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 m_CustomRenderQueue: -1 stringTagMap: {} disabledShaderPasses: [] + m_LockedProperties: m_SavedProperties: serializedVersion: 3 m_TexEnvs: @@ -29,8 +37,38 @@ Material: m_Texture: {fileID: 2800000, guid: cb4e6d4d6255441508cbdd9c3d4f70b9, type: 3} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] m_Floats: - BOOLEAN_5C6B42CA: 0 - BOOLEAN_7021FEFA: 1 - Vector1_19FBDA45: 0.5 - m_Colors: [] + - _QueueControl: 0 + - _QueueOffset: 0 + m_Colors: + - Color_C30C7CA3: {r: 1, g: 1, b: 1, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &3721902895728709073 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 diff --git a/Assets/Objects/environment/Trees/Meshes/Bush_Large_01.fbx b/Assets/Objects/environment/Trees/Meshes/Bush_Large_01.fbx deleted file mode 100644 index 0d40cea2b..000000000 --- a/Assets/Objects/environment/Trees/Meshes/Bush_Large_01.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:99b8d2f30db92d9f1503db36666624f02e76d5bb19855080fe9c88976484a335 -size 38640 diff --git a/Assets/Objects/environment/Trees/Meshes/PalmB_01.fbx b/Assets/Objects/environment/Trees/Meshes/PalmB_01.fbx deleted file mode 100644 index e52dd1854..000000000 --- a/Assets/Objects/environment/Trees/Meshes/PalmB_01.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:565b0f7189381bd3d92da24fb61ac3c9a0d636b517243e8a6345c3888a40dc42 -size 70832 diff --git a/Assets/Objects/environment/Trees/Meshes/PalmB_02.fbx b/Assets/Objects/environment/Trees/Meshes/PalmB_02.fbx deleted file mode 100644 index 3cec17c87..000000000 --- a/Assets/Objects/environment/Trees/Meshes/PalmB_02.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3ac4e3995f5b6e6572e8ead7f29b921e97319c9a3fd03933a30dbea4ffed0cbb -size 73280 diff --git a/Assets/Objects/environment/Trees/Meshes/Palm_01.fbx b/Assets/Objects/environment/Trees/Meshes/Palm_01.fbx deleted file mode 100644 index 380cb7c28..000000000 --- a/Assets/Objects/environment/Trees/Meshes/Palm_01.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c8864e3d8d87764f79d8efa6966d4658b1e3398c9b90e28e005b5b12e4a5ebe8 -size 55008 diff --git a/Assets/Objects/environment/Trees/Meshes/Palm_02.fbx b/Assets/Objects/environment/Trees/Meshes/Palm_02.fbx deleted file mode 100644 index 5143e0114..000000000 --- a/Assets/Objects/environment/Trees/Meshes/Palm_02.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5e4d3c98c56720ca3fd30166b7c7e9433fb059dd288b1ee99dbe391e2454cc9c -size 50400 diff --git a/Assets/Objects/environment/Trees/Meshes/Palm_03.fbx b/Assets/Objects/environment/Trees/Meshes/Palm_03.fbx deleted file mode 100644 index 355935773..000000000 --- a/Assets/Objects/environment/Trees/Meshes/Palm_03.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4eb2fa31f6103f6cb03c13878e1f7f543494496b4b3acc19cbdbaadcec5edc70 -size 45280 diff --git a/Assets/Objects/props/houses/HousesJetty_LOW.fbx b/Assets/Objects/props/houses/HousesJetty_LOW.fbx deleted file mode 100644 index 39b90e741..000000000 --- a/Assets/Objects/props/houses/HousesJetty_LOW.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6d6dc2f985e7c76d370ee629307e767c27435e1315ac6f834b31cf31b79cce00 -size 205952 diff --git a/Assets/Objects/props/houses/Materials/Matr_BuildingsJettys.mat b/Assets/Objects/props/houses/Materials/Matr_BuildingsJettys.mat index cf7bbbcbc..e0ef9577e 100644 --- a/Assets/Objects/props/houses/Materials/Matr_BuildingsJettys.mat +++ b/Assets/Objects/props/houses/Materials/Matr_BuildingsJettys.mat @@ -15,7 +15,7 @@ MonoBehaviour: version: 1 --- !u!21 &2100000 Material: - serializedVersion: 6 + serializedVersion: 8 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -23,13 +23,19 @@ Material: m_Name: Matr_BuildingsJettys m_Shader: {fileID: -6465566751694194690, guid: 41c9ba5b3695aca429b87a5073066fc7, type: 3} - m_ShaderKeywords: _METALLICSPECGLOSSMAP _NORMALMAP + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: + - _METALLICSPECGLOSSMAP + - _NORMALMAP m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 1 - m_CustomRenderQueue: -1 + m_CustomRenderQueue: 2500 stringTagMap: {} disabledShaderPasses: [] + m_LockedProperties: m_SavedProperties: serializedVersion: 3 m_TexEnvs: @@ -93,6 +99,19 @@ Material: m_Texture: {fileID: 2800000, guid: b2f21589b3c414cc3a05db416d43897b, type: 3} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] m_Floats: - Vector1_81866058: 1 - _AlphaClip: 0 @@ -112,6 +131,7 @@ Material: - _NightFade: 0 - _OcclusionStrength: 1 - _Parallax: 0.02 + - _QueueControl: 0 - _QueueOffset: 50 - _ReceiveShadows: 1 - _Shininess: 1 @@ -129,6 +149,7 @@ Material: - _Color: {r: 1, g: 1, b: 1, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 0} - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] --- !u!114 &2561603144951705041 MonoBehaviour: m_ObjectHideFlags: 11 @@ -141,4 +162,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 1 + version: 7 diff --git a/Assets/Objects/props/props/Materials/Matr_Props.mat b/Assets/Objects/props/props/Materials/Matr_Props.mat index 2d11eb859..7e7e3293d 100644 --- a/Assets/Objects/props/props/Materials/Matr_Props.mat +++ b/Assets/Objects/props/props/Materials/Matr_Props.mat @@ -12,17 +12,23 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 4 + version: 7 --- !u!21 &2100000 Material: - serializedVersion: 6 + serializedVersion: 8 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: Matr_Props m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} - m_ShaderKeywords: _METALLICSPECGLOSSMAP _NORMALMAP _OCCLUSIONMAP + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _METALLICSPECGLOSSMAP + - _NORMALMAP + - _OCCLUSIONMAP + m_InvalidKeywords: [] m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 @@ -30,6 +36,7 @@ Material: stringTagMap: RenderType: Opaque disabledShaderPasses: [] + m_LockedProperties: m_SavedProperties: serializedVersion: 3 m_TexEnvs: @@ -77,14 +84,33 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] m_Floats: - _AlphaClip: 0 + - _AlphaToMask: 0 - _Blend: 0 + - _BlendModePreserveSpecular: 1 - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 - _Cull: 2 - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 - _DetailNormalMapScale: 1 - _DstBlend: 0 + - _DstBlendAlpha: 0 - _EnvironmentReflections: 1 - _GlossMapScale: 1 - _Glossiness: 0 @@ -99,13 +125,14 @@ Material: - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 - _SrcBlend: 1 + - _SrcBlendAlpha: 1 - _Surface: 0 - _UVSec: 0 - _WorkflowMode: 1 - _ZWrite: 1 m_Colors: - _BaseColor: {r: 0.9150943, g: 0.9150943, b: 0.9150943, a: 1} - - _Color: {r: 0.9811321, g: 0.9811321, b: 0.9811321, a: 1} + - _Color: {r: 0.9150943, g: 0.9150943, b: 0.9150943, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 0} - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} m_BuildTextureStacks: [] diff --git a/Assets/Objects/props/props/Materials/Matr_Props_Hue.mat b/Assets/Objects/props/props/Materials/Matr_Props_Hue.mat index 259bb7f1e..3453f6211 100644 --- a/Assets/Objects/props/props/Materials/Matr_Props_Hue.mat +++ b/Assets/Objects/props/props/Materials/Matr_Props_Hue.mat @@ -2,20 +2,28 @@ %TAG !u! tag:unity3d.com,2011: --- !u!21 &2100000 Material: - serializedVersion: 6 + serializedVersion: 8 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: Matr_Props_Hue m_Shader: {fileID: 4800000, guid: e7d662204c5464355bc5f5911874653a, type: 3} - m_ShaderKeywords: _METALLICGLOSSMAP _METALLICSPECGLOSSMAP _NORMALMAP _OCCLUSIONMAP + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: + - _METALLICGLOSSMAP + - _METALLICSPECGLOSSMAP + - _NORMALMAP + - _OCCLUSIONMAP m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 m_CustomRenderQueue: 2200 stringTagMap: {} disabledShaderPasses: [] + m_LockedProperties: m_SavedProperties: serializedVersion: 3 m_TexEnvs: @@ -71,6 +79,19 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] m_Floats: - Vector1_57F231EB: 0 - _AlphaClip: 0 @@ -88,6 +109,8 @@ Material: - _Mode: 0 - _OcclusionStrength: 1 - _Parallax: 0.02 + - _QueueControl: 1 + - _QueueOffset: 0 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 - _SrcBlend: 1 @@ -99,3 +122,17 @@ Material: - _Color: {r: 0.9811321, g: 0.9811321, b: 0.9811321, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 0} - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] +--- !u!114 &4748325720954909337 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 diff --git a/Assets/Objects/props/props/Meshes/Props_low.fbx b/Assets/Objects/props/props/Meshes/Props_low.fbx deleted file mode 100644 index 2876aebd3..000000000 --- a/Assets/Objects/props/props/Meshes/Props_low.fbx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7cf4a11ca30c4e4fe5946bf95abfd046f12d3ee075befc8730ad0bb3ee002a2c -size 223024 diff --git a/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/benchmark_island-static.png.meta b/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/benchmark_island-static.png.meta index 041ae58c1..57d97c0a2 100644 --- a/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/benchmark_island-static.png.meta +++ b/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/benchmark_island-static.png.meta @@ -3,7 +3,7 @@ guid: b69f7136667814ffdbd894572a55a96b TextureImporter: internalIDToNameTable: [] externalObjects: {} - serializedVersion: 11 + serializedVersion: 13 mipmaps: mipMapMode: 0 enableMipMap: 0 @@ -20,10 +20,12 @@ TextureImporter: externalNormalMap: 0 heightScale: 0.25 normalMapFilter: 0 + flipGreenChannel: 0 isReadable: 1 streamingMipmaps: 0 streamingMipmapsPriority: 0 vTOnly: 0 + ignoreMipmapLimit: 0 grayScaleToAlpha: 0 generateCubemap: 6 cubemapConvolution: 0 @@ -62,6 +64,8 @@ TextureImporter: textureFormatSet: 0 ignorePngGamma: 0 applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 1 platformSettings: - serializedVersion: 3 buildTarget: DefaultTexturePlatform @@ -73,6 +77,20 @@ TextureImporter: crunchedCompression: 0 allowsAlphaSplitting: 0 overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 0 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 androidETC2FallbackOverride: 0 forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: @@ -88,9 +106,9 @@ TextureImporter: edges: [] weights: [] secondaryTextures: [] - spritePackingTag: + nameFileIdTable: {} + mipmapLimitGroupName: pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 userData: assetBundleName: assetBundleVariant: diff --git a/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/level_Island.png.meta b/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/level_Island.png.meta index 65ae9a442..91a7194bd 100644 --- a/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/level_Island.png.meta +++ b/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/level_Island.png.meta @@ -3,7 +3,7 @@ guid: 5cd214bf7e19c4f83914139575476803 TextureImporter: internalIDToNameTable: [] externalObjects: {} - serializedVersion: 11 + serializedVersion: 13 mipmaps: mipMapMode: 0 enableMipMap: 0 @@ -20,10 +20,12 @@ TextureImporter: externalNormalMap: 0 heightScale: 0.25 normalMapFilter: 0 + flipGreenChannel: 0 isReadable: 1 streamingMipmaps: 0 streamingMipmapsPriority: 0 vTOnly: 0 + ignoreMipmapLimit: 0 grayScaleToAlpha: 0 generateCubemap: 6 cubemapConvolution: 0 @@ -62,6 +64,8 @@ TextureImporter: textureFormatSet: 0 ignorePngGamma: 0 applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 1 platformSettings: - serializedVersion: 3 buildTarget: DefaultTexturePlatform @@ -73,6 +77,20 @@ TextureImporter: crunchedCompression: 0 allowsAlphaSplitting: 0 overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 0 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 androidETC2FallbackOverride: 0 forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: @@ -88,9 +106,9 @@ TextureImporter: edges: [] weights: [] secondaryTextures: [] - spritePackingTag: + nameFileIdTable: {} + mipmapLimitGroupName: pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 userData: assetBundleName: assetBundleVariant: diff --git a/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/main_menu.png.meta b/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/main_menu.png.meta index 5ea89fd6f..38128e3f1 100644 --- a/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/main_menu.png.meta +++ b/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/main_menu.png.meta @@ -3,7 +3,7 @@ guid: 8596ae1d516a74e09bba709f583564bd TextureImporter: internalIDToNameTable: [] externalObjects: {} - serializedVersion: 11 + serializedVersion: 13 mipmaps: mipMapMode: 0 enableMipMap: 0 @@ -20,10 +20,12 @@ TextureImporter: externalNormalMap: 0 heightScale: 0.25 normalMapFilter: 0 + flipGreenChannel: 0 isReadable: 1 streamingMipmaps: 0 streamingMipmapsPriority: 0 vTOnly: 0 + ignoreMipmapLimit: 0 grayScaleToAlpha: 0 generateCubemap: 6 cubemapConvolution: 0 @@ -62,6 +64,8 @@ TextureImporter: textureFormatSet: 0 ignorePngGamma: 0 applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 1 platformSettings: - serializedVersion: 3 buildTarget: DefaultTexturePlatform @@ -73,6 +77,20 @@ TextureImporter: crunchedCompression: 0 allowsAlphaSplitting: 0 overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 0 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 androidETC2FallbackOverride: 0 forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: @@ -88,9 +106,9 @@ TextureImporter: edges: [] weights: [] secondaryTextures: [] - spritePackingTag: + nameFileIdTable: {} + mipmapLimitGroupName: pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 userData: assetBundleName: assetBundleVariant: diff --git a/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/benchmark_island-static.png.meta b/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/benchmark_island-static.png.meta index af51881ac..4fe8d387c 100644 --- a/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/benchmark_island-static.png.meta +++ b/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/benchmark_island-static.png.meta @@ -3,7 +3,7 @@ guid: c0078e84b794d488f9455cbe9ea63faa TextureImporter: internalIDToNameTable: [] externalObjects: {} - serializedVersion: 11 + serializedVersion: 13 mipmaps: mipMapMode: 0 enableMipMap: 0 @@ -20,10 +20,12 @@ TextureImporter: externalNormalMap: 0 heightScale: 0.25 normalMapFilter: 0 + flipGreenChannel: 0 isReadable: 1 streamingMipmaps: 0 streamingMipmapsPriority: 0 vTOnly: 0 + ignoreMipmapLimit: 0 grayScaleToAlpha: 0 generateCubemap: 6 cubemapConvolution: 0 @@ -62,6 +64,8 @@ TextureImporter: textureFormatSet: 0 ignorePngGamma: 0 applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 1 platformSettings: - serializedVersion: 3 buildTarget: DefaultTexturePlatform @@ -73,6 +77,20 @@ TextureImporter: crunchedCompression: 0 allowsAlphaSplitting: 0 overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 0 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 androidETC2FallbackOverride: 0 forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: @@ -88,9 +106,9 @@ TextureImporter: edges: [] weights: [] secondaryTextures: [] - spritePackingTag: + nameFileIdTable: {} + mipmapLimitGroupName: pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 userData: assetBundleName: assetBundleVariant: diff --git a/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/level_Island.png.meta b/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/level_Island.png.meta index 0367266ee..5d842fdfc 100644 --- a/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/level_Island.png.meta +++ b/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/level_Island.png.meta @@ -3,7 +3,7 @@ guid: 205044fab159c444c85163d138f02c14 TextureImporter: internalIDToNameTable: [] externalObjects: {} - serializedVersion: 11 + serializedVersion: 13 mipmaps: mipMapMode: 0 enableMipMap: 0 @@ -20,10 +20,12 @@ TextureImporter: externalNormalMap: 0 heightScale: 0.25 normalMapFilter: 0 + flipGreenChannel: 0 isReadable: 1 streamingMipmaps: 0 streamingMipmapsPriority: 0 vTOnly: 0 + ignoreMipmapLimit: 0 grayScaleToAlpha: 0 generateCubemap: 6 cubemapConvolution: 0 @@ -62,6 +64,8 @@ TextureImporter: textureFormatSet: 0 ignorePngGamma: 0 applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 1 platformSettings: - serializedVersion: 3 buildTarget: DefaultTexturePlatform @@ -73,6 +77,20 @@ TextureImporter: crunchedCompression: 0 allowsAlphaSplitting: 0 overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 0 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 androidETC2FallbackOverride: 0 forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: @@ -88,9 +106,9 @@ TextureImporter: edges: [] weights: [] secondaryTextures: [] - spritePackingTag: + nameFileIdTable: {} + mipmapLimitGroupName: pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 userData: assetBundleName: assetBundleVariant: diff --git a/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/main_menu.png.meta b/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/main_menu.png.meta index 95edbd5e1..f8c69f364 100644 --- a/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/main_menu.png.meta +++ b/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/main_menu.png.meta @@ -3,7 +3,7 @@ guid: 3f46f514c4f43457093db3c8add8b862 TextureImporter: internalIDToNameTable: [] externalObjects: {} - serializedVersion: 11 + serializedVersion: 13 mipmaps: mipMapMode: 0 enableMipMap: 0 @@ -20,10 +20,12 @@ TextureImporter: externalNormalMap: 0 heightScale: 0.25 normalMapFilter: 0 + flipGreenChannel: 0 isReadable: 1 streamingMipmaps: 0 streamingMipmapsPriority: 0 vTOnly: 0 + ignoreMipmapLimit: 0 grayScaleToAlpha: 0 generateCubemap: 6 cubemapConvolution: 0 @@ -62,6 +64,8 @@ TextureImporter: textureFormatSet: 0 ignorePngGamma: 0 applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 1 platformSettings: - serializedVersion: 3 buildTarget: DefaultTexturePlatform @@ -73,6 +77,20 @@ TextureImporter: crunchedCompression: 0 allowsAlphaSplitting: 0 overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 0 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 androidETC2FallbackOverride: 0 forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: @@ -88,9 +106,9 @@ TextureImporter: edges: [] weights: [] secondaryTextures: [] - spritePackingTag: + nameFileIdTable: {} + mipmapLimitGroupName: pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 userData: assetBundleName: assetBundleVariant: diff --git a/Assets/Resources/AppSettings.prefab b/Assets/Resources/AppSettings.prefab index 3e51853a5..00c190437 100644 --- a/Assets/Resources/AppSettings.prefab +++ b/Assets/Resources/AppSettings.prefab @@ -27,12 +27,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 3829577903138488069} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 108.12326, y: 11.028929, z: -31.28112} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &3829577903138488074 MonoBehaviour: @@ -165,7 +166,7 @@ AudioSource: m_Enabled: 1 serializedVersion: 4 OutputAudioMixerGroup: {fileID: 0} - m_audioClip: {fileID: 8300000, guid: 643024a49360c40c0a27365c40d4d58d, type: 3} + m_audioClip: {fileID: 8300000, guid: 888b0d97d31a414499a693638d8d818d, type: 3} m_PlayOnAwake: 1 m_Volume: 0.5 m_Pitch: 1 diff --git a/Assets/Resources/FirstPersonCharacter.prefab b/Assets/Resources/FirstPersonCharacter.prefab new file mode 100644 index 000000000..2c4b5ec65 --- /dev/null +++ b/Assets/Resources/FirstPersonCharacter.prefab @@ -0,0 +1,397 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1203376030261627652 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1203376030261627651} + - component: {fileID: 1203376030261627648} + - component: {fileID: 1203376030261627649} + - component: {fileID: 1203376030261627650} + - component: {fileID: 9076537488727344852} + m_Layer: 0 + m_Name: cm + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1203376030261627651 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1203376030261627652} + 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: 1203376031101775135} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1203376030261627648 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1203376030261627652} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ac0b09e7857660247b1477e93731de29, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1203376030261627649 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1203376030261627652} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4044717213e31446939f7bd49c896ea, type: 3} + m_Name: + m_EditorClassIdentifier: + m_TrackedObjectOffset: {x: 0, y: 0, z: 0} + m_LookaheadTime: 0 + m_LookaheadSmoothing: 10 + m_LookaheadIgnoreY: 0 + m_HorizontalDamping: 0.5 + m_VerticalDamping: 0.5 + m_ScreenX: 0.5 + m_ScreenY: 0.5 + m_DeadZoneWidth: 0 + m_DeadZoneHeight: 0 + m_SoftZoneWidth: 0.8 + m_SoftZoneHeight: 0.8 + m_BiasX: 0 + m_BiasY: 0 + m_CenterOnActivate: 1 +--- !u!114 &1203376030261627650 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1203376030261627652} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fa7155796051b734daa718462081dc5f, type: 3} + m_Name: + m_EditorClassIdentifier: + m_BindingMode: 1 + m_FollowOffset: {x: 0, y: 0, z: -10} + m_XDamping: 1 + m_YDamping: 1 + m_ZDamping: 1 + m_AngularDampingMode: 0 + m_PitchDamping: 0 + m_YawDamping: 0 + m_RollDamping: 0 + m_AngularDamping: 0 +--- !u!114 &9076537488727344852 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1203376030261627652} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 68bb026fafb42b14791938953eaace77, type: 3} + m_Name: + m_EditorClassIdentifier: + m_NoiseProfile: {fileID: 0} + m_PivotOffset: {x: 0, y: 0, z: 0} + m_AmplitudeGain: 1 + m_FrequencyGain: 1 + mNoiseOffsets: {x: -938.8635, y: -285.17496, z: -509.71887} +--- !u!1 &1203376030672308022 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1203376030672308018} + - component: {fileID: 1203376030672308019} + - component: {fileID: 1203376030672308020} + - component: {fileID: 1217084860333092195} + - component: {fileID: 1203376030672308017} + m_Layer: 0 + m_Name: FirstPersonCharacter + m_TagString: Player + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1203376030672308018 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1203376030672308022} + 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: 1203376031101775135} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!143 &1203376030672308019 +CharacterController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1203376030672308022} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Height: 2.3200002 + m_Radius: 0.5 + m_SlopeLimit: 45 + m_StepOffset: 0.3 + m_SkinWidth: 0.08 + m_MinMoveDistance: 0.001 + m_Center: {x: 0, y: 1.1600001, z: 0} +--- !u!114 &1203376030672308020 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1203376030672308022} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a343570c5b9740b45b62e566abd743cc, type: 3} + m_Name: + m_EditorClassIdentifier: + Paused: 0 + m_Camera: {fileID: 1203376031101775135} + m_Input: {fileID: 1217084860333092195} + PlayerHeight: 1.82 + PlayerRadius: 0.5 + PlayerWeight: 3 + MoveSpeed: 3 + MaximumFallVelocity: 12 + TurnSpeed: 180 + EnableJump: 1 + JumpImpulse: 7 + PitchSpeed: 180 + MaxPitch: 80 +--- !u!114 &1217084860333092195 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1203376030672308022} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e73f3aff63edd1b48a0603e93cba6fb9, type: 3} + m_Name: + m_EditorClassIdentifier: + preferLegacyInput: 0 + move: + m_Name: Left Stick + m_Type: 0 + m_ExpectedControlType: + m_Id: 78262303-6c30-440d-b87f-5a455bb7c221 + m_Processors: + m_Interactions: + m_SingletonActionBindings: + - m_Name: + m_Id: 374a17f1-27af-435d-adcb-77f4afc0fd97 + m_Path: /leftStick + m_Interactions: + m_Processors: + m_Groups: + m_Action: Left Stick + m_Flags: 0 + - m_Name: + m_Id: ca91ff32-e98f-41f9-8d27-0865d7c7542f + m_Path: 2DVector + m_Interactions: + m_Processors: + m_Groups: + m_Action: Left Stick + m_Flags: 4 + - m_Name: Up + m_Id: 94b42695-a265-4b17-8f05-6888706a5b41 + m_Path: /w + m_Interactions: + m_Processors: + m_Groups: + m_Action: Left Stick + m_Flags: 8 + - m_Name: Down + m_Id: 1ba0c741-3a6b-4ef0-9d5a-48e0049b09bb + m_Path: /s + m_Interactions: + m_Processors: + m_Groups: + m_Action: Left Stick + m_Flags: 8 + - m_Name: Left + m_Id: 5f1b09fb-3c16-4955-89a6-9b80511c9160 + m_Path: /a + m_Interactions: + m_Processors: + m_Groups: + m_Action: Left Stick + m_Flags: 8 + - m_Name: Right + m_Id: 62b1165a-9579-4276-a12c-3ae37be7940d + m_Path: /d + m_Interactions: + m_Processors: + m_Groups: + m_Action: Left Stick + m_Flags: 8 + look: + m_Name: Right Stick + m_Type: 0 + m_ExpectedControlType: + m_Id: 03cb4cd5-eec0-4b4f-939a-43151fecb4db + m_Processors: + m_Interactions: + m_SingletonActionBindings: + - m_Name: + m_Id: ed421107-c8c8-407c-bf7a-20969f7e60af + m_Path: /rightStick + m_Interactions: + m_Processors: + m_Groups: + m_Action: Right Stick + m_Flags: 0 + - m_Name: + m_Id: dd76736c-4d9f-42d0-ae66-878483cdce4d + m_Path: /Delta + m_Interactions: + m_Processors: ScaleVector2(x=0.1,y=0.1) + m_Groups: + m_Action: Right Stick + m_Flags: 0 + jump: + m_Name: Jump + m_Type: 1 + m_ExpectedControlType: + m_Id: f931776e-d3e9-4c3c-b50c-6612bc4d9c99 + m_Processors: + m_Interactions: + m_SingletonActionBindings: + - m_Name: + m_Id: f8a98adf-5a04-4678-9a76-a60fbe4e7ab3 + m_Path: /buttonSouth + m_Interactions: + m_Processors: + m_Groups: + m_Action: Jump + m_Flags: 0 + - m_Name: + m_Id: 6a75d1af-654f-47a6-9a30-857ecc80a844 + m_Path: /space + m_Interactions: + m_Processors: + m_Groups: + m_Action: Jump + m_Flags: 0 + MovementHorizontalAxis: Horizontal + MovementVerticalAxis: Vertical + LookHorizontalAxis: Mouse X + LookVerticalAxis: Mouse Y + JumpButton: Jump +--- !u!54 &1203376030672308017 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1203376030672308022} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 0 + m_IsKinematic: 1 + m_Interpolate: 2 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!1 &1203376031101775104 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1203376031101775135} + - component: {fileID: 1203376031101775134} + m_Layer: 0 + m_Name: VirtualCamera + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1203376031101775135 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1203376031101775104} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1.82, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1203376030261627651} + m_Father: {fileID: 1203376030672308018} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1203376031101775134 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1203376031101775104} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 45e653bab7fb20e499bda25e1b646fea, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ExcludedPropertiesInInspector: + - m_Script + m_LockStageInInspector: + m_StreamingVersion: 20170927 + m_Priority: 10 + m_StandbyUpdate: 2 + m_LookAt: {fileID: 0} + m_Follow: {fileID: 0} + m_Lens: + FieldOfView: 70 + OrthographicSize: 10 + NearClipPlane: 0.1 + FarClipPlane: 5000 + Dutch: 0 + LensShift: {x: 0, y: 0} + m_Transitions: + m_BlendHint: 0 + m_InheritPosition: 0 + m_OnCameraLive: + m_PersistentCalls: + m_Calls: [] + m_LegacyBlendHint: 0 + m_ComponentOwner: {fileID: 1203376030261627651} diff --git a/Assets/Resources/FirstPersonCharacter.prefab.meta b/Assets/Resources/FirstPersonCharacter.prefab.meta new file mode 100644 index 000000000..4ab840785 --- /dev/null +++ b/Assets/Resources/FirstPersonCharacter.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 51569ce51883c7e4d9dabc5321d38077 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/FullScreenFadeManager.prefab b/Assets/Resources/FullScreenFadeManager.prefab new file mode 100644 index 000000000..f1f735787 --- /dev/null +++ b/Assets/Resources/FullScreenFadeManager.prefab @@ -0,0 +1,207 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1138337785565518664 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1138337785565518665} + - component: {fileID: 1138337785565518667} + - component: {fileID: 1138337785565518666} + m_Layer: 5 + m_Name: FullScreenMatte + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1138337785565518665 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1138337785565518664} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1138337785731963864} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1138337785565518667 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1138337785565518664} + m_CullTransparentMesh: 0 +--- !u!114 &1138337785565518666 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1138337785565518664} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &1138337785731963871 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1138337785731963864} + - component: {fileID: 1138337785731963866} + - component: {fileID: 1138337785731963865} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1138337785731963864 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1138337785731963871} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1138337785565518665} + m_Father: {fileID: 1138337785854297217} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!223 &1138337785731963866 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1138337785731963871} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 0 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 32765 + m_TargetDisplay: 0 +--- !u!114 &1138337785731963865 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1138337785731963871} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!1 &1138337785854297223 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1138337785854297217} + - component: {fileID: 1138337785854297216} + m_Layer: 0 + m_Name: FullScreenFadeManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1138337785854297217 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1138337785854297223} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1138337785731963864} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1138337785854297216 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1138337785854297223} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c3c1731f7f8331345a352b2b9c05f2cb, type: 3} + m_Name: + m_EditorClassIdentifier: + FullScreenFadePlane: {fileID: 1138337785565518666} diff --git a/Assets/Resources/FullScreenFadeManager.prefab.meta b/Assets/Resources/FullScreenFadeManager.prefab.meta new file mode 100644 index 000000000..10b5eaa94 --- /dev/null +++ b/Assets/Resources/FullScreenFadeManager.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 723b7b3c16593624ba967539a9695ae0 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/GameManager.prefab b/Assets/Resources/GameManager.prefab new file mode 100644 index 000000000..6f5ecb530 --- /dev/null +++ b/Assets/Resources/GameManager.prefab @@ -0,0 +1,148 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &4873469839061497281 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1920111148660287306} + - component: {fileID: 583835540566580086} + - component: {fileID: 1406516799403283210} + - component: {fileID: 7752601622943950306} + - component: {fileID: 6925750312856378388} + m_Layer: 0 + m_Name: EditorOnly - OnStart + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1920111148660287306 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4873469839061497281} + 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: 908687834499952610} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &583835540566580086 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4873469839061497281} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 718c1945292acbd4497cd28bcaa94f8d, type: 3} + m_Name: + m_EditorClassIdentifier: + OnStart: + - {fileID: 1406516799403283210} +--- !u!114 &1406516799403283210 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4873469839061497281} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e5b32278809154e47b5d8375352f6f8f, type: 3} + m_Name: + m_EditorClassIdentifier: + Name: 'If EditorOnly ' + DisableOnPlayFromHere: 0 + ExecutionPath: 1 + OnExecute: + - {fileID: 7752601622943950306} + - {fileID: 6925750312856378388} +--- !u!114 &7752601622943950306 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4873469839061497281} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 15ae69d69e7aeaf4fbfb02e7175ed5f5, type: 3} + m_Name: + m_EditorClassIdentifier: + Name: 'Send : MainMenuStart' + messageType: 0 +--- !u!114 &6925750312856378388 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4873469839061497281} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 15ae69d69e7aeaf4fbfb02e7175ed5f5, type: 3} + m_Name: + m_EditorClassIdentifier: + Name: 'Send : GameLevelStart' + messageType: 1 +--- !u!1 &7122617993820077800 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 908687834499952610} + - component: {fileID: 5013279253329681551} + m_Layer: 0 + m_Name: GameManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &908687834499952610 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7122617993820077800} + 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: 1920111148660287306} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &5013279253329681551 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7122617993820077800} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9fd2ae503e78cd14da039ced88d8e0b3, type: 3} + m_Name: + m_EditorClassIdentifier: + OnGameStart: [] + OnLevelLoaded: [] + OnMainMenuLoaded: [] + MainMenuGameLevel: {fileID: 11400000, guid: d99561144ab5c0345b420674ec7d0228, type: 2} + MainGameLevels: + - {fileID: 11400000, guid: 9f2f4106fb707f94b8ba444221854f92, type: 2} + EnableSaveProgress: 1 + ProgressSaveName: Progress diff --git a/Assets/Resources/GameManager.prefab.meta b/Assets/Resources/GameManager.prefab.meta new file mode 100644 index 000000000..efd9a4c74 --- /dev/null +++ b/Assets/Resources/GameManager.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 379f2eef434cc4c4d8cd043cc08e80dc +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/GameSaveManager.prefab b/Assets/Resources/GameSaveManager.prefab new file mode 100644 index 000000000..a65a98e3d --- /dev/null +++ b/Assets/Resources/GameSaveManager.prefab @@ -0,0 +1,274 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &4126731527077413761 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4126731527077413760} + - component: {fileID: 4126731527077413766} + - component: {fileID: 4126731527077413767} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4126731527077413760 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4126731527077413761} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4126731527289085647} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: -32, y: 32} + m_SizeDelta: {x: 512, y: 32} + m_Pivot: {x: 1, y: 0} +--- !u!222 &4126731527077413766 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4126731527077413761} + m_CullTransparentMesh: 0 +--- !u!114 &4126731527077413767 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4126731527077413761} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 2 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Accessing Data... Do not turn off computer or quit game. +--- !u!1 &4126731527289085640 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4126731527289085647} + - component: {fileID: 4126731527289085645} + - component: {fileID: 4126731527289085646} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &4126731527289085647 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4126731527289085640} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4126731527077413760} + m_Father: {fileID: 4126731527728584135} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!223 &4126731527289085645 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4126731527289085640} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 0 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &4126731527289085646 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4126731527289085640} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!1 &4126731527728584129 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4126731527728584135} + - component: {fileID: 4126731527728584128} + - component: {fileID: 4126731527728584132} + - component: {fileID: 4126731527728584133} + - component: {fileID: 4126731527728584134} + m_Layer: 0 + m_Name: GameSaveManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4126731527728584135 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4126731527728584129} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4126731527289085647} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &4126731527728584128 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4126731527728584129} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4a94c60800d516b4980b9f68a5ab6cb5, type: 3} + m_Name: + m_EditorClassIdentifier: + UsePlayerPrefs: 0 + savePath: / + systemSaveName: System.sav + userSaveName: User{0}.sav + OnLoad: + - {fileID: 4126731527728584133} + - {fileID: 4126731527728584132} + OnSave: + - {fileID: 4126731527728584133} + - {fileID: 4126731527728584132} +--- !u!114 &4126731527728584132 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4126731527728584129} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0ce142628ca19c2489cf2183fc2d934f, type: 3} + m_Name: + m_EditorClassIdentifier: + Name: DelayedLogic + delayMode: 0 + Delay: 3 + DelayRange: {x: 3, y: 4} + OnDelayComplete: + - {fileID: 4126731527728584134} + OnCanceled: [] +--- !u!114 &4126731527728584133 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4126731527728584129} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 846d5f33f7af4014ea15adf7a92dc953, type: 3} + m_Name: + m_EditorClassIdentifier: + Name: ToggleGameObjectAction + Targets: + - GameObject: {fileID: 4126731527289085640} + State: 1 +--- !u!114 &4126731527728584134 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4126731527728584129} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 846d5f33f7af4014ea15adf7a92dc953, type: 3} + m_Name: + m_EditorClassIdentifier: + Name: ToggleGameObjectAction + Targets: + - GameObject: {fileID: 4126731527289085640} + State: 0 diff --git a/Assets/Resources/GameSaveManager.prefab.meta b/Assets/Resources/GameSaveManager.prefab.meta new file mode 100644 index 000000000..1088d4f43 --- /dev/null +++ b/Assets/Resources/GameSaveManager.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a9ab74a93653f07489a2cb00a2f49891 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/GameplayIngredientsSettings.asset b/Assets/Resources/GameplayIngredientsSettings.asset index 30caa1313..9257fcd1a 100644 --- a/Assets/Resources/GameplayIngredientsSettings.asset +++ b/Assets/Resources/GameplayIngredientsSettings.asset @@ -13,13 +13,5 @@ MonoBehaviour: m_Name: GameplayIngredientsSettings m_EditorClassIdentifier: m_DisableWelcomeScreenAutoStart: 0 - m_ExcludedManagers: - - FullScreenFadeManager - - GameSaveManager - - ScreenshotManager - - UIEventManager - - VirtualCameraManager - - LevelStreamingManager - - GameManager + m_ExcludedManagers: [] m_VerboseCalls: 0 - m_AllowUpdateCalls: 0 diff --git a/Assets/Resources/GameplayIngredientsSettings.asset.meta b/Assets/Resources/GameplayIngredientsSettings.asset.meta index b5bc72165..c6cc1ad0b 100644 --- a/Assets/Resources/GameplayIngredientsSettings.asset.meta +++ b/Assets/Resources/GameplayIngredientsSettings.asset.meta @@ -1,8 +1,8 @@ fileFormatVersion: 2 -guid: fdcdc91aaf24e4b94bac79297958a402 +guid: 3600fe549a077b14588c7f4a8cee3875 NativeFormatImporter: externalObjects: {} - mainObjectFileID: 0 + mainObjectFileID: 11400000 userData: assetBundleName: assetBundleVariant: diff --git a/Assets/Resources/LevelStreamingManager.prefab b/Assets/Resources/LevelStreamingManager.prefab new file mode 100644 index 000000000..9f72c47ca --- /dev/null +++ b/Assets/Resources/LevelStreamingManager.prefab @@ -0,0 +1,614 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &4237660105901699951 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4237660105901699950} + m_Layer: 5 + m_Name: LoadingUI + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4237660105901699950 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4237660105901699951} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4237660106701817725} + - {fileID: 4237660106123981089} + - {fileID: 4237660106447583619} + - {fileID: 4237660107457405504} + m_Father: {fileID: 4237660107855997384} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 32, y: 32} + m_SizeDelta: {x: 480, y: 32} + m_Pivot: {x: 0, y: 0} +--- !u!1 &4237660106043442134 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4237660106043442133} + - component: {fileID: 4237660106043442131} + - component: {fileID: 4237660106043442132} + m_Layer: 5 + m_Name: DebugText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4237660106043442133 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4237660106043442134} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4237660107855997384} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 32, y: -32} + m_SizeDelta: {x: 320, y: -128} + m_Pivot: {x: 0, y: 1} +--- !u!222 &4237660106043442131 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4237660106043442134} + m_CullTransparentMesh: 0 +--- !u!114 &4237660106043442132 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4237660106043442134} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!1 &4237660106123981090 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4237660106123981089} + - component: {fileID: 4237660106123981119} + - component: {fileID: 4237660106123981088} + m_Layer: 5 + m_Name: Percentage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4237660106123981089 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4237660106123981090} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4237660105901699950} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 80, y: 16} + m_Pivot: {x: 1, y: 1} +--- !u!222 &4237660106123981119 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4237660106123981090} + m_CullTransparentMesh: 0 +--- !u!114 &4237660106123981088 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4237660106123981090} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 2 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 100% +--- !u!1 &4237660106447583620 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4237660106447583619} + - component: {fileID: 4237660106447583617} + - component: {fileID: 4237660106447583618} + m_Layer: 5 + m_Name: ProgressBarBG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4237660106447583619 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4237660106447583620} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4237660105901699950} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 240, y: -16} + m_SizeDelta: {x: 480, y: 8} + m_Pivot: {x: 0.5, y: 0} +--- !u!222 &4237660106447583617 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4237660106447583620} + m_CullTransparentMesh: 0 +--- !u!114 &4237660106447583618 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4237660106447583620} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.33962262, g: 0.33962262, b: 0.33962262, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4237660106662749796 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4237660106662749793} + - component: {fileID: 4237660106662749794} + - component: {fileID: 4237660106662749795} + - component: {fileID: 4237660106662749792} + m_Layer: 5 + m_Name: LevelStreamingManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4237660106662749793 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4237660106662749796} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4237660107855997384} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!223 &4237660106662749794 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4237660106662749796} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 0 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 32766 + m_TargetDisplay: 0 +--- !u!114 &4237660106662749795 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4237660106662749796} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!114 &4237660106662749792 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4237660106662749796} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d9f78c0b7259f604da294b52e1208e0f, type: 3} + m_Name: + m_EditorClassIdentifier: + LoadingRoot: {fileID: 4237660107855997385} + LoadingIcon: {fileID: 0} + ProgressBar: {fileID: 4237660107457405505} + ProgressBarContainer: {fileID: 4237660106447583620} + LoadingText: {fileID: 4237660106701817724} + PercentageText: {fileID: 4237660106123981088} + DelayBeforeLoad: 1 + DelayAfterLoad: 1 + DebugText: {fileID: 4237660106043442132} + EnableDebug: 0 +--- !u!1 &4237660106701817726 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4237660106701817725} + - component: {fileID: 4237660106701817723} + - component: {fileID: 4237660106701817724} + m_Layer: 5 + m_Name: Loading + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4237660106701817725 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4237660106701817726} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4237660105901699950} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 96, y: 16} + m_Pivot: {x: 0, y: 1} +--- !u!222 &4237660106701817723 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4237660106701817726} + m_CullTransparentMesh: 0 +--- !u!114 &4237660106701817724 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4237660106701817726} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Loading... + +' +--- !u!1 &4237660107457405505 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4237660107457405504} + - component: {fileID: 4237660107457405534} + - component: {fileID: 4237660107457405535} + m_Layer: 5 + m_Name: ProgressBar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4237660107457405504 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4237660107457405505} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4237660105901699950} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 0, y: -16} + m_SizeDelta: {x: 40, y: 8} + m_Pivot: {x: 0, y: 0} +--- !u!222 &4237660107457405534 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4237660107457405505} + m_CullTransparentMesh: 0 +--- !u!114 &4237660107457405535 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4237660107457405505} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4237660107855997385 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4237660107855997384} + - component: {fileID: 4237660107855997382} + - component: {fileID: 4237660107855997383} + m_Layer: 5 + m_Name: LoadingRoot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &4237660107855997384 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4237660107855997385} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4237660105901699950} + - {fileID: 4237660106043442133} + m_Father: {fileID: 4237660106662749793} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4237660107855997382 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4237660107855997385} + m_CullTransparentMesh: 0 +--- !u!114 &4237660107855997383 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4237660107855997385} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 diff --git a/Assets/Resources/LevelStreamingManager.prefab.meta b/Assets/Resources/LevelStreamingManager.prefab.meta new file mode 100644 index 000000000..92a1bd864 --- /dev/null +++ b/Assets/Resources/LevelStreamingManager.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1199be26f85318642849e89bbe054aa1 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/UIEventManager.prefab b/Assets/Resources/UIEventManager.prefab new file mode 100644 index 000000000..5c1a6d478 --- /dev/null +++ b/Assets/Resources/UIEventManager.prefab @@ -0,0 +1,106 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &5522188214262437396 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6147027817872984675} + - component: {fileID: 4520632949099947202} + - component: {fileID: 7160814530007161981} + - component: {fileID: 4716330389292619800} + m_Layer: 0 + m_Name: UIEventManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6147027817872984675 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5522188214262437396} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &4520632949099947202 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5522188214262437396} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 10 +--- !u!114 &7160814530007161981 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5522188214262437396} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01614664b831546d2ae94a42149d80ac, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 + m_MoveRepeatDelay: 0.5 + m_MoveRepeatRate: 0.1 + m_XRTrackingOrigin: {fileID: 0} + m_ActionsAsset: {fileID: -944628639613478452, guid: ca9f5fa95ffab41fb9a615ab714db018, + type: 3} + m_PointAction: {fileID: -1654692200621890270, guid: ca9f5fa95ffab41fb9a615ab714db018, + type: 3} + m_MoveAction: {fileID: -8784545083839296357, guid: ca9f5fa95ffab41fb9a615ab714db018, + type: 3} + m_SubmitAction: {fileID: 392368643174621059, guid: ca9f5fa95ffab41fb9a615ab714db018, + type: 3} + m_CancelAction: {fileID: 7727032971491509709, guid: ca9f5fa95ffab41fb9a615ab714db018, + type: 3} + m_LeftClickAction: {fileID: 3001919216989983466, guid: ca9f5fa95ffab41fb9a615ab714db018, + type: 3} + m_MiddleClickAction: {fileID: -2185481485913320682, guid: ca9f5fa95ffab41fb9a615ab714db018, + type: 3} + m_RightClickAction: {fileID: -4090225696740746782, guid: ca9f5fa95ffab41fb9a615ab714db018, + type: 3} + m_ScrollWheelAction: {fileID: 6240969308177333660, guid: ca9f5fa95ffab41fb9a615ab714db018, + type: 3} + m_TrackedDevicePositionAction: {fileID: 6564999863303420839, guid: ca9f5fa95ffab41fb9a615ab714db018, + type: 3} + m_TrackedDeviceOrientationAction: {fileID: 7970375526676320489, guid: ca9f5fa95ffab41fb9a615ab714db018, + type: 3} + m_DeselectOnBackgroundClick: 1 + m_PointerBehavior: 0 + m_CursorLockBehavior: 0 + m_ScrollDeltaPerTick: 6 +--- !u!114 &4716330389292619800 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5522188214262437396} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b5bc0b3023dd1f8439a43adc2d70379f, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EventSystem: {fileID: 4520632949099947202} diff --git a/Assets/Resources/UIEventManager.prefab.meta b/Assets/Resources/UIEventManager.prefab.meta new file mode 100644 index 000000000..d1f240217 --- /dev/null +++ b/Assets/Resources/UIEventManager.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 855ef94b5eef84947b3261e3064bcd32 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/VirtualCameraManager.prefab b/Assets/Resources/VirtualCameraManager.prefab new file mode 100644 index 000000000..0594595d1 --- /dev/null +++ b/Assets/Resources/VirtualCameraManager.prefab @@ -0,0 +1,166 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3027554877427853619 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3027554877427853612} + - component: {fileID: 3027554877427853613} + - component: {fileID: 2796896273931921891} + - component: {fileID: 3027554877427853618} + - component: {fileID: 3027554877427853615} + - component: {fileID: 6992723634369483367} + m_Layer: 0 + m_Name: VirtualCameraManager + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3027554877427853612 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3027554877427853619} + m_LocalRotation: {x: -0.2058242, y: 0.53439623, z: -0.13606744, w: -0.80841994} + m_LocalPosition: {x: 7.1058645, y: 4.024516, z: -5.1810875} + 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!20 &3027554877427853613 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3027554877427853619} + 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.1 + far clip plane: 5000 + field of view: 40 + 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!114 &2796896273931921891 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3027554877427853619} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2a050287a9067304195c4fe5661de7e2, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!81 &3027554877427853618 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3027554877427853619} + m_Enabled: 1 +--- !u!114 &3027554877427853615 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3027554877427853619} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 72ece51f2901e7445ab60da3685d6b5f, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ShowDebugText: 0 + m_ShowCameraFrustum: 1 + m_IgnoreTimeScale: 0 + m_WorldUpOverride: {fileID: 0} + m_UpdateMethod: 2 + m_BlendUpdateMethod: 1 + m_DefaultBlend: + m_Style: 1 + m_Time: 2 + m_CustomCurve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_CustomBlends: {fileID: 0} + m_CameraCutEvent: + m_PersistentCalls: + m_Calls: [] + m_CameraActivatedEvent: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &6992723634369483367 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3027554877427853619} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_RenderPostProcessing: 0 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_AllowXRRendering: 1 + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_Version: 2 diff --git a/Assets/Resources/VirtualCameraManager.prefab.meta b/Assets/Resources/VirtualCameraManager.prefab.meta new file mode 100644 index 000000000..51af90f04 --- /dev/null +++ b/Assets/Resources/VirtualCameraManager.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3c96a72ce3dacc141a568f1995ee1105 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Boat/AiController.cs b/Assets/Scripts/Boat/AiController.cs index 5e1462d4b..dcf2a5cd9 100644 --- a/Assets/Scripts/Boat/AiController.cs +++ b/Assets/Scripts/Boat/AiController.cs @@ -1,4 +1,4 @@ -using System; +using System; using UnityEngine; using System.Collections; using UnityEngine.AI; @@ -26,13 +26,50 @@ public class AiController : BaseController private WaypointGroup.Waypoint[] _wPs; + [Header("Auto Start")] + [Tooltip("레이스 시작 없이도 자동으로 움직이기 시작합니다")] + public bool autoStart = false; + + [Tooltip("자동 시작 대기 시간 (초)")] + public float autoStartDelay = 1f; + private void Start () { RaceManager.raceStarted += StartRace; + + // 자동 시작 모드일 때 + if (autoStart) + { + StartCoroutine(AutoStartCoroutine()); + } + } + + private IEnumerator AutoStartCoroutine() + { + // WaypointGroup이 준비될 때까지 대기 + while (WaypointGroup.Instance == null) + { + yield return null; + } + + yield return new WaitForSeconds(autoStartDelay); + + // 레이스가 시작되지 않았어도 움직이기 시작 + if (!RaceManager.RaceStarted) + { + Debug.Log($"[AiController] {gameObject.name}: 자동 시작 모드로 움직이기 시작"); + StartRace(true); + } } private void StartRace(bool start) { + if (WaypointGroup.Instance == null) + { + Debug.LogWarning($"[AiController] {gameObject.name}: WaypointGroup.Instance가 null입니다!"); + return; + } + AssignWp(WaypointGroup.Instance.GetWaypoint(0)); InvokeRepeating(nameof(CalculatePath), 1f, 1f); } diff --git a/Assets/Scripts/Boat/AIcontroller.cs.meta b/Assets/Scripts/Boat/AiController.cs.meta similarity index 100% rename from Assets/Scripts/Boat/AIcontroller.cs.meta rename to Assets/Scripts/Boat/AiController.cs.meta diff --git a/Assets/Scripts/Boat/Engine.cs b/Assets/Scripts/Boat/Engine.cs index 45e5f757e..478738e5c 100644 --- a/Assets/Scripts/Boat/Engine.cs +++ b/Assets/Scripts/Boat/Engine.cs @@ -1,4 +1,4 @@ -using System; +using System; using UnityEngine; using Unity.Collections; using Unity.Mathematics; @@ -16,7 +16,7 @@ public class Engine : MonoBehaviour //engine stats public float steeringTorque = 5f; - public float horsePower = 18f; + public float horsePower = 5800f; private NativeArray _point; // engine submerged check private float3[] _heights = new float3[1]; // engine submerged check private float3[] _normals = new float3[1]; // engine submerged check @@ -28,6 +28,12 @@ public class Engine : MonoBehaviour private float _turnVel; private float _currentAngle; + // 에피소드 시작 시 _yHeight 조건 무시용 카운터 (향후 사용 예정) + #pragma warning disable CS0414 + private int _skipHeightCheckFrames = 0; + #pragma warning restore CS0414 + private const int SKIP_FRAMES_ON_RESET = 5; // 5프레임 동안 조건 무시 + private void Awake() { if(engineSound) @@ -42,33 +48,125 @@ private void Awake() private void FixedUpdate() { - VelocityMag = RB.velocity.sqrMagnitude; // get the sqr mag - engineSound.pitch = Mathf.Max(VelocityMag * 0.01f, 0.3f); // use some magice numbers to control the pitch of the engine sound + // ⚠️ RB null 체크 + if (RB == null) + { + return; + } + + // ⚠️ NaN 방지: Rigidbody rotation 체크 및 리셋 + if (RB != null) + { + Quaternion rbRotation = RB.rotation; + if (float.IsNaN(rbRotation.x) || float.IsNaN(rbRotation.y) || + float.IsNaN(rbRotation.z) || float.IsNaN(rbRotation.w)) + { + Debug.LogError($"[Engine] ⚠️ Rigidbody rotation이 NaN입니다! 리셋합니다. {gameObject.name}"); + RB.rotation = Quaternion.identity; + RB.angularVelocity = Vector3.zero; + transform.rotation = Quaternion.identity; + _currentAngle = 0f; + _turnVel = 0f; + } + + // ⚠️ NaN 방지: Rigidbody position 체크 + Vector3 rbPosition = RB.position; + if (float.IsNaN(rbPosition.x) || float.IsNaN(rbPosition.y) || float.IsNaN(rbPosition.z)) + { + Debug.LogError($"[Engine] ⚠️ Rigidbody position이 NaN입니다! 리셋합니다. {gameObject.name}"); + RB.position = transform.position; + RB.velocity = Vector3.zero; + } + + // ⚠️ NaN 방지: Rigidbody velocity 체크 + Vector3 rbVelocity = RB.velocity; + if (float.IsNaN(rbVelocity.x) || float.IsNaN(rbVelocity.y) || float.IsNaN(rbVelocity.z)) + { + Debug.LogWarning($"[Engine] ⚠️ Rigidbody velocity가 NaN입니다! 리셋합니다. {gameObject.name}"); + RB.velocity = Vector3.zero; + } + } + + VelocityMag = RB != null ? RB.velocity.sqrMagnitude : 0f; // get the sqr mag + if (engineSound != null) + { + engineSound.pitch = Mathf.Max(VelocityMag * 0.01f, 0.3f); // use some magice numbers to control the pitch of the engine sound + } // Get the water level from the engines position and store it + // ⚠️ NativeArray가 생성되어 있는지 확인 (메모리 에러 방지) + if (!_point.IsCreated) + { + return; + } + _point[0] = transform.TransformPoint(enginePosition); GerstnerWavesJobs.UpdateSamplePoints(ref _point, _guid); GerstnerWavesJobs.GetData(_guid, ref _heights, ref _normals); _yHeight = _heights[0].y - _point[0].y; + + // ⚠️ NaN 방지: _yHeight 체크 + if (float.IsNaN(_yHeight) || float.IsInfinity(_yHeight)) + { + _yHeight = 0f; + } } private void OnDisable() { - _point.Dispose(); + // ⚠️ NativeArray가 생성되어 있는지 확인 후 Dispose (중복 해제 방지) + if (_point.IsCreated) + { + _point.Dispose(); + } } + private void OnDestroy() + { + // ⚠️ OnDestroy에서도 안전하게 Dispose (이중 안전장치) + if (_point.IsCreated) + { + _point.Dispose(); + } + } + + /// + /// 에피소드 리셋 시 호출 - 몇 프레임 동안 _yHeight 조건 무시 + /// + public void OnEpisodeReset() + { + _skipHeightCheckFrames = SKIP_FRAMES_ON_RESET; + _yHeight = 0f; // 수면 위로 가정 + } + /// /// Controls the acceleration of the boat /// /// Acceleration modifier, adds force in the 0-1 range public void Accelerate(float modifier) { - if (_yHeight > -0.1f) // if the engine is deeper than 0.1 + // ⚠️ NaN 방지: modifier 값 검증 + if (float.IsNaN(modifier) || float.IsInfinity(modifier)) + { + modifier = 0f; + } + + modifier = Mathf.Clamp(modifier, 0f, 1f); // clamp for reasonable values + + // ⚠️ _yHeight 조건 완전 무시 (학습 안정성 테스트) + // 원래 조건: if (_yHeight > -0.1f && RB != null) + if (RB != null) { - modifier = Mathf.Clamp(modifier, 0f, 1f); // clamp for reasonable values var forward = RB.transform.forward; forward.y = 0f; forward.Normalize(); + + // ⚠️ NaN 방지: 벡터 검증 + if (float.IsNaN(forward.x) || float.IsNaN(forward.y) || float.IsNaN(forward.z)) + { + forward = Vector3.forward; + } + RB.AddForce(horsePower * modifier * forward, ForceMode.Acceleration); // add force forward based on input and horsepower RB.AddRelativeTorque(-Vector3.right * modifier, ForceMode.Acceleration); } @@ -80,19 +178,98 @@ public void Accelerate(float modifier) /// Steering modifier, positive for right, negative for negative public void Turn(float modifier) { - if (_yHeight > -0.1f) // if the engine is deeper than 0.1 + // ⚠️ NaN 방지: modifier 값 검증 + if (float.IsNaN(modifier) || float.IsInfinity(modifier)) + { + modifier = 0f; + } + + modifier = Mathf.Clamp(modifier, -1f, 1f); // clamp for reasonable values + + // ⚠️ _yHeight 조건 완전 무시 (학습 안정성 테스트) + // 원래 조건: if (_yHeight > -0.1f && RB != null) + if (RB != null) { - modifier = Mathf.Clamp(modifier, -1f, 1f); // clamp for reasonable values - RB.AddRelativeTorque(new Vector3(0f, steeringTorque, -steeringTorque * 0.5f) * modifier, ForceMode.Acceleration); // add torque based on input and torque amount + // ⚠️ NaN 방지: torque 벡터 검증 + // Z축 Roll 제거: 선회 시 기울어지지 않아 직진 성능 유지 + Vector3 torque = new Vector3(0f, steeringTorque, 0f) * modifier; + if (float.IsNaN(torque.x) || float.IsNaN(torque.y) || float.IsNaN(torque.z)) + { + torque = Vector3.zero; + } + RB.AddRelativeTorque(torque, ForceMode.Acceleration); // add torque based on input and torque amount } + // ⚠️ NaN 방지: _currentAngle과 _turnVel 검증 + if (float.IsNaN(_currentAngle) || float.IsInfinity(_currentAngle)) + { + _currentAngle = 0f; + } + if (float.IsNaN(_turnVel) || float.IsInfinity(_turnVel)) + { + _turnVel = 0f; + } + + // ⚠️ NaN 방지: Time.fixedDeltaTime 사용 (Time.fixedTime 대신) + float deltaTime = Time.fixedDeltaTime; + if (deltaTime <= 0f || float.IsNaN(deltaTime) || float.IsInfinity(deltaTime)) + { + deltaTime = 0.02f; // 기본값 + } + + float targetAngle = 60f * -modifier; + if (float.IsNaN(targetAngle) || float.IsInfinity(targetAngle)) + { + targetAngle = 0f; + } + _currentAngle = Mathf.SmoothDampAngle(_currentAngle, - 60f * -modifier, + targetAngle, ref _turnVel, 0.5f, 10f, - Time.fixedTime); - transform.localEulerAngles = new Vector3(0f, _currentAngle, 0f); + deltaTime); + + // ⚠️ 최종 NaN 체크 + if (float.IsNaN(_currentAngle) || float.IsInfinity(_currentAngle)) + { + _currentAngle = 0f; + } + + // ⚠️ 각도 범위 제한 + _currentAngle = Mathf.Clamp(_currentAngle, -180f, 180f); + + // ⚠️ 최종 NaN 체크 후 transform 설정 + if (float.IsNaN(_currentAngle) || float.IsInfinity(_currentAngle)) + { + _currentAngle = 0f; + } + + Vector3 eulerAngles = new Vector3(0f, _currentAngle, 0f); + + // ⚠️ NaN 방지: eulerAngles 검증 + if (float.IsNaN(eulerAngles.x) || float.IsNaN(eulerAngles.y) || float.IsNaN(eulerAngles.z)) + { + eulerAngles = Vector3.zero; + _currentAngle = 0f; + } + + transform.localEulerAngles = eulerAngles; + + // ⚠️ NaN 방지: transform.rotation도 체크 + Quaternion currentRotation = transform.rotation; + if (float.IsNaN(currentRotation.x) || float.IsNaN(currentRotation.y) || + float.IsNaN(currentRotation.z) || float.IsNaN(currentRotation.w)) + { + Debug.LogError($"[Engine] ⚠️ transform.rotation이 NaN입니다! 리셋합니다. {gameObject.name}"); + transform.rotation = Quaternion.identity; + _currentAngle = 0f; + if (RB != null) + { + RB.rotation = Quaternion.identity; + RB.angularVelocity = Vector3.zero; + } + } } // Draw some helper gizmos diff --git a/Assets/Scripts/Boat/HumanController.cs b/Assets/Scripts/Boat/HumanController.cs index 2ef098c5b..873a13ca9 100644 --- a/Assets/Scripts/Boat/HumanController.cs +++ b/Assets/Scripts/Boat/HumanController.cs @@ -8,6 +8,11 @@ namespace BoatAttack /// public class HumanController : BaseController { + [Header("Input Settings")] + [Range(0.1f, 2.0f)] + [Tooltip("조종 감도 조절 (낮을수록 느림, 높을수록 빠름)")] + public float steeringSensitivity = 0.3f; + private InputControls _controls; private float _throttle; @@ -69,8 +74,16 @@ private void SelectTime(InputAction.CallbackContext context) void FixedUpdate() { + // 학습 모드일 때는 플레이어 입력 무시 + if (GameModeManager.IsTrainingMode) + { + return; + } + engine.Accelerate(_throttle); - engine.Turn(_steering); + // 감도 조절 적용 (결과값을 -1~1 범위로 제한) + var adjustedSteering = Mathf.Clamp(_steering * steeringSensitivity, -1f, 1f); + engine.Turn(adjustedSteering); } } } diff --git a/Assets/Scripts/Camera/CameraManager.cs b/Assets/Scripts/Camera/CameraManager.cs index 9a322b8f0..efa39d383 100644 --- a/Assets/Scripts/Camera/CameraManager.cs +++ b/Assets/Scripts/Camera/CameraManager.cs @@ -1,5 +1,6 @@ -using System.Collections.Generic; +using System.Collections.Generic; using UnityEngine; +using UnityEngine.InputSystem; using UnityEngine.Playables; using UnityEngine.UI; using Cinemachine; @@ -28,7 +29,10 @@ private void Start() private void Update() { - if (Input.GetKeyDown(KeyCode.Space)) + Keyboard keyboard = Keyboard.current; + if (keyboard == null) return; + + if (keyboard.spaceKey.wasPressedThisFrame) { if (_camModes == CameraModes.Cutscene) StaticCams(); @@ -36,14 +40,23 @@ private void Update() PlayCutscene(); } - if (Input.GetKeyDown(KeyCode.LeftArrow)) + if (keyboard.leftArrowKey.wasPressedThisFrame) NextStaticCam(); - if (Input.GetKeyDown(KeyCode.RightArrow)) + if (keyboard.rightArrowKey.wasPressedThisFrame) PrevStaticCam(); - if (Input.GetKeyDown(KeyCode.H) || (Input.touchCount > 0 && Input.touches[0].tapCount == 2)) + // H 키 또는 터치 이벤트 (터치는 Input System에서 별도 처리 필요) + if (keyboard.hKey.wasPressedThisFrame) UI.SetActive(!UI.activeSelf); + + // 터치 이벤트는 Touchscreen.current 사용 (필요시) + // if (Touchscreen.current != null && Touchscreen.current.touches.Count > 0) + // { + // var touch = Touchscreen.current.touches[0]; + // if (touch.tapCount.ReadValue() == 2) + // UI.SetActive(!UI.activeSelf); + // } } public void PlayCutscene() { diff --git a/Assets/Scripts/Connect_python.meta b/Assets/Scripts/Connect_python.meta new file mode 100644 index 000000000..73df16633 --- /dev/null +++ b/Assets/Scripts/Connect_python.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 39dc8ffcd78456c468c2156bba0074b6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Connect_python/03.03.1.RollerBall.py b/Assets/Scripts/Connect_python/03.03.1.RollerBall.py new file mode 100644 index 000000000..9c5b09187 --- /dev/null +++ b/Assets/Scripts/Connect_python/03.03.1.RollerBall.py @@ -0,0 +1,291 @@ + +import numpy as np +import torch +import torch.nn as nn +import torch.optim as optim +from mlagents_envs.environment import UnityEnvironment +from mlagents_envs.base_env import ActionTuple +from mlagents_envs.side_channel.engine_configuration_channel import EngineConfigurationChannel +from torch.distributions import Normal +from collections import deque +from collections import defaultdict + +# 0. 하이퍼파라미터 설정 +LEARNING_RATE = 0.0003 +GAMMA = 0.99 +LAMBDA = 0.95 +EPS_CLIP = 0.2 +K_EPOCHS = 3 +BATCH_SIZE = 64 +TRAIN_HORIZON = 2048 +TOTAL_ITERATIONS = 1000 # 학습 반복 횟수 + +# 1. PPO 네트워크 정의 (Actor-Critic) +class PPO(nn.Module): + def __init__(self, state_dim, action_dim): + super(PPO, self).__init__() + + # Actor Network: 상태 -> 행동 (평균) + self.actor = nn.Sequential( + nn.Linear(state_dim, 64), + nn.Tanh(), + nn.Linear(64, 64), + nn.Tanh(), + nn.Linear(64, action_dim) + ) + self.log_std = nn.Parameter(torch.zeros(1, action_dim)) # 표준편차는 학습 가능한 파라미터 + + # Critic Network: 상태 -> 가치 + self.critic = nn.Sequential( + nn.Linear(state_dim, 64), + nn.Tanh(), + nn.Linear(64, 64), + nn.Tanh(), + nn.Linear(64, 1) + ) + + def forward(self): + raise NotImplementedError + + def get_action_and_value(self, state, action=None): + mean = self.actor(state) + std = self.log_std.exp().expand_as(mean) + dist = Normal(mean, std) + + if action is None: + action = dist.sample() + + action_log_prob = dist.log_prob(action).sum(axis=-1, keepdim=True) + entropy = dist.entropy().sum(axis=-1, keepdim=True) + value = self.critic(state) + + return action, action_log_prob, entropy, value + +# 2. 메인 학습 루프 +def main(): + print("Unity 환경에 연결 중...") + + # 엔진 설정 채널 (TimeScale) + engine_config_channel = EngineConfigurationChannel() + env = UnityEnvironment(file_name=None, base_port=5004, side_channels=[engine_config_channel]) + + try: + env.reset() + engine_config_channel.set_configuration_parameters(time_scale=20.0) + + behavior_name = list(env.behavior_specs)[0] + spec = env.behavior_specs[behavior_name] + + obs_dim = spec.observation_specs[0].shape[0] + action_dim = spec.action_spec.continuous_size + + print(f"Observation Dimension: {obs_dim}") + print(f"Action Dimension: {action_dim}") + + model = PPO(obs_dim, action_dim) + optimizer = optim.Adam(model.parameters(), lr=LEARNING_RATE) + + # --- ONNX Export Helper Function (Unity ML-Agents 호환 포맷) --- + def save_onnx_model(save_path): + model.eval() + + class FullExport(nn.Module): + def __init__(self, actor, action_dim): + super(FullExport, self).__init__() + self.actor = actor + self.action_dim = action_dim + + # 상수 텐서들 (ML-Agents 스펙 - Type Matching을 위해 Float32 사용) + self.register_buffer('version_number', torch.tensor([3], dtype=torch.float32)) + self.register_buffer('memory_size', torch.tensor([0], dtype=torch.float32)) + self.register_buffer('continuous_action_output_shape', torch.tensor([action_dim], dtype=torch.float32)) + + def forward(self, obs_0): + # Actor Inference (Mean Action) + continuous_actions = self.actor(obs_0) + + # Deterministic Action도 동일하게 Mean 사용 + deterministic_continuous_actions = continuous_actions + + return ( + self.version_number, + self.memory_size, + continuous_actions, + self.continuous_action_output_shape, + deterministic_continuous_actions + ) + + export_module = FullExport(model.actor, action_dim) + dummy_input = torch.randn(1, obs_dim) + + # 출력 이름 순서는 Unity ML-Agents가 기대하는 순서와 같거나 이름으로 매핑됨 + input_names = ['obs_0'] + output_names = [ + 'version_number', + 'memory_size', + 'continuous_actions', + 'continuous_action_output_shape', + 'deterministic_continuous_actions' + ] + + torch.onnx.export( + export_module, + dummy_input, + save_path, + export_params=True, + opset_version=9, + do_constant_folding=True, + input_names=input_names, + output_names=output_names, + dynamic_axes={ + 'obs_0': {0: 'batch'}, + 'continuous_actions': {0: 'batch'}, + 'deterministic_continuous_actions': {0: 'batch'} + } + ) + model.train() + print(f"Saved Unity-compatible ONNX model to {save_path}") + # ------------------------------------------------------------- + + print("학습 시작! (Multi-Agent & Best Model 저장 지원)") + + score_history = deque(maxlen=100) + current_ep_reward = defaultdict(float) + best_score = -float('inf') + + for iteration in range(TOTAL_ITERATIONS): + env.reset() + trajectories = {} + b_states, b_actions, b_logprobs, b_advantages, b_returns = [], [], [], [], [] + + decision_steps, terminal_steps = env.get_steps(behavior_name) + + for t in range(TRAIN_HORIZON): + if len(decision_steps) > 0: + obs = decision_steps.obs[0] + curr_states = torch.FloatTensor(obs) + + with torch.no_grad(): + actions, log_probs, _, values = model.get_action_and_value(curr_states) + + actions_np = actions.numpy() + env.set_actions(behavior_name, ActionTuple(continuous=actions_np)) + + for i, agent_id in enumerate(decision_steps.agent_id): + # Reward Tracking + r = decision_steps[agent_id].reward + current_ep_reward[agent_id] += r + + if agent_id not in trajectories: trajectories[agent_id] = [] + if len(trajectories[agent_id]) > 0: + trajectories[agent_id][-1][4] = r + + trajectories[agent_id].append([ + curr_states[i], actions[i], log_probs[i], values[i], 0.0 + ]) + + env.step() + next_decision_steps, next_terminal_steps = env.get_steps(behavior_name) + + # Terminal Steps + for agent_id in next_terminal_steps.agent_id: + final_reward = next_terminal_steps[agent_id].reward + + # Reward Tracking (End of Episode) + current_ep_reward[agent_id] += final_reward + score_history.append(current_ep_reward[agent_id]) + current_ep_reward[agent_id] = 0.0 # Reset + + if agent_id in trajectories and len(trajectories[agent_id]) > 0: + trajectories[agent_id][-1][4] = final_reward + + traj = trajectories[agent_id] + states, acts, lprobs, vals, rews = zip(*traj) + + vals = torch.stack(vals).squeeze() + if vals.dim() == 0: vals = vals.unsqueeze(0) + + advs = [] + gae = 0 + next_val = 0 + + for i in reversed(range(len(rews))): + delta = rews[i] + GAMMA * next_val - vals[i] + gae = delta + GAMMA * LAMBDA * gae + advs.insert(0, gae) + next_val = vals[i] + + b_states.extend(states) + b_actions.extend(acts) + b_logprobs.extend(lprobs) + b_advantages.extend(advs) + b_returns.extend([a + v.item() for a, v in zip(advs, vals)]) + + trajectories[agent_id] = [] + + decision_steps = next_decision_steps + terminal_steps = next_terminal_steps + + if len(b_states) > BATCH_SIZE: + states_t = torch.stack(b_states) + actions_t = torch.stack(b_actions) + logprobs_t = torch.stack(b_logprobs) + advantages_t = torch.tensor(b_advantages) + returns_t = torch.tensor(b_returns) + + # Normalize Advantages + advantages_t = (advantages_t - advantages_t.mean()) / (advantages_t.std() + 1e-8) + + # Epoch Check + for _ in range(K_EPOCHS): + indices = torch.randperm(len(states_t)) + for i in range(0, len(states_t), BATCH_SIZE): + idx = indices[i:i+BATCH_SIZE] + if len(idx) < BATCH_SIZE: continue + + mb_states = states_t[idx] + mb_actions = actions_t[idx] + mb_logprobs = logprobs_t[idx] + mb_advs = advantages_t[idx] + mb_rets = returns_t[idx] + + _, new_logprobs, entropy, new_vals = model.get_action_and_value(mb_states, mb_actions) + + ratio = (new_logprobs - mb_logprobs).exp() + surr1 = ratio * mb_advs + surr2 = torch.clamp(ratio, 1.0 - EPS_CLIP, 1.0 + EPS_CLIP) * mb_advs + + actor_loss = -torch.min(surr1, surr2).mean() + critic_loss = 0.5 * ((new_vals.squeeze() - mb_rets) ** 2).mean() + entropy_loss = -0.01 * entropy.mean() + + loss = actor_loss + critic_loss + entropy_loss + + optimizer.zero_grad() + loss.backward() + optimizer.step() + + # --- Check Improvement & Save --- + avg_score = sum(score_history) / len(score_history) if len(score_history) > 0 else 0 + + if len(score_history) >= 10 and avg_score > best_score: + best_score = avg_score + save_onnx_model(f"RollerBall_PPO_Best.onnx") + print(f"Iteration {iteration+1} - New Best Score: {avg_score:.2f} (Saved to RollerBall_PPO_Best.onnx)") + else: + print(f"Iteration {iteration+1} - Score: {avg_score:.2f} (Best: {best_score:.2f})") + else: + print(f"Iteration {iteration+1} - 데이터 수집 중... ({len(b_states)} steps)") + + print("최종 모델 저장 중...") + save_onnx_model("RollerBall_PPO_Final.onnx") + print("완료.") + + except KeyboardInterrupt: + print("\n학습 중단됨 (KeyboardInterrupt).") + finally: + env.close() + print("Unity 환경 연결 해제됨.") + +if __name__ == "__main__": + main() diff --git a/Assets/scenes/demo_Island.unity.meta b/Assets/Scripts/Connect_python/03.03.1.RollerBall.py.meta similarity index 74% rename from Assets/scenes/demo_Island.unity.meta rename to Assets/Scripts/Connect_python/03.03.1.RollerBall.py.meta index 9141298f6..5efc086a4 100644 --- a/Assets/scenes/demo_Island.unity.meta +++ b/Assets/Scripts/Connect_python/03.03.1.RollerBall.py.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: b3bf1324da98a41e796a5881dd3812eb +guid: 1b41bcf716b1bd343b1c19f2876102f2 DefaultImporter: externalObjects: {} userData: diff --git a/Assets/Scripts/Connect_python/PositionSideChannel.cs b/Assets/Scripts/Connect_python/PositionSideChannel.cs new file mode 100644 index 000000000..e5012bb5a --- /dev/null +++ b/Assets/Scripts/Connect_python/PositionSideChannel.cs @@ -0,0 +1,99 @@ +using System; +using System.Collections.Generic; +using Unity.MLAgents.SideChannels; +using UnityEngine; + +/// +/// Unity에서 Python으로 객체 위치 정보를 전송하는 커스텀 Side Channel +/// +public class PositionSideChannel : SideChannel +{ + private Dictionary positionData = new Dictionary(); + private object dataLock = new object(); + private static bool hasLoggedFirstMessage = false; + + public PositionSideChannel() + { + ChannelId = new Guid("621f0a70-4f87-11d2-a976-00c04f8e1488"); + } + + /// + /// 객체 위치를 설정 + /// + public void SetPosition(string objectName, Vector3 position) + { + lock (dataLock) + { + positionData[objectName] = position; + } + } + + /// + /// 현재 저장된 위치 데이터를 가져옴 + /// + public Dictionary GetPositions() + { + lock (dataLock) + { + return new Dictionary(positionData); + } + } + + /// + /// Python에서 Unity로 메시지를 보낼 때 사용 (현재는 불필요) + /// + protected override void OnMessageReceived(IncomingMessage msg) + { + // Python에서 Unity로 메시지를 보낼 때 사용 + } + + /// + /// 저장된 모든 위치 데이터를 Python으로 전송 + /// + public void SendPositionsToPython() + { + lock (dataLock) + { + if (positionData.Count > 0) + { + using (var msgOut = new OutgoingMessage()) + { + // 메시지 형식: [객체 개수] [객체1 이름] [x] [y] [z] [객체2 이름] [x] [y] [z] ... + msgOut.WriteInt32(positionData.Count); + foreach (var kvp in positionData) + { + msgOut.WriteString(kvp.Key); + msgOut.WriteFloat32(kvp.Value.x); + msgOut.WriteFloat32(kvp.Value.y); + msgOut.WriteFloat32(kvp.Value.z); + } + + // 중요: QueueMessageToSend는 Unity ML-Agents가 env.step() 호출 시 메시지를 전송합니다. + // 하지만 Unity C#에서 생성한 Side Channel이 Python과 연결되지 않으면 메시지가 전달되지 않습니다. + QueueMessageToSend(msgOut); + + // 디버깅: 첫 메시지 전송 시 로그 출력 + if (!hasLoggedFirstMessage) + { + Debug.Log($"[PositionSideChannel] ✅ 첫 메시지 전송 시도! 객체 수: {positionData.Count}, ChannelId: {ChannelId}"); + Debug.Log($"[PositionSideChannel] ⚠️ Python의 on_message_received가 호출되는지 확인하세요!"); + foreach (var kvp in positionData) + { + Debug.Log($" - {kvp.Key}: ({kvp.Value.x:F2}, {kvp.Value.y:F2}, {kvp.Value.z:F2})"); + } + hasLoggedFirstMessage = true; + } + } + } + else + { + // 디버깅: 데이터가 없을 때도 로그 출력 + if (Time.frameCount % 120 == 0) // 약 2초마다 + { + Debug.LogWarning($"[PositionSideChannel] 위치 데이터가 없습니다! (Count: {positionData.Count})"); + } + } + } + } +} + diff --git a/Assets/NavMeshComponents/Editor/NavMeshLinkEditor.cs.meta b/Assets/Scripts/Connect_python/PositionSideChannel.cs.meta old mode 100755 new mode 100644 similarity index 69% rename from Assets/NavMeshComponents/Editor/NavMeshLinkEditor.cs.meta rename to Assets/Scripts/Connect_python/PositionSideChannel.cs.meta index 7811af49e..ae1a2d061 --- a/Assets/NavMeshComponents/Editor/NavMeshLinkEditor.cs.meta +++ b/Assets/Scripts/Connect_python/PositionSideChannel.cs.meta @@ -1,8 +1,7 @@ fileFormatVersion: 2 -guid: ece1e865d1ad84587872fe8580ab5a20 -timeCreated: 1477036743 -licenseType: Pro +guid: 045b868e8814c9e42b4d187a5d608a27 MonoImporter: + externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 diff --git a/Assets/Scripts/Connect_python/UnityPositionSender.cs b/Assets/Scripts/Connect_python/UnityPositionSender.cs new file mode 100644 index 000000000..5f2203fc4 --- /dev/null +++ b/Assets/Scripts/Connect_python/UnityPositionSender.cs @@ -0,0 +1,211 @@ +using UnityEngine; +using Unity.MLAgents; +using Unity.MLAgents.SideChannels; +using System.Collections; + +/// +/// Unity 씬의 객체 위치를 수집하여 Python으로 전송하는 스크립트 +/// 이 스크립트를 빈 GameObject에 추가하고 추적할 객체들을 설정하세요. +/// +public class UnityPositionSender : MonoBehaviour +{ + [Tooltip("추적할 GameObject들 (비어있으면 자동으로 찾음)")] + public GameObject[] trackedObjects; + + [Tooltip("위치 업데이트 간격 (초)")] + public float updateInterval = 0.05f; // 50ms + + [Tooltip("자동으로 특정 태그를 가진 객체들을 찾을지 여부")] + public bool autoFindByTag = false; + + [Tooltip("자동 찾기 시 사용할 태그")] + public string targetTag = "Untagged"; + + [Tooltip("자동으로 특정 타입의 컴포넌트를 가진 객체들을 찾을지 여부")] + public bool autoFindByComponent = false; + + [Tooltip("자동 찾기 시 사용할 컴포넌트 타입 (예: Rigidbody, Collider 등)")] + public string componentType = "Rigidbody"; + + private PositionSideChannel positionChannel; + private float lastUpdateTime = 0f; + private static PositionSideChannel staticChannel; // 싱글톤 패턴 + + // FixedUpdate를 사용하므로 fixedTime을 사용해야 함 + + void Start() + { + // PositionSideChannel 초기화 (싱글톤 패턴) + if (staticChannel == null) + { + staticChannel = new PositionSideChannel(); + Debug.Log($"[UnityPositionSender] PositionSideChannel 초기화 완료. ChannelId: {staticChannel.ChannelId}"); + Debug.Log("[UnityPositionSender] Python 측에서 같은 UUID로 Side Channel을 등록했는지 확인하세요."); + + // 중요: Unity ML-Agents의 Side Channel은 Python에서 등록하면 Unity가 자동으로 인식합니다. + // Unity C#에서는 같은 UUID로 Side Channel을 생성하고 메시지를 보내기만 하면 됩니다. + // 하지만 실제로는 Unity C#에서도 명시적으로 등록해야 할 수 있습니다. + // Academy가 초기화될 때까지 대기한 후 등록 시도 + StartCoroutine(WaitForAcademyAndRegister()); + } + positionChannel = staticChannel; + + // 추적할 객체 설정 + SetupTrackedObjects(); + + if (trackedObjects == null || trackedObjects.Length == 0) + { + Debug.LogWarning("[UnityPositionSender] 추적할 객체가 없습니다!"); + } + else + { + Debug.Log($"[UnityPositionSender] {trackedObjects.Length}개의 객체를 추적합니다."); + } + } + + void SetupTrackedObjects() + { + // 수동으로 설정된 객체가 있으면 사용 + if (trackedObjects != null && trackedObjects.Length > 0) + { + return; + } + + System.Collections.Generic.List foundObjects = + new System.Collections.Generic.List(); + + // 태그로 찾기 + if (autoFindByTag && !string.IsNullOrEmpty(targetTag)) + { + GameObject[] taggedObjects = GameObject.FindGameObjectsWithTag(targetTag); + foundObjects.AddRange(taggedObjects); + Debug.Log($"[UnityPositionSender] 태그 '{targetTag}'로 {taggedObjects.Length}개 객체 발견"); + } + + // 컴포넌트로 찾기 + if (autoFindByComponent && !string.IsNullOrEmpty(componentType)) + { + System.Type compType = System.Type.GetType(componentType); + if (compType == null) + { + // Unity 네임스페이스에서 찾기 시도 + compType = System.Type.GetType($"UnityEngine.{componentType}"); + } + + if (compType != null) + { + // FindObjectsOfType의 제네릭 버전 사용 또는 명시적 캐스팅 + Object[] foundComponents = FindObjectsOfType(compType); + foreach (Object obj in foundComponents) + { + Component comp = obj as Component; + if (comp != null && comp.gameObject != null) + { + foundObjects.Add(comp.gameObject); + } + } + Debug.Log($"[UnityPositionSender] 컴포넌트 '{componentType}'로 {foundComponents.Length}개 객체 발견"); + } + else + { + Debug.LogWarning($"[UnityPositionSender] 컴포넌트 타입 '{componentType}'를 찾을 수 없습니다."); + } + } + + // 기본값: 씬의 모든 활성 GameObject 찾기 (선택사항) + if (foundObjects.Count == 0 && !autoFindByTag && !autoFindByComponent) + { + Debug.Log("[UnityPositionSender] 추적할 객체를 수동으로 설정하거나 자동 찾기 옵션을 활성화하세요."); + } + + trackedObjects = foundObjects.ToArray(); + } + + void FixedUpdate() + { + // FixedUpdate 사용: ML-Agents의 물리 엔진 주기와 동기화 + // Update() 대신 FixedUpdate()를 사용하면 데드락 문제를 피할 수 있음 + if (positionChannel == null) + { + return; + } + + // 업데이트 간격 체크 + if (Time.fixedTime - lastUpdateTime < updateInterval) + { + return; + } + lastUpdateTime = Time.fixedTime; + + // 각 객체의 위치 수집 + int validObjectCount = 0; + foreach (GameObject obj in trackedObjects) + { + if (obj == null) + { + continue; + } + + Vector3 position = obj.transform.position; + string key = obj.name; + + // 위치 데이터 설정 + positionChannel.SetPosition(key, position); + validObjectCount++; + } + + // 디버깅: 주기적으로 로그 출력 + if (Time.frameCount % 120 == 0) // 약 2초마다 (60fps 기준) + { + Debug.Log($"[UnityPositionSender] 추적 중인 객체 수: {validObjectCount}, 총 객체 수: {trackedObjects?.Length ?? 0}"); + } + + // 모든 위치 데이터를 Python으로 전송 + if (positionChannel != null && validObjectCount > 0) + { + positionChannel.SendPositionsToPython(); + } + } + + private IEnumerator WaitForAcademyAndRegister() + { + // Academy가 초기화될 때까지 대기 + int maxWaitFrames = 120; // 최대 2초 대기 (60fps 기준) + int frameCount = 0; + + while (Academy.Instance == null && frameCount < maxWaitFrames) + { + yield return null; + frameCount++; + } + + if (Academy.Instance != null) + { + Debug.Log("[UnityPositionSender] Academy 인스턴스 확인 완료."); + + // Unity ML-Agents의 Side Channel은 Python에서 등록하면 Unity가 자동으로 인식합니다. + // Unity C#에서는 같은 UUID로 Side Channel을 생성하고 메시지를 보내기만 하면 됩니다. + // 하지만 실제로는 Unity C#에서도 명시적으로 등록해야 할 수 있습니다. + // 현재 Unity ML-Agents 버전에서는 Academy.SideChannels가 없으므로, + // Python 측에서 등록한 Side Channel을 Unity가 자동으로 인식하는지 확인해야 합니다. + + Debug.Log($"[UnityPositionSender] Side Channel 등록 상태 확인:"); + Debug.Log($" - ChannelId: {staticChannel.ChannelId}"); + Debug.Log($" - Python 측 UUID와 일치하는지 확인: 621f0a70-4f87-11d2-a976-00c04f8e1488"); + } + else + { + Debug.LogWarning("[UnityPositionSender] Academy 인스턴스를 찾을 수 없습니다. ML-Agents Academy가 씬에 있는지 확인하세요."); + } + } + + void OnDestroy() + { + // Side Channel 정리 + // Unity ML-Agents는 Python 연결이 끊기면 자동으로 처리됩니다. + if (staticChannel != null && positionChannel == staticChannel) + { + staticChannel = null; + } + } +} diff --git a/Assets/NavMeshComponents/Editor/NavMeshComponentsGUIUtility.cs.meta b/Assets/Scripts/Connect_python/UnityPositionSender.cs.meta old mode 100755 new mode 100644 similarity index 69% rename from Assets/NavMeshComponents/Editor/NavMeshComponentsGUIUtility.cs.meta rename to Assets/Scripts/Connect_python/UnityPositionSender.cs.meta index 2f296208a..f0b0e92ef --- a/Assets/NavMeshComponents/Editor/NavMeshComponentsGUIUtility.cs.meta +++ b/Assets/Scripts/Connect_python/UnityPositionSender.cs.meta @@ -1,8 +1,7 @@ fileFormatVersion: 2 -guid: 77fba670b979046f18d52d751e0d4659 -timeCreated: 1480524815 -licenseType: Pro +guid: 01fe9c6492fbb934ab05a44a04e9ecb3 MonoImporter: + externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 diff --git a/Assets/Scripts/Connect_python/activate_venv.bat b/Assets/Scripts/Connect_python/activate_venv.bat new file mode 100644 index 000000000..5a4661b06 --- /dev/null +++ b/Assets/Scripts/Connect_python/activate_venv.bat @@ -0,0 +1,17 @@ +@echo off +REM 가상환경 활성화 스크립트 (Windows Batch) + +cd /d "%~dp0" + +if not exist "venv" ( + echo 오류: 가상환경이 존재하지 않습니다. + echo 먼저 setup_venv.bat을 실행하여 가상환경을 생성하세요. + pause + exit /b 1 +) + +call venv\Scripts\activate.bat + +echo 가상환경이 활성화되었습니다. +echo. + diff --git a/Assets/Scripts/Connect_python/activate_venv.bat.meta b/Assets/Scripts/Connect_python/activate_venv.bat.meta new file mode 100644 index 000000000..6803f2a38 --- /dev/null +++ b/Assets/Scripts/Connect_python/activate_venv.bat.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3878d3c304ab94543a692c790980e52b +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Connect_python/activate_venv.ps1 b/Assets/Scripts/Connect_python/activate_venv.ps1 new file mode 100644 index 000000000..3b0c10eef --- /dev/null +++ b/Assets/Scripts/Connect_python/activate_venv.ps1 @@ -0,0 +1,15 @@ +# 가상환경 활성화 스크립트 (PowerShell) + +Set-Location $PSScriptRoot + +if (-not (Test-Path "venv")) { + Write-Host "오류: 가상환경이 존재하지 않습니다." -ForegroundColor Red + Write-Host "먼저 setup_venv.ps1을 실행하여 가상환경을 생성하세요." -ForegroundColor Yellow + exit 1 +} + +& "venv\Scripts\Activate.ps1" + +Write-Host "가상환경이 활성화되었습니다." -ForegroundColor Green +Write-Host "" + diff --git a/Assets/Scripts/Connect_python/activate_venv.ps1.meta b/Assets/Scripts/Connect_python/activate_venv.ps1.meta new file mode 100644 index 000000000..93cb37d39 --- /dev/null +++ b/Assets/Scripts/Connect_python/activate_venv.ps1.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 823899e54831dd649995ccf1f5e982c0 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Connect_python/realtime_position_plotter.py b/Assets/Scripts/Connect_python/realtime_position_plotter.py new file mode 100644 index 000000000..28747cc4f --- /dev/null +++ b/Assets/Scripts/Connect_python/realtime_position_plotter.py @@ -0,0 +1,512 @@ +""" +Unity 실행 중인 객체들의 위치를 실시간으로 plot하는 스크립트 +""" + +import numpy as np +import matplotlib.pyplot as plt +import matplotlib.animation as animation +import matplotlib.font_manager as fm +from mlagents_envs.environment import UnityEnvironment +from mlagents_envs.side_channel.side_channel import SideChannel, IncomingMessage +import uuid +import threading +import time +import warnings + +class PositionSideChannel(SideChannel): + """Unity에서 위치 정보를 받는 커스텀 Side Channel""" + + def __init__(self): + super().__init__(uuid.UUID("621f0a70-4f87-11d2-a976-00c04f8e1488")) + self.position_data = {} + self.lock = threading.Lock() + + def on_message_received(self, msg: IncomingMessage) -> None: + """Unity에서 메시지를 받을 때 호출됨 - 이 함수가 호출되는지 확인!""" + print(f"🔔 [PositionSideChannel] on_message_received 호출됨!") # 무조건 출력 + try: + with self.lock: + # 메시지 형식: [객체 개수] [객체1 이름] [x] [y] [z] [객체2 이름] [x] [y] [z] ... + count = msg.read_int32() + print(f"🔔 [PositionSideChannel] 메시지에서 읽은 객체 수: {count}") + + self.position_data = {} + for i in range(count): + obj_name = msg.read_string() + x = msg.read_float32() + y = msg.read_float32() + z = msg.read_float32() + self.position_data[obj_name] = (x, y, z) + print(f"🔔 [PositionSideChannel] 객체 {i+1}: {obj_name} = ({x:.2f}, {y:.2f}, {z:.2f})") + + # 디버깅: 첫 메시지 수신 시 로그 출력 + if count > 0 and not hasattr(self, '_first_message_logged'): + print(f"[PositionSideChannel] ✅ 첫 메시지 수신! 객체 수: {count}") + for name, pos in self.position_data.items(): + print(f" - {name}: ({pos[0]:.2f}, {pos[1]:.2f}, {pos[2]:.2f})") + self._first_message_logged = True + elif count > 0: + # 주기적으로 메시지 수신 확인 + if not hasattr(self, '_message_count'): + self._message_count = 0 + self._message_count += 1 + if self._message_count % 60 == 0: # 약 3초마다 + print(f"[PositionSideChannel] 메시지 수신 중... (총 {self._message_count}개, 현재 객체 수: {count})") + except Exception as e: + print(f"❌ PositionSideChannel 메시지 수신 오류: {e}") + print(f" 메시지 타입: {type(msg)}") + print(f" 메시지 속성: {dir(msg)}") + import traceback + traceback.print_exc() + + def get_positions(self): + """현재 위치 데이터를 안전하게 반환""" + with self.lock: + return dict(self.position_data) + + +class UnityPositionPlotter: + """Unity 객체 위치를 실시간으로 plot하는 클래스""" + + def __init__(self, port=5004, update_interval=50): + """ + Args: + port: Unity ML-Agents 연결 포트 + update_interval: 그래프 업데이트 간격 (밀리초) + """ + self.port = port + self.update_interval = update_interval + self.env = None + + # Side Channel 생성 (UnityEnvironment 생성 전에 반드시 생성해야 함) + self.position_channel = PositionSideChannel() + print(f"[초기화] PositionSideChannel 생성 완료. UUID: {self.position_channel.channel_id}") + + self.behavior_name = None + + # Plot 관련 변수 + self.fig = None + self.ax = None + self.positions_history = {} # {객체명: [(x, z), ...]} + self.max_history = 100 # 최대 저장할 위치 개수 + + # 성능 최적화: Line2D 객체들을 미리 생성 + self.trajectory_lines = {} # {객체명: Line2D} - 궤적 선 + self.marker_points = {} # {객체명: Line2D} - 현재 위치 마커 + self.legend_handles = [] # 범례 핸들 + self.colors = None # 색상 배열 + + # Unity 환경 스텝을 별도 스레드에서 실행 + self.env_thread = None + self.running = False + self.env_lock = threading.Lock() + + def connect_unity(self, timeout=60, max_retries=3): + """Unity 환경에 연결 (재시도 로직 포함)""" + print(f"Unity 환경에 연결 중... (포트: {self.port})") + print("주의: Unity 에디터에서 Play 버튼을 누른 후 Python 스크립트를 실행하세요!") + print("또는 Python 스크립트를 먼저 실행한 후 Unity에서 Play 버튼을 누르세요.") + + for attempt in range(max_retries): + try: + print(f"\n연결 시도 {attempt + 1}/{max_retries}...") + + # UnityEnvironment 생성 (타임아웃 설정) + # 중요: side_channels는 UnityEnvironment 생성 시 반드시 전달해야 함 + # 생성 후에 등록하면 인식되지 않음! + print(f"[연결] UnityEnvironment 생성 중... Side Channel UUID: {self.position_channel.channel_id}") + self.env = UnityEnvironment( + file_name=None, + base_port=self.port, + side_channels=[self.position_channel], # 생성 시점에 전달 필수! + timeout_wait=timeout + ) + + print("✅ UnityEnvironment 생성 완료.") + print(f" → Side Channel이 UnityEnvironment에 등록되었습니다.") + print(" → Unity 연결 대기 중...") + print("\n ⚠️ 중요: Unity 설정 확인!") + print(" Unity 씬에 다음이 있는지 확인하세요:") + print(" 1. ML-Agents Academy GameObject") + print(" 2. Agent GameObject (Behavior Parameters 포함)") + print(" 3. Unity에서 Play 버튼 클릭") + print(" 4. Unity Console에 에러가 없는지 확인") + print(f"\n → Unity 초기화 응답 대기 중... (최대 {timeout}초)") + print(" Unity가 응답하지 않으면 타임아웃 후 재시도합니다...") + + # reset() 호출로 초기화 (이 부분에서 Unity 응답을 기다림) + # 타임아웃은 UnityEnvironment 생성 시 설정한 timeout_wait를 사용 + try: + print(" → env.reset() 시도 중... Unity 에디터가 Play 상태여야 합니다.") + self.env.reset() + print(" ✅ Unity 초기화 완료!") + print(f" → PositionSideChannel UUID: {self.position_channel.channel_id}") + + # 중요: reset() 직후 강제로 한 스텝 진행해서 데이터 흐름 물꼬 트기 + # 이렇게 하면 Unity의 Side Channel 메시지가 Python으로 전달됨 + print(" → 데이터 흐름 시작을 위해 env.step() 호출 중...") + self.env.step() + print(" ✅ 초기 스텝 완료!") + except Exception as reset_error: + error_str = str(reset_error) + print(f"\n ❌ Unity 초기화 실패: {error_str}") + + # 더 자세한 에러 메시지 제공 + if "timeout" in error_str.lower() or "took too long" in error_str.lower(): + print("\n 🔍 타임아웃 원인 분석:") + print(" Unity가 Python에 연결하지 못했습니다.") + print("\n 📋 확인 체크리스트:") + print(" □ Unity에서 Play 버튼을 눌렀나요?") + print(" □ Unity 씬에 ML-Agents Academy가 있나요?") + print(" □ Unity 씬에 Agent가 있나요?") + print(" □ Agent에 Behavior Parameters 컴포넌트가 있나요?") + print(" □ Unity Console에 에러 메시지가 있나요?") + print(" □ 포트 5004가 다른 프로그램에 의해 사용 중인가요?") + raise Exception( + f"Unity 응답 타임아웃 ({timeout}초 초과).\n" + "Unity가 Python에 연결하지 못했습니다.\n" + "자세한 내용은 UNITY_SETUP_CHECK.md 파일을 참고하세요." + ) + else: + raise Exception(f"Unity 초기화 실패: {reset_error}") + + # Behavior 이름 가져오기 + if len(self.env.behavior_specs) == 0: + raise Exception("Behavior가 없습니다. Unity 씬에 Agent가 있는지 확인하세요.") + + self.behavior_name = list(self.env.behavior_specs)[0] + print(f"✅ 연결 성공! Behavior: {self.behavior_name}") + print(" → 그래프 창을 여는 중...") + return True + + except Exception as e: + error_msg = str(e) + print(f"❌ 연결 실패 (시도 {attempt + 1}/{max_retries}): {error_msg}") + + if attempt < max_retries - 1: + wait_time = 2 * (attempt + 1) # 2초, 4초, 6초... + print(f"{wait_time}초 후 재시도...") + time.sleep(wait_time) + else: + print("\n" + "="*60) + print("❌ 연결 실패 원인 진단:") + print("="*60) + print("\n[필수 확인 사항]") + print("1. Unity 에디터가 실행 중인가요?") + print("2. Unity에서 Play 버튼을 눌렀나요? (Play 모드가 활성화되어야 함)") + print("3. Unity 씬에 ML-Agents Academy가 있나요?") + print(" → Hierarchy에서 'Academy' 또는 'ML-Agents' GameObject 확인") + print("4. Unity 씬에 Agent가 있나요?") + print(" → Hierarchy에서 Agent GameObject 확인") + print("5. Agent에 Behavior Parameters 컴포넌트가 있나요?") + print(" → Agent 선택 → Inspector에서 'Behavior Parameters' 확인") + print("\n[추가 확인 사항]") + print(f"6. 포트 {self.port}가 다른 프로그램에 의해 사용 중인가요?") + print(" → PowerShell에서 확인: netstat -ano | findstr :5004") + print("7. Unity Console에 에러 메시지가 있나요?") + print(" → Unity Console 창 확인 (Window → General → Console)") + print("\n[Unity Console에서 확인할 메시지]") + print(" ✅ '[UnityPositionSender] PositionSideChannel 초기화 완료'") + print(" ✅ ML-Agents 관련 에러 메시지") + print("="*60) + + # 이전 연결 시도 정리 + if self.env is not None: + try: + self.env.close() + except: + pass + self.env = None + + return False + + return False + + def setup_plot(self): + """matplotlib 그래프 설정""" + self.fig, self.ax = plt.subplots(figsize=(10, 10)) + self.ax.set_xlabel('X 위치', fontsize=12) + self.ax.set_ylabel('Z 위치', fontsize=12) + self.ax.set_title('Unity 객체 위치 실시간 추적', fontsize=14) + self.ax.grid(True, alpha=0.3) + self.ax.set_aspect('equal', adjustable='box') + + # 한글 폰트 설정 (Windows) + # tkinter 폰트 경고 억제 + warnings.filterwarnings('ignore', category=UserWarning, module='tkinter') + + # 한글 폰트 찾기 및 설정 + korean_fonts = ['Malgun Gothic', 'NanumGothic', 'Nanum Gothic', 'Gulim', 'Batang'] + font_found = False + + for font_name in korean_fonts: + try: + # 폰트가 시스템에 있는지 확인 + font_list = [f.name for f in fm.fontManager.ttflist] + if font_name in font_list: + plt.rcParams['font.family'] = font_name + font_found = True + break + except: + continue + + if not font_found: + # 기본 폰트로 폴백 + plt.rcParams['font.family'] = 'DejaVu Sans' + + plt.rcParams['axes.unicode_minus'] = False + + # 초기 빈 데이터로 Line2D 객체들 생성 (성능 최적화) + # 실제 데이터가 들어오면 set_data()로 업데이트만 하면 됨 + self.trajectory_lines = {} + self.marker_points = {} + self.legend_handles = [] + + def _unity_step_loop(self): + """Unity 환경 스텝을 별도 스레드에서 실행 (GUI 블로킹 방지)""" + step_count = 0 + last_position_count = 0 + + while self.running: + try: + with self.env_lock: + if self.env is not None and self.behavior_name is not None: + # Unity 환경 스텝 진행 + # 주의: Behavior Type이 "Heuristic Only"면 행동을 보내지 않아도 됩니다. + self.env.step() + step_count += 1 + + # Side Channel 메시지 처리 확인 + current_positions = self.position_channel.get_positions() + current_count = len(current_positions) + + # 디버깅: 주기적으로 스텝 수 및 위치 데이터 출력 + if step_count % 60 == 0: # 약 3초마다 + print(f"[디버그] Unity 스텝 진행 중... (총 {step_count} 스텝)") + print(f"[디버그] 현재 위치 데이터 개수: {current_count}") + if current_count > 0: + print(f"[디버그] 위치 데이터 샘플: {list(current_positions.items())[:2]}") + elif last_position_count > 0: + print(f"⚠️ [경고] 이전에는 {last_position_count}개였는데 지금은 0개입니다!") + + last_position_count = current_count + + time.sleep(0.02) # 약 50 FPS (Unity와 동기화) + except Exception as e: + if self.running: # 종료 중이 아닐 때만 에러 출력 + print(f"Unity 스텝 오류: {e}") + import traceback + traceback.print_exc() + break + + def update_plot(self, frame): + """그래프 업데이트 함수 (animation callback) - 성능 최적화 버전""" + if self.env is None: + return + + try: + # Side Channel에서 위치 데이터 읽기 (스레드 안전) + positions = self.position_channel.get_positions() + + # 디버깅: 위치 데이터 확인 + if frame % 60 == 0: # 약 3초마다 출력 + print(f"[디버그] 받은 위치 데이터 개수: {len(positions)}") + if len(positions) > 0: + print(f"[디버그] 위치 데이터 샘플: {list(positions.items())[:3]}") + + # 위치 히스토리 업데이트 + for obj_name, (x, y, z) in positions.items(): + if obj_name not in self.positions_history: + self.positions_history[obj_name] = [] + + # XZ 평면에 투영 (Unity는 Y가 위쪽) + self.positions_history[obj_name].append((x, z)) + + # 최대 개수 제한 + if len(self.positions_history[obj_name]) > self.max_history: + self.positions_history[obj_name].pop(0) + + # 색상 배열 업데이트 (새 객체가 추가되었을 때) + if len(self.positions_history) > 0: + if self.colors is None or len(self.colors) < len(self.positions_history): + self.colors = plt.cm.tab10(np.linspace(0, 1, len(self.positions_history))) + + # set_data() 방식으로 업데이트 (성능 최적화) + # 기존 Line2D 객체의 데이터만 업데이트하므로 ax.clear()보다 훨씬 빠름 + active_objects = [] + + for idx, (obj_name, history) in enumerate(self.positions_history.items()): + if len(history) == 0: + continue + + active_objects.append(obj_name) + xs, zs = zip(*history) + color = self.colors[idx] if self.colors is not None else 'blue' + + # 궤적 선 업데이트 또는 생성 + if obj_name not in self.trajectory_lines: + line, = self.ax.plot([], [], '-', color=color, alpha=0.5, linewidth=1) + self.trajectory_lines[obj_name] = line + + self.trajectory_lines[obj_name].set_data(xs, zs) + + # 현재 위치 마커 업데이트 또는 생성 + if obj_name not in self.marker_points: + marker, = self.ax.plot([], [], 'o', color=color, markersize=8, label=obj_name) + self.marker_points[obj_name] = marker + + self.marker_points[obj_name].set_data([xs[-1]], [zs[-1]]) + self.marker_points[obj_name].set_color(color) + + # 사용하지 않는 객체의 Line2D 제거 + for obj_name in list(self.trajectory_lines.keys()): + if obj_name not in active_objects: + self.trajectory_lines[obj_name].remove() + del self.trajectory_lines[obj_name] + if obj_name in self.marker_points: + self.marker_points[obj_name].remove() + del self.marker_points[obj_name] + + # 축 범위 자동 조정 + if active_objects: + all_xs = [] + all_zs = [] + for obj_name in active_objects: + if obj_name in self.positions_history and len(self.positions_history[obj_name]) > 0: + xs, zs = zip(*self.positions_history[obj_name]) + all_xs.extend(xs) + all_zs.extend(zs) + + if all_xs and all_zs: + margin = 0.1 # 10% 여백 + x_range = max(all_xs) - min(all_xs) if len(set(all_xs)) > 1 else 1.0 + z_range = max(all_zs) - min(all_zs) if len(set(all_zs)) > 1 else 1.0 + + self.ax.set_xlim(min(all_xs) - x_range * margin, max(all_xs) + x_range * margin) + self.ax.set_ylim(min(all_zs) - z_range * margin, max(all_zs) + z_range * margin) + + # 타이틀 업데이트 + title = f'Unity 객체 위치 실시간 추적 (객체 수: {len(active_objects)})' + self.ax.set_title(title, fontsize=14) + + # 범례 업데이트 + if active_objects: + handles = [self.marker_points[obj_name] for obj_name in active_objects if obj_name in self.marker_points] + if handles: + self.ax.legend(handles, active_objects, loc='upper right', fontsize=8) + else: + # 데이터가 없을 때 메시지 표시 + if not hasattr(self, '_waiting_text') or self._waiting_text is None: + self._waiting_text = self.ax.text(0.5, 0.5, + '위치 데이터를 기다리는 중...\nUnity에서 객체를 추적하고 있는지 확인하세요.', + ha='center', va='center', transform=self.ax.transAxes, fontsize=12) + elif active_objects: + self._waiting_text.remove() + self._waiting_text = None + + except Exception as e: + print(f"업데이트 오류: {e}") + import traceback + traceback.print_exc() + + def start_plotting(self): + """실시간 plotting 시작""" + if self.env is None: + print("Unity에 연결되지 않았습니다!") + return + + print("\n그래프 설정 중...") + self.setup_plot() + print(" → 그래프 창 준비 완료") + + # Unity 환경 스텝을 별도 스레드에서 실행 (GUI 블로킹 방지) + self.running = True + self.env_thread = threading.Thread(target=self._unity_step_loop, daemon=True) + self.env_thread.start() + print(" → Unity 환경 스텝 스레드 시작됨 (GUI 블로킹 방지)") + + print("\n" + "="*60) + print("✅ 실시간 plotting 시작!") + print("="*60) + print("그래프 창이 곧 열립니다...") + print("종료하려면 그래프 창을 닫으세요.") + print("="*60 + "\n") + + # Animation 시작 + ani = animation.FuncAnimation( + self.fig, + self.update_plot, + interval=self.update_interval, + blit=False, # set_data() 사용 시 blit=False 권장 + cache_frame_data=False + ) + + # matplotlib 창 표시 (블로킹) + plt.show() + + # 창이 닫히면 스레드 종료 + print("\n그래프 창이 닫혔습니다. 종료 중...") + self.running = False + + def cleanup(self): + """리소스 정리""" + # Unity 스텝 스레드 종료 + self.running = False + if self.env_thread is not None: + self.env_thread.join(timeout=2.0) # 최대 2초 대기 + + # Unity 환경 종료 + if self.env is not None: + with self.env_lock: + self.env.close() + print("Unity 연결 해제됨") + + +def main(): + """메인 함수""" + import argparse + + parser = argparse.ArgumentParser(description='Unity 객체 위치 실시간 plot') + parser.add_argument('--port', type=int, default=5004, help='Unity ML-Agents 포트 (기본: 5004)') + parser.add_argument('--interval', type=int, default=50, help='업데이트 간격(ms) (기본: 50)') + parser.add_argument('--timeout', type=int, default=60, help='연결 타임아웃(초) (기본: 60)') + parser.add_argument('--retries', type=int, default=3, help='최대 재시도 횟수 (기본: 3)') + args = parser.parse_args() + + print("="*60) + print("Unity 객체 위치 실시간 Plotter") + print("="*60) + print("\n사용 방법:") + print("방법 1: Python 스크립트를 먼저 실행한 후 Unity에서 Play 버튼 클릭") + print("방법 2: Unity에서 Play 버튼을 먼저 누른 후 Python 스크립트 실행") + print("\n연결을 기다리는 중...") + print("="*60 + "\n") + + plotter = UnityPositionPlotter(port=args.port, update_interval=args.interval) + + if not plotter.connect_unity(timeout=args.timeout, max_retries=args.retries): + print("\n❌ Unity 연결에 실패했습니다.") + print("\n문제 해결 체크리스트:") + print(" □ Unity 에디터가 실행 중인가요?") + print(" □ Unity에서 Play 버튼을 눌렀나요?") + print(" □ Unity 씬에 ML-Agents Academy가 있나요?") + print(" □ Unity 씬에 Agent가 있나요?") + print(" □ Agent의 Behavior Parameters가 올바르게 설정되어 있나요?") + print(" □ 포트 5004가 다른 프로그램에 의해 사용 중이 아닌가요?") + print("\nUnity Console의 에러 메시지를 확인하세요.") + return + + try: + plotter.start_plotting() + except KeyboardInterrupt: + print("\n사용자에 의해 중단되었습니다.") + except Exception as e: + print(f"\n오류 발생: {e}") + import traceback + traceback.print_exc() + finally: + plotter.cleanup() + + +if __name__ == "__main__": + main() diff --git a/Assets/Scripts/Connect_python/realtime_position_plotter.py.meta b/Assets/Scripts/Connect_python/realtime_position_plotter.py.meta new file mode 100644 index 000000000..7b51dfde1 --- /dev/null +++ b/Assets/Scripts/Connect_python/realtime_position_plotter.py.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0c8c52c352b090d4c88f711a40e03293 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Connect_python/venv.meta b/Assets/Scripts/Connect_python/venv.meta new file mode 100644 index 000000000..ed6f2fcfd --- /dev/null +++ b/Assets/Scripts/Connect_python/venv.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 44a0f2166e3fb1140941d7b444d98e5c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Defense.meta b/Assets/Scripts/Defense.meta new file mode 100644 index 000000000..3ec499644 --- /dev/null +++ b/Assets/Scripts/Defense.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d73691185f73e5c4b9ab2272d378cac5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Defense/Defence.onnx b/Assets/Scripts/Defense/Defence.onnx new file mode 100644 index 000000000..f139ac9e3 Binary files /dev/null and b/Assets/Scripts/Defense/Defence.onnx differ diff --git a/Assets/Scripts/Defense/Defence.onnx.meta b/Assets/Scripts/Defense/Defence.onnx.meta new file mode 100644 index 000000000..cee0c8bc0 --- /dev/null +++ b/Assets/Scripts/Defense/Defence.onnx.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: bd45346d45aae2b4a8427413273c7d98 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 683b6cb6d0a474744822c888b46772c9, type: 3} + optimizeModel: 1 + forceArbitraryBatchSize: 1 + treatErrorsAsWarnings: 0 + importMode: 1 + weightsTypeMode: 0 + activationTypeMode: 0 diff --git a/Assets/Scripts/Defense/DefenseEnvController.cs b/Assets/Scripts/Defense/DefenseEnvController.cs new file mode 100644 index 000000000..3e33aee7a --- /dev/null +++ b/Assets/Scripts/Defense/DefenseEnvController.cs @@ -0,0 +1,2075 @@ +using UnityEngine; +using Unity.MLAgents; +using Cinemachine; +using System.Linq; + +namespace BoatAttack +{ + /// + /// 커리큘럼 학습 단계 + /// + public enum TrainingStage + { + Stage1_Formation, // 대형 유지 학습 + Stage2_Capture, // 포획 보상 학습 + Stage3_Tactical // 전술 기동 학습 + } + + /// + /// 방어 환경 컨트롤러 (중앙 허브 버전) + /// - 모든 에피소드 재시작 로직을 중앙에서 관리 + /// - 그룹 보상 분배 및 환경 관리 + /// - 선박 위치 리셋 및 적군 추적 + /// - 에피소드 시작/종료 관리 + /// - 커리큘럼 학습 단계별 보상 제어 + /// + public class DefenseEnvController : MonoBehaviour + { + [Header("Training Stage")] + [Tooltip("현재 학습 단계 (Stage1: 대형유지, Stage2: 포획, Stage3: 전술기동)")] + public TrainingStage currentStage = TrainingStage.Stage1_Formation; + + [Tooltip("Stage1에서 적군 비활성화")] + public bool disableEnemiesInStage1 = true; + + [Tooltip("Stage1에서 활성화할 적군 수 (disableEnemiesInStage1이 false일 때)")] + [Range(0, 5)] + public int stage1EnemyCount = 0; + + [Tooltip("Stage2에서 활성화할 적군 수")] + [Range(1, 5)] + public int stage2EnemyCount = 1; + + [Tooltip("Stage3에서 활성화할 적군 수")] + [Range(1, 5)] + public int stage3EnemyCount = 1; + + [Header("Agents")] + [Tooltip("방어 에이전트 1")] + public DefenseAgent defenseAgent1; + + [Tooltip("방어 에이전트 2")] + public DefenseAgent defenseAgent2; + + [Header("Components")] + [Tooltip("SimpleMultiAgentGroup (선택사항 - 없으면 개별 보상으로 fallback)")] + public SimpleMultiAgentGroup m_AgentGroup; + + [Tooltip("보상 계산기")] + public DefenseRewardCalculator rewardCalculator; + + [Header("Settings")] + [Tooltip("보상 계산 주기 (프레임 단위, 1 = 매 프레임)")] + public int rewardCalculationInterval = 1; + + [Tooltip("최대 환경 스텝 수 (에피소드가 이 스텝 수에 도달하면 자동 종료)")] + public int maxEnvironmentSteps = 5000; + + [Tooltip("모선 참조")] + public GameObject motherShip; + + [Tooltip("적군 선박들")] + public GameObject[] enemyShips = new GameObject[5]; + + [Tooltip("Web 오브젝트")] + public GameObject webObject; + + [Header("Spawn Positions")] + [Tooltip("방어 선박 1 초기 위치")] + public Vector3 defense1SpawnPos = new Vector3(-115f, -8f, -10f); + + [Tooltip("방어 선박 1 초기 각도 (Euler 각도)")] + public Vector3 defense1SpawnRot = new Vector3(0f, 0f, 0f); + + [Tooltip("방어 선박 2 초기 위치")] + public Vector3 defense2SpawnPos = new Vector3(0f, -8f, -6f); + + [Tooltip("방어 선박 2 초기 각도 (Euler 각도)")] + public Vector3 defense2SpawnRot = new Vector3(0f, 0f, 0f); + + [Tooltip("Web 오브젝트 위치 (2대 중간)")] + public Vector3 webSpawnPos = new Vector3(0f, 0.8f, 0f); + + [Header("Episode End Conditions")] + [Tooltip("Web/MotherShip 충돌 최대 허용 횟수 (이 횟수 이상 충돌 시 에피소드 종료)")] + public int maxCollisionCount = 1; + + [Header("Random Spawn Settings")] + [Tooltip("랜덤 스폰 범위 (기존 위치에서 반경 내 원형 영역)")] + public float spawnRange = 30f; + + [Tooltip("랜덤 스폰 활성화 (에피소드 시작 시 랜덤 위치로 재생성)")] + public bool enableRandomSpawn = true; + + [Tooltip("아군 선박 랜덤 시작 각도 범위 (±도)")] + public float defenseRandomAngleRange = 30f; + + [Header("Enemy Path Randomization")] + [Tooltip("적군 경로 랜덤화 활성화")] + public bool enableEnemyPathRandomization = true; + + [Tooltip("적군 경로 랜덤 할당 활성화 (리셋 시 attack_track 중 랜덤 선택)")] + public bool enableRandomPathAssignment = true; + + [Header("Explosion Settings")] + [Tooltip("폭발 효과 Prefab (War FX)")] + public GameObject explosionPrefab; + + [Tooltip("폭발 효과 크기 배율")] + [Range(5f, 50f)] + public float explosionScale = 23f; + + [Tooltip("폭발 효과 지속 시간 (초) - 이 시간 후 에피소드 재시작")] + public float explosionDuration = 2.0f; + + [Header("Episode End Conditions")] + [Tooltip("모든 적군 선박 파괴 시 에피소드 종료")] + public bool endEpisodeOnAllEnemiesDestroyed = true; + + [Tooltip("아군 간 최대 허용 거리 (이 거리 초과 시 에피소드 종료)")] + public float maxAllyDistance = 120f; // Stage1 최적거리(50m) + 대형붕괴거리(100m) 사이 여유 + + [Tooltip("아군 간 최소 허용 거리 (이 거리 미만 시 에피소드 종료)")] + public float minAllyDistance = 4f; + + [Header("Weather Randomization")] + [Tooltip("에피소드 시작 시 날씨(파도/바람) 랜덤화 활성화")] + public bool randomizeWeatherOnEpisode = false; + + [Tooltip("환경 컨트롤러 (날씨 랜덤화용)")] + public EnvironmentController environmentController; + + [Header("Multi-Environment")] + [Tooltip("환경 루트 Transform (Island Level 등). 비어있으면 부모 또는 자기 자신 사용")] + public Transform environmentRoot; + + [Header("Reward Monitor (Read Only)")] + [SerializeField] private float _currentEpisodeReward = 0f; + [SerializeField] private float _lastStepReward = 0f; + [SerializeField] private int _currentStep = 0; + [SerializeField] private int _totalCollisions = 0; + + private int _resetTimer = 0; // FixedUpdate 기반 타이머 + private bool _episodeActive = false; + private bool _episodeEnding = false; // 에피소드 종료 중 플래그 (중복 호출 방지) + + // 에피소드 추적 + private int _episodeNumber = 0; // 에피소드 번호 (재시작 확인용) + + // 충돌 횟수 추적 (Web + MotherShip 통합 카운트) + private int _totalCollisionCount = 0; // 총 충돌 횟수 (Web + MotherShip 합산) + + // 중복 충돌 방지 (같은 적군 선박이 짧은 시간 내 여러 번 충돌하는 것 방지) + private float _collisionCooldown = 2.0f; // 충돌 쿨다운 시간 (초) + private System.Collections.Generic.Dictionary _collisionCooldownTimes = new System.Collections.Generic.Dictionary(); + + // 위치 리셋 관련 + private int _lastResetFrame = -1; // 중복 리셋 방지용 + private bool _isResettingPositions = false; // 위치 리셋 코루틴 실행 중 플래그 + private WebCollisionDetector _webDetector; + + // 원래 위치 및 각도 저장 (랜덤 스폰용) + private Vector3 _originalDefense1Pos; + private Vector3 _originalDefense2Pos; + private Quaternion _originalDefense1Rot; + private Quaternion _originalDefense2Rot; + + // 씬의 모든 attack_track 경로 (랜덤 할당용) + private CinemachineSmoothPath[] _availableAttackPaths; + + // 각 경로별 원본 웨이포인트 저장 (랜덤화용) + private Vector3[][] _allOriginalWaypoints; + + // 아군 선박 좌/우 위치 추적 (위치 교차 감지용) + // 에피소드 시작 시 agent1이 agent2의 왼쪽에 있으면 true + private bool _agent1StartsOnLeft = true; + private System.Collections.Generic.Dictionary _originalEnemyPositions = + new System.Collections.Generic.Dictionary(); + private System.Collections.Generic.Dictionary _originalBoatPositions = + new System.Collections.Generic.Dictionary(); // 태그가 "boat"인 모든 선박의 초기 위치 + private System.Collections.Generic.Dictionary _originalBoatRotations = + new System.Collections.Generic.Dictionary(); // 태그가 "boat"인 모든 선박의 초기 각도 + + // 적군 선박 (attack_boat 태그) 관리 + private System.Collections.Generic.List _attackBoats = new System.Collections.Generic.List(); + private System.Collections.Generic.Dictionary _attackBoatInitialPositions = new System.Collections.Generic.Dictionary(); + private System.Collections.Generic.Dictionary _attackBoatInitialPaths = new System.Collections.Generic.Dictionary(); + private System.Collections.Generic.Dictionary _attackBoatPrefabs = new System.Collections.Generic.Dictionary(); // 원본 attack_boat 프리팹 저장 (재생성용, 이름을 키로 사용) + private System.Collections.Generic.Dictionary _attackBoatInitialPositionsByName = new System.Collections.Generic.Dictionary(); // 이름 기반 초기 위치 저장 (재생성용) + private System.Collections.Generic.Dictionary _attackBoatInitialPathsByName = new System.Collections.Generic.Dictionary(); // 이름 기반 초기 경로 저장 (재생성용) + private System.Collections.Generic.HashSet _destroyedAttackBoatNames = new System.Collections.Generic.HashSet(); // 파괴된 attack_boat 이름 추적 + private int _initialAttackBoatCount = 0; + + // Inspector에서 Stage 변경 시 자동 적용 (에디터 전용) + private TrainingStage _lastStage; + + #region Multi-Environment Helpers + + /// + /// 환경 루트 Transform 반환 (멀티 환경 학습용) + /// environmentRoot → 부모 → 자기 자신 순서로 fallback + /// + private Transform GetEnvironmentRoot() + { + if (environmentRoot != null) return environmentRoot; + if (transform.parent != null) return transform.parent; + return transform; + } + + /// + /// 현재 환경 내에서만 특정 태그의 GameObject를 찾기 (다른 환경의 오브젝트 제외) + /// + private GameObject[] FindGameObjectsWithTagInEnvironment(string tag) + { + var root = GetEnvironmentRoot(); + var allWithTag = GameObject.FindGameObjectsWithTag(tag); + var result = new System.Collections.Generic.List(); + foreach (var obj in allWithTag) + { + if (obj != null && obj.transform.IsChildOf(root)) + result.Add(obj); + } + return result.ToArray(); + } + + /// + /// 현재 환경 내에서만 특정 태그의 단일 GameObject를 찾기 + /// + private GameObject FindGameObjectWithTagInEnvironment(string tag) + { + var root = GetEnvironmentRoot(); + var allWithTag = GameObject.FindGameObjectsWithTag(tag); + foreach (var obj in allWithTag) + { + if (obj != null && obj.transform.IsChildOf(root)) + return obj; + } + return null; + } + + /// + /// 현재 환경 내에서만 컴포넌트 검색 (다른 환경의 컴포넌트 제외) + /// + private T[] FindComponentsInEnvironment() where T : Component + { + return GetEnvironmentRoot().GetComponentsInChildren(true); + } + + #endregion + + private void OnValidate() + { + // Play 모드에서만 실행 + if (!Application.isPlaying) + return; + + // Stage가 변경되었는지 확인 + if (_lastStage != currentStage) + { + _lastStage = currentStage; + + ApplyStageSettings(); + } + } + + private void Start() + { + // 초기 Stage 저장 + _lastStage = currentStage; + + // SimpleMultiAgentGroup 초기화 + if (m_AgentGroup == null) + { + m_AgentGroup = new SimpleMultiAgentGroup(); + } + + // 에이전트 등록 (SimpleMultiAgentGroup이 있는 경우만) + if (m_AgentGroup != null) + { + if (defenseAgent1 != null) + m_AgentGroup.RegisterAgent(defenseAgent1); + if (defenseAgent2 != null) + m_AgentGroup.RegisterAgent(defenseAgent2); + + } + + // RewardCalculator 초기화 + if (rewardCalculator == null) + { + rewardCalculator = GetComponent(); + } + + // Stage별 적군 활성화/비활성화 + ApplyStageSettings(); + + // 모선 찾기 (환경 내에서만 검색) + if (motherShip == null) + { + motherShip = FindGameObjectWithTagInEnvironment("MotherShip"); + } + + // MotherShipCollisionDetector에 envController 할당 + if (motherShip != null) + { + var motherShipDetector = motherShip.GetComponent(); + if (motherShipDetector != null) + { + motherShipDetector.envController = this; + } + } + + // WebCollisionDetector 설정 + if (webObject != null) + { + _webDetector = webObject.GetComponent(); + if (_webDetector == null) + { + _webDetector = webObject.AddComponent(); + } + _webDetector.envController = this; + + // DynamicWeb에도 envController 할당 + var dynamicWeb = webObject.GetComponent(); + if (dynamicWeb != null) + { + dynamicWeb.envController = this; + } + } + + // 에이전트 페어링 + if (defenseAgent1 != null && defenseAgent2 != null) + { + defenseAgent1.partnerAgent = defenseAgent2; + defenseAgent2.partnerAgent = defenseAgent1; + + defenseAgent1.webObject = webObject; + defenseAgent2.webObject = webObject; + + // 모선 참조 할당 (멀티 환경에서 올바른 모선을 사용하도록) + if (motherShip != null) + { + defenseAgent1.motherShip = motherShip; + defenseAgent2.motherShip = motherShip; + } + + // 적군 배열 설정 + if (enemyShips != null && enemyShips.Length > 0) + { + defenseAgent1.enemyShips = enemyShips; + defenseAgent2.enemyShips = enemyShips; + } + } + + // 원점 = 실제 에이전트의 현재 위치 사용 (멀티 환경 호환) + // 환경을 복제하면 에이전트도 함께 이동하므로, 실제 위치를 저장해야 올바른 리셋 좌표를 사용 + _originalDefense1Pos = (defenseAgent1 != null) ? defenseAgent1.transform.position : defense1SpawnPos; + _originalDefense2Pos = (defenseAgent2 != null) ? defenseAgent2.transform.position : defense2SpawnPos; + + // 회전도 실제 에이전트 각도 사용 (fallback: 인스펙터 값) + _originalDefense1Rot = (defenseAgent1 != null) ? defenseAgent1.transform.rotation : Quaternion.Euler(defense1SpawnRot); + _originalDefense2Rot = (defenseAgent2 != null) ? defenseAgent2.transform.rotation : Quaternion.Euler(defense2SpawnRot); + + // 태그가 "boat"인 모든 GameObject의 초기 위치 및 각도 저장 (WAKE 제외, 환경 내에서만) + _originalBoatPositions.Clear(); + _originalBoatRotations.Clear(); + GameObject[] allBoats = FindGameObjectsWithTagInEnvironment("boat"); + foreach (var boat in allBoats) + { + // WAKE 객체는 제외 (파도 효과 등) + if (boat != null && !boat.name.Contains("WAKE") && !boat.name.Contains("Wake") && !_originalBoatPositions.ContainsKey(boat)) + { + _originalBoatPositions[boat] = boat.transform.position; + _originalBoatRotations[boat] = boat.transform.rotation; + } + } + + // 적군 원래 위치 저장 + if (enemyShips != null) + { + foreach (var enemy in enemyShips) + { + if (enemy != null && !_originalEnemyPositions.ContainsKey(enemy)) + { + _originalEnemyPositions[enemy] = enemy.transform.position; + } + } + } + + // attack_boat 태그를 가진 모든 적군 선박 찾기 및 초기 위치 저장 + FindAndSaveAttackBoats(); + + // 씬의 모든 attack_track 경로 수집 및 원본 웨이포인트 저장 + FindAllAttackTrackPaths(); + SaveOriginalWaypoints(); + + // 첫 에피소드 시작 (PushBlockEnvController 패턴) + ResetScene(); + + } + + /// + /// PushBlockEnvController 패턴: FixedUpdate에서 타이머 관리 + /// + private void FixedUpdate() + { + // 에피소드가 종료 중이면 타이머 증가하지 않음 + if (_episodeEnding) + return; + + // 에피소드가 활성화되지 않았으면 타이머만 증가하지 않음 (종료 조건은 체크 가능) + if (!_episodeActive) + return; + + _resetTimer++; + + // 최대 스텝 수 체크 (PushBlockEnvController 패턴) + if (_resetTimer >= maxEnvironmentSteps && maxEnvironmentSteps > 0) + { + RestartEpisode("MaxEnvironmentSteps"); + return; + } + + // 아군 간 거리 체크 (최대/최소) + if (defenseAgent1 != null && defenseAgent2 != null) + { + Vector3 pos1 = defenseAgent1.transform.position; + Vector3 pos2 = defenseAgent2.transform.position; + float allyDist = Vector3.Distance(pos1, pos2); + + // 최대 거리 초과 체크 + if (maxAllyDistance > 0f && allyDist > maxAllyDistance) + { + RestartEpisode("AllyDistanceExceeded", rewardCalculator.collisionPenalty); + return; + } + + // 최소 거리 미달 체크 + if (minAllyDistance > 0f && allyDist < minAllyDistance) + { + RestartEpisode("AllyDistanceTooClose", rewardCalculator.collisionPenalty); + return; + } + + // 위치 교차 체크 (왼쪽/오른쪽 위치가 바뀌면 페널티) + bool agent1CurrentlyOnLeft = pos1.x < pos2.x; + if (agent1CurrentlyOnLeft != _agent1StartsOnLeft) + { + RestartEpisode("PositionSwapped", rewardCalculator.collisionPenalty); + return; + } + } + + // 보상 계산 주기 확인 + if (_resetTimer % rewardCalculationInterval != 0) + return; + + if (defenseAgent1 == null || defenseAgent2 == null || rewardCalculator == null) + return; + + // 상태 수집 → 보상 계산 (대형 유지 + 적 접근 + 시간 페널티) + var agent1State = rewardCalculator.GetAgentState(defenseAgent1); + var agent2State = rewardCalculator.GetAgentState(defenseAgent2); + float stepReward = rewardCalculator.CalculateStepReward( + agent1State, agent2State, enemyShips, webObject); + + // Inspector 모니터링 + _lastStepReward = stepReward; + _currentEpisodeReward += stepReward; + _currentStep = _resetTimer; + _totalCollisions = _totalCollisionCount; + + // 그룹 보상 부여 (대형 유지 + 적 접근 + 시간 페널티) + if (Mathf.Abs(stepReward) > 0.0001f) + { + if (m_AgentGroup != null) + { + m_AgentGroup.AddGroupReward(stepReward); + } + else + { + if (defenseAgent1 != null) + defenseAgent1.AddReward(stepReward); + if (defenseAgent2 != null) + defenseAgent2.AddReward(stepReward); + } + } + + // 개별 보상: 헤딩 정렬 (에이전트가 적을 향하면 보상) + float heading1 = rewardCalculator.CalculateIndividualHeadingReward(agent1State, enemyShips); + float heading2 = rewardCalculator.CalculateIndividualHeadingReward(agent2State, enemyShips); + if (heading1 > 0f && defenseAgent1 != null) + defenseAgent1.AddReward(heading1); + if (heading2 > 0f && defenseAgent2 != null) + defenseAgent2.AddReward(heading2); + } + + #region 중앙 허브: 통합 에피소드 재시작 로직 + + /// + /// 통합 에피소드 재시작 메서드 (중앙 허브) + /// 모든 에피소드 재시작 로직을 여기서 처리합니다. + /// + /// 에피소드 종료 이유 (디버깅용) + /// 최종 보상 (선택사항) + public void RestartEpisode(string reason = "Unknown", float? finalReward = null) + { + // 중복 호출 방지 + if (_episodeEnding) + { + return; + } + + // 충돌 횟수 초기화 (에피소드 종료 시 즉시 리셋) + _totalCollisionCount = 0; + _collisionCooldownTimes.Clear(); + + // Inspector 모니터 초기화 + _currentEpisodeReward = 0f; + _lastStepReward = 0f; + _currentStep = 0; + _totalCollisions = 0; + + // 에피소드 번호 증가 및 로그 출력 + _episodeNumber++; + + // 타이머도 여기서 명시적으로 리셋 (안전장치) + _resetTimer = 0; + + // 1단계: 에피소드 종료 플래그 설정 + _episodeEnding = true; + + // 2단계: 최종 보상 부여 (있는 경우) + if (finalReward.HasValue) + { + if (m_AgentGroup != null) + { + m_AgentGroup.AddGroupReward(finalReward.Value); + } + else + { + if (defenseAgent1 != null) + defenseAgent1.AddReward(finalReward.Value); + if (defenseAgent2 != null) + defenseAgent2.AddReward(finalReward.Value); + } + } + + // 3단계: 에이전트 에피소드 종료 + if (m_AgentGroup != null) + { + m_AgentGroup.EndGroupEpisode(); + } + else + { + if (defenseAgent1 != null) + { + defenseAgent1.EndEpisode(); + } + if (defenseAgent2 != null) + { + defenseAgent2.EndEpisode(); + } + } + + // 5단계: 환경 리셋 + ResetScene(); + } + + /// + /// PushBlockEnvController 패턴: 환경 리셋 (ML-Agents가 OnEpisodeBegin을 자동 호출) + /// RestartEpisode()에서 호출됩니다. + /// + public void ResetScene() + { + + // 충돌 횟수 리셋 + _totalCollisionCount = 0; + + // 기존 리셋 코루틴 중지 및 플래그 초기화 + StopAllCoroutines(); + _isResettingPositions = false; + _lastResetFrame = -1; // 프레임 체크 초기화 + + // 에피소드 종료 플래그를 먼저 리셋하여 다음 FixedUpdate()에서 타이머가 증가하지 않도록 함 + _episodeEnding = false; + + // 에피소드는 코루틴 완료 후 활성화 (초기에는 false로 시작) + _episodeActive = false; + + _resetTimer = 0; + + // 파괴된 적군 선박 목록 초기화 (에피소드 재시작 시) + _destroyedAttackBoatNames.Clear(); + + // RewardCalculator 리셋 + if (rewardCalculator != null) + { + rewardCalculator.Reset(); + } + + // Stage 설정 적용 (에피소드 시작 시마다) + ApplyStageSettings(); + + // 날씨 랜덤화 (에피소드 시작 시) + if (randomizeWeatherOnEpisode && environmentController != null) + { + environmentController.RandomizeWeather(); + } + + // 적군 경로 웨이포인트 랜덤화 (선박 리셋 전에 호출) + RandomizeEnemyWaypoints(); + + // attack_boat의 대기 중인 Invoke 취소 (폭발 등) + CancelAttackBoatPendingActions(); + + // 모든 선박 리셋 + ResetPositionsOnly(); + + } + + #endregion + + /// + /// 에피소드 시작 (ML-Agents가 자동으로 호출, 환경 리셋은 ResetScene에서 처리) + /// + public void OnEpisodeBegin() + { + // 모든 WAKE 객체 제거 및 WakeGenerator 비활성화 + DestroyAllWakeObjects(); + } + + /// + /// 에피소드 종료 (레거시 호환성 - RestartEpisode()로 리다이렉트) + /// + public void OnEpisodeEnd() + { + RestartEpisode("OnEpisodeEnd"); + } + + /// + /// 적 포획 성공 처리 (중앙 허브로 리다이렉트) + /// + public void OnEnemyCaptured(Vector3 enemyPosition) + { + // 에피소드가 종료 중이면 무시 + if (_episodeEnding) + return; + + RestartEpisode("EnemyCaptured", rewardCalculator.captureReward); + } + + /// + /// 적군이 Web에 충돌 시 처리 - 적군과 아군 모두 원점으로 리셋 + /// 충돌 횟수가 maxCollisionCount 이상이면 에피소드 종료 + /// + public void OnEnemyHitWeb(GameObject enemyBoat) + { + // 에피소드가 종료 중이면 무시 + if (_episodeEnding) + return; + + if (enemyBoat == null) + return; + + // 중복 충돌 방지: 같은 적군 선박이 쿨다운 시간 내에 다시 충돌하면 무시 + float currentTime = Time.time; + if (_collisionCooldownTimes.ContainsKey(enemyBoat)) + { + float lastCollisionTime = _collisionCooldownTimes[enemyBoat]; + if (currentTime - lastCollisionTime < _collisionCooldown) + { + return; + } + } + + // 충돌 시간 기록 + _collisionCooldownTimes[enemyBoat] = currentTime; + + // 통합 충돌 횟수 증가 (Web + MotherShip 합산) + _totalCollisionCount++; + + float reward = rewardCalculator.captureReward; + + // 통합 충돌 횟수가 maxCollisionCount 이상이면 에피소드 종료 + if (_totalCollisionCount >= maxCollisionCount) + { + RestartEpisode("WebCollisionLimit", reward); + return; + } + + // 충돌 횟수가 maxCollisionCount 미만이면 보상 부여 후 해당 적군만 리셋 + if (m_AgentGroup != null) + { + m_AgentGroup.AddGroupReward(reward); + } + else + { + if (defenseAgent1 != null) + defenseAgent1.AddReward(reward); + if (defenseAgent2 != null) + defenseAgent2.AddReward(reward); + } + + // 적군 선박을 원점으로 리셋 (모선 충돌과 동일한 메커니즘 사용) + ResetSingleAttackBoat(enemyBoat); + + // 아군 선박 위치 리셋은 에피소드 종료 시에만 수행 (mid-episode 리셋 비활성화) + // ResetDefenseAgentsToOrigin(); + + // WebDetector 리셋 + if (_webDetector != null) + { + _webDetector.ResetDetector(); + } + } + + /// + /// 아군 선박이 Web과 충돌 시 처리 (페널티 + 에피소드 종료) + /// + public void OnAllyHitWeb(GameObject allyShip, float penalty) + { + if (_episodeEnding) + return; + + // 페널티 부여 후 에피소드 종료 + RestartEpisode("AllyHitWeb", penalty); + } + + /// + /// 아군 선박들을 원점으로 리셋 + /// + private void ResetDefenseAgentsToOrigin() + { + // 두 선박이 동일한 랜덤 각도를 바라보도록 한 번만 생성 + float sharedRandomAngle = enableRandomSpawn + ? Random.Range(-defenseRandomAngleRange, defenseRandomAngleRange) + : 0f; + + // 두 선박이 동일한 위치 오프셋을 공유 + Vector3 sharedOffset = GetSharedRandomOffset(); + + ResetDefenseAgentPosition(defenseAgent1, _originalDefense1Pos, _originalDefense1Rot, sharedRandomAngle, sharedOffset); + ResetDefenseAgentPosition(defenseAgent2, _originalDefense2Pos, _originalDefense2Rot, sharedRandomAngle, sharedOffset); + } + + /// + /// 모선 충돌 처리 - 해당 공격선만 원점으로 리셋 + /// 충돌 횟수가 maxCollisionCount 이상이면 에피소드 종료 + /// + public void OnMotherShipCollision(GameObject enemyBoat) + { + // 에피소드가 종료 중이면 무시 + if (_episodeEnding) + return; + + if (enemyBoat == null) + return; + + // 중복 충돌 방지: 같은 적군 선박이 쿨다운 시간 내에 다시 충돌하면 무시 + float currentTime = Time.time; + if (_collisionCooldownTimes.ContainsKey(enemyBoat)) + { + float lastCollisionTime = _collisionCooldownTimes[enemyBoat]; + if (currentTime - lastCollisionTime < _collisionCooldown) + { + return; + } + } + + // 충돌 시간 기록 + _collisionCooldownTimes[enemyBoat] = currentTime; + + // 통합 충돌 횟수 증가 (Web + MotherShip 합산) + _totalCollisionCount++; + + float penalty = rewardCalculator.motherShipHitPenalty; + + // 통합 충돌 횟수가 maxCollisionCount 이상이면 에피소드 종료 + if (_totalCollisionCount >= maxCollisionCount) + { + RestartEpisode("MotherShipCollisionLimit", penalty); + return; + } + + // 충돌 횟수 미만이면 페널티 부여 + 해당 공격선만 리셋 + if (m_AgentGroup != null) + { + m_AgentGroup.AddGroupReward(penalty); + } + else + { + if (defenseAgent1 != null) + defenseAgent1.AddReward(penalty); + if (defenseAgent2 != null) + defenseAgent2.AddReward(penalty); + } + + ResetSingleAttackBoat(enemyBoat); + } + + /// + /// 단일 공격선을 원점으로 리셋 (비활성화 없이 위치만 리셋 - Water System 호환) + /// + private void ResetSingleAttackBoat(GameObject attackBoat) + { + if (attackBoat == null) + return; + + string boatName = attackBoat.name.Replace("(Clone)", ""); + + // 1. Rigidbody 속도 초기화 + Sleep (비활성화 없이) + Rigidbody rb = attackBoat.GetComponent(); + if (rb != null) + { + rb.velocity = Vector3.zero; + rb.angularVelocity = Vector3.zero; + rb.Sleep(); // 물리 시뮬레이션 일시 정지 + } + + // 2. 원점 위치로 이동 + Vector3 initialPos = Vector3.zero; + if (_attackBoatInitialPositionsByName.ContainsKey(boatName)) + { + initialPos = _attackBoatInitialPositionsByName[boatName]; + } + else if (_attackBoatInitialPositions.ContainsKey(attackBoat)) + { + initialPos = _attackBoatInitialPositions[attackBoat]; + } + + attackBoat.transform.position = initialPos; + attackBoat.transform.rotation = Quaternion.identity; + + // Engine 리셋 (Gerstner 파도 안정화 전까지 _yHeight 조건 무시) + var boat = attackBoat.GetComponent(); + if (boat != null && boat.engine != null) + { + boat.engine.OnEpisodeReset(); + } + + // 3. Cinemachine Dolly Cart 리셋 (랜덤 경로 할당 또는 원래 경로 복원) + Cinemachine.CinemachineDollyCart dollyCart = attackBoat.GetComponent(); + if (dollyCart != null) + { + CinemachinePathBase assignedPath = null; + + if (enableRandomPathAssignment) + { + assignedPath = GetRandomAttackPath(); + } + + // 랜덤 경로가 없으면 원래 경로 fallback + if (assignedPath == null && _attackBoatInitialPathsByName.ContainsKey(boatName)) + { + assignedPath = _attackBoatInitialPathsByName[boatName]; + } + + if (assignedPath != null) + { + dollyCart.m_Path = assignedPath; + } + dollyCart.m_Position = 0f; + } + } + + /// + /// 아군 충돌 처리 (아군-아군 또는 아군-모선 충돌) + /// 에피소드 종료 + 페널티 부여 + /// + public void OnFriendlyCollision() + { + // 에피소드가 종료 중이면 무시 + if (_episodeEnding) + return; + + // RestartEpisode를 통해 일관된 방식으로 에피소드 종료 + // 패널티 부여 + EndGroupEpisode + ResetScene 모두 처리됨 + RestartEpisode("FriendlyCollision", rewardCalculator.collisionPenalty); + } + + #region DefenseBoatManager 통합 기능 + + /// + /// 적군 선박 파괴 요청 (DynamicWeb, WebCollisionDetector에서 호출) + /// 중앙 허브: 모든 파괴 로직을 중앙에서 관리 + /// + public void RequestAttackBoatDestruction(GameObject attackBoat) + { + if (attackBoat == null) + return; + + // 이미 파괴 요청이 처리되었는지 확인 + string boatName = attackBoat.name.Replace("(Clone)", ""); + if (_destroyedAttackBoatNames.Contains(boatName)) + { + return; + } + + // 다음 프레임에 파괴 처리 (물리 콜백 제약 회피) + StartCoroutine(DestroyAttackBoatNextFrame(attackBoat)); + } + + /// + /// 다음 프레임에 attack_boat 파괴 처리 (물리 콜백 제약 회피) + /// + private System.Collections.IEnumerator DestroyAttackBoatNextFrame(GameObject attackBoat) + { + // 다음 프레임까지 대기 (물리 콜백이 끝난 후) + yield return null; + + if (attackBoat == null) + { + yield break; + } + + // 파괴 처리 + OnAttackBoatDestroyed(attackBoat); + + // attack_boat 파괴 + Destroy(attackBoat); + } + + /// + /// 적군 선박이 파괴되었을 때 호출 (내부에서만 호출) + /// 중앙 허브: 모든 파괴 정보를 중앙에서 관리 + /// + private void OnAttackBoatDestroyed(GameObject destroyedBoat) + { + if (destroyedBoat == null) + return; + + // 파괴된 선박의 이름 저장 (파괴 후에도 추적 가능하도록) + string boatName = destroyedBoat.name.Replace("(Clone)", ""); + _destroyedAttackBoatNames.Add(boatName); + + // 초기 적군 선박 수가 0이면 다시 찾기 (Start()에서 찾지 못했을 수 있음) + if (_initialAttackBoatCount == 0) + { + FindAndSaveAttackBoats(); + } + + // 파괴된 선박을 리스트에서 제거 + _attackBoats.Remove(destroyedBoat); + + // null이거나 파괴된 객체 제거 + _attackBoats.RemoveAll(boat => boat == null); + + // 현재 활성화된 적군 선박 수 확인 (환경 내에서 직접 찾기, 파괴된 선박 제외) + GameObject[] allAttackBoatsInScene = FindGameObjectsWithTagInEnvironment("attack_boat"); + // 파괴된 선박 이름을 기준으로 제외 + int activeCount = allAttackBoatsInScene.Count(boat => + boat != null && + !_destroyedAttackBoatNames.Contains(boat.name.Replace("(Clone)", "")) + ); + + // _attackBoats 리스트에서 활성화된 선박 수 확인 + int activeInList = _attackBoats.Count(boat => + boat != null && + boat.activeSelf && + !_destroyedAttackBoatNames.Contains(boat.name.Replace("(Clone)", "")) + ); + + // 모든 적군 선박이 파괴되었는지 확인 + // 조건: 초기 적군 수가 0보다 크고, 씬에 활성화된 적군이 0개이고, 리스트에도 활성화된 선박이 0개 + if (endEpisodeOnAllEnemiesDestroyed && _initialAttackBoatCount > 0 && activeCount == 0 && activeInList == 0) + { + // 에피소드가 이미 종료 중인 경우 중복 호출 방지 + if (_episodeEnding) + { + return; + } + + // 통합 에피소드 재시작 메서드 호출 + RestartEpisode("AllEnemiesDestroyed"); + } + } + + /// + /// attack_boat 태그를 가진 모든 적군 선박 찾기 및 초기 위치 저장 + /// 중앙 허브: 모든 적군 선박 정보를 중앙에서 관리 + /// + private void FindAndSaveAttackBoats() + { + _attackBoats.Clear(); + _attackBoatInitialPositions.Clear(); + _attackBoatInitialPaths.Clear(); + // 프리팹 딕셔너리와 이름 기반 딕셔너리는 초기화하지 않음 (에피소드 재시작 시 재사용) + + // 현재 환경 내의 attack_boat 태그를 가진 객체 찾기 (멀티 환경 호환) + GameObject[] foundBoats = FindGameObjectsWithTagInEnvironment("attack_boat"); + + // enemyShips 배열 자동 동기화 (인스펙터에 할당된 것과 씬의 실제 객체를 동기화) + if (enemyShips == null || enemyShips.Length == 0 || enemyShips.All(e => e == null)) + { + enemyShips = new GameObject[foundBoats.Length]; + for (int i = 0; i < foundBoats.Length; i++) + { + enemyShips[i] = foundBoats[i]; + } + } + + foreach (var boat in foundBoats) + { + if (boat != null && !_attackBoats.Contains(boat)) + { + _attackBoats.Add(boat); + Vector3 initialPos = boat.transform.position; + _attackBoatInitialPositions[boat] = initialPos; + + // 원본 객체를 프리팹으로 저장 (파괴 후 재생성용) + // 이름을 키로 사용하여 같은 이름의 객체를 재생성할 수 있도록 함 + string boatName = boat.name.Replace("(Clone)", ""); // Clone 접미사 제거 + + // 이름 기반 초기 위치 저장 (재생성용) + if (!_attackBoatInitialPositionsByName.ContainsKey(boatName)) + { + _attackBoatInitialPositionsByName[boatName] = initialPos; + } + + if (!_attackBoatPrefabs.ContainsKey(boatName)) + { + // 원본 객체를 복제하여 프리팹으로 저장 (씬에 숨김) + GameObject prefabCopy = Instantiate(boat); + prefabCopy.name = boatName; // Clone 접미사 제거 + prefabCopy.SetActive(false); // 비활성화하여 숨김 + prefabCopy.hideFlags = HideFlags.HideInHierarchy | HideFlags.DontSave; // Hierarchy에서 숨기고 저장하지 않음 + _attackBoatPrefabs[boatName] = prefabCopy; + } + + // Cinemachine Dolly Cart의 Path 저장 + CinemachineDollyCart dollyCart = boat.GetComponent(); + if (dollyCart != null) + { + _attackBoatInitialPaths[boat] = dollyCart.m_Path; + // 이름 기반 경로 저장 (재생성용) + if (!_attackBoatInitialPathsByName.ContainsKey(boatName)) + { + _attackBoatInitialPathsByName[boatName] = dollyCart.m_Path; + } + } + else + { + _attackBoatInitialPaths[boat] = null; + if (!_attackBoatInitialPathsByName.ContainsKey(boatName)) + { + _attackBoatInitialPathsByName[boatName] = null; + } + } + } + } + + _initialAttackBoatCount = _attackBoats.Count; + } + + /// + /// 위치만 리셋 (외부에서 호출 가능, ML-Agents 에피소드 재시작 시 사용) + /// 모든 선박을 비활성화 → 위치 리셋 → 활성화 + /// + public void ResetPositionsOnly() + { + // 코루틴이 이미 실행 중이면 중복 호출 방지 + if (_isResettingPositions) + { + return; + } + + // 중복 호출 방지 (같은 프레임에서 여러 번 호출되는 것 방지) + if (_lastResetFrame == Time.frameCount) + { + return; + } + + _lastResetFrame = Time.frameCount; + + // 코루틴 실행 중 플래그 설정 (코루틴 시작 전에 설정하여 중복 실행 방지) + _isResettingPositions = true; + + // _originalBoatPositions 업데이트 (새로 생성된 boat가 있을 수 있음) + UpdateOriginalBoatPositions(); + + // 코루틴으로 비활성화 → 리셋 → 활성화 순서로 진행 + StartCoroutine(ResetPositionsWithDeactivation()); + } + + /// + /// _originalBoatPositions 딕셔너리 업데이트 (새로 생성된 boat 추가) + /// + private void UpdateOriginalBoatPositions() + { + GameObject[] allBoats = FindGameObjectsWithTagInEnvironment("boat"); + + int addedCount = 0; + foreach (var boat in allBoats) + { + // WAKE 객체는 제외 (파도 효과 등) + if (boat != null && !boat.name.Contains("WAKE") && !boat.name.Contains("Wake") && !_originalBoatPositions.ContainsKey(boat)) + { + _originalBoatPositions[boat] = boat.transform.position; + _originalBoatRotations[boat] = boat.transform.rotation; + addedCount++; + } + } + + // null이거나 WAKE인 항목 제거 + var keysToRemove = new System.Collections.Generic.List(); + foreach (var boat in _originalBoatPositions.Keys) + { + if (boat == null || boat.name.Contains("WAKE") || boat.name.Contains("Wake")) + { + keysToRemove.Add(boat); + } + } + foreach (var boat in keysToRemove) + { + _originalBoatPositions.Remove(boat); + _originalBoatRotations.Remove(boat); + } + } + + /// + /// 위치 리셋 코루틴 - 모든 선박 비활성화 없이 위치만 리셋 (Water System 호환) + /// + private System.Collections.IEnumerator ResetPositionsWithDeactivation() + { + + // 모든 WAKE 객체 제거 및 WakeGenerator 비활성화 + DestroyAllWakeObjects(); + + // ======================================== + // 1. 아군 선박(DefenseAgent) 위치 리셋 (비활성화 없이) + // ======================================== + + // 두 선박이 동일한 랜덤 각도를 바라보도록 한 번만 생성 + float sharedRandomAngle = enableRandomSpawn + ? Random.Range(-defenseRandomAngleRange, defenseRandomAngleRange) + : 0f; + + // 두 선박이 동일한 위치 오프셋을 공유 + Vector3 sharedOffset = GetSharedRandomOffset(); + + ResetDefenseAgentPosition(defenseAgent1, _originalDefense1Pos, _originalDefense1Rot, sharedRandomAngle, sharedOffset); + ResetDefenseAgentPosition(defenseAgent2, _originalDefense2Pos, _originalDefense2Rot, sharedRandomAngle, sharedOffset); + + // 아군 선박 좌/우 위치 기록 (위치 교차 감지용) + if (defenseAgent1 != null && defenseAgent2 != null) + { + Vector3 pos1 = defenseAgent1.transform.position; + Vector3 pos2 = defenseAgent2.transform.position; + // X축 기준으로 좌/우 판단 (pos1.x < pos2.x면 agent1이 왼쪽) + _agent1StartsOnLeft = pos1.x < pos2.x; + } + + // ======================================== + // 2. 적군 선박들 위치 리셋 (비활성화 없이 - Water System Dictionary 충돌 방지) + // ======================================== + ResetAttackBoatsToOrigin(); + + // WebDetector 리셋 + if (_webDetector != null) + { + _webDetector.ResetDetector(); + } + + yield return null; + + // 코루틴 실행 완료 플래그 해제 및 에피소드 활성화 + _isResettingPositions = false; + _episodeActive = true; + } + + /// + /// 아군 선박 위치만 리셋 (비활성화 없이) + /// originalPos = Start() 시점의 실제 에이전트 위치 (멀티 환경 호환) + /// sharedPositionOffset = 두 에이전트가 공유하는 위치 오프셋 + /// + private void ResetDefenseAgentPosition(DefenseAgent agent, Vector3 originalPos, Quaternion originalRot, float sharedRandomAngle, Vector3 sharedPositionOffset) + { + if (agent == null) + return; + + // 공유 오프셋 적용 (두 에이전트가 동일한 오프셋 사용) + Vector3 targetPos = originalPos + sharedPositionOffset; + + // 랜덤 스폰: 각도만 적용 (위치는 이미 공유 오프셋으로 적용됨) + Quaternion targetRot = originalRot; + if (enableRandomSpawn) + { + targetRot = originalRot * Quaternion.Euler(0f, sharedRandomAngle, 0f); + } + + // Rigidbody 속도 초기화 + Sleep + if (agent.TryGetComponent(out var rb)) + { + rb.velocity = Vector3.zero; + rb.angularVelocity = Vector3.zero; + rb.Sleep(); // 물리 시뮬레이션 일시 정지 (누적된 힘 제거) + } + + // 위치와 회전 설정 + agent.transform.position = targetPos; + agent.transform.rotation = targetRot; + + // Engine 리셋 (Gerstner 파도 안정화 전까지 _yHeight 조건 무시) + if (agent._engine != null) + { + agent._engine.OnEpisodeReset(); + } + } + + /// + /// 모든 적군 선박 (attack_boat 태그)을 원점으로 리셋 + /// 에피소드 재시작 시 호출되며, 파괴된 적군 선박도 다시 생성 + /// Stage 설정에 따라 재생성 수 제한 + /// + private void ResetAttackBoatsToOrigin() + { + // null이거나 파괴된 객체 제거 + _attackBoats.RemoveAll(boat => boat == null); + + // Stage에 따른 목표 적군 수 결정 + int stageTargetCount = GetActiveEnemyCountForStage(); + + // Stage1에서 적군 0대면 재생성 스킵 + if (stageTargetCount == 0) + { + return; + } + + // 현재 환경 내의 attack_boat 다시 찾기 (멀티 환경 호환) + GameObject[] allAttackBoatsInScene = FindGameObjectsWithTagInEnvironment("attack_boat"); + + // 파괴된 attack_boat 재생성 + int recreatedCount = 0; + + // Stage 설정에 맞는 적군 수만큼만 재생성 + int targetCount = Mathf.Min( + stageTargetCount, + _initialAttackBoatCount > 0 ? _initialAttackBoatCount : _attackBoatPrefabs.Count + ); + + foreach (var kvp in _attackBoatPrefabs) + { + string boatName = kvp.Key; + GameObject prefab = kvp.Value; + + if (prefab == null) continue; + + // 씬에서 같은 이름의 객체를 찾을 수 있는지 확인 + bool foundInScene = false; + GameObject existingBoat = null; + foreach (var boat in allAttackBoatsInScene) + { + if (boat == null) continue; + string sceneBoatName = boat.name.Replace("(Clone)", ""); + if (sceneBoatName == boatName) + { + foundInScene = true; + existingBoat = boat; + break; + } + } + + // 씬에 없으면 재생성 필요 (단, 목표 수 초과 시 스킵) + if (!foundInScene && recreatedCount < targetCount) + { + // 프리팹에서 재생성 (환경 루트 아래에 배치하여 멀티 환경 호환) + GameObject recreatedBoat = Instantiate(prefab, GetEnvironmentRoot()); + recreatedBoat.name = boatName; // 원본 이름 유지 + recreatedBoat.tag = "attack_boat"; // 태그 설정 + recreatedBoat.SetActive(true); // 활성화 + + // 초기 위치 찾기 (이름 기반 Dictionary에서 찾기) + Vector3 initialPos = Vector3.zero; + if (_attackBoatInitialPositionsByName.ContainsKey(boatName)) + { + initialPos = _attackBoatInitialPositionsByName[boatName]; + } + + recreatedBoat.transform.position = initialPos; + recreatedBoat.transform.rotation = Quaternion.identity; + + // Cinemachine Dolly Cart 리셋 (랜덤 경로 할당) + CinemachineDollyCart dollyCart = recreatedBoat.GetComponent(); + if (dollyCart != null) + { + CinemachinePathBase assignedPath = enableRandomPathAssignment ? GetRandomAttackPath() : null; + + if (assignedPath == null && _attackBoatInitialPathsByName.ContainsKey(boatName)) + { + assignedPath = _attackBoatInitialPathsByName[boatName]; + } + + if (assignedPath != null) + { + dollyCart.m_Path = assignedPath; + dollyCart.m_Position = 0f; + } + } + + // Rigidbody 리셋 + Rigidbody rb = recreatedBoat.GetComponent(); + if (rb != null) + { + rb.velocity = Vector3.zero; + rb.angularVelocity = Vector3.zero; + } + + // 리스트에 추가 + _attackBoats.Add(recreatedBoat); + _attackBoatInitialPositions[recreatedBoat] = initialPos; + if (dollyCart != null) + { + _attackBoatInitialPaths[recreatedBoat] = dollyCart.m_Path; + } + + // 이름 기반 Dictionary도 업데이트 (재생성된 객체용) + if (!_attackBoatInitialPositionsByName.ContainsKey(boatName)) + { + _attackBoatInitialPositionsByName[boatName] = initialPos; + } + if (dollyCart != null && !_attackBoatInitialPathsByName.ContainsKey(boatName)) + { + _attackBoatInitialPathsByName[boatName] = dollyCart.m_Path; + } + + recreatedCount++; + } + } + + // 씬의 모든 attack_boat를 _attackBoats 리스트에 추가 (없는 경우만) + foreach (var boat in allAttackBoatsInScene) + { + if (boat != null && !_attackBoats.Contains(boat)) + { + _attackBoats.Add(boat); + + // 초기 위치/경로 저장 (아직 저장되지 않은 경우) + if (!_attackBoatInitialPositions.ContainsKey(boat)) + { + Vector3 initialPos = boat.transform.position; + _attackBoatInitialPositions[boat] = initialPos; + + // 원본 프리팹 저장 + string boatName = boat.name.Replace("(Clone)", ""); + + // 이름 기반 초기 위치 저장 + if (!_attackBoatInitialPositionsByName.ContainsKey(boatName)) + { + _attackBoatInitialPositionsByName[boatName] = initialPos; + } + + if (!_attackBoatPrefabs.ContainsKey(boatName)) + { + GameObject prefabCopy = Instantiate(boat); + prefabCopy.name = boatName; + prefabCopy.SetActive(false); + prefabCopy.hideFlags = HideFlags.HideInHierarchy | HideFlags.DontSave; + _attackBoatPrefabs[boatName] = prefabCopy; + } + + // Cinemachine Dolly Cart의 Path 저장 + CinemachineDollyCart dollyCart = boat.GetComponent(); + if (dollyCart != null) + { + _attackBoatInitialPaths[boat] = dollyCart.m_Path; + // 이름 기반 경로 저장 + if (!_attackBoatInitialPathsByName.ContainsKey(boatName)) + { + _attackBoatInitialPathsByName[boatName] = dollyCart.m_Path; + } + } + else + { + _attackBoatInitialPaths[boat] = null; + if (!_attackBoatInitialPathsByName.ContainsKey(boatName)) + { + _attackBoatInitialPathsByName[boatName] = null; + } + } + } + } + } + + // 초기 선박 수 확인 및 업데이트 + // 재생성 후 총 선박 수가 초기 수보다 적으면 문제 + if (_attackBoats.Count < _initialAttackBoatCount && _initialAttackBoatCount > 0) + { + // 부족한 만큼 더 재생성 시도 + int missingCount = _initialAttackBoatCount - _attackBoats.Count; + int additionalRecreated = 0; + + foreach (var kvp in _attackBoatPrefabs) + { + if (additionalRecreated >= missingCount) break; + + string boatName = kvp.Key; + GameObject prefab = kvp.Value; + + if (prefab == null) continue; + + // 이미 리스트에 있는지 확인 + bool alreadyInList = false; + foreach (var boat in _attackBoats) + { + if (boat != null) + { + string listBoatName = boat.name.Replace("(Clone)", ""); + if (listBoatName == boatName) + { + alreadyInList = true; + break; + } + } + } + + if (!alreadyInList) + { + // 재생성 (환경 루트 아래에 배치하여 멀티 환경 호환) + GameObject recreatedBoat = Instantiate(prefab, GetEnvironmentRoot()); + recreatedBoat.name = boatName; + recreatedBoat.tag = "attack_boat"; + recreatedBoat.SetActive(true); + + Vector3 initialPos = _attackBoatInitialPositionsByName.ContainsKey(boatName) + ? _attackBoatInitialPositionsByName[boatName] + : Vector3.zero; + + recreatedBoat.transform.position = initialPos; + recreatedBoat.transform.rotation = Quaternion.identity; + + CinemachineDollyCart dollyCart = recreatedBoat.GetComponent(); + if (dollyCart != null) + { + CinemachinePathBase assignedPath = enableRandomPathAssignment ? GetRandomAttackPath() : null; + + if (assignedPath == null && _attackBoatInitialPathsByName.ContainsKey(boatName)) + { + assignedPath = _attackBoatInitialPathsByName[boatName]; + } + + if (assignedPath != null) + { + dollyCart.m_Path = assignedPath; + dollyCart.m_Position = 0f; + } + } + + Rigidbody rb = recreatedBoat.GetComponent(); + if (rb != null) + { + rb.velocity = Vector3.zero; + rb.angularVelocity = Vector3.zero; + } + + _attackBoats.Add(recreatedBoat); + _attackBoatInitialPositions[recreatedBoat] = initialPos; + if (dollyCart != null) + { + _attackBoatInitialPaths[recreatedBoat] = dollyCart.m_Path; + } + + additionalRecreated++; + } + } + + recreatedCount += additionalRecreated; + } + + // 초기 선박 수 업데이트 (씬에 있는 선박 수가 더 많으면) + if (_attackBoats.Count > _initialAttackBoatCount) + { + _initialAttackBoatCount = _attackBoats.Count; + } + + // 모든 선박을 원점(초기 위치)으로 리셋 (비활성화/활성화 없이 - Water System 호환) + int resetCount = 0; + foreach (var boat in _attackBoats) + { + if (boat == null) continue; + + // 비활성화된 선박은 건너뛰지 않고 위치만 리셋 + // (SetActive 호출하지 않음 - Water System Dictionary 충돌 방지) + + // Rigidbody 리셋 (활성화 상태에서만 동작) + if (boat.activeSelf) + { + Rigidbody rb = boat.GetComponent(); + if (rb != null) + { + rb.velocity = Vector3.zero; + rb.angularVelocity = Vector3.zero; + } + } + + // 초기 위치로 리셋 (이름 기반으로 찾기) + Vector3 spawnPos; + string boatName = boat.name.Replace("(Clone)", ""); + + if (_attackBoatInitialPositionsByName.ContainsKey(boatName)) + { + spawnPos = _attackBoatInitialPositionsByName[boatName]; + if (!_attackBoatInitialPositions.ContainsKey(boat)) + { + _attackBoatInitialPositions[boat] = spawnPos; + } + } + else if (_attackBoatInitialPositions.ContainsKey(boat)) + { + spawnPos = _attackBoatInitialPositions[boat]; + _attackBoatInitialPositionsByName[boatName] = spawnPos; + } + else + { + spawnPos = boat.transform.position; + _attackBoatInitialPositions[boat] = spawnPos; + _attackBoatInitialPositionsByName[boatName] = spawnPos; + } + + // Cinemachine Dolly Cart 리셋 (랜덤 경로 할당 또는 원래 경로 복원) + CinemachineDollyCart dollyCart = boat.GetComponent(); + if (dollyCart != null) + { + CinemachinePathBase assignedPath = null; + + if (enableRandomPathAssignment) + { + assignedPath = GetRandomAttackPath(); + } + + // 랜덤 경로가 없으면 원래 경로 fallback + if (assignedPath == null) + { + if (_attackBoatInitialPathsByName.ContainsKey(boatName)) + { + assignedPath = _attackBoatInitialPathsByName[boatName]; + } + else if (_attackBoatInitialPaths.ContainsKey(boat) && _attackBoatInitialPaths[boat] != null) + { + assignedPath = _attackBoatInitialPaths[boat]; + _attackBoatInitialPathsByName[boatName] = assignedPath; + } + } + + if (assignedPath != null) + { + dollyCart.m_Path = assignedPath; + dollyCart.m_Position = 0f; + + if (dollyCart.m_Speed < 0) + { + dollyCart.m_Speed = Mathf.Abs(dollyCart.m_Speed); + } + + Vector3 pathStartPos = assignedPath.EvaluatePositionAtUnit(0f, CinemachinePathBase.PositionUnits.PathUnits); + boat.transform.position = pathStartPos; + } + else + { + boat.transform.position = spawnPos; + } + } + else + { + // Dolly Cart가 없으면 저장된 위치 사용 + boat.transform.position = spawnPos; + } + + boat.transform.rotation = Quaternion.identity; + + resetCount++; + } + } + + /// + /// 씬에 있는 모든 WAKE(Clone) 객체를 찾아서 파괴하고, WakeGenerator 컴포넌트를 완전히 비활성화 + /// + private void DestroyAllWakeObjects() + { + int destroyedCount = 0; + + // 현재 환경 내의 Wake(Clone) 오브젝트만 찾아서 파괴 (멀티 환경 호환) + var envRoot = GetEnvironmentRoot(); + Transform[] allTransforms = envRoot.GetComponentsInChildren(true); + foreach (var t in allTransforms) + { + if (t != null && t.gameObject.name.Contains("Wake") && (t.gameObject.name.Contains("Clone") || t.gameObject.name.Contains("(Clone)"))) + { + Destroy(t.gameObject); + destroyedCount++; + } + } + + // 현재 환경 내의 WakeGenerator만 찾아서 비활성화하고 코루틴 중지 (멀티 환경 호환) + WakeGenerator[] allWakeGenerators = envRoot.GetComponentsInChildren(true); + foreach (var wakeGen in allWakeGenerators) + { + if (wakeGen != null) + { + // 모든 코루틴 중지 + wakeGen.StopAllCoroutines(); + // 컴포넌트 비활성화 + wakeGen.enabled = false; + } + } + + } + + /// + /// 위치 리셋 - 아군 선박은 비활성화 없이 위치만 리셋 + /// + private void ResetPositions() + { + // 모든 WAKE(Clone) 객체 제거 + DestroyAllWakeObjects(); + + // ======================================== + // 아군 선박(DefenseAgent)은 비활성화 없이 위치만 리셋 + // ======================================== + float sharedAngle = enableRandomSpawn + ? Random.Range(-defenseRandomAngleRange, defenseRandomAngleRange) + : 0f; + + // 두 선박이 동일한 위치 오프셋을 공유 + Vector3 sharedOffset = GetSharedRandomOffset(); + + ResetDefenseAgentPosition(defenseAgent1, _originalDefense1Pos, _originalDefense1Rot, sharedAngle, sharedOffset); + ResetDefenseAgentPosition(defenseAgent2, _originalDefense2Pos, _originalDefense2Rot, sharedAngle, sharedOffset); + + // Web 위치 설정 (2대 중간) + if (webObject != null && defenseAgent1 != null && defenseAgent2 != null) + { + Vector3 webPos = (defenseAgent1.transform.position + defenseAgent2.transform.position) / 2f; + webPos.y = webSpawnPos.y; + webObject.transform.position = webPos; + } + else if (webObject != null) + { + webObject.transform.position = webSpawnPos; + } + } + + /// + /// 아군 선박 2대가 공유하는 랜덤 오프셋 계산 (위치 동기화용) + /// + private Vector3 GetSharedRandomOffset() + { + if (!enableRandomSpawn) + return Vector3.zero; + + // 원형 영역 내 균등 분포 (극좌표 사용) + float randomAngle = Random.Range(0f, 360f) * Mathf.Deg2Rad; + float randomRadius = Mathf.Sqrt(Random.Range(0f, 1f)) * spawnRange; + + return new Vector3(randomRadius * Mathf.Cos(randomAngle), 0f, randomRadius * Mathf.Sin(randomAngle)); + } + + /// + /// 기존 위치에서 랜덤 스폰 위치 생성 (적군 경로용) + /// + private Vector3 GetRandomSpawnPosition(Vector3 originalPos) + { + // 원형 영역 내 균등 분포 (극좌표 사용) + float randomAngle = Random.Range(0f, 360f) * Mathf.Deg2Rad; + float randomRadius = Mathf.Sqrt(Random.Range(0f, 1f)) * spawnRange; // sqrt로 균등 분포 + + float randomX = originalPos.x + randomRadius * Mathf.Cos(randomAngle); + float randomZ = originalPos.z + randomRadius * Mathf.Sin(randomAngle); + return new Vector3(randomX, originalPos.y, randomZ); + } + + /// + /// 모든 attack_boat의 대기 중인 Invoke/코루틴 취소 (에피소드 리셋 시) + /// AttackBoatDisabler 등의 지연된 동작이 리셋 후에도 실행되는 것을 방지 + /// + private void CancelAttackBoatPendingActions() + { + foreach (var boat in _attackBoats) + { + if (boat == null || !boat.activeSelf) continue; + + // AttackBoatDisabler의 Invoke 취소 + var disabler = boat.GetComponent(); + if (disabler != null) + { + disabler.CancelInvoke(); + } + + // 모든 MonoBehaviour의 Invoke 취소 + var behaviours = boat.GetComponents(); + foreach (var mb in behaviours) + { + if (mb != null && mb.enabled) + { + mb.CancelInvoke(); + } + } + } + } + + /// + /// 씬에서 "attack_track"을 이름에 포함하는 모든 오브젝트의 CinemachineSmoothPath를 수집 + /// + private void FindAllAttackTrackPaths() + { + var paths = new System.Collections.Generic.List(); + + // 현재 환경 내의 CinemachineSmoothPath 중 이름에 "attacktrack"이 포함된 것을 수집 (멀티 환경 호환) + var allPaths = FindComponentsInEnvironment(); + foreach (var path in allPaths) + { + string lowerName = path.gameObject.name.ToLower(); + if (lowerName.Contains("attacktrack") || lowerName.Contains("attack_track")) + { + paths.Add(path); + } + } + + _availableAttackPaths = paths.ToArray(); + } + + /// + /// 랜덤 attack_track 경로 반환 + /// + private CinemachinePathBase GetRandomAttackPath() + { + if (_availableAttackPaths == null || _availableAttackPaths.Length == 0) + return null; + + int index = Random.Range(0, _availableAttackPaths.Length); + return _availableAttackPaths[index]; + } + + /// + /// 모든 attack_track 경로의 원본 웨이포인트 저장 (Start()에서 호출) + /// + private void SaveOriginalWaypoints() + { + if (_availableAttackPaths == null || _availableAttackPaths.Length == 0) + return; + + _allOriginalWaypoints = new Vector3[_availableAttackPaths.Length][]; + + for (int p = 0; p < _availableAttackPaths.Length; p++) + { + var path = _availableAttackPaths[p]; + if (path == null || path.m_Waypoints == null) + { + _allOriginalWaypoints[p] = new Vector3[0]; + continue; + } + + int waypointCount = path.m_Waypoints.Length; + _allOriginalWaypoints[p] = new Vector3[waypointCount]; + + for (int i = 0; i < waypointCount; i++) + { + _allOriginalWaypoints[p][i] = path.m_Waypoints[i].position; + } + } + } + + /// + /// 모든 attack_track 경로의 웨이포인트 0, 1, 2번을 랜덤화 (에피소드 시작 시 호출) + /// + private void RandomizeEnemyWaypoints() + { + if (!enableEnemyPathRandomization) + return; + + if (_availableAttackPaths == null || _allOriginalWaypoints == null) + return; + + for (int p = 0; p < _availableAttackPaths.Length; p++) + { + var path = _availableAttackPaths[p]; + if (path == null || path.m_Waypoints == null) + continue; + + var origWaypoints = _allOriginalWaypoints[p]; + if (origWaypoints == null || origWaypoints.Length < 3) + continue; + + // 웨이포인트 0, 1, 2번만 랜덤화 + for (int i = 0; i < 3 && i < path.m_Waypoints.Length; i++) + { + Vector3 originalPos = origWaypoints[i]; + Vector3 randomizedPos = GetRandomSpawnPosition(originalPos); + + if (path.transform.parent != null) + { + randomizedPos = path.transform.InverseTransformPoint( + path.transform.TransformPoint(originalPos) + + (randomizedPos - originalPos) + ); + } + else + { + randomizedPos = originalPos + (randomizedPos - originalPos); + } + + path.m_Waypoints[i].position = randomizedPos; + } + + path.InvalidateDistanceCache(); + } + } + + #endregion + + #region Stage Management + + /// + /// 현재 Stage에 맞는 설정 적용 + /// - Stage1: 적군 비활성화, 대형 유지만 학습 + /// - Stage2: 적군 1~2대 활성화, 포획 보상 학습 + /// - Stage3: 적군 3~5대 활성화, 전술 기동 학습 + /// + private void ApplyStageSettings() + { + int activeEnemyCount = GetActiveEnemyCountForStage(); + + + // 적군 활성화/비활성화 + ApplyEnemyActivation(activeEnemyCount); + + // Stage별 추가 설정 + switch (currentStage) + { + case TrainingStage.Stage1_Formation: + // Stage1: 대형 유지에 집중 + // 포획/모선 관련 이벤트는 발생해도 보상 없음 (적군이 비활성화되므로 발생 안함) + break; + + case TrainingStage.Stage2_Capture: + // Stage2: 포획 보상 활성화 + break; + + case TrainingStage.Stage3_Tactical: + // Stage3: 전술 기동 보상 활성화 + break; + } + } + + /// + /// 현재 Stage에서 활성화할 적군 수 반환 + /// + private int GetActiveEnemyCountForStage() + { + switch (currentStage) + { + case TrainingStage.Stage1_Formation: + return disableEnemiesInStage1 ? 0 : stage1EnemyCount; + + case TrainingStage.Stage2_Capture: + return stage2EnemyCount; + + case TrainingStage.Stage3_Tactical: + return stage3EnemyCount; + + default: + return 0; + } + } + + /// + /// 적군 선박 활성화/비활성화 적용 + /// + private void ApplyEnemyActivation(int activeCount) + { + int activated = 0; + + // enemyShips 배열 처리 + if (enemyShips != null && enemyShips.Length > 0) + { + for (int i = 0; i < enemyShips.Length; i++) + { + if (enemyShips[i] != null) + { + bool shouldBeActive = activated < activeCount; + enemyShips[i].SetActive(shouldBeActive); + + if (shouldBeActive) + { + activated++; + } + } + } + } + + // _attackBoats 리스트도 처리 (enemyShips와 중복되지 않는 것들) + foreach (var boat in _attackBoats) + { + if (boat == null) continue; + + // enemyShips에 이미 포함되어 있는지 확인 + bool alreadyProcessed = false; + if (enemyShips != null) + { + foreach (var enemy in enemyShips) + { + if (enemy == boat) + { + alreadyProcessed = true; + break; + } + } + } + + if (!alreadyProcessed) + { + bool shouldBeActive = activated < activeCount; + boat.SetActive(shouldBeActive); + + if (shouldBeActive) + { + activated++; + } + } + } + } + + /// + /// Stage 변경 (Inspector 또는 코드에서 호출) + /// + public void SetTrainingStage(TrainingStage newStage) + { + if (currentStage != newStage) + { + currentStage = newStage; + + ApplyStageSettings(); + } + } + + /// + /// 포획 보상 활성화 여부 (Stage2, Stage3에서만 true) + /// + public bool IsCaptureRewardEnabled() + { + return currentStage == TrainingStage.Stage2_Capture || + currentStage == TrainingStage.Stage3_Tactical; + } + + /// + /// 모선 충돌 페널티 활성화 여부 (Stage2, Stage3에서만 true) + /// + public bool IsMotherShipPenaltyEnabled() + { + return currentStage == TrainingStage.Stage2_Capture || + currentStage == TrainingStage.Stage3_Tactical; + } + + /// + /// 전술 기동 보상 활성화 여부 (Stage3에서만 true) + /// + public bool IsTacticalRewardEnabled() + { + return currentStage == TrainingStage.Stage3_Tactical; + } + + #endregion + + #region Gizmo Visualization + + /// + /// 에디터에서 스폰 범위 시각화 + /// + private void OnDrawGizmos() + { + if (!enableRandomSpawn && !enableEnemyPathRandomization) + return; + + // 아군 선박 스폰 범위 시각화 (Cyan) + if (enableRandomSpawn) + { + Gizmos.color = new Color(0f, 1f, 1f, 0.3f); // 반투명 시안 + + // Defense 1 스폰 범위 + Vector3 def1Pos = _originalDefense1Pos != Vector3.zero ? _originalDefense1Pos : defense1SpawnPos; + if (def1Pos != Vector3.zero) + { + DrawCircleGizmo(def1Pos, spawnRange, 32); + Gizmos.DrawWireSphere(def1Pos, 1f); // 중심점 표시 + } + + // Defense 2 스폰 범위 + Vector3 def2Pos = _originalDefense2Pos != Vector3.zero ? _originalDefense2Pos : defense2SpawnPos; + if (def2Pos != Vector3.zero) + { + DrawCircleGizmo(def2Pos, spawnRange, 32); + Gizmos.DrawWireSphere(def2Pos, 1f); // 중심점 표시 + } + + // 라벨 표시 + #if UNITY_EDITOR + UnityEditor.Handles.color = Color.cyan; + if (def1Pos != Vector3.zero) + UnityEditor.Handles.Label(def1Pos + Vector3.up * 5f, $"Defense1\n반경: {spawnRange}m"); + if (def2Pos != Vector3.zero) + UnityEditor.Handles.Label(def2Pos + Vector3.up * 5f, $"Defense2\n반경: {spawnRange}m"); + #endif + } + + // 적군 웨이포인트 스폰 범위 시각화 (Red) - 모든 attack_track 경로 + if (enableEnemyPathRandomization && _availableAttackPaths != null) + { + Gizmos.color = new Color(1f, 0.3f, 0.3f, 0.3f); // 반투명 빨강 + + for (int p = 0; p < _availableAttackPaths.Length; p++) + { + var path = _availableAttackPaths[p]; + if (path == null || path.m_Waypoints == null) continue; + + for (int i = 0; i < 3 && i < path.m_Waypoints.Length; i++) + { + Vector3 waypointPos; + if (_allOriginalWaypoints != null && p < _allOriginalWaypoints.Length && i < _allOriginalWaypoints[p].Length) + { + waypointPos = _allOriginalWaypoints[p][i]; + } + else + { + waypointPos = path.m_Waypoints[i].position; + } + + if (path.transform != null) + { + waypointPos = path.transform.TransformPoint(waypointPos); + } + + DrawCircleGizmo(waypointPos, spawnRange, 32); + Gizmos.DrawWireSphere(waypointPos, 2f); + + #if UNITY_EDITOR + UnityEditor.Handles.color = Color.red; + UnityEditor.Handles.Label(waypointPos + Vector3.up * 5f, $"{path.gameObject.name} WP{i}\n반경: {spawnRange}m"); + #endif + } + } + } + } + + /// + /// XZ 평면에 원 그리기 (Gizmo용) + /// + private void DrawCircleGizmo(Vector3 center, float radius, int segments) + { + float angleStep = 360f / segments; + Vector3 prevPoint = center + new Vector3(radius, 0f, 0f); + + for (int i = 1; i <= segments; i++) + { + float angle = i * angleStep * Mathf.Deg2Rad; + Vector3 newPoint = center + new Vector3( + Mathf.Cos(angle) * radius, + 0f, + Mathf.Sin(angle) * radius + ); + Gizmos.DrawLine(prevPoint, newPoint); + prevPoint = newPoint; + } + } + + #endregion + } +} diff --git a/Assets/NavMeshComponents/Editor/NavMeshModifierEditor.cs.meta b/Assets/Scripts/Defense/DefenseEnvController.cs.meta old mode 100755 new mode 100644 similarity index 69% rename from Assets/NavMeshComponents/Editor/NavMeshModifierEditor.cs.meta rename to Assets/Scripts/Defense/DefenseEnvController.cs.meta index 4c36a17db..a1773e738 --- a/Assets/NavMeshComponents/Editor/NavMeshModifierEditor.cs.meta +++ b/Assets/Scripts/Defense/DefenseEnvController.cs.meta @@ -1,8 +1,7 @@ fileFormatVersion: 2 -guid: 6fa04b4743e3947eba4d7b9e5832ea69 -timeCreated: 1477036742 -licenseType: Pro +guid: 92731fdf222c4ed46bf9c385a64a8160 MonoImporter: + externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 diff --git a/Assets/Scripts/Defense/DefenseRewardCalculator.cs b/Assets/Scripts/Defense/DefenseRewardCalculator.cs new file mode 100644 index 000000000..7694efa81 --- /dev/null +++ b/Assets/Scripts/Defense/DefenseRewardCalculator.cs @@ -0,0 +1,185 @@ +using UnityEngine; + +namespace BoatAttack +{ + /// + /// 보상 계산기 (단순화) + /// 매 스텝: 대형 유지 + 적 접근 + 시간 페널티 + /// 이벤트: 포획/모선충돌/아군충돌 (EnvController에서 직접 참조) + /// + public class DefenseRewardCalculator : MonoBehaviour + { + [Header("=== 매 스텝 보상 ===")] + [Tooltip("대형 유지 보상 (아군 간격이 적정 범위 내일 때)")] + public float formationReward = 0.001f; + + [Tooltip("아군 간 최적 거리 (m)")] + public float optimalDistance = 50f; + + [Tooltip("거리 허용 범위 (±m) - 최적 거리 기준")] + public float distanceTolerance = 25f; + + [Tooltip("적 접근 보상 (Web-적 거리 1m 감소당)")] + public float approachRewardPerMeter = 0.001f; + + [Tooltip("헤딩 정렬 보상 (에이전트가 적을 향할수록)")] + public float headingAlignmentReward = 0.0005f; + + [Tooltip("시간 페널티 (매 스텝)")] + public float timePenalty = -0.0001f; + + [Header("=== 이벤트 보상 ===")] + [Tooltip("포획 성공 (적이 Web에 충돌)")] + public float captureReward = 1.0f; + + [Tooltip("모선 충돌 페널티 (적이 모선에 충돌)")] + public float motherShipHitPenalty = -1.0f; + + [Tooltip("충돌 페널티 (아군끼리/모선/거리초과 등)")] + public float collisionPenalty = -0.5f; + + // 이전 스텝의 Web-적 거리 (접근 보상 계산용) + private float _prevWebToEnemyDist = float.MaxValue; + + /// + /// 에이전트 상태 + /// + public struct AgentState + { + public Vector3 position; + public float heading; + public float speed; + } + + /// + /// 매 스텝 보상 계산: 대형 유지 + 적 접근 + 시간 페널티 + /// + public float CalculateStepReward(AgentState agent1, AgentState agent2, + GameObject[] enemyShips, GameObject webObject) + { + float reward = 0f; + + // 1. 대형 유지: 아군 간 거리가 적정 범위(optimalDistance ± tolerance) 내면 보상 + float allyDist = Vector3.Distance(agent1.position, agent2.position); + float error = Mathf.Abs(allyDist - optimalDistance); + if (error <= distanceTolerance) + { + reward += formationReward * (1f - error / distanceTolerance); + } + + // 2. 적 접근: Web과 가장 가까운 적 사이 거리가 줄었으면 보상 + if (webObject != null && enemyShips != null) + { + float closestDist = GetClosestEnemyDistance(webObject.transform.position, enemyShips); + if (closestDist < float.MaxValue && _prevWebToEnemyDist < float.MaxValue) + { + float delta = _prevWebToEnemyDist - closestDist; + if (delta > 0f) + { + reward += approachRewardPerMeter * delta; + } + } + _prevWebToEnemyDist = closestDist; + } + + // 3. 시간 페널티 + reward += timePenalty; + + return reward; + } + + /// + /// 개별 에이전트 헤딩 정렬 보상 계산 (그룹이 아닌 개별 보상으로 부여) + /// + public float CalculateIndividualHeadingReward(AgentState agent, GameObject[] enemyShips) + { + if (enemyShips == null) return 0f; + + float alignment = GetHeadingAlignment(agent, enemyShips); + if (alignment > 0f) + { + return headingAlignmentReward * alignment; + } + return 0f; + } + + /// + /// 에이전트 헤딩과 가장 가까운 적 방향의 정렬도 (-1~1) + /// 1=정면, 0=수직, -1=등짐 + /// + private float GetHeadingAlignment(AgentState agent, GameObject[] enemies) + { + float minDist = float.MaxValue; + Vector3 closestPos = Vector3.zero; + foreach (var enemy in enemies) + { + if (enemy == null || !enemy.activeInHierarchy) continue; + float dist = Vector3.Distance(agent.position, enemy.transform.position); + if (dist < minDist) + { + minDist = dist; + closestPos = enemy.transform.position; + } + } + if (minDist >= float.MaxValue) return 0f; + + // heading(euler Y) → forward 벡터 + float rad = agent.heading * Mathf.Deg2Rad; + Vector3 forward = new Vector3(Mathf.Sin(rad), 0f, Mathf.Cos(rad)); + + // 적 방향 (수평면) + Vector3 toEnemy = closestPos - agent.position; + toEnemy.y = 0f; + if (toEnemy.sqrMagnitude < 0.01f) return 0f; + toEnemy.Normalize(); + + return Vector3.Dot(forward, toEnemy); + } + + /// + /// Web 위치에서 가장 가까운 활성 적군까지의 거리 + /// + private float GetClosestEnemyDistance(Vector3 webPos, GameObject[] enemies) + { + float minDist = float.MaxValue; + foreach (var enemy in enemies) + { + if (enemy == null || !enemy.activeInHierarchy) continue; + float dist = Vector3.Distance(webPos, enemy.transform.position); + if (dist < minDist) minDist = dist; + } + return minDist; + } + + /// + /// 에이전트 상태 수집 + /// + public AgentState GetAgentState(DefenseAgent agent) + { + if (agent == null) + return new AgentState(); + + AgentState state = new AgentState + { + position = agent.transform.position, + heading = agent.transform.eulerAngles.y + }; + + Rigidbody rb = agent.GetComponent(); + if (rb != null) + { + state.speed = rb.velocity.magnitude; + } + + return state; + } + + /// + /// 리셋 (에피소드 시작 시) + /// + public void Reset() + { + _prevWebToEnemyDist = float.MaxValue; + } + } +} diff --git a/Assets/Scripts/Defense/DefenseRewardCalculator.cs.meta b/Assets/Scripts/Defense/DefenseRewardCalculator.cs.meta new file mode 100644 index 000000000..eb8492190 --- /dev/null +++ b/Assets/Scripts/Defense/DefenseRewardCalculator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 45b0120affbd8f34e82e117897879b13 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Defense/EpisodeEndConditions.md b/Assets/Scripts/Defense/EpisodeEndConditions.md new file mode 100644 index 000000000..667830aba --- /dev/null +++ b/Assets/Scripts/Defense/EpisodeEndConditions.md @@ -0,0 +1,183 @@ +# 에피소드 종료 조건 + +## 📋 에피소드가 종료되는 경우 + +### 1. ✅ 적 포획 성공 (성공 종료) +**위치**: `DefenseEnvController.OnEnemyCaptured()` + +**조건**: +- 적 USV가 Web 오브젝트와 충돌 (WebCollisionDetector 감지) + +**동작**: +1. 포획 보상 부여: `captureReward` (기본: +1.0) +2. 위치 보너스 계산: 그물 중심에 가까울수록 추가 보상 (최대 +0.3) +3. 보상 분배 (그룹 또는 개별) +4. **즉시 에피소드 종료** +5. 0.5초 후 새 에피소드 시작 + +**로그**: +``` +[DefenseEnvController] 적 포획 성공! 보상: 1.xxx +``` + +--- + +### 2. ❌ 모선 충돌 (Game Over - 즉시 종료) +**위치**: `DefenseEnvController.OnMotherShipCollision()` + +**조건**: +- 적 USV가 모선(MotherShip)과 충돌 +- MotherShipCollisionDetector가 감지 + +**동작**: +1. 큰 패널티 부여: `motherShipCollisionPenalty` (기본: -1.75) +2. 보상 분배 (그룹 또는 개별) +3. **즉시 에피소드 종료** (가장 심각한 실패) +4. 0.5초 후 새 에피소드 시작 + +**로그**: +``` +[DefenseEnvController] 모선 충돌! Game Over. 패널티: -1.75 +``` + +--- + +### 3. ❌ 아군 충돌 (즉시 종료) +**위치**: `DefenseEnvController.OnFriendlyCollision()` + +**조건**: +- 아군-아군 충돌 (DefenseAgent 1 ↔ DefenseAgent 2) +- 아군-모선 충돌 (DefenseAgent ↔ MotherShip) +- DefenseAgent.OnCollisionEnter()에서 감지 + +**동작**: +1. 충돌 패널티 부여: `collisionPenalty` (기본: -1.0) +2. 보상 분배 (그룹 또는 개별) +3. **즉시 에피소드 종료** +4. 0.5초 후 새 에피소드 시작 + +**로그**: +``` +[DefenseEnvController] 아군 충돌! 패널티: -1.0 +``` + +--- + +### 4. ⏱️ 타임아웃 (시간 초과) +**위치**: `DefenseBoatManager.Update()` + +**조건**: +- 에피소드 시작 후 `maxEpisodeTime` 초 경과 (기본: 120초) + +**동작**: +1. 타임아웃 패널티 부여: `timeoutPenalty` (기본: -1.0) +2. 보상 분배 (그룹 또는 개별) +3. **에피소드 종료** +4. 0.5초 후 새 에피소드 시작 + +**로그**: +``` +[DefenseBoatManager] 에피소드 타임아웃 +``` + +**설정**: +- Inspector에서 `maxEpisodeTime` 조절 가능 (초 단위) + +--- + +### 5. ✅ 모선 방어 성공 (정상 종료) +**위치**: `DefenseEnvController.OnEpisodeEnd()` + +**조건**: +- 에피소드가 다른 이유로 종료될 때 +- 적이 모선 방어 존(`motherShipDefenseRadius`)에 진입하지 않았을 때 + +**동작**: +1. 모선 방어 성공 보상 부여: `motherShipDefenseReward` (기본: +0.5) +2. 보상 분배 (그룹 또는 개별) +3. 에피소드 종료 + +**로그**: +``` +[DefenseEnvController] 모선 방어 성공! 보상: 0.5 +``` + +**주의**: 이것은 다른 종료 조건과 함께 발생할 수 있습니다 (예: 타임아웃 후 모선 방어 성공 체크) + +--- + +## 🔄 에피소드 종료 후 동작 + +### 자동 재시작 +1. **에피소드 종료** → `EndCurrentEpisode()` 호출 +2. **0.5초 대기** → `Invoke(nameof(StartNewEpisode), 0.5f)` +3. **새 에피소드 시작** → `StartNewEpisode()` 호출 + - 위치 리셋 (랜덤 스폰 포함) + - WebDetector 리셋 + - DefenseEnvController.OnEpisodeBegin() 호출 + +--- + +## 📊 종료 조건 우선순위 + +### 즉시 종료 (가장 높은 우선순위): +1. **모선 충돌** (-1.75) - Game Over +2. **아군 충돌** (-1.0) +3. **적 포획 성공** (+1.0~1.3) + +### 시간 기반 종료: +4. **타임아웃** (-1.0) - 120초 경과 + +### 종료 시 추가 보상: +5. **모선 방어 성공** (+0.5) - 다른 종료 조건과 함께 체크 + +--- + +## ⚙️ Inspector 설정 + +### DefenseBoatManager: +- **Max Episode Time**: 120 (초) - 타임아웃 시간 + +### DefenseEnvController: +- **Capture Reward**: 1.0 - 포획 성공 보상 +- **Capture Center Bonus**: 0.3 - 위치 보너스 최대값 +- **Mother Ship Defense Reward**: 0.5 - 모선 방어 성공 보상 +- **Mother Ship Collision Penalty**: -1.75 - 모선 충돌 패널티 +- **Collision Penalty**: -1.0 - 아군 충돌 패널티 +- **Timeout Penalty**: -1.0 - 타임아웃 패널티 (DefenseBoatManager에서 설정) + +--- + +## 🔍 디버깅 + +### 에피소드 종료 확인: +1. **Console 로그 확인**: + - `[DefenseEnvController] 적 포획 성공!` + - `[DefenseEnvController] 모선 충돌! Game Over.` + - `[DefenseEnvController] 아군 충돌!` + - `[DefenseBoatManager] 에피소드 타임아웃` + - `[DefenseEnvController] 모선 방어 성공!` + +2. **enableDebugLog 활성화**: + - DefenseEnvController의 `enableDebugLog` 체크 + - DefenseBoatManager의 `enableDebugLog` 체크 + +3. **에피소드 재시작 확인**: + - 0.5초 후 선박들이 랜덤 위치로 재생성되는지 확인 + - 모선은 위치가 유지되는지 확인 + +--- + +## 💡 요약 + +**에피소드가 종료되는 경우:** +1. ✅ 적 포획 성공 +2. ❌ 모선 충돌 (Game Over) +3. ❌ 아군 충돌 +4. ⏱️ 타임아웃 (120초) +5. ✅ 모선 방어 성공 (종료 시 추가 보상) + +**종료 후:** +- 0.5초 대기 +- 새 에피소드 시작 (랜덤 스폰) +- 모든 선박 위치 리셋 (모선 제외) diff --git a/Assets/Scripts/Defense/EpisodeEndConditions.md.meta b/Assets/Scripts/Defense/EpisodeEndConditions.md.meta new file mode 100644 index 000000000..8b2dd5edf --- /dev/null +++ b/Assets/Scripts/Defense/EpisodeEndConditions.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d9845fbec91167742af2434e7ce2ecc3 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Defense/MA_PPO_Implementation_Plan.md b/Assets/Scripts/Defense/MA_PPO_Implementation_Plan.md new file mode 100644 index 000000000..855b6dfa4 --- /dev/null +++ b/Assets/Scripts/Defense/MA_PPO_Implementation_Plan.md @@ -0,0 +1,1187 @@ +# MA-PPO 구현 계획서 + +## 1. 개요 +- **목표**: 2대의 DefenseAgent가 협력하여 적 USV를 포획하는 Multi-Agent PPO 학습 시스템 +- **환경**: Unity ML-Agents +- **알고리즘**: PPO (Proximal Policy Optimization) with Multi-Agent 설정 + +--- + +## 2. 보상 체계 구현 계획 + +### 2.1 임무 성과 (Mission Performance) - 최상/상 가중치 + +#### ✅ 적 포획 성공 (+1.0 + 위치 보너스) +- **현재 상태**: `OnEnemyCaptured()` 메서드로 구현됨 +- **개선 사항**: + - 보상값을 1.0으로 변경 (현재 10.0) + - 두 에이전트 모두 동일한 보상 수신 확인 + - **위치 기반 보너스 추가**: 그물의 중심에 가까울수록 추가 보상 + - 그물 중심 = 두 USV의 중점 + - 포획 시 적의 위치와 그물 중심 간 거리 계산 + - 거리가 가까울수록 보너스 보상 (최대 +0.3 정도) + - 공식: `centerBonus = maxCenterBonus * (1 - distanceToCenter / maxDistance)` + - 예: 중심에서 0m = +0.3, 10m = +0.2, 20m = +0.1, 30m 이상 = +0.0 + - **구현 방법**: + - `WebCollisionDetector.OnTriggerEnter()`에서 적의 위치 저장 + - `OnEnemyCaptured(Vector3 enemyPosition)` 메서드 시그니처 변경 + - `DefenseAgent.OnEnemyCaptured()`에서 파트너와 함께 그물 중심 계산 + - 중심으로부터 거리에 따라 보너스 계산 및 추가 보상 + +#### ⚠️ 모선 방어 성공 (+0.5) +- **구현 필요**: + - `DefenseBoatManager`에 모선 참조 추가 + - 에피소드 종료 시점 체크 (`OnEpisodeEnd()` 또는 `EndCurrentEpisode()`) + - 적이 모선으로부터 1km 이내 진입했는지 추적 + - 진입 실패 시 두 에이전트 모두 +0.5 보상 + +#### ⚠️ 방어선 침범 (-0.1) +- **구현 필요**: + - 2km 경계선과 1km 경계선 정의 + - 적의 모선까지 거리 추적 + - 경계선 돌파 감지 시 즉시 -0.1 보상 + - 중복 보상 방지 (각 경계선당 1회만) + +--- + +### 2.2 협동 기동 (Cooperative Maneuvering) - 중 가중치 + +#### ⚠️ 헤딩 동기화 (+0.0001~0.0005) +- **구현 필요**: + - `CalculateReward()`에서 매 스텝 계산 + - 허용 범위 설정 (예: ±15도) + - 범위 내일 때만 미세한 보상 부여 +- **⚠️ 중요: 보상 값 조정** + - **원래 계획**: +0.01 (매 스텝) + - **문제점**: 에피소드가 25,000 스텝일 때, 1,000 스텝만 동기화해도 10.0 보상 → 최종 목표(+1.0) 압도 + - **해결책**: **+0.0001~0.0005**로 대폭 감소 (에피소드당 최대 1.25~6.25) + - **상태 보상 방식**: 특정 오차 범위 내에 있을 때만 아주 미세하게 부여 + +#### ⚠️ 속도 동기화 (+0.0001~0.0005) +- **구현 필요**: + - 두 USV의 속도 차이 계산 + - 허용 범위 설정 (예: ±2 m/s) + - 범위 내일 때만 미세한 보상 부여 +- **⚠️ 중요: 보상 값 조정** + - **원래 계획**: +0.01 (매 스텝) + - **해결책**: **+0.0001~0.0005**로 대폭 감소 + - **상태 보상 방식**: 속도 차이가 허용 범위 내일 때만 부여 + +#### ⚠️ 간격 유지 (+0.0001~0.0005) +- **현재 상태**: 거리 유지 페널티만 존재 +- **개선 사항**: + - 최적 거리(50m) 유지 시 미세한 보상 추가 + - 허용 범위 설정 (예: 45m~55m) + - 기존 페널티는 유지하되, 보상도 추가 +- **⚠️ 중요: 보상 값 조정** + - **원래 계획**: +0.01 (매 스텝) + - **해결책**: **+0.0001~0.0005**로 대폭 감소 + +#### ⚠️ 그물 장력 (Net Tension) (+0.0003~0.0008) +- **구현 필요**: + - 두 배 사이의 거리가 그물 길이의 90~95% 수준일 때 보상 극대화 + - 그물이 최대로 펼쳐진 상태(팽팽한 상태) 유도 + - 방어 면적 최대화를 위한 보상 +- **구현 방법**: + - 그물 최대 길이 정의 (예: 50m) + - 현재 두 배 간 거리 계산 + - 거리가 그물 길이의 90~95% 범위일 때 최대 보상 + - 공식: `tensionReward = maxReward * (1 - |distance - optimalDistance| / tolerance)` + - 예: 그물 길이 50m, 최적 범위 45~47.5m (90~95%) +- **⚠️ 중요: 보상 값** + - **권장 값**: **+0.0003~0.0008** (간격 유지보다 약간 높게) + - 그물이 끊어지거나 엉키는 것을 방지하는 중요한 보상 + +--- + +### 2.3 전술 기동 (Tactical Maneuvering) - 하/최하 가중치 + +#### ⚠️ 수직 차단 (+0.0005~0.001) +- **구현 필요**: + - 그물 선분 계산 (두 USV 사이 직선) + - 적의 진입 경로 벡터 계산 + - 두 벡터 간 각도 계산 (90도에 가까울수록 보상) + - 임계값 설정 (예: 75도~105도 범위) +- **⚠️ 중요: 보상 값 조정** + - **원래 계획**: +0.005 (매 스텝) + - **해결책**: **+0.0005~0.001**로 감소 + +#### ⚠️ 추적 이득 (+0.0001~0.0005) +- **구현 필요**: + - 이전 스텝의 적-그물 거리 저장 + - 현재 스텝의 거리와 비교 + - 거리 감소 시 미세한 보상 부여 (Potential 기반) +- **⚠️ 중요: 보상 값 조정** + - **원래 계획**: +0.001 (매 스텝) + - **해결책**: **+0.0001~0.0005**로 감소 + +--- + +### 2.4 안전 및 제약 (Safety & Constraints) - 최상/중/최하 가중치 + +#### ⚠️ 충돌 발생 (-1.0) +- **구현 필요**: + - `OnCollisionEnter()` 또는 `OnTriggerEnter()` 추가 + - 충돌 대상 확인 (아군-아군, 아군-모선) + - 충돌 시 즉시 -1.0 보상 및 에피소드 종료 + +#### ⚠️ 모선 충돌 패널티 (Game Over) (-1.5 ~ -2.0) ⚠️ 최우선 +- **구현 필요**: + - 적군 선박(attack_boat 태그)이 모선(MotherShip 태그)과 충돌 시 + - **즉시 에피소드 종료** 및 큰 패널티 부여 + - 단순 실점이 아닌 **패배**로 처리 +- **구현 방법**: + - **옵션 1**: 모선에 `MotherShipCollisionDetector.cs` 컴포넌트 추가 + - `OnCollisionEnter()` 또는 `OnTriggerEnter()` 사용 + - 충돌 대상 태그 확인: `other.CompareTag("attack_boat")` + - `DefenseEnvController.OnMotherShipCollision()` 호출 + - **옵션 2**: `DefenseBoatManager`에서 모선 충돌 감지 + - 모선에 충돌 감지 스크립트 추가 + - `DefenseEnvController` 참조를 통해 알림 + - 그룹 보상으로 패널티 분배: `m_AgentGroup.AddGroupReward(-1.75f)` + - 즉시 에피소드 종료: `m_AgentGroup.EndGroupEpisode()` +- **⚠️ 중요: 보상 값** + - **권장 값**: **-1.5 ~ -2.0** (아군 충돌 패널티 -1.0보다 더 큰 값) + - 모선 방어 실패는 최악의 결과이므로 가장 큰 패널티 부여 + - 에피소드 즉시 종료로 학습 속도 향상 +- **구현 예시**: + ```csharp + // MotherShipCollisionDetector.cs (모선에 부착) + public class MotherShipCollisionDetector : MonoBehaviour + { + public DefenseEnvController envController; + public string enemyTag = "attack_boat"; + + private void OnCollisionEnter(Collision collision) + { + if (collision.gameObject.CompareTag(enemyTag)) + { + if (envController != null) + envController.OnMotherShipCollision(collision.gameObject); + } + } + + private void OnTriggerEnter(Collider other) + { + if (other.CompareTag(enemyTag)) + { + if (envController != null) + envController.OnMotherShipCollision(other.gameObject); + } + } + } + ``` + +#### ⚠️ 대형 붕괴 (-0.05) +- **구현 필요**: + - 두 배 간 거리 체크 (예: 100m 초과 시) + - 헤딩 차이 체크 (예: 90도 이상) + - 조건 만족 시 -0.05 보상 + +#### ✅ 시간 패널티 (-0.001) +- **현재 상태**: `timePenalty = -0.001f`로 구현됨 +- **확인 사항**: 매 프레임 적용되는지 확인 + +--- + +## 3. 코드 구조 개선 계획 + +### 3.1 DefenseAgent.cs 개선 + +#### 추가할 필드: +```csharp +[Header("Observation Settings")] +[Tooltip("관측할 적군 선박들 (인스펙터에서 할당)")] +public GameObject[] enemyShips = new GameObject[5]; // 최대 5대까지 지원 + +[Tooltip("최대 관측 가능한 적군 수")] +public int maxEnemyCount = 5; + +[Header("Action Settings")] +[Tooltip("최대 선속도 (m/s)")] +public float maxLinearVelocity = 20f; + +[Tooltip("최대 각속도 (deg/s)")] +public float maxAngularVelocity = 90f; + +[Tooltip("속도 제어 게인 (PID 또는 비례 제어)")] +public float velocityControlGain = 1.0f; + +[Tooltip("각속도 제어 게인")] +public float angularVelocityControlGain = 1.0f; + +[Tooltip("최대 선가속도 (m/s²) - 물리적 한계")] +public float maxLinearAcceleration = 5f; + +[Tooltip("최대 각가속도 (deg/s²) - 물리적 한계")] +public float maxAngularAcceleration = 45f; + +[Header("Reward Parameters")] +// 임무 성과 +public float captureReward = 1.0f; // 기존 10.0 → 1.0 +public float captureCenterBonus = 0.3f; // 그물 중심 포획 보너스 (최대) +public float captureCenterMaxDistance = 30f; // 중심으로부터 최대 거리 (이 거리 이상이면 보너스 0) +public float motherShipDefenseReward = 0.5f; +public float boundaryBreachPenalty = -0.1f; +public float boundary2km = 2000f; +public float boundary1km = 1000f; + +// 협동 기동 (⚠️ 보상 값 대폭 감소 - 보상 해킹 방지) +public float headingSyncReward = 0.0002f; // 기존 0.01 → 0.0002 (50배 감소) +public float headingSyncTolerance = 15f; // ±15도 +public float speedSyncReward = 0.0002f; // 기존 0.01 → 0.0002 +public float speedSyncTolerance = 2f; // ±2 m/s +public float distanceMaintainReward = 0.0002f; // 기존 0.01 → 0.0002 +public float optimalDistance = 50f; +public float distanceTolerance = 5f; // ±5m + +// 그물 장력 (Net Tension) +public float netTensionReward = 0.0005f; // 그물이 팽팽할 때 보상 +public float netMaxLength = 50f; // 그물 최대 길이 (m) +public float netOptimalMinRatio = 0.90f; // 최적 거리 비율 (최소) +public float netOptimalMaxRatio = 0.95f; // 최적 거리 비율 (최대) +public float netTensionTolerance = 0.05f; // 허용 오차 + +// 전술 기동 (⚠️ 보상 값 감소) +public float perpendicularInterceptReward = 0.0005f; // 기존 0.005 → 0.0005 (10배 감소) +public float perpendicularAngleTolerance = 15f; // 75~105도 +public float trackingGainReward = 0.0002f; // 기존 0.001 → 0.0002 (5배 감소) + +// 안전 및 제약 +public float collisionPenalty = -1.0f; // 아군-아군, 아군-모선 충돌 +public float motherShipCollisionPenalty = -1.75f; // 적군-모선 충돌 (Game Over) +public float formationBreakPenalty = -0.05f; +public float maxFormationDistance = 100f; +public float maxFormationAngleDiff = 90f; +``` + +#### 수정할 메서드: +- `CollectObservations()` - 관측값 수집 로직 재구현 + - 자신 상태 (4개) + - 팀원 상태 (4개) + - 적군들 상태 (4 × 적군수) + - 모선 상대거리 (3개: 상대 x, z, 총 거리) +- `OnActionReceived()` - 목표 속도 기반 액션 처리로 변경 + - 목표 선속도와 목표 각속도 수신 + - 속도 제어 컨트롤러를 통한 throttle/steering 변환 + - ⚠️ **개별 보상 제거**: `this.AddReward()` 호출 제거 +- `Heuristic()` - 휴리스틱 메서드 수정 + - 키보드 입력을 목표 속도로 변환 + - HumanController와 유사한 방식으로 동작 +- `CalculateReward()` - ⚠️ **제거 또는 비활성화** + - 개별 보상 계산 로직을 `DefenseRewardCalculator`로 이동 + - 또는 빈 메서드로 유지 (호환성) + +#### 추가할 메서드 (DefenseAgent): +- `SortEnemiesByDistance()` - 적군을 거리순으로 정렬 (학습 속도 향상) +- `ConvertToLocalCoordinates()` - 절대 좌표를 상대 좌표(로컬 좌표계)로 변환 +- `ConvertTargetVelocityToThrottle()` - 목표 선속도를 throttle로 변환 +- `ConvertTargetAngularVelocityToSteering()` - 목표 각속도를 steering으로 변환 +- `ApplyAccelerationLimits()` - 목표 속도에 가속도 제한 적용 +- `OnCollisionEnter()` - 충돌 감지 (EnvController에 알림) + +#### 추가할 메서드 (DefenseRewardCalculator): +- `CalculateCooperativeRewards()` - 헤딩/속도/간격 동기화, 그물 장력 계산 +- `CalculateNetTensionReward()` - 그물 장력 보상 계산 +- `CalculateTacticalRewards()` - 수직 차단, 추적 이득 계산 +- `CalculateMissionRewards()` - 임무 성과 보상 (포획, 모선 방어 등) +- `CalculateSafetyPenalties()` - 충돌, 대형 붕괴 등 페널티 계산 +- `GetAgentStates()` - 두 에이전트의 현재 상태 수집 + +#### 추가할 메서드 (DefenseEnvController): +- `Update()` - 매 프레임 보상 계산 및 그룹 보상 분배 +- `DistributeGroupReward()` - `m_AgentGroup.AddGroupReward()` 호출 +- `OnEpisodeBegin()` - 에피소드 시작 시 초기화 +- `RegisterAgent()` - 에이전트 등록 +- `OnMotherShipCollision()` - 모선 충돌 감지 및 처리 (Game Over) + +--- + +### 3.2 DefenseBoatManager.cs 개선 + +#### 추가할 필드: +```csharp +[Header("Mother Ship Defense")] +public GameObject motherShip; +public float motherShipDefenseRadius = 1000f; // 1km +private bool _enemyEnteredDefenseZone = false; + +[Header("Collision Detection")] +public DefenseEnvController envController; // 모선 충돌 알림용 +``` + +#### 추가할 메서드: +- `CheckMotherShipDefense()` - 모선 방어 성공 체크 +- `CheckEnemyPosition()` - 적 위치 추적 (경계선 침범 감지) +- `OnMotherShipCollision()` - 모선 충돌 감지 (적군-모선 충돌 체크) + - 모선에 `OnCollisionEnter()` 또는 `OnTriggerEnter()` 추가 + - 충돌 대상이 `attack_boat` 태그인지 확인 + - `envController.OnMotherShipCollision()` 호출 + +--- + +### 3.3 새로운 스크립트 + +#### MotherShipCollisionDetector.cs (필수) ⚠️ +- **목적**: 모선과 적군 선박의 충돌을 감지 +- **역할**: + - 모선 GameObject에 부착 + - `OnCollisionEnter()` 또는 `OnTriggerEnter()`로 충돌 감지 + - 적군 태그(`attack_boat`) 확인 + - `DefenseEnvController`에 충돌 알림 +- **구현 위치**: 모선 GameObject에 컴포넌트로 추가 + +#### DefenseRewardCalculator.cs (필수) ⚠️ +- **목적**: 보상 계산 로직을 중앙화하여 그룹 보상 분배 +- **역할**: + - 두 에이전트의 상태를 모두 관찰 + - 협동 기동, 전술 기동, 그물 장력 등을 계산 + - `SimpleMultiAgentGroup.AddGroupReward()`를 통해 그룹 전체에 보상 분배 +- **주요 메서드**: + - `CalculateCooperativeRewards()` - 헤딩/속도/간격 동기화, 그물 장력 + - `CalculateTacticalRewards()` - 수직 차단, 추적 이득 + - `CalculateMissionRewards()` - 임무 성과 (포획, 모선 방어 등) + - `CalculateSafetyPenalties()` - 충돌, 대형 붕괴 등 + +#### DefenseEnvController.cs (필수) ⚠️ +- **목적**: 환경 전체를 관리하고 그룹 보상을 분배하는 컨트롤러 +- **역할**: + - `SimpleMultiAgentGroup` 참조 관리 + - `DefenseRewardCalculator`를 통한 보상 계산 및 분배 + - 에피소드 관리 및 리셋 +- **주요 메서드**: + - `Update()` - 매 프레임 보상 계산 및 분배 + - `OnEpisodeBegin()` - 에피소드 시작 시 초기화 + - `DistributeGroupReward()` - 그룹 전체에 보상 분배 + +#### 구현 예시 코드 + +**DefenseRewardCalculator.cs**: +```csharp +using UnityEngine; +using Unity.MLAgents; + +namespace BoatAttack +{ + public class DefenseRewardCalculator : MonoBehaviour + { + [Header("Reward Parameters")] + public float headingSyncReward = 0.0002f; + public float headingSyncTolerance = 15f; + public float speedSyncReward = 0.0002f; + public float speedSyncTolerance = 2f; + public float distanceMaintainReward = 0.0002f; + public float optimalDistance = 50f; + public float distanceTolerance = 5f; + public float netTensionReward = 0.0005f; + public float netMaxLength = 50f; + public float netOptimalMinRatio = 0.90f; + public float netOptimalMaxRatio = 0.95f; + + public struct AgentState + { + public Vector3 position; + public float heading; + public float speed; + public Rigidbody rb; + } + + public float CalculateCooperativeRewards(AgentState agent1, AgentState agent2) + { + float totalReward = 0f; + + // 1. 헤딩 동기화 + float headingDiff = Mathf.Abs(Mathf.DeltaAngle(agent1.heading, agent2.heading)); + if (headingDiff <= headingSyncTolerance) + totalReward += headingSyncReward; + + // 2. 속도 동기화 + float speedDiff = Mathf.Abs(agent1.speed - agent2.speed); + if (speedDiff <= speedSyncTolerance) + totalReward += speedSyncReward; + + // 3. 간격 유지 + float distance = Vector3.Distance(agent1.position, agent2.position); + float distanceError = Mathf.Abs(distance - optimalDistance); + if (distanceError <= distanceTolerance) + totalReward += distanceMaintainReward; + + // 4. 그물 장력 (Net Tension) + float optimalMin = netMaxLength * netOptimalMinRatio; + float optimalMax = netMaxLength * netOptimalMaxRatio; + if (distance >= optimalMin && distance <= optimalMax) + { + // 최적 범위 내에서 거리에 따라 보상 조정 + float centerDistance = (optimalMin + optimalMax) / 2f; + float distanceFromCenter = Mathf.Abs(distance - centerDistance); + float maxDeviation = (optimalMax - optimalMin) / 2f; + float tensionFactor = 1f - (distanceFromCenter / maxDeviation); + totalReward += netTensionReward * tensionFactor; + } + + return totalReward; + } + + public AgentState GetAgentState(DefenseAgent agent) + { + AgentState state = new AgentState + { + position = agent.transform.position, + heading = agent.transform.eulerAngles.y, + rb = agent.GetComponent() + }; + state.speed = state.rb != null ? state.rb.velocity.magnitude : 0f; + return state; + } + } +} +``` + +**DefenseEnvController.cs**: +```csharp +using UnityEngine; +using Unity.MLAgents; + +namespace BoatAttack +{ + public class DefenseEnvController : MonoBehaviour + { + [Header("Agents")] + public DefenseAgent defenseAgent1; + public DefenseAgent defenseAgent2; + + [Header("Components")] + public SimpleMultiAgentGroup m_AgentGroup; + public DefenseRewardCalculator rewardCalculator; + + [Header("Settings")] + [Tooltip("보상 계산 주기 (프레임 단위)")] + public int rewardCalculationInterval = 1; // 매 프레임 + + private int _frameCount = 0; + + private void Start() + { + // SimpleMultiAgentGroup 초기화 + if (m_AgentGroup == null) + m_AgentGroup = GetComponent(); + + // 에이전트 등록 + if (m_AgentGroup != null) + { + m_AgentGroup.RegisterAgent(defenseAgent1); + m_AgentGroup.RegisterAgent(defenseAgent2); + } + + // RewardCalculator 초기화 + if (rewardCalculator == null) + rewardCalculator = GetComponent(); + } + + private void Update() + { + _frameCount++; + + // 보상 계산 주기 확인 + if (_frameCount % rewardCalculationInterval != 0) + return; + + if (defenseAgent1 == null || defenseAgent2 == null || + rewardCalculator == null || m_AgentGroup == null) + return; + + // 1. 관측: 두 에이전트의 상태 수집 + var agent1State = rewardCalculator.GetAgentState(defenseAgent1); + var agent2State = rewardCalculator.GetAgentState(defenseAgent2); + + // 2. 계산: 협동 기동 보상 계산 + float cooperativeReward = rewardCalculator.CalculateCooperativeRewards( + agent1State, agent2State); + + // 3. 부여: 그룹 전체에 보상 분배 + if (cooperativeReward > 0f) + m_AgentGroup.AddGroupReward(cooperativeReward); + } + + public void OnEnemyCaptured(Vector3 enemyPosition) + { + // 포획 성공 보상 (그룹 보상) + float captureReward = 1.0f; + // 위치 보너스 계산... + m_AgentGroup.AddGroupReward(captureReward); + } + + /// + /// 모선 충돌 감지 및 처리 (Game Over) + /// + public void OnMotherShipCollision(GameObject enemyBoat) + { + if (m_AgentGroup == null) + return; + + // 큰 패널티 부여 (그룹 보상) + float penalty = -1.75f; // -1.5 ~ -2.0 범위에서 조정 가능 + m_AgentGroup.AddGroupReward(penalty); + + // 즉시 에피소드 종료 + m_AgentGroup.EndGroupEpisode(); + + Debug.Log($"[DefenseEnvController] 모선 충돌! Game Over. 패널티: {penalty}"); + } + } +} +``` + +--- + +## 4. 구현 단계 + +### Phase 0: 관측값 및 액션 구조 개선 (최우선) +0. ⚠️ 관측값 구조 재설계 및 구현 + - 적군 선박 배열 필드 추가 + - `CollectObservations()` 메서드 재구현 + - **상대 좌표 기반 관측으로 변경** (일반화 성능 향상) + - 모선 상대거리 계산 로직 추가 + - **적군 거리 기반 정렬 로직 추가** (학습 속도 향상) + - Behavior Config의 Observation Space 크기 조정 +0-1. ⚠️ 액션 공간 변경 (목표 속도 기반) + - `OnActionReceived()` 메서드 수정 + - 목표 선속도/각속도를 throttle/steering으로 변환하는 로직 구현 + - **가속도 제한 및 스무딩 강화** (물리적 한계 고려) + - 속도 제어 컨트롤러 구현 (PID 또는 비례 제어) + - `HumanController`와 유사한 방식으로 Engine 제어 + - Behavior Config의 Action Space 크기 확인 (2개 유지) +0-2. ⚠️ 보상 아키텍처 변경 (개별 → 그룹 보상) ⚠️ 최우선 + - `DefenseRewardCalculator.cs` 생성 및 구현 + - `DefenseEnvController.cs` 생성 및 구현 + - `SimpleMultiAgentGroup` 설정 및 등록 + - `DefenseAgent.CalculateReward()`에서 개별 보상 제거 + - 모든 보상을 `m_AgentGroup.AddGroupReward()`로 변경 + - 그물 장력(Net Tension) 보상 추가 +0-3. ⚠️ 보상 값 재조정 (보상 해킹 방지) + - 협동 기동 보상 값 대폭 감소 (0.01 → 0.0002) + - 전술 기동 보상 값 감소 (0.005 → 0.0005, 0.001 → 0.0002) + - 그물 장력 보상 추가 (0.0005) + - 보상 비율 검증 (최종 목표가 협동 보상 누적합보다 10배 이상 커야 함) + +### Phase 1: 기본 보상 체계 구현 (우선순위 높음) +1. ✅ 적 포획 성공 보상 조정 (1.0) +2. ⚠️ 포획 위치 기반 보너스 구현 (그물 중심 포획 보상) +3. ⚠️ 모선 방어 성공 보상 구현 +4. ⚠️ 방어선 침범 패널티 구현 +5. ⚠️ 충돌 감지 및 패널티 구현 (아군-아군, 아군-모선) +6. ⚠️ **모선 충돌 패널티 구현 (Game Over)** ⚠️ 최우선 + - 적군-모선 충돌 감지 + - 즉시 에피소드 종료 및 큰 패널티 (-1.5 ~ -2.0) + - 그룹 보상으로 분배 + +### Phase 2: 협동 기동 보상 (우선순위 중) +5. ⚠️ 헤딩 동기화 보상 구현 +6. ⚠️ 속도 동기화 보상 구현 +7. ⚠️ 간격 유지 보상 구현 (기존 페널티 개선) + +### Phase 3: 전술 기동 보상 (우선순위 낮음) +8. ⚠️ 수직 차단 보상 구현 +9. ⚠️ 추적 이득 보상 구현 + +### Phase 4: 안전 및 제약 (우선순위 높음) +10. ⚠️ 대형 붕괴 패널티 구현 +11. ✅ 시간 패널티 확인 및 조정 + +### Phase 5: 테스트 및 최적화 +12. 보상 값 튜닝 +13. 학습 성능 검증 +14. 디버깅 및 로깅 개선 + +--- + +## 5. ML-Agents 설정 + +### 5.1 Behavior Config 설정 +- **Algorithm**: PPO +- **Multi-Agent**: 두 에이전트가 동일한 Behavior 사용 (Shared Policy) +- **⚠️ 중요: SimpleMultiAgentGroup 설정** + - Unity Scene에 `SimpleMultiAgentGroup` 컴포넌트 추가 + - 두 `DefenseAgent`를 그룹에 등록 + - `DefenseEnvController`가 그룹 참조를 통해 `AddGroupReward()` 호출 +- **Hyperparameters**: + - Learning Rate: 3e-4 + - Batch Size: 128 + - Buffer Size: 2048 + - Beta (entropy): 0.01 + - Epsilon (clipping): 0.2 + - Lambda (GAE): 0.95 + - Gamma (discount): 0.99 + +### 5.2 Observation Space +- **새로운 관측 구조** (동적 크기): + - **자신의 상태** (4개): + - 위치 (x, z) - 정규화: /100 + - 헤딩 (y축 회전) - 정규화: 0~360 → 0~1 + - 속도 (magnitude) - 정규화: /20 + - **팀원(파트너) 선박 상태** (4개): + - 위치 (x, z) - 정규화: /100 + - 헤딩 (y축 회전) - 정규화: 0~360 → 0~1 + - 속도 (magnitude) - 정규화: /20 + - **적군 선박들** (인스펙터에 할당된 개수만큼, 각 4개): + - 위치 (x, z) - 정규화: /100 + - 헤딩 (y축 회전) - 정규화: 0~360 → 0~1 + - 속도 (magnitude) - 정규화: /20 + - **최대 적군 수 제한**: 예) 최대 5대까지 지원 (총 20개) + - 적군이 없거나 할당되지 않은 경우 0으로 채움 + - **모선 상대거리** (1개 또는 3개): + - 옵션 1: 총 거리만 (1개) - 정규화: /1000 + - 옵션 2: 상대 위치 벡터 (x, z, 거리) (3개) - 권장 + - 모선이 없으면 0으로 채움 + +- **총 관측 개수**: 4 + 4 + (4 × 적군수) + 3 = **11 + (4 × 적군수)** + - 예: 적군 1대 → 15개 + - 예: 적군 3대 → 23개 + - 예: 적군 5대 → 31개 + +- **구현 방법**: + - `DefenseAgent`에 `public GameObject[] enemyShips` 배열 필드 추가 + - 인스펙터에서 적군 선박들을 할당 + - `CollectObservations()`에서 배열 순회하며 관측값 추가 + - 최대 적군 수를 상수로 정의하여 관측 공간 크기 고정 + +- **구현 예시 코드** (⚠️ 상대 좌표 기반으로 개선): +```csharp +public override void CollectObservations(VectorSensor sensor) +{ + Vector3 myPos = transform.position; + Vector3 myForward = transform.forward; + float myAngle = transform.eulerAngles.y; + + // 1. 자신의 상태 (4개) - 절대 좌표 유지 (기준점) + sensor.AddObservation(myPos.x / 100f); + sensor.AddObservation(myPos.z / 100f); + sensor.AddObservation(myAngle / 360f); + sensor.AddObservation(_engine.RB.velocity.magnitude / 20f); + + // 2. 팀원(파트너) 상태 (4개) - ⚠️ 상대 좌표로 변경 + if (partnerAgent != null) + { + Vector3 relativeToPartner = partnerAgent.transform.position - myPos; + // 상대 위치를 로컬 좌표계로 변환 + float relativeX = Vector3.Dot(relativeToPartner, transform.right) / 100f; + float relativeZ = Vector3.Dot(relativeToPartner, transform.forward) / 100f; + float relativeDistance = relativeToPartner.magnitude / 100f; + float relativeAngle = Mathf.DeltaAngle(myAngle, partnerAgent.transform.eulerAngles.y) / 180f; // -1~1 + + sensor.AddObservation(relativeX); + sensor.AddObservation(relativeZ); + sensor.AddObservation(relativeAngle); + sensor.AddObservation(partnerAgent._engine.RB.velocity.magnitude / 20f); + } + else { /* 0으로 채움 */ } + + // 3. 적군 선박들 (4 × maxEnemyCount) - ⚠️ 거리 기반 정렬 + 상대 좌표 + // 먼저 적군을 거리순으로 정렬 + List<(GameObject enemy, float distance)> sortedEnemies = new List<(GameObject, float)>(); + for (int i = 0; i < enemyShips.Length && i < maxEnemyCount; i++) + { + if (enemyShips[i] != null) + { + float dist = Vector3.Distance(myPos, enemyShips[i].transform.position); + sortedEnemies.Add((enemyShips[i], dist)); + } + } + sortedEnemies.Sort((a, b) => a.distance.CompareTo(b.distance)); // 가까운 순으로 정렬 + + // 정렬된 적군을 관측값에 추가 + for (int i = 0; i < maxEnemyCount; i++) + { + if (i < sortedEnemies.Count) + { + GameObject enemy = sortedEnemies[i].enemy; + Vector3 relativeToEnemy = enemy.transform.position - myPos; + + // 상대 좌표 (로컬 좌표계) + float relativeX = Vector3.Dot(relativeToEnemy, transform.right) / 100f; + float relativeZ = Vector3.Dot(relativeToEnemy, transform.forward) / 100f; + float relativeDistance = relativeToEnemy.magnitude / 100f; + float relativeAngle = Mathf.DeltaAngle(myAngle, enemy.transform.eulerAngles.y) / 180f; + + sensor.AddObservation(relativeX); + sensor.AddObservation(relativeZ); + sensor.AddObservation(relativeAngle); + Rigidbody enemyRb = enemy.GetComponent(); + sensor.AddObservation(enemyRb != null ? enemyRb.velocity.magnitude / 20f : 0f); + } + else { /* 0으로 채움 */ } + } + + // 4. 모선 상대거리 (3개) - 이미 상대 좌표 + if (motherShip != null) + { + Vector3 relativePos = motherShip.transform.position - myPos; + float relativeX = Vector3.Dot(relativePos, transform.right) / 1000f; + float relativeZ = Vector3.Dot(relativePos, transform.forward) / 1000f; + sensor.AddObservation(relativeX); + sensor.AddObservation(relativeZ); + sensor.AddObservation(relativePos.magnitude / 1000f); + } + else { /* 0으로 채움 */ } +} +``` + +// 목표 속도 기반 액션 처리 예시 (⚠️ 가속도 제한 및 스무딩 강화) +public override void OnActionReceived(ActionBuffers actions) +{ + if (_engine == null || _episodeEnded) + return; + + // 목표 속도 수신 (정규화된 값 -1~1) + float targetLinearVelNormalized = actions.ContinuousActions[0]; + float targetAngularVelNormalized = actions.ContinuousActions[1]; + + // 정규화 해제 + float targetLinearVelocity = targetLinearVelNormalized * maxLinearVelocity; + float targetAngularVelocity = targetAngularVelNormalized * maxAngularVelocity; + + // 현재 속도 측정 + float currentLinearVelocity = Vector3.Dot(_engine.RB.velocity, transform.forward); + float currentAngularVelocity = _engine.RB.angularVelocity.y * Mathf.Rad2Deg; + + // ⚠️ 가속도 제한 적용 (물리적 한계 고려) + float maxLinearAcceleration = 5f; // m/s² (물리적으로 가능한 최대 가속도) + float maxAngularAcceleration = 45f; // deg/s² + + // 이전 목표 속도 저장 (가속도 제한 계산용) + float prevTargetLinearVel = _lastTargetLinearVelocity; + float prevTargetAngularVel = _lastTargetAngularVelocity; + + // 목표 속도 변화량 제한 + float deltaTime = Time.fixedDeltaTime; + float maxLinearVelChange = maxLinearAcceleration * deltaTime; + float maxAngularVelChange = maxAngularAcceleration * deltaTime; + + targetLinearVelocity = Mathf.Clamp(targetLinearVelocity, + prevTargetLinearVel - maxLinearVelChange, + prevTargetLinearVel + maxLinearVelChange); + targetAngularVelocity = Mathf.Clamp(targetAngularVelocity, + prevTargetAngularVel - maxAngularVelChange, + prevTargetAngularVel + maxAngularVelChange); + + _lastTargetLinearVelocity = targetLinearVelocity; + _lastTargetAngularVelocity = targetAngularVelocity; + + // 속도 차이 계산 및 throttle/steering 변환 + float velocityError = targetLinearVelocity - currentLinearVelocity; + float throttle = Mathf.Clamp(velocityError * velocityControlGain / maxLinearVelocity, -1f, 1f); + + float angularVelocityError = targetAngularVelocity - currentAngularVelocity; + float steering = Mathf.Clamp(angularVelocityError * angularVelocityControlGain / maxAngularVelocity, -1f, 1f); + + // ⚠️ 스무스 처리 강화 (더 보수적으로) + float smoothFactor = 0.1f; // 기존 inputSmoothing보다 더 작게 (더 부드럽게) + _smoothThrottle = Mathf.Lerp(_smoothThrottle, throttle, smoothFactor); + _smoothSteering = Mathf.Lerp(_smoothSteering, steering, smoothFactor); + + // Engine 제어 + _engine.Accelerate(Mathf.Clamp01(_smoothThrottle)); // throttle은 0~1 범위 + _engine.Turn(_smoothSteering * steeringSensitivity); + + // 보상 계산 + CalculateReward(); +} + +// 추가 필드 필요 +private float _lastTargetLinearVelocity = 0f; +private float _lastTargetAngularVelocity = 0f; + +// 휴리스틱 메서드 예시 (HumanController 방식) +// ⚠️ Unity의 새로운 Input System 사용 (UnityEngine.InputSystem) +using UnityEngine.InputSystem; + +public override void Heuristic(in ActionBuffers actionsOut) +{ + var continuousActions = actionsOut.ContinuousActions; + + // Unity Input System 사용 (Legacy Input 대신) + Keyboard keyboard = Keyboard.current; + if (keyboard == null) + { + continuousActions[0] = 0f; + continuousActions[1] = 0f; + return; + } + + // 키보드 입력을 목표 속도로 변환 + float targetLinearVel = 0f; + float targetAngularVel = 0f; + + // Agent 이름으로 구분 + if (gameObject.name.Contains("1")) + { + // WASD + if (keyboard.wKey.isPressed) + targetLinearVel = maxLinearVelocity; // 전진 + else if (keyboard.sKey.isPressed) + targetLinearVel = -maxLinearVelocity * 0.5f; // 후진 (느리게) + + if (keyboard.dKey.isPressed) + targetAngularVel = maxAngularVelocity; // 우회전 + else if (keyboard.aKey.isPressed) + targetAngularVel = -maxAngularVelocity; // 좌회전 + } + else if (gameObject.name.Contains("2")) + { + // Arrow Keys + if (keyboard.upArrowKey.isPressed) + targetLinearVel = maxLinearVelocity; + else if (keyboard.downArrowKey.isPressed) + targetLinearVel = -maxLinearVelocity * 0.5f; + + if (keyboard.rightArrowKey.isPressed) + targetAngularVel = maxAngularVelocity; + else if (keyboard.leftArrowKey.isPressed) + targetAngularVel = -maxAngularVelocity; + } + + // 정규화 (-1~1) + if (maxLinearVelocity > 0.01f) + continuousActions[0] = Mathf.Clamp(targetLinearVel / maxLinearVelocity, -1f, 1f); + else + continuousActions[0] = 0f; + + if (maxAngularVelocity > 0.01f) + continuousActions[1] = Mathf.Clamp(targetAngularVel / maxAngularVelocity, -1f, 1f); + else + continuousActions[1] = 0f; +} +``` + +### 5.3 Action Space +- **변경 사항**: 목표 속도 기반 액션으로 변경 + - **기존**: `actions[0]`: throttle (-1~1), `actions[1]`: steering (-1~1) + - **신규**: `actions[0]`: 목표 선속도 (target linear velocity, -maxSpeed~maxSpeed) + - **신규**: `actions[1]`: 목표 각속도 (target angular velocity, -maxAngularSpeed~maxAngularSpeed) + - **정규화**: + - 목표 선속도: 예) -20~20 m/s → -1~1로 정규화 + - 목표 각속도: 예) -90~90 deg/s → -1~1로 정규화 +- **구현 방법**: + - `OnActionReceived()`에서 목표 속도 수신 + - 목표 속도를 실제 throttle/steering으로 변환하는 컨트롤러 필요 + - PID 컨트롤러 또는 비례 제어를 사용하여 목표 속도 달성 + - `HumanController`와 유사한 방식으로 Engine 제어 + +### 5.4 Behavior Config 설정 주의사항 +- **Observation Space 크기**: + - 공식: `11 + (4 × maxEnemyCount)` + - 예: maxEnemyCount = 5 → 31개 + - Unity ML-Agents Behavior Config에서 이 값으로 설정 필요 +- **동적 적군 수 대응**: + - 인스펙터에서 할당되지 않은 적군은 0으로 채움 + - 학습 시 항상 동일한 크기의 관측값 보장 + +--- + +## 6. 디버깅 및 모니터링 + +### 6.1 보상 추적 +- 각 보상 카테고리별 누적 보상 표시 +- Unity Inspector에서 실시간 확인 가능하도록 + +### 6.2 로깅 +- 주요 이벤트 로깅 (포획, 충돌, 경계선 침범 등) +- **모선 충돌 이벤트 로깅** (Game Over 이벤트) ⚠️ 중요 +- 보상 분포 분석용 CSV 출력 (선택사항) + +### 6.3 시각화 +- Gizmo로 경계선 표시 +- 보상 히트맵 (선택사항) + +--- + +## 7. 예상 결과 + +### 7.1 학습 목표 +- 두 에이전트가 협력하여 적을 포획 +- 모선 방어 성공률 향상 +- 안전한 기동 (충돌 최소화) + +### 7.2 성능 지표 +- 포획 성공률 +- 평균 포획 위치 (그물 중심으로부터 거리) +- 중심 포획 비율 (중심 10m 이내 포획 비율) +- 평균 에피소드 길이 +- 충돌 발생률 (아군-아군, 아군-모선) +- **모선 충돌 발생률** (적군-모선, Game Over 비율) ⚠️ 중요 +- 모선 방어 성공률 + +--- + +## 8. 다음 단계 + +1. **즉시 구현**: Phase 1 (임무 성과 + 안전) +2. **단계적 구현**: Phase 2, 3 (협동/전술 기동) +3. **튜닝**: 보상 값 최적화 +4. **검증**: 학습 성능 평가 + +--- + +## 9. 참고사항 + +- 보상 값은 학습 과정에서 조정 필요 +- Multi-Agent 환경에서는 보상 신호가 서로 영향을 줄 수 있음 +- 경계선 침범 감지는 성능에 영향을 줄 수 있으므로 최적화 필요 +- 그물(Web)의 실제 물리적 구현 확인 필요 (DynamicWeb.cs 참조) +- **포획 위치 보너스**: 그물 중심 포획을 유도하여 더 정확한 협동 기동 학습 유도 + - 중심 포획은 두 에이전트의 균형잡힌 협력이 필요함 + - 보너스 값은 학습 성과에 따라 조정 가능 (0.1~0.5 범위 권장) +- **관측값 구조**: + - 적군 선박은 인스펙터에서 동적으로 할당 가능 + - 최대 적군 수는 고정하여 관측 공간 크기 일관성 유지 + - 모선은 상대거리만 사용하여 절대 위치 의존성 제거 + - 관측값 정규화는 학습 안정성을 위해 중요함 +- **액션 공간 변경 (목표 속도 기반)**: + - 기존 throttle/steering 직접 제어 → 목표 선속도/각속도 제어로 변경 + - `HumanController`와 유사한 방식으로 동작하도록 구현 + - 목표 속도를 실제 throttle/steering으로 변환하는 컨트롤러 필요 + - 속도 제어 게인은 튜닝이 필요할 수 있음 + - 학습 시 더 부드러운 기동이 가능하며, 속도 기반 보상 설계가 용이함 +- **그물 장력 (Net Tension)**: + - 두 배가 너무 멀어지면 그물이 끊어지고, 너무 가까워지면 엉킴 + - 그물 길이의 90~95% 수준에서 최대 보상 부여 + - 방어 면적 최대화를 위한 중요한 보상 + - 간격 유지 보상과 함께 작동하여 최적 거리 유지 유도 +- **모선 충돌 패널티 (Game Over)**: + - 적군 선박이 모선에 충돌하는 것은 단순 실점이 아닌 **패배** + - 즉시 에피소드 종료 및 큰 패널티 (-1.5 ~ -2.0) 부여 + - 아군 충돌 패널티(-1.0)보다 더 큰 값으로 최악의 결과임을 명확히 전달 + - 모선 방어가 최우선 목표임을 학습에 반영 + - 그룹 보상으로 분배하여 두 에이전트 모두 패배를 인지 + +--- + +## 10. 공학적 위험 요소 및 개선 사항 ⚠️ + +### 10.1 보상 값의 수치적 균형 문제 (최우선) + +#### 문제점 +- **보상 해킹(Reward Hacking) 위험**: 협동 기동 보상(+0.01)이 매 스텝 부여되면 최종 목표(+1.0)를 압도 +- **예시**: 에피소드 25,000 스텝 중 1,000 스텝만 동기화해도 `1,000 × 0.01 = 10.0` 보상 +- **결과**: 에이전트가 "적을 잡으러 가는 리스크를 감수하느니, 그냥 우리끼리 춤추면서 시간을 끌자"라는 전략에 빠질 수 있음 + +#### 해결책 +- ✅ **스텝당 보상 대폭 감소**: 0.01 → **0.0001~0.0005** (20~100배 감소) +- ✅ **상태 보상 방식**: 특정 오차 범위 내에 있을 때만 아주 미세하게 부여 +- ✅ **보상 비율 조정**: 최종 목표 보상이 협동 보상의 누적합보다 압도적으로 커야 함 + +#### 수정된 보상 값 +| 항목 | 원래 계획 | 수정 후 | 비율 | +|------|----------|---------|------| +| 헤딩 동기화 | +0.01 | +0.0002 | 50배 감소 | +| 속도 동기화 | +0.01 | +0.0002 | 50배 감소 | +| 간격 유지 | +0.01 | +0.0002 | 50배 감소 | +| 수직 차단 | +0.005 | +0.0005 | 10배 감소 | +| 추적 이득 | +0.001 | +0.0002 | 5배 감소 | + +--- + +### 10.2 절대 좌표 vs 상대 좌표 (일반화 성능) + +#### 문제점 +- **절대 좌표 의존성**: `sensor.AddObservation(myPos.x / 100f)`와 같이 절대 좌표 사용 +- **위험 요소**: AI가 특정 지도의 특정 좌표에 의존하게 됨 +- **결과**: 모선이 이동하거나 훈련 구역이 바뀌면 성능 저하 + +#### 해결책 +- ✅ **상대 좌표(Relative Coordinates) 적극 활용** + - 나-파트너 사이의 벡터 (로컬 좌표계) + - 나-적군 사이의 벡터 (로컬 좌표계) + - 나-모선 사이의 벡터 (로컬 좌표계) +- ✅ **로컬 좌표계 변환**: `Vector3.Dot(relativePos, transform.right/forward)` 사용 +- ✅ **일반화 성능 향상**: 어디서든 싸울 수 있는 지능 확보 + +#### 구현 예시 +```csharp +// 절대 좌표 (기존) +sensor.AddObservation(partnerPos.x / 100f); +sensor.AddObservation(partnerPos.z / 100f); + +// 상대 좌표 (개선) +Vector3 relativeToPartner = partnerAgent.transform.position - transform.position; +float relativeX = Vector3.Dot(relativeToPartner, transform.right) / 100f; +float relativeZ = Vector3.Dot(relativeToPartner, transform.forward) / 100f; +sensor.AddObservation(relativeX); +sensor.AddObservation(relativeZ); +``` + +--- + +### 10.3 적군 관측의 우선순위 정렬 부재 + +#### 문제점 +- **배열 순서 의존성**: `enemyShips` 배열을 그대로 관측값에 추가 +- **위험 요소**: + - 배열 순서가 바뀌면 AI 혼란 + - 1번 적이 멀고 2번 적이 가까울 때, 인덱스 순서대로 관측하면 불필요한 연산 소모 +- **결과**: 학습 속도 저하 및 비효율적 전략 학습 + +#### 해결책 +- ✅ **거리 기반 정렬(Sorting)**: 관측 전에 '나와 가까운 순서'로 정렬 +- ✅ **모선 거리 기반 정렬**: '모선과 가까운 순서'로 정렬 (선택적) +- ✅ **학습 속도 향상**: AI가 위험한 적을 우선적으로 인식 + +#### 구현 예시 +```csharp +// 거리순 정렬 +List<(GameObject enemy, float distance)> sortedEnemies = new List<(GameObject, float)>(); +for (int i = 0; i < enemyShips.Length; i++) +{ + if (enemyShips[i] != null) + { + float dist = Vector3.Distance(transform.position, enemyShips[i].transform.position); + sortedEnemies.Add((enemyShips[i], dist)); + } +} +sortedEnemies.Sort((a, b) => a.distance.CompareTo(b.distance)); // 가까운 순으로 정렬 +``` + +--- + +### 10.4 속도 기반 액션의 물리적 한계 간과 + +#### 문제점 +- **물리 엔진 한계**: USV는 회전 반경(Turning Radius)과 관성이 큼 +- **위험 요소**: RL이 "즉각적으로 90도 회전해서 시속 20m/s로 가라"고 명령했을 때, 물리 엔진이 따라가지 못함 +- **결과**: RL이 자신이 내린 액션과 결과 사이의 상관관계를 이해하지 못함 + +#### 해결책 +- ✅ **가속도 제한(Acceleration Limit)**: 물리적으로 가능한 수준의 명령만 전달 +- ✅ **스무딩 강화**: `inputSmoothing`보다 더 보수적인 값 사용 (예: 0.1) +- ✅ **목표 속도 변화량 제한**: 이전 목표 속도와의 차이를 제한 + +#### 구현 예시 +```csharp +// 가속도 제한 적용 +float maxLinearAcceleration = 5f; // m/s² +float maxAngularAcceleration = 45f; // deg/s² + +float maxLinearVelChange = maxLinearAcceleration * deltaTime; +targetLinearVelocity = Mathf.Clamp(targetLinearVelocity, + prevTargetLinearVel - maxLinearVelChange, + prevTargetLinearVel + maxLinearVelChange); +``` + +--- + +### 10.5 개별 보상 vs 그룹 보상 (MA-PPO 최적화) ⚠️ 최우선 + +#### 문제점 +- **개별 보상 방식의 한계**: 각 에이전트가 `this.AddReward()`로 개별적으로 보상을 받음 +- **위험 요소**: + - 파트너 배는 내가 왜 점수를 받았는지 모름 + - 이기적인 에이전트가 될 확률 높음 + - 협동을 위한 개별 기동을 학습하기 어려움 +- **예시**: A가 헤딩을 맞추면 A만 +0.01점을 받음. B는 점수를 못 받으니 왜 A가 저렇게 움직이는지 모름 + +#### 해결책: 그룹 보상 아키텍처 +- ✅ **중앙화된 보상 계산**: `DefenseRewardCalculator`에서 두 에이전트의 상태를 모두 관찰 +- ✅ **그룹 보상 분배**: `SimpleMultiAgentGroup.AddGroupReward()`를 통해 그룹 전체에 보상 분배 +- ✅ **결과**: A가 B와 헤딩을 맞추면, 컨트롤러가 이를 감지하고 그룹 전체에 +0.01점을 줌. B도 "어? 우리가 지금 뭔가를 잘해서 팀 점수가 올랐네?"라고 인지하며, A와 보조를 맞추는 방향으로 정책을 업데이트 + +#### 보상 흐름 아키텍처 + +**기존 방식 (피해야 할 방식)**: +```csharp +// DefenseAgent.cs 내부 +private void CalculateReward() +{ + // 개별 보상 + if (headingSync) + this.AddReward(0.0002f); // 나 혼자만 점수 +} +``` + +**권장 방식 (MA-PPO 최적화)**: +```csharp +// DefenseEnvController.cs +private void Update() +{ + // 1. 관측: 두 에이전트의 상태 수집 + var agent1State = GetAgentState(defenseAgent1); + var agent2State = GetAgentState(defenseAgent2); + + // 2. 계산: DefenseRewardCalculator가 협동 기동 계산 + float headingSyncReward = rewardCalculator.CalculateCooperativeRewards( + agent1State, agent2State); + + // 3. 부여: 그룹 전체에 보상 분배 + if (headingSyncReward > 0) + m_AgentGroup.AddGroupReward(headingSyncReward); // 팀 전체 점수 +} + +// DefenseRewardCalculator.cs +public float CalculateCooperativeRewards(AgentState agent1, AgentState agent2) +{ + float totalReward = 0f; + + // 헤딩 동기화 체크 + float headingDiff = Mathf.Abs(Mathf.DeltaAngle( + agent1.heading, agent2.heading)); + if (headingDiff <= headingSyncTolerance) + totalReward += headingSyncReward; + + // 속도 동기화 체크 + float speedDiff = Mathf.Abs(agent1.speed - agent2.speed); + if (speedDiff <= speedSyncTolerance) + totalReward += speedSyncReward; + + // 그물 장력 체크 + float distance = Vector3.Distance(agent1.position, agent2.position); + float optimalMin = netMaxLength * netOptimalMinRatio; + float optimalMax = netMaxLength * netOptimalMaxRatio; + if (distance >= optimalMin && distance <= optimalMax) + totalReward += netTensionReward; + + return totalReward; +} +``` + +#### 구현 체크리스트 +- [ ] `SimpleMultiAgentGroup` 컴포넌트를 Unity Scene에 추가 +- [ ] 두 `DefenseAgent`를 그룹에 등록 +- [ ] `DefenseRewardCalculator.cs` 생성 및 구현 +- [ ] `DefenseEnvController.cs` 생성 및 구현 +- [ ] `DefenseAgent.CalculateReward()`에서 개별 보상 제거 +- [ ] 모든 보상을 `m_AgentGroup.AddGroupReward()`로 변경 +- [ ] 그룹 보상 분배 로직 테스트 + +#### 비교표 + +| 구분 | 기존 방식 (피해야 할 방식) | 권장 방식 (MA-PPO 최적화) | +|------|------------------------|------------------------| +| 코드 위치 | DefenseAgent.cs 내부 | EnvController.cs (또는 전용 Calculator) | +| 사용 함수 | `this.AddReward(0.01f)` | `m_AgentGroup.AddGroupReward(0.01f)` | +| 보상 대상 | 나 혼자만 점수를 받음 | 내가 잘하면 우리 팀 전체가 점수를 받음 | +| 문제점 | 파트너 배는 내가 왜 점수를 받았는지 모름 | 파트너와 내가 항상 동일한 보상값을 공유함 | +| 결과 | 이기적인 에이전트가 될 확률 높음 | 협동을 위한 개별 기동을 학습함 | + +--- + +### 10.6 추가 권장 사항 + +1. **보상 스케일링 검증** + - 에피소드당 예상 보상 범위 계산 + - 최종 목표 보상이 협동 보상 누적합보다 최소 10배 이상 커야 함 + +2. **상대 좌표 테스트** + - 다양한 초기 위치에서 학습 테스트 + - 모선 위치 변경 시 성능 유지 확인 + +3. **적군 정렬 성능 비교** + - 정렬 전/후 학습 속도 비교 + - 최종 성능 차이 측정 + +4. **물리 제약 튜닝** + - 실제 USV의 가속도/각가속도 한계 측정 + - 시뮬레이션과 실제 값 일치 확인 + +5. **그룹 보상 아키텍처 검증** + - 개별 보상 vs 그룹 보상 학습 속도 비교 + - 최종 협동 성능 차이 측정 + - 그룹 보상 분배 타이밍 최적화 (매 프레임 vs 매 N 프레임) diff --git a/Assets/Scripts/Defense/MA_PPO_Implementation_Plan.md.meta b/Assets/Scripts/Defense/MA_PPO_Implementation_Plan.md.meta new file mode 100644 index 000000000..e592729b0 --- /dev/null +++ b/Assets/Scripts/Defense/MA_PPO_Implementation_Plan.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ea21b4bd8c90e8649ad032dce7ac30d9 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Defense/MLAgents.meta b/Assets/Scripts/Defense/MLAgents.meta new file mode 100644 index 000000000..a3449d7b0 --- /dev/null +++ b/Assets/Scripts/Defense/MLAgents.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f1a9d8d469ee64b419daaa654bbc4e7f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Defense/MLAgents/AttackAgent.cs b/Assets/Scripts/Defense/MLAgents/AttackAgent.cs new file mode 100644 index 000000000..37189b318 --- /dev/null +++ b/Assets/Scripts/Defense/MLAgents/AttackAgent.cs @@ -0,0 +1,749 @@ +using UnityEngine; +using UnityEngine.InputSystem; +using Unity.MLAgents; +using Unity.MLAgents.Sensors; +using Unity.MLAgents.Actuators; + +namespace BoatAttack +{ + /// + /// 공격 에이전트: 모선에 접근하는 것이 목표 + /// 보상: 모선과의 거리가 가까울수록 보상 + /// + public class AttackAgent : Agent, IHeuristicProvider + { + [Header("Boat Components")] + [Tooltip("Boat 컴포넌트 (자동으로 찾음)")] + private Boat _boat; + + [Tooltip("Engine 컴포넌트 (자동으로 찾음)")] + private Engine _engine; + + [Header("Target Settings")] + [Tooltip("공격 대상 모선 (태그로 찾거나 직접 할당)")] + public GameObject targetMotherShip; + + [Tooltip("모선 태그 (targetMotherShip이 없을 때 사용)")] + public string motherShipTag = "MotherShip"; + + [Header("Observation Settings")] + [Tooltip("Raycast로 주변 감지할 거리")] + public float raycastDistance = 50f; + + [Tooltip("Raycast 방향 개수")] + public int raycastCount = 8; + + [Header("Reward Settings")] + [Tooltip("거리 기반 보상 계수 (가까울수록 높은 보상)")] + public float distanceRewardMultiplier = 0.01f; + + [Tooltip("최대 보상 거리 (이 거리 이내면 보상)")] + public float maxRewardDistance = 100f; + + [Tooltip("시간당 작은 페널티 (빠른 접근 유도)")] + public float timePenalty = -0.001f; + + [Header("Control Settings")] + [Range(0.1f, 2.0f)] + [Tooltip("조종 감도 조절 (낮을수록 느림, 높을수록 빠름)")] + public float steeringSensitivity = 0.3f; + + [Range(0.01f, 1.0f)] + [Tooltip("입력 스무스 처리 속도 (낮을수록 더 부드러움, 높을수록 즉각 반응)")] + public float inputSmoothing = 0.2f; + + [Header("Debug")] + [Tooltip("에디터에서 Raycast 시각화")] + public bool showRaycasts = true; + + [Header("Reward Display")] + [Tooltip("현재 에피소드의 총 보상")] + [SerializeField] private float _totalReward = 0f; + + [Header("Explosion Settings")] + [Tooltip("폭발 효과 Prefab (War FX) - 자폭선박이 모선과 충돌 시 사용")] + public GameObject explosionPrefab; + + [Tooltip("폭발 시 보상 (성공 보상)")] + public float explosionReward = 50f; + + [Tooltip("폭발 효과 크기 배율")] + [Range(5f, 50f)] + public float explosionScale = 23f; + + [Header("Collision Detection")] + [Tooltip("충돌 감지 방식: true=Trigger 사용 (보트 Collider의 Is Trigger 활성화 필요), false=물리 Collision 사용")] + public bool useTriggerCollision = false; + + [Header("Waypoint Following")] + [Tooltip("Waypoint를 따라갈지 여부 (true면 waypoint 경로를 따라가고, false면 모선을 직접 추적)")] + public bool followWaypoints = true; + + [Tooltip("Waypoint 추적 모드일 때 모선 접근 거리 (이 거리 이내면 모선을 직접 추적)")] + public float directChaseDistance = 50f; + + private float _lastDistance; + private Vector3 _lastPosition; + private float _episodeStartTime; + + // 스무스 입력을 위한 변수 + private float _smoothThrottle = 0f; + private float _smoothSteering = 0f; + + // 폭발 관련 변수 + private bool _hasExploded = false; + + // Waypoint 추적 관련 변수 (AiController 참고) + private int _currentWaypointIndex = 0; + private Vector3 _currentWaypointPosition; + private bool _waypointInitialized = false; + + private new void Awake() + { + // Boat와 Engine 컴포넌트 찾기 + if (TryGetComponent(out _boat)) + { + _engine = _boat.engine; + } + else + { + Debug.LogError($"[AttackAgent] Boat 컴포넌트를 찾을 수 없습니다. {gameObject.name}"); + } + } + + protected override void OnEnable() + { + base.OnEnable(); + + // 모선 찾기 + if (targetMotherShip == null) + { + var ship = GameObject.FindGameObjectWithTag(motherShipTag); + if (ship != null) + { + targetMotherShip = ship; + } + else + { + Debug.LogWarning($"[AttackAgent] 모선을 찾을 수 없습니다. 태그: {motherShipTag}"); + } + } + + // Waypoint 초기화 + if (followWaypoints) + { + InitializeWaypoint(); + } + } + + /// + /// Waypoint 초기화 (첫 waypoint 할당) + /// + private void InitializeWaypoint() + { + if (WaypointGroup.Instance == null) + { + Debug.LogWarning("[AttackAgent] WaypointGroup.Instance가 null입니다. Waypoint를 따라갈 수 없습니다."); + _waypointInitialized = false; + return; + } + + if (WaypointGroup.Instance.WPs == null || WaypointGroup.Instance.WPs.Count == 0) + { + Debug.LogWarning("[AttackAgent] Waypoint가 없습니다. Waypoint를 따라갈 수 없습니다."); + _waypointInitialized = false; + return; + } + + // 첫 waypoint 할당 + _currentWaypointIndex = 0; + var firstWaypoint = WaypointGroup.Instance.WPs[0]; + _currentWaypointPosition = firstWaypoint.point; + _waypointInitialized = true; + + Debug.Log($"[AttackAgent] Waypoint 초기화 완료: 첫 waypoint = {_currentWaypointPosition}"); + } + + public override void OnEpisodeBegin() + { + // 에피소드 시작 시 초기화 + _episodeStartTime = Time.time; + _totalReward = 0f; // 총 보상 초기화 + _smoothThrottle = 0f; // 스무스 입력 초기화 + _smoothSteering = 0f; + _hasExploded = false; // 폭발 상태 초기화 + + // Waypoint 초기화 (에피소드 재시작 시) + if (followWaypoints) + { + InitializeWaypoint(); + } + + // 배 위치는 AttackBoatManager에서 재생성 시 설정되므로 여기서는 리셋하지 않음 + // 단, Rigidbody 속도 및 각속도만 리셋 + if (_engine != null && _engine.RB != null) + { + _engine.RB.velocity = Vector3.zero; + _engine.RB.angularVelocity = Vector3.zero; + } + + _lastPosition = transform.position; + + if (targetMotherShip != null) + { + _lastDistance = Vector3.Distance(transform.position, targetMotherShip.transform.position); + } + + Debug.Log($"[AttackAgent] OnEpisodeBegin: 배 위치 = {transform.position}"); + } + + public override void CollectObservations(VectorSensor sensor) + { + if (targetMotherShip == null || _engine == null) + { + // 관측 불가능한 경우 0으로 채움 + for (int i = 0; i < GetObservationSize(); i++) + { + sensor.AddObservation(0f); + } + return; + } + + // 1. 모선과의 상대 위치 (정규화) + Vector3 toTarget = targetMotherShip.transform.position - transform.position; + float distance = toTarget.magnitude; + Vector3 direction = toTarget.normalized; + + sensor.AddObservation(distance / maxRewardDistance); // 거리 (0~1) + sensor.AddObservation(direction.x); // 방향 X + sensor.AddObservation(direction.z); // 방향 Z (Y는 무시) + + // 2. 자신의 속도 (정규화) + float speed = _engine.RB.velocity.magnitude; + sensor.AddObservation(Mathf.Clamp01(speed / 20f)); // 최대 속도 20 가정 + + // 3. 자신의 방향 (forward 벡터) + Vector3 forward = transform.forward; + sensor.AddObservation(forward.x); + sensor.AddObservation(forward.z); + + // 4. 모선 방향으로의 각도 (정규화) + float angleToTarget = Vector3.SignedAngle(transform.forward, direction, Vector3.up); + sensor.AddObservation(angleToTarget / 180f); // -1 ~ 1 + + // 5. Raycast로 주변 장애물 감지 + for (int i = 0; i < raycastCount; i++) + { + float angle = (360f / raycastCount) * i; + Vector3 rayDirection = Quaternion.Euler(0, angle, 0) * transform.forward; + + RaycastHit hit; + bool hasHit = Physics.Raycast(transform.position, rayDirection, out hit, raycastDistance); + + if (hasHit) + { + sensor.AddObservation(1f - (hit.distance / raycastDistance)); // 거리 (0~1, 가까울수록 1) + // 장애물 타입 구분 (선택적) + sensor.AddObservation(hit.collider.CompareTag("boat") ? 1f : 0f); + } + else + { + sensor.AddObservation(0f); // 장애물 없음 + sensor.AddObservation(0f); + } + } + } + + public override void OnActionReceived(ActionBuffers actions) + { + if (_engine == null) + { + return; + } + + // Waypoint 추적 모드일 때 waypoint를 따라가도록 조정 + Vector3 targetDirection = GetTargetDirection(); + + // Action 처리 (원본 입력) + float rawThrottle = Mathf.Clamp(actions.ContinuousActions[0], -1f, 1f); + float rawSteering = Mathf.Clamp(actions.ContinuousActions[1], -1f, 1f); + + // Waypoint 추적 모드일 때 방향 조정 + if (followWaypoints && _waypointInitialized) + { + // Waypoint 방향 계산 + Vector3 toWaypoint = (_currentWaypointPosition - transform.position).normalized; + Vector3 forward = transform.forward; + + // Waypoint 방향과 현재 방향의 각도 차이 계산 + float angleToWaypoint = Vector3.SignedAngle(forward, toWaypoint, Vector3.up); + + // Waypoint 방향으로 조정 (하지만 ML-Agents의 학습을 방해하지 않도록 약간만 조정) + // rawSteering에 waypoint 방향 힌트 추가 + float waypointSteeringHint = Mathf.Clamp(angleToWaypoint / 45f, -1f, 1f) * 0.3f; // 30% 힌트 + rawSteering = Mathf.Clamp(rawSteering + waypointSteeringHint, -1f, 1f); + + // Waypoint에 도달했는지 확인 + float distanceToWaypoint = Vector3.Distance(transform.position, _currentWaypointPosition); + if (distanceToWaypoint < 10f) // 10미터 이내면 다음 waypoint로 + { + AdvanceToNextWaypoint(); + } + } + + // 스무스 처리 (현실적인 반응) + _smoothThrottle = Mathf.Lerp(_smoothThrottle, rawThrottle, inputSmoothing); + _smoothSteering = Mathf.Lerp(_smoothSteering, rawSteering, inputSmoothing); + + // 감도 조절 적용 (HumanController와 동일) + float adjustedSteering = Mathf.Clamp(_smoothSteering * steeringSensitivity, -1f, 1f); + + // Engine에 전달 + _engine.Accelerate(_smoothThrottle); + _engine.Turn(adjustedSteering); + + // 보상 계산 + CalculateReward(); + } + + /// + /// 현재 목표 방향 가져오기 (waypoint 또는 모선) + /// + private Vector3 GetTargetDirection() + { + if (followWaypoints && _waypointInitialized) + { + // 모선과의 거리가 가까우면 모선을 직접 추적 + if (targetMotherShip != null) + { + float distanceToMotherShip = Vector3.Distance(transform.position, targetMotherShip.transform.position); + if (distanceToMotherShip < directChaseDistance) + { + return (targetMotherShip.transform.position - transform.position).normalized; + } + } + + // 그 외에는 waypoint를 따라감 + return (_currentWaypointPosition - transform.position).normalized; + } + else + { + // Waypoint 추적 모드가 아니면 모선을 직접 추적 + if (targetMotherShip != null) + { + return (targetMotherShip.transform.position - transform.position).normalized; + } + } + + return transform.forward; + } + + /// + /// 다음 waypoint로 진행 + /// + private void AdvanceToNextWaypoint() + { + if (WaypointGroup.Instance == null || WaypointGroup.Instance.WPs == null || WaypointGroup.Instance.WPs.Count == 0) + { + return; + } + + _currentWaypointIndex++; + if (_currentWaypointIndex >= WaypointGroup.Instance.WPs.Count) + { + // 마지막 waypoint에 도달하면 첫 번째로 돌아감 (루프) + _currentWaypointIndex = 0; + } + + var waypoint = WaypointGroup.Instance.WPs[_currentWaypointIndex]; + _currentWaypointPosition = waypoint.point; + + Debug.Log($"[AttackAgent] 다음 waypoint로 진행: {_currentWaypointIndex} = {_currentWaypointPosition}"); + } + + private void CalculateReward() + { + if (targetMotherShip == null) + { + return; + } + + // 거리 기반 보상 + float currentDistance = Vector3.Distance(transform.position, targetMotherShip.transform.position); + float rewardThisStep = 0f; + + // 거리가 가까워졌으면 보상 + if (currentDistance < _lastDistance) + { + float distanceImprovement = _lastDistance - currentDistance; + rewardThisStep += distanceImprovement * distanceRewardMultiplier; + } + else if (currentDistance > _lastDistance) + { + // 거리가 멀어지면 작은 페널티 + float distanceWorsening = currentDistance - _lastDistance; + rewardThisStep -= distanceWorsening * distanceRewardMultiplier * 0.5f; + } + + // 최대 보상 거리 이내에 있으면 추가 보상 + if (currentDistance < maxRewardDistance) + { + float proximityReward = (maxRewardDistance - currentDistance) / maxRewardDistance; + rewardThisStep += proximityReward * distanceRewardMultiplier * 0.1f; + } + + // 시간 페널티 (빠른 접근 유도) + rewardThisStep += timePenalty; + + // 보상 추가 및 총 보상 업데이트 + AddReward(rewardThisStep); + _totalReward = GetCumulativeReward(); // ML-Agents의 총 보상 가져오기 + + _lastDistance = currentDistance; + } + + /// + /// 관측 크기 계산 (디버깅용) + /// + private int GetObservationSize() + { + // 모선 정보: 5 (거리, 방향x2, 각도, 속도) + // 자신 정보: 2 (방향x2) + // Raycast: raycastCount * 2 (거리, 타입) + return 7 + (raycastCount * 2); + } + + /// + /// Heuristic 함수: 키보드로 수동 테스트 + /// ML-Agents Behavior Type을 "Heuristic Only"로 설정하면 이 함수가 호출됩니다. + /// Unity의 새로운 Input System (UnityEngine.InputSystem)을 사용합니다. + /// + public override void Heuristic(in ActionBuffers actionsOut) + { + var continuousActions = actionsOut.ContinuousActions; + + // Unity Input System 사용 (Legacy Input 대신) + Keyboard keyboard = Keyboard.current; + if (keyboard == null) + { + // 키보드가 없으면 0으로 설정 + continuousActions[0] = 0f; + continuousActions[1] = 0f; + return; + } + + float throttle = 0f; + float steering = 0f; + + // 가속/감속 (W/S 또는 위/아래 화살표) + if (keyboard.wKey.isPressed || keyboard.upArrowKey.isPressed) + { + throttle = 1f; + } + else if (keyboard.sKey.isPressed || keyboard.downArrowKey.isPressed) + { + throttle = -1f; + } + + // 좌우 회전 (A/D 또는 왼쪽/오른쪽 화살표) + if (keyboard.aKey.isPressed || keyboard.leftArrowKey.isPressed) + { + steering = -1f; + } + else if (keyboard.dKey.isPressed || keyboard.rightArrowKey.isPressed) + { + steering = 1f; + } + + // Action에 키보드 입력 전달 + continuousActions[0] = throttle; + continuousActions[1] = steering; + } + + /// + /// 에디터에서 Raycast 시각화 + /// + private void OnDrawGizmos() + { + if (!showRaycasts || targetMotherShip == null) + { + return; + } + + // 모선 방향 표시 + Gizmos.color = Color.red; + if (targetMotherShip != null) + { + Gizmos.DrawLine(transform.position, targetMotherShip.transform.position); + } + + // Raycast 방향 표시 + Gizmos.color = Color.yellow; + for (int i = 0; i < raycastCount; i++) + { + float angle = (360f / raycastCount) * i; + Vector3 rayDirection = Quaternion.Euler(0, angle, 0) * transform.forward; + Vector3 endPoint = transform.position + rayDirection * raycastDistance; + + Gizmos.DrawLine(transform.position, endPoint); + } + } + + /// + /// 에피소드 종료 조건 (선택적) + /// + private void CheckEpisodeEnd() + { + if (_hasExploded) + { + return; + } + + if (targetMotherShip == null) + { + return; + } + + float distance = Vector3.Distance(transform.position, targetMotherShip.transform.position); + + // 너무 멀어지면 실패 + if (distance > 500f) + { + AddReward(-1f); // 페널티 + EndEpisode(); + } + + // 시간 초과 (선택적) + if (Time.time - _episodeStartTime > 300f) // 5분 + { + EndEpisode(); + } + } + + /// + /// Trigger 충돌 감지 (IsTrigger가 활성화된 Collider) + /// + private void OnTriggerEnter(Collider other) + { + if (!useTriggerCollision || _hasExploded) + { + return; + } + + Debug.Log($"[AttackAgent] OnTriggerEnter 호출: {other.gameObject.name}, Tag: {other.tag}"); + + // 충돌한 객체가 MotherShip인지 확인 + bool isMotherShip = IsMotherShip(other.gameObject); + Debug.Log($"[AttackAgent] IsMotherShip 확인 결과: {isMotherShip}"); + + if (isMotherShip) + { + Debug.Log("[AttackAgent] MotherShip 충돌 감지! 폭발 처리 시작"); + HandleMotherShipCollision(other.gameObject); + } + else + { + Debug.Log($"[AttackAgent] MotherShip이 아님. Tag: {other.tag}, Name: {other.gameObject.name}"); + } + } + + /// + /// Collision 충돌 감지 (물리 충돌) + /// + private void OnCollisionEnter(Collision collision) + { + Debug.Log($"[AttackAgent] OnCollisionEnter 호출: {collision.gameObject.name}, Tag: {collision.gameObject.tag}, useTriggerCollision: {useTriggerCollision}, _hasExploded: {_hasExploded}"); + + if (_hasExploded) + { + Debug.Log("[AttackAgent] 이미 폭발했으므로 무시"); + return; + } + + // 충돌한 객체가 MotherShip인지 먼저 확인 + bool isMotherShip = IsMotherShip(collision.gameObject); + Debug.Log($"[AttackAgent] IsMotherShip 확인 결과: {isMotherShip}"); + + // MotherShip과의 충돌은 useTriggerCollision 설정과 관계없이 항상 처리 + if (isMotherShip) + { + Debug.Log("[AttackAgent] MotherShip 충돌 감지! 폭발 처리 시작 (useTriggerCollision 설정 무시)"); + HandleMotherShipCollision(collision.gameObject); + return; + } + + // MotherShip이 아닌 경우, useTriggerCollision이 true면 무시 + if (useTriggerCollision) + { + Debug.Log("[AttackAgent] useTriggerCollision이 true이고 MotherShip이 아니므로 Collision 무시"); + return; + } + + Debug.Log($"[AttackAgent] 일반 충돌: {collision.gameObject.name} (처리하지 않음)"); + } + + /// + /// 충돌한 객체가 MotherShip인지 확인 + /// + private bool IsMotherShip(GameObject obj) + { + if (obj == null) + { + Debug.LogWarning("[AttackAgent] IsMotherShip: obj가 null입니다"); + return false; + } + + // 태그로 확인 + if (!string.IsNullOrEmpty(motherShipTag) && obj.CompareTag(motherShipTag)) + { + Debug.Log($"[AttackAgent] IsMotherShip: 태그로 확인됨 ({motherShipTag})"); + return true; + } + + // 직접 할당된 targetMotherShip과 비교 + if (targetMotherShip != null && obj == targetMotherShip) + { + Debug.Log("[AttackAgent] IsMotherShip: targetMotherShip과 일치"); + return true; + } + + // 이름으로 확인 (선택적) + if (obj.name.Contains("MotherShip") || obj.name.Contains("Mother")) + { + Debug.Log($"[AttackAgent] IsMotherShip: 이름으로 확인됨 ({obj.name})"); + return true; + } + + Debug.Log($"[AttackAgent] IsMotherShip: 일치하지 않음. Tag: {obj.tag}, Name: {obj.name}, motherShipTag: {motherShipTag}"); + return false; + } + + /// + /// MotherShip과의 충돌 처리 + /// + private void HandleMotherShipCollision(GameObject motherShip) + { + if (_hasExploded) + { + Debug.LogWarning("[AttackAgent] HandleMotherShipCollision: 이미 폭발했음"); + return; + } + + Debug.Log($"[AttackAgent] HandleMotherShipCollision 호출! 폭발 처리 시작. MotherShip: {motherShip.name}"); + + // 폭발 처리 (explosionPrefab이 없어도 진행) + TriggerExplosion(); + + // 보상 추가 + AddReward(explosionReward); + Debug.Log($"[AttackAgent] 보상 추가: {explosionReward}, 총 보상: {GetCumulativeReward()}"); + + // 폭발 효과가 보이도록 약간의 딜레이 후 에피소드 종료 + StartCoroutine(EndEpisodeAfterDelay(1.5f)); + } + + /// + /// 딜레이 후 에피소드 종료 (폭발 효과가 보이도록) + /// + private System.Collections.IEnumerator EndEpisodeAfterDelay(float delay) + { + yield return new WaitForSeconds(delay); + Debug.Log("[AttackAgent] 에피소드 종료"); + EndEpisode(); + } + + /// + /// 폭발 효과 생성 및 처리 + /// + private void TriggerExplosion() + { + if (_hasExploded) + { + Debug.LogWarning("[AttackAgent] TriggerExplosion: 이미 폭발했음"); + return; + } + + Debug.Log($"[AttackAgent] TriggerExplosion 호출! 폭발 효과 생성 위치: {transform.position}"); + _hasExploded = true; + + // 폭발 효과 생성 검증 + if (explosionPrefab == null) + { + Debug.LogError("[AttackAgent] TriggerExplosion: explosionPrefab이 null입니다! Inspector에서 War FX 폭발 효과 Prefab을 할당해주세요."); + Debug.LogError("[AttackAgent] 경로 예시: Assets/JMO Assets/WarFX/_Effects/Explosions/WFX_Explosion.prefab"); + return; + } + + // 폭발 효과 생성 위치 (선박 위치, Y축은 약간 위로) + Vector3 explosionPosition = transform.position; + explosionPosition.y += 0.5f; // 폭발 효과가 선박 위에 보이도록 + + // War FX 폭발 효과 생성 + GameObject explosion = Instantiate(explosionPrefab, explosionPosition, Quaternion.identity); + + // 폭발 효과 활성화 확인 + if (explosion != null) + { + explosion.SetActive(true); + + // 폭발 효과 크기 조정 (100 = 1.0배, 200 = 2.0배, 500 = 5.0배) + float scaleMultiplier = explosionScale; + explosion.transform.localScale = Vector3.one * scaleMultiplier; + + // 모든 ParticleSystem의 크기와 속도도 조정 (더 큰 폭발 효과) + ParticleSystem[] particleSystems = explosion.GetComponentsInChildren(); + foreach (var ps in particleSystems) + { + var main = ps.main; + // Start Size 증가 + if (main.startSize.mode == ParticleSystemCurveMode.Constant) + { + main.startSize = main.startSize.constant * scaleMultiplier; + } + else if (main.startSize.mode == ParticleSystemCurveMode.TwoConstants) + { + main.startSize = new ParticleSystem.MinMaxCurve( + main.startSize.constantMin * scaleMultiplier, + main.startSize.constantMax * scaleMultiplier + ); + } + + // Start Speed 증가 (폭발이 더 멀리 퍼지도록) + if (main.startSpeed.mode == ParticleSystemCurveMode.Constant) + { + main.startSpeed = main.startSpeed.constant * scaleMultiplier; + } + else if (main.startSpeed.mode == ParticleSystemCurveMode.TwoConstants) + { + main.startSpeed = new ParticleSystem.MinMaxCurve( + main.startSpeed.constantMin * scaleMultiplier, + main.startSpeed.constantMax * scaleMultiplier + ); + } + } + + Debug.Log($"[AttackAgent] 폭발 효과 생성 완료!"); + Debug.Log($"[AttackAgent] - 이름: {explosion.name}"); + Debug.Log($"[AttackAgent] - 위치: {explosionPosition}"); + Debug.Log($"[AttackAgent] - 크기 배율: {explosionScale}% ({scaleMultiplier}x)"); + Debug.Log($"[AttackAgent] - 활성화 상태: {explosion.activeSelf}"); + Debug.Log($"[AttackAgent] - ParticleSystem 개수: {particleSystems.Length}"); + + if (particleSystems.Length == 0) + { + Debug.LogWarning("[AttackAgent] 폭발 효과에 ParticleSystem이 없습니다! Prefab이 올바른지 확인하세요."); + } + } + else + { + Debug.LogError("[AttackAgent] 폭발 효과 생성 실패! Instantiate가 null을 반환했습니다."); + } + } + + void Update() + { + // 에피소드 종료 조건 체크 + CheckEpisodeEnd(); + } + } +} diff --git a/Assets/Scripts/Defense/MLAgents/AttackAgent.cs.meta b/Assets/Scripts/Defense/MLAgents/AttackAgent.cs.meta new file mode 100644 index 000000000..4528d3ee9 --- /dev/null +++ b/Assets/Scripts/Defense/MLAgents/AttackAgent.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0cb4d54e49c123c409b91ab0b82657a6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Defense/MLAgents/AttackBoatDisabler.cs b/Assets/Scripts/Defense/MLAgents/AttackBoatDisabler.cs new file mode 100644 index 000000000..028b993f2 --- /dev/null +++ b/Assets/Scripts/Defense/MLAgents/AttackBoatDisabler.cs @@ -0,0 +1,132 @@ +using UnityEngine; +using BoatAttack; + +namespace BoatAttack +{ + /// + /// 공격 선박 비활성화 헬퍼: AttackAgent가 폭발 후 자동으로 비활성화되도록 합니다. + /// 이 스크립트를 AttackAgent가 있는 GameObject에 추가하세요. + /// + [RequireComponent(typeof(AttackAgent))] + public class AttackBoatDisabler : MonoBehaviour + { + [Header("Settings")] + [Tooltip("폭발 후 비활성화 딜레이 (초)")] + public float disableDelay = 0.5f; + + [Header("Debug")] + [Tooltip("디버그 로그 출력")] + public bool debugLog = true; + + private AttackAgent _attackAgent; + private bool _hasExploded = false; + + private void Awake() + { + _attackAgent = GetComponent(); + } + + private void OnEnable() + { + _hasExploded = false; + } + + /// + /// AttackAgent의 폭발 감지 및 비활성화 처리 + /// + private void Update() + { + // AttackAgent가 폭발했는지 확인 + // AttackAgent의 _hasExploded는 private이므로, + // OnCollisionEnter나 OnTriggerEnter를 통해 간접적으로 감지 + + // 대신 AttackAgent의 컴포넌트가 비활성화되거나 파괴되는 것을 감지 + if (_attackAgent == null || !_attackAgent.enabled) + { + return; + } + } + + /// + /// 충돌 감지: AttackAgent의 충돌을 감지하고 비활성화 처리 + /// + private void OnCollisionEnter(Collision collision) + { + // AttackAgent가 이미 충돌을 처리했는지 확인하기 어려우므로, + // MotherShip과의 충돌을 직접 확인 + if (_hasExploded) + { + return; + } + + GameObject other = collision.gameObject; + + // MotherShip 태그 확인 + if (other.CompareTag("MotherShip") || + other.name.Contains("MotherShip") || + other.name.Contains("Mother")) + { + if (debugLog) + { + Debug.Log($"[AttackBoatDisabler] {gameObject.name}: MotherShip 충돌 감지! 비활성화 예약..."); + } + + _hasExploded = true; + Invoke(nameof(DisableBoat), disableDelay); + } + } + + /// + /// Trigger 충돌 감지 + /// + private void OnTriggerEnter(Collider other) + { + if (_hasExploded) + { + return; + } + + GameObject otherObj = other.gameObject; + + // MotherShip 태그 확인 + if (otherObj.CompareTag("MotherShip") || + otherObj.name.Contains("MotherShip") || + otherObj.name.Contains("Mother")) + { + if (debugLog) + { + Debug.Log($"[AttackBoatDisabler] {gameObject.name}: MotherShip Trigger 충돌 감지! 비활성화 예약..."); + } + + _hasExploded = true; + Invoke(nameof(DisableBoat), disableDelay); + } + } + + /// + /// 공격 선박 파괴 (비활성화 대신 파괴) + /// + private void DisableBoat() + { + if (debugLog) + { + Debug.Log($"[AttackBoatDisabler] {gameObject.name}: 공격 선박 파괴"); + } + + // GameObject 파괴 (방어 선박만 학습하므로 적군 선박은 단순히 파괴) + Destroy(gameObject); + } + + /// + /// 외부에서 호출 가능한 비활성화 메서드 + /// + public void Disable() + { + if (!_hasExploded) + { + _hasExploded = true; + DisableBoat(); + } + } + } +} diff --git a/Assets/Scripts/Defense/MLAgents/AttackBoatDisabler.cs.meta b/Assets/Scripts/Defense/MLAgents/AttackBoatDisabler.cs.meta new file mode 100644 index 000000000..ecf156d6a --- /dev/null +++ b/Assets/Scripts/Defense/MLAgents/AttackBoatDisabler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f738a41cf1afa6a4ab7724c79952cff4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Defense/MLAgents/DynamicWeb.cs b/Assets/Scripts/Defense/MLAgents/DynamicWeb.cs new file mode 100644 index 000000000..80d5614db --- /dev/null +++ b/Assets/Scripts/Defense/MLAgents/DynamicWeb.cs @@ -0,0 +1,426 @@ +using UnityEngine; +using Unity.MLAgents; + +namespace BoatAttack +{ + /// + /// 2대의 방어 선박 사이에 동적으로 생성되는 Web (장막) + /// 선박 간 거리에 따라 크기가 자동으로 조정됨 + /// + [RequireComponent(typeof(Rigidbody))] // ML-Agents 빌드 호환성: 런타임 AddComponent 방지 + [RequireComponent(typeof(BoxCollider))] + public class DynamicWeb : MonoBehaviour + { + [Header("Target Ships")] + [Tooltip("방어 선박 1")] + public Transform defenseShip1; + + [Tooltip("방어 선박 2")] + public Transform defenseShip2; + + [Header("Web Anchor Points (Inspector에서 할당)")] + [Tooltip("Web 시작점 (선박1에 부착된 자식 오브젝트)")] + public Transform webAnchor1; + + [Tooltip("Web 끝점 (선박2에 부착된 자식 오브젝트)")] + public Transform webAnchor2; + + [Header("Web Settings")] + [Tooltip("Web 높이")] + public float webHeight = 5f; + + [Tooltip("Web 두께")] + public float webThickness = 0.5f; + + [Tooltip("Web 색상")] + public Color webColor = new Color(0f, 1f, 1f, 0.3f); // 반투명 청록색 + + [Header("Collision")] + [Tooltip("Trigger 충돌 사용")] + public bool isTrigger = true; + + [Header("Visual")] + [Tooltip("Web 시각화 활성화")] + public bool showVisual = true; + + [Header("Collision Reward")] + [Tooltip("공격 보트를 막았을 때 방어선에게 주는 보상")] + public float defenseReward = 10f; + + [Tooltip("아군 선박이 Web과 충돌했을 때 페널티")] + public float allyWebCollisionPenalty = -2.0f; + + [Header("Explosion Effect")] + [Tooltip("공격 보트 폭발 효과 Prefab (War FX)")] + public GameObject explosionPrefab; + + [Tooltip("폭발 효과 크기 배율")] + [Range(5f, 50f)] + public float explosionScale = 15f; + + [Header("Visual Material")] + [Tooltip("Web 시각화용 Material (비어있으면 기본 생성)")] + public Material webMaterial; + + [Header("Managers")] + [Tooltip("환경 컨트롤러 (수동 할당 가능, 비어있으면 자동으로 찾음)")] + public DefenseEnvController envController; + + private BoxCollider _collider; + private MeshRenderer _renderer; + private GameObject _visualObject; + private Color _lastWebColor; + + private void Start() + { + // BoxCollider 설정 + _collider = gameObject.GetComponent(); + if (_collider == null) + { + _collider = gameObject.AddComponent(); + } + _collider.isTrigger = isTrigger; + + // 시각화 오브젝트 생성 + if (showVisual) + { + CreateVisual(); + } + + // 초기 색상 저장 + _lastWebColor = webColor; + + // DefenseEnvController 찾기 및 캐싱 (멀티 환경 호환) + if (envController == null) + { + Transform envRoot = transform.parent != null ? transform.parent : transform; + envController = envRoot.GetComponentInChildren(); + } + } + + private void Update() + { + if (defenseShip1 == null || defenseShip2 == null) + return; + + UpdateWebTransform(); + + // 색상 변경 감지 및 업데이트 + if (_lastWebColor != webColor) + { + SetColor(webColor); + _lastWebColor = webColor; + } + } + + /// + /// Web 위치 및 크기 업데이트 + /// + private void UpdateWebTransform() + { + Vector3 pos1 = (webAnchor1 != null) ? webAnchor1.position : defenseShip1.position; + Vector3 pos2 = (webAnchor2 != null) ? webAnchor2.position : defenseShip2.position; + + // Web 중심 위치 + Vector3 centerPos = (pos1 + pos2) / 2f; + transform.position = centerPos; + + // Web 회전 + Vector3 direction = pos2 - pos1; + direction.y = 0f; + if (direction.magnitude > 0.01f) + { + Quaternion targetRotation = Quaternion.LookRotation(direction); + transform.rotation = targetRotation; + } + + // Web 크기 + float distance = Vector3.Distance(pos1, pos2); + + if (_collider != null) + { + _collider.size = new Vector3(webThickness, webHeight, distance); + } + + if (_visualObject != null) + { + _visualObject.transform.localScale = new Vector3(webThickness, webHeight, distance); + } + } + + /// + /// Web 시각화 생성 + /// + private void CreateVisual() + { + _visualObject = GameObject.CreatePrimitive(PrimitiveType.Cube); + _visualObject.name = "WebVisual"; + _visualObject.transform.SetParent(transform); + _visualObject.transform.localPosition = Vector3.zero; + _visualObject.transform.localRotation = Quaternion.identity; + + Destroy(_visualObject.GetComponent()); + + _renderer = _visualObject.GetComponent(); + if (_renderer != null) + { + Material mat = null; + + if (webMaterial != null) + { + mat = new Material(webMaterial); + mat.color = webColor; + } + else + { + Shader standardShader = Shader.Find("Standard"); + if (standardShader != null) + { + mat = new Material(standardShader); + mat.color = webColor; + mat.SetFloat("_Mode", 3); + mat.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha); + mat.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha); + mat.SetInt("_ZWrite", 0); + mat.DisableKeyword("_ALPHATEST_ON"); + mat.EnableKeyword("_ALPHABLEND_ON"); + mat.DisableKeyword("_ALPHAPREMULTIPLY_ON"); + mat.renderQueue = 3000; + } + else if (_renderer.sharedMaterial != null) + { + mat = new Material(_renderer.sharedMaterial); + mat.color = webColor; + } + } + + if (mat != null) + { + _renderer.material = mat; + } + } + } + + /// + /// Web 색상 변경 + /// + public void SetColor(Color color) + { + webColor = color; + if (_renderer != null && _renderer.material != null) + { + _renderer.material.color = color; + } + } + + private void OnValidate() + { + if (Application.isPlaying && showVisual && _renderer != null && _renderer.material != null) + { + SetColor(webColor); + } + } + + /// + /// Trigger 충돌 감지 + /// + private void OnTriggerEnter(Collider other) + { + if (other.CompareTag("attack_boat")) + { + HandleAttackBoatCollision(other.gameObject); + } + else if (IsDefenseShip(other.gameObject)) + { + HandleAllyWebCollision(other.gameObject); + } + } + + /// + /// 아군 선박인지 확인 + /// + private bool IsDefenseShip(GameObject obj) + { + if (obj == null) + return false; + + if (defenseShip1 != null && obj.transform == defenseShip1) + return true; + if (defenseShip2 != null && obj.transform == defenseShip2) + return true; + + if (obj.GetComponent() != null) + return true; + + return false; + } + + /// + /// 아군 선박 Web 충돌 처리 + /// + private void HandleAllyWebCollision(GameObject allyShip) + { + if (allyShip == null) + return; + + if (envController == null) + { + Transform envRoot = transform.parent != null ? transform.parent : transform; + envController = envRoot.GetComponentInChildren(); + } + + if (envController != null) + { + envController.OnAllyHitWeb(allyShip, allyWebCollisionPenalty); + } + } + + /// + /// 물리 충돌 감지 + /// + private void OnCollisionEnter(Collision collision) + { + if (collision.gameObject.CompareTag("attack_boat")) + { + HandleAttackBoatCollision(collision.gameObject); + } + else if (IsDefenseShip(collision.gameObject)) + { + HandleAllyWebCollision(collision.gameObject); + } + } + + /// + /// attack_boat과의 충돌 처리 + /// + private void HandleAttackBoatCollision(GameObject attackBoat) + { + if (attackBoat == null) + return; + + if (envController == null) + { + Transform envRoot = transform.parent != null ? transform.parent : transform; + envController = envRoot.GetComponentInChildren(); + if (envController == null) + return; + } + + envController.OnEnemyHitWeb(attackBoat); + } + + /// + /// 폭발 효과 생성 + /// + private void CreateExplosion(Vector3 position) + { + if (explosionPrefab == null) + return; + + Vector3 explosionPosition = position; + explosionPosition.y += 0.5f; + + GameObject explosion = Instantiate(explosionPrefab, explosionPosition, Quaternion.identity); + + if (explosion != null) + { + explosion.SetActive(true); + float scaleMultiplier = explosionScale; + explosion.transform.localScale = Vector3.one * scaleMultiplier; + + ParticleSystem[] particleSystems = explosion.GetComponentsInChildren(); + foreach (var ps in particleSystems) + { + var main = ps.main; + + if (main.startSize.mode == ParticleSystemCurveMode.Constant) + { + main.startSize = main.startSize.constant * scaleMultiplier; + } + else if (main.startSize.mode == ParticleSystemCurveMode.TwoConstants) + { + main.startSize = new ParticleSystem.MinMaxCurve( + main.startSize.constantMin * scaleMultiplier, + main.startSize.constantMax * scaleMultiplier + ); + } + + if (main.startSpeed.mode == ParticleSystemCurveMode.Constant) + { + main.startSpeed = main.startSpeed.constant * scaleMultiplier; + } + else if (main.startSpeed.mode == ParticleSystemCurveMode.TwoConstants) + { + main.startSpeed = new ParticleSystem.MinMaxCurve( + main.startSpeed.constantMin * scaleMultiplier, + main.startSpeed.constantMax * scaleMultiplier + ); + } + } + } + } + + /// + /// 방어선에게 보상 부여 + /// + private void RewardDefenseShips() + { + if (defenseShip1 != null) + { + var agent = defenseShip1.GetComponent(); + if (agent != null) + { + agent.AddReward(defenseReward); + } + } + + if (defenseShip2 != null) + { + var agent = defenseShip2.GetComponent(); + if (agent != null) + { + agent.AddReward(defenseReward); + } + } + } + + /// + /// attack_boat 리셋 + /// + private void ResetAttackBoat(GameObject attackBoat) + { + if (attackBoat == null) + return; + + if (envController == null) + { + Transform envRoot = transform.parent != null ? transform.parent : transform; + envController = envRoot.GetComponentInChildren(); + } + + if (envController != null) + { + envController.OnEnemyHitWeb(attackBoat); + } + } + + /// + /// Gizmo 시각화 + /// + private void OnDrawGizmos() + { + if (defenseShip1 == null || defenseShip2 == null) + return; + + Vector3 pos1 = defenseShip1.position; + Vector3 pos2 = defenseShip2.position; + Vector3 centerPos = (pos1 + pos2) / 2f; + + Gizmos.color = Color.cyan; + Gizmos.DrawLine(pos1, pos2); + + Gizmos.color = Color.yellow; + Gizmos.DrawWireSphere(centerPos, 1f); + } + } +} diff --git a/Assets/Scripts/Defense/MLAgents/DynamicWeb.cs.meta b/Assets/Scripts/Defense/MLAgents/DynamicWeb.cs.meta new file mode 100644 index 000000000..58d5b5a9c --- /dev/null +++ b/Assets/Scripts/Defense/MLAgents/DynamicWeb.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2bab1c94f014cd84b9463cad0283b1c1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Defense/MLAgents/SimpleExplosionOnCollision.cs b/Assets/Scripts/Defense/MLAgents/SimpleExplosionOnCollision.cs new file mode 100644 index 000000000..585c217f4 --- /dev/null +++ b/Assets/Scripts/Defense/MLAgents/SimpleExplosionOnCollision.cs @@ -0,0 +1,216 @@ +using UnityEngine; + +namespace BoatAttack +{ + /// + /// 간단한 충돌 폭발 컴포넌트 + /// MotherShip과 충돌 시 폭발 효과만 생성 + /// + public class SimpleExplosionOnCollision : MonoBehaviour + { + [Header("Target Settings")] + [Tooltip("모선 태그")] + public string motherShipTag = "MotherShip"; + + [Header("Explosion Settings")] + [Tooltip("폭발 효과 Prefab (War FX)")] + public GameObject explosionPrefab; + + [Tooltip("폭발 효과 크기 배율")] + [Range(5f, 50f)] + public float explosionScale = 23f; + + [Tooltip("폭발 후 오브젝트 제거 여부")] + public bool destroyAfterExplosion = true; + + [Tooltip("폭발 후 제거까지의 딜레이 (초)")] + public float destroyDelay = 1.5f; + + [Header("Collision Detection")] + [Tooltip("충돌 감지 방식: true=Trigger 사용, false=물리 Collision 사용")] + public bool useTriggerCollision = false; + + // 폭발 여부 플래그 + private bool _hasExploded = false; + + /// + /// Trigger 충돌 감지 + /// + private void OnTriggerEnter(Collider other) + { + if (!useTriggerCollision || _hasExploded) + { + return; + } + + Debug.Log($"[SimpleExplosion] OnTriggerEnter: {other.gameObject.name}, Tag: {other.tag}"); + + if (IsMotherShip(other.gameObject)) + { + Debug.Log("[SimpleExplosion] MotherShip 충돌 감지! 폭발 시작"); + HandleExplosion(); + } + } + + /// + /// Collision 충돌 감지 + /// + private void OnCollisionEnter(Collision collision) + { + if (_hasExploded) + { + return; + } + + Debug.Log($"[SimpleExplosion] OnCollisionEnter: {collision.gameObject.name}, Tag: {collision.gameObject.tag}"); + + // MotherShip과의 충돌은 useTriggerCollision 설정과 관계없이 항상 처리 + if (IsMotherShip(collision.gameObject)) + { + Debug.Log("[SimpleExplosion] MotherShip 충돌 감지! 폭발 시작"); + HandleExplosion(); + return; + } + + // MotherShip이 아닌 경우, useTriggerCollision이 true면 무시 + if (useTriggerCollision) + { + return; + } + } + + /// + /// 충돌한 객체가 MotherShip인지 확인 + /// + private bool IsMotherShip(GameObject obj) + { + if (obj == null) + { + return false; + } + + // 태그로 확인 + if (!string.IsNullOrEmpty(motherShipTag) && obj.CompareTag(motherShipTag)) + { + Debug.Log($"[SimpleExplosion] 태그로 확인됨: {motherShipTag}"); + return true; + } + + // 이름으로 확인 + if (obj.name.Contains("MotherShip") || obj.name.Contains("Mother")) + { + Debug.Log($"[SimpleExplosion] 이름으로 확인됨: {obj.name}"); + return true; + } + + return false; + } + + /// + /// 폭발 처리 + /// + private void HandleExplosion() + { + if (_hasExploded) + { + return; + } + + Debug.Log("[SimpleExplosion] 폭발 처리 시작"); + + // 폭발 효과 생성 + TriggerExplosion(); + + // 오브젝트 제거 (옵션) + if (destroyAfterExplosion) + { + Destroy(gameObject, destroyDelay); + Debug.Log($"[SimpleExplosion] {destroyDelay}초 후 오브젝트 제거 예약"); + } + } + + /// + /// 폭발 효과 생성 + /// + private void TriggerExplosion() + { + if (_hasExploded) + { + return; + } + + _hasExploded = true; + Debug.Log($"[SimpleExplosion] 폭발 효과 생성 위치: {transform.position}"); + + // 폭발 Prefab 검증 + if (explosionPrefab == null) + { + Debug.LogError("[SimpleExplosion] explosionPrefab이 null입니다! Inspector에서 War FX 폭발 효과 Prefab을 할당해주세요."); + return; + } + + // 폭발 효과 생성 위치 + Vector3 explosionPosition = transform.position; + explosionPosition.y += 0.5f; + + // War FX 폭발 효과 생성 + GameObject explosion = Instantiate(explosionPrefab, explosionPosition, Quaternion.identity); + + if (explosion != null) + { + explosion.SetActive(true); + + // 폭발 효과 크기 조정 + float scaleMultiplier = explosionScale; + explosion.transform.localScale = Vector3.one * scaleMultiplier; + + // ParticleSystem 크기와 속도 조정 + ParticleSystem[] particleSystems = explosion.GetComponentsInChildren(); + foreach (var ps in particleSystems) + { + var main = ps.main; + + // Start Size 증가 + if (main.startSize.mode == ParticleSystemCurveMode.Constant) + { + main.startSize = main.startSize.constant * scaleMultiplier; + } + else if (main.startSize.mode == ParticleSystemCurveMode.TwoConstants) + { + main.startSize = new ParticleSystem.MinMaxCurve( + main.startSize.constantMin * scaleMultiplier, + main.startSize.constantMax * scaleMultiplier + ); + } + + // Start Speed 증가 + if (main.startSpeed.mode == ParticleSystemCurveMode.Constant) + { + main.startSpeed = main.startSpeed.constant * scaleMultiplier; + } + else if (main.startSpeed.mode == ParticleSystemCurveMode.TwoConstants) + { + main.startSpeed = new ParticleSystem.MinMaxCurve( + main.startSpeed.constantMin * scaleMultiplier, + main.startSpeed.constantMax * scaleMultiplier + ); + } + } + + Debug.Log($"[SimpleExplosion] 폭발 효과 생성 완료!"); + Debug.Log($"[SimpleExplosion] - 위치: {explosionPosition}"); + Debug.Log($"[SimpleExplosion] - 크기 배율: {scaleMultiplier}x"); + Debug.Log($"[SimpleExplosion] - ParticleSystem 개수: {particleSystems.Length}"); + + if (particleSystems.Length == 0) + { + Debug.LogWarning("[SimpleExplosion] 폭발 효과에 ParticleSystem이 없습니다!"); + } + } + else + { + Debug.LogError("[SimpleExplosion] 폭발 효과 생성 실패!"); + } + } + } +} diff --git a/Assets/Scripts/Defense/MLAgents/SimpleExplosionOnCollision.cs.meta b/Assets/Scripts/Defense/MLAgents/SimpleExplosionOnCollision.cs.meta new file mode 100644 index 000000000..209e06923 --- /dev/null +++ b/Assets/Scripts/Defense/MLAgents/SimpleExplosionOnCollision.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5151718a2d3be6b4f94d00f05b1efc1d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Defense/MLAgents/WebCollisionDetector.cs b/Assets/Scripts/Defense/MLAgents/WebCollisionDetector.cs new file mode 100644 index 000000000..8f193a100 --- /dev/null +++ b/Assets/Scripts/Defense/MLAgents/WebCollisionDetector.cs @@ -0,0 +1,98 @@ +using UnityEngine; + +namespace BoatAttack +{ + /// + /// Web 오브젝트에 부착하여 attack_boat와의 충돌을 감지 + /// 충돌 시 DefenseEnvController를 통해 그룹 보상으로 처리 + /// + public class WebCollisionDetector : MonoBehaviour + { + [Header("Settings")] + [Tooltip("충돌 감지할 적군 태그")] + public string enemyTag = "attack_boat"; + + [Tooltip("환경 컨트롤러 (충돌 시 알림)")] + public DefenseEnvController envController; + + [Tooltip("충돌 효과 Prefab (선택적)")] + public GameObject captureEffectPrefab; + + [Tooltip("효과 크기")] + public float effectScale = 1f; + + [Header("Debug")] + [Tooltip("디버그 로그 활성화")] + public bool enableDebugLog = true; + + + private bool _hasTriggered = false; + + private void Start() + { + // 환경 컨트롤러 자동 찾기 (멀티 환경 호환) + if (envController == null) + { + Transform envRoot = transform.parent != null ? transform.parent : transform; + envController = envRoot.GetComponentInChildren(); + } + } + + private void OnTriggerEnter(Collider other) + { + // 이미 트리거된 경우 무시 + if (_hasTriggered) + return; + + // attack_boat 태그 확인 + if (other.CompareTag(enemyTag)) + { + _hasTriggered = true; + + if (enableDebugLog) + { + Debug.Log($"[WebCollisionDetector] 적군 포획! {other.gameObject.name}"); + } + + // 적군 선박 참조 + GameObject enemyBoat = other.gameObject; + + // DefenseEnvController를 통해 적군과 아군 모두 원점으로 리셋 처리 (에피소드 종료 없음) + if (envController != null) + { + envController.OnEnemyHitWeb(enemyBoat); + } + else + { + if (enableDebugLog) + { + Debug.LogWarning("[WebCollisionDetector] DefenseEnvController를 찾을 수 없습니다!"); + } + } + + // 효과 생성 + if (captureEffectPrefab != null) + { + GameObject effect = Instantiate(captureEffectPrefab, transform.position, Quaternion.identity); + effect.transform.localScale = Vector3.one * effectScale; + Destroy(effect, 3f); + } + } + } + + /// + /// 에피소드 리셋 시 호출 + /// + public void ResetDetector() + { + _hasTriggered = false; + } + + private void OnDrawGizmos() + { + // Web 범위 시각화 + Gizmos.color = _hasTriggered ? Color.green : Color.yellow; + Gizmos.DrawWireCube(transform.position, transform.localScale); + } + } +} diff --git a/Assets/Scripts/Defense/MLAgents/WebCollisionDetector.cs.meta b/Assets/Scripts/Defense/MLAgents/WebCollisionDetector.cs.meta new file mode 100644 index 000000000..3ff6b13d4 --- /dev/null +++ b/Assets/Scripts/Defense/MLAgents/WebCollisionDetector.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a6cc934df7f36294e9c99888816e0d45 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Defense/ManualControlDebugChecklist.md b/Assets/Scripts/Defense/ManualControlDebugChecklist.md new file mode 100644 index 000000000..218b056dd --- /dev/null +++ b/Assets/Scripts/Defense/ManualControlDebugChecklist.md @@ -0,0 +1,172 @@ +# 수동 조종 디버깅 체크리스트 + +## 즉시 확인할 사항 + +### 1. DecisionRequester 컴포넌트 확인 ⚠️ 필수 +1. Unity 에디터에서 DefenseAgent GameObject 선택 +2. Inspector에서 **Decision Requester** 컴포넌트가 있는지 확인 +3. 없으면: **Add Component → Decision Requester** 추가 +4. 설정 확인: + - **Decision Period**: 5 (또는 1~10) + - **Take Actions Between Decisions**: 체크 해제 (권장) + - **Behavior Type**: **Heuristic Only** (테스트 시) + +### 2. Behavior Parameters 확인 +1. DefenseAgent GameObject 선택 +2. Inspector에서 **Behavior Parameters** 컴포넌트 확인 +3. **Behavior Type**이 **Heuristic Only**로 설정되어 있는지 확인 + - Default → Heuristic Only로 변경 + +### 3. Engine 컴포넌트 확인 +1. DefenseAgent GameObject에 **Boat** 컴포넌트가 있는지 확인 +2. Boat 컴포넌트의 **engine** 필드가 할당되어 있는지 확인 +3. Engine GameObject에 **Rigidbody** 컴포넌트가 있는지 확인 + +### 4. 디버그 로그 활성화 +1. DefenseAgent의 Inspector에서 +2. **Enable Debug Log** 체크 +3. Play 모드에서 Console 창 확인 +4. 다음 로그들이 나타나는지 확인: + - `[DefenseAgent] DecisionRequester 확인됨` + - `[DefenseAgent] Engine 확인됨` + - `[DefenseAgent] Heuristic 호출됨 - 키 입력 감지` + - `[DefenseAgent] OnActionReceived` + - `[DefenseAgent] Engine 제어` + +--- + +## 단계별 디버깅 + +### Step 1: 컴포넌트 확인 +``` +✅ DecisionRequester 있음 +✅ Behavior Parameters 있음 +✅ Behavior Type = Heuristic Only +✅ Boat 컴포넌트 있음 +✅ Engine 할당됨 +✅ Rigidbody 있음 +``` + +### Step 2: 키보드 입력 확인 +1. Play 모드 진입 +2. 키보드 입력 (WASD 또는 화살표 키) +3. Console에서 다음 로그 확인: + - `[DefenseAgent] Heuristic 호출됨 - 키 입력 감지` + - `[DefenseAgent] Heuristic 액션 값: Linear=..., Angular=...` + +**문제**: 로그가 나타나지 않음 +- **원인**: DecisionRequester가 없거나 Behavior Type이 잘못됨 +- **해결**: Step 1 다시 확인 + +### Step 3: OnActionReceived 확인 +Console에서 다음 로그 확인: +- `[DefenseAgent] OnActionReceived: ..., Linear=..., Angular=...` + +**문제**: 로그가 나타나지 않음 +- **원인**: DecisionRequester의 Decision Period가 너무 큼 +- **해결**: Decision Period를 1로 설정 + +### Step 4: Engine 제어 확인 +Console에서 다음 로그 확인: +- `[DefenseAgent] Engine 제어: ..., Throttle=..., Steering=...` + +**문제**: 로그가 나타나지 않음 +- **원인**: _engine이 null이거나 RB가 null +- **해결**: Engine 컴포넌트 확인 + +**문제**: 로그는 나타나지만 움직이지 않음 +- **원인**: Engine.Accelerate() 또는 Engine.Turn()이 작동하지 않음 +- **해결**: Engine 스크립트 확인 + +--- + +## 일반적인 문제와 해결책 + +### 문제 1: 아무 로그도 나타나지 않음 +**원인**: enableDebugLog가 false +**해결**: DefenseAgent의 Inspector에서 Enable Debug Log 체크 + +### 문제 2: "DecisionRequester 컴포넌트가 없습니다" 에러 +**원인**: DecisionRequester가 없음 +**해결**: Add Component → Decision Requester 추가 + +### 문제 3: "Engine이 null입니다" 에러 +**원인**: Boat 컴포넌트가 없거나 engine 필드가 할당되지 않음 +**해결**: +1. Boat 컴포넌트 추가 +2. Boat의 engine 필드에 Engine GameObject 할당 + +### 문제 4: "Engine.RB (Rigidbody)가 null입니다" 에러 +**원인**: Engine GameObject에 Rigidbody가 없음 +**해결**: Engine GameObject에 Rigidbody 컴포넌트 추가 + +### 문제 5: Heuristic은 호출되지만 OnActionReceived가 호출되지 않음 +**원인**: DecisionRequester의 Decision Period가 너무 큼 +**해결**: Decision Period를 1~5로 설정 + +### 문제 6: OnActionReceived는 호출되지만 Engine 제어 로그가 나타나지 않음 +**원인**: throttle과 steering 값이 0에 가까움 +**해결**: +1. 키 입력이 제대로 되는지 확인 +2. maxLinearVelocity, maxAngularVelocity 값 확인 +3. velocityControlGain, angularVelocityControlGain 값 확인 + +### 문제 7: 모든 로그는 정상이지만 배가 움직이지 않음 +**원인**: Engine.Accelerate() 또는 Engine.Turn() 메서드 문제 +**해결**: +1. Engine 스크립트 확인 +2. Rigidbody의 constraints 확인 (Freeze Position이 체크되어 있지 않은지) +3. Rigidbody의 isKinematic이 false인지 확인 + +--- + +## 빠른 테스트 스크립트 + +DefenseAgent GameObject에 다음 스크립트를 임시로 추가하여 테스트: + +```csharp +using UnityEngine; +using UnityEngine.InputSystem; + +public class ManualControlTest : MonoBehaviour +{ + public Engine engine; + + void Update() + { + if (engine == null) return; + + Keyboard keyboard = Keyboard.current; + if (keyboard == null) return; + + if (keyboard.wKey.isPressed) + { + engine.Accelerate(1f); + Debug.Log("W 키 입력 - 전진"); + } + if (keyboard.sKey.isPressed) + { + engine.Accelerate(-0.5f); + Debug.Log("S 키 입력 - 후진"); + } + if (keyboard.aKey.isPressed) + { + engine.Turn(-1f); + Debug.Log("A 키 입력 - 좌회전"); + } + if (keyboard.dKey.isPressed) + { + engine.Turn(1f); + Debug.Log("D 키 입력 - 우회전"); + } + } +} +``` + +**⚠️ 중요**: 이 프로젝트는 Unity의 새로운 Input System을 사용합니다. +- `Input.GetKey()` 대신 `Keyboard.current.wKey.isPressed` 사용 +- `using UnityEngine.InputSystem;` 추가 필요 + +이 스크립트로 직접 Engine을 제어하여 움직이는지 확인하세요. +움직이면 → ML-Agents 설정 문제 +움직이지 않으면 → Engine 또는 Rigidbody 문제 diff --git a/Assets/Scripts/Defense/ManualControlDebugChecklist.md.meta b/Assets/Scripts/Defense/ManualControlDebugChecklist.md.meta new file mode 100644 index 000000000..83bcc29a0 --- /dev/null +++ b/Assets/Scripts/Defense/ManualControlDebugChecklist.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 925e349ccdd126e40a588b6d3f88d313 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Defense/MotherShipCollisionDetector.cs b/Assets/Scripts/Defense/MotherShipCollisionDetector.cs new file mode 100644 index 000000000..8001c1db1 --- /dev/null +++ b/Assets/Scripts/Defense/MotherShipCollisionDetector.cs @@ -0,0 +1,83 @@ +using UnityEngine; + +namespace BoatAttack +{ + /// + /// 모선과 적군 선박의 충돌을 감지하는 컴포넌트 + /// 모선 GameObject에 부착하여 사용 + /// + public class MotherShipCollisionDetector : MonoBehaviour + { + [Header("Settings")] + [Tooltip("충돌 감지할 적군 태그")] + public string enemyTag = "attack_boat"; + + [Tooltip("환경 컨트롤러 (충돌 시 알림)")] + public DefenseEnvController envController; + + [Header("Debug")] + [Tooltip("디버그 로그 활성화")] + public bool enableDebugLog = true; + + private void Start() + { + // 환경 컨트롤러 자동 찾기 (멀티 환경 호환 - 루트까지 탐색) + if (envController == null) + { + Transform current = transform; + while (current != null) + { + envController = current.GetComponentInChildren(); + if (envController != null) break; + current = current.parent; + } + + if (envController == null) + { + Debug.LogWarning("[MotherShipCollisionDetector] DefenseEnvController를 찾을 수 없습니다!"); + } + } + } + + /// + /// 충돌 감지 (Collision) + /// + private void OnCollisionEnter(Collision collision) + { + if (collision.gameObject.CompareTag(enemyTag)) + { + if (enableDebugLog) + { + Vector3 contactPoint = collision.contacts.Length > 0 ? collision.contacts[0].point : collision.gameObject.transform.position; + Debug.LogWarning($"[MotherShipCollisionDetector] 모선 충돌! 적군: {collision.gameObject.name}, " + + $"충돌 위치: {contactPoint}, 상대 속도: {collision.relativeVelocity.magnitude:F1}m/s"); + } + + if (envController != null) + { + envController.OnMotherShipCollision(collision.gameObject); + } + } + } + + /// + /// 충돌 감지 (Trigger) + /// + private void OnTriggerEnter(Collider other) + { + if (other.CompareTag(enemyTag)) + { + if (enableDebugLog) + { + Debug.LogWarning($"[MotherShipCollisionDetector] 모선 트리거 충돌! 적군: {other.gameObject.name}, " + + $"위치: {other.gameObject.transform.position}"); + } + + if (envController != null) + { + envController.OnMotherShipCollision(other.gameObject); + } + } + } + } +} diff --git a/Assets/Scripts/Defense/MotherShipCollisionDetector.cs.meta b/Assets/Scripts/Defense/MotherShipCollisionDetector.cs.meta new file mode 100644 index 000000000..59fafa950 --- /dev/null +++ b/Assets/Scripts/Defense/MotherShipCollisionDetector.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c4d64502fdde05449be9d735a2069cad +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Defense/MotherShipGenerator.cs b/Assets/Scripts/Defense/MotherShipGenerator.cs new file mode 100644 index 000000000..7f1b7b35a --- /dev/null +++ b/Assets/Scripts/Defense/MotherShipGenerator.cs @@ -0,0 +1,159 @@ +using UnityEngine; + +namespace BoatAttack +{ + /// + /// 항공모함(모선)을 자동으로 생성하는 헬퍼 스크립트 + /// Inspector에서 설정 후 Context Menu로 생성하거나 Start()에서 자동 생성 + /// + public class MotherShipGenerator : MonoBehaviour + { + [Header("Size Settings")] + [Tooltip("항공모함 길이")] + public float length = 50f; + + [Tooltip("항공모함 너비")] + public float width = 15f; + + [Tooltip("항공모함 높이")] + public float height = 5f; + + [Header("Position")] + [Tooltip("항공모함 위치 (World 좌표)")] + public Vector3 position = Vector3.zero; + + [Header("Materials")] + [Tooltip("선체 재질 (없으면 기본 재질 사용)")] + public Material hullMaterial; + + [Tooltip("갑판 재질 (없으면 기본 재질 사용)")] + public Material deckMaterial; + + [Header("Physics")] + [Tooltip("고정된 모선인지 (Kinematic)")] + public bool isKinematic = true; + + [Tooltip("질량 (Kinematic이 아닐 경우)")] + public float mass = 100000f; + + [Header("Auto Generate")] + [Tooltip("시작 시 자동 생성")] + public bool generateOnStart = false; + + void Start() + { + if (generateOnStart) + { + GenerateAircraftCarrier(); + } + } + + /// + /// 항공모함 생성 (Context Menu에서 호출 가능) + /// + [ContextMenu("Generate Aircraft Carrier")] + public void GenerateAircraftCarrier() + { + // 기존 항공모함이 있으면 제거 + GameObject existing = GameObject.Find("AircraftCarrier"); + if (existing != null) + { + if (Application.isPlaying) + { + Destroy(existing); + } + else + { + DestroyImmediate(existing); + } + } + + // 부모 오브젝트 생성 + GameObject carrier = new GameObject("AircraftCarrier"); + carrier.transform.position = position; + carrier.tag = "MotherShip"; // 태그 추가 (나중에 찾기 쉽게) + + // 선체 (Hull) + GameObject hull = CreateCube("Hull", new Vector3(0, 0, 0), + new Vector3(length, height, width), hullMaterial); + hull.transform.SetParent(carrier.transform); + + // 갑판 (Deck) + GameObject deck = CreateCube("Deck", new Vector3(0, height / 2 + 0.25f, 0), + new Vector3(length, 0.5f, width), deckMaterial); + deck.transform.SetParent(carrier.transform); + + // 상부 구조물 (Superstructure) - 오른쪽 끝 + GameObject superstructure = CreateCube("Superstructure", + new Vector3(length * 0.3f, height / 2 + 5f, 0), + new Vector3(8f, 10f, 6f), hullMaterial); + superstructure.transform.SetParent(carrier.transform); + + // 비행갑판 표시 (Flight Deck) - 평면 + GameObject flightDeck = GameObject.CreatePrimitive(PrimitiveType.Plane); + flightDeck.name = "FlightDeck"; + flightDeck.transform.SetParent(carrier.transform); + flightDeck.transform.localPosition = new Vector3(0, height / 2 + 0.3f, 0); + flightDeck.transform.localScale = new Vector3(length / 10f, 1f, width / 10f); + flightDeck.transform.localRotation = Quaternion.Euler(0, 0, 0); + if (deckMaterial != null) + { + flightDeck.GetComponent().material = deckMaterial; + } + + // Collider 추가 + BoxCollider collider = carrier.AddComponent(); + collider.size = new Vector3(length, height, width); + collider.center = new Vector3(0, height / 2, 0); + + // Rigidbody 추가 + Rigidbody rb = carrier.AddComponent(); + rb.isKinematic = isKinematic; + if (!isKinematic) + { + rb.mass = mass; + } + + Debug.Log($"항공모함 생성 완료! 위치: {position}, 크기: {length}x{width}x{height}"); + } + + /// + /// 큐브 생성 헬퍼 메서드 + /// + private GameObject CreateCube(string name, Vector3 localPosition, Vector3 scale, Material mat) + { + GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube); + cube.name = name; + cube.transform.localPosition = localPosition; + cube.transform.localScale = scale; + + if (mat != null) + { + cube.GetComponent().material = mat; + } + else + { + // 기본 회색 재질 + Material defaultMat = new Material(Shader.Find("Standard")); + defaultMat.color = new Color(0.5f, 0.5f, 0.5f); + cube.GetComponent().material = defaultMat; + } + + return cube; + } + + /// + /// Gizmo로 항공모함 위치 표시 (에디터에서만) + /// + private void OnDrawGizmosSelected() + { + Gizmos.color = Color.cyan; + Gizmos.DrawWireCube(position + new Vector3(0, height / 2, 0), + new Vector3(length, height, width)); + + // 중심점 표시 + Gizmos.color = Color.yellow; + Gizmos.DrawSphere(position, 2f); + } + } +} diff --git a/Assets/Scripts/Defense/MotherShipGenerator.cs.meta b/Assets/Scripts/Defense/MotherShipGenerator.cs.meta new file mode 100644 index 000000000..3d62467ef --- /dev/null +++ b/Assets/Scripts/Defense/MotherShipGenerator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e1d207fd194870149a989dc1ebd72e69 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Defense/NaNErrorFixComplete.md b/Assets/Scripts/Defense/NaNErrorFixComplete.md new file mode 100644 index 000000000..85199aabf --- /dev/null +++ b/Assets/Scripts/Defense/NaNErrorFixComplete.md @@ -0,0 +1,148 @@ +# NaN 에러 완전 해결 가이드 + +## 수정 완료 사항 + +### 1. Engine.cs - 강화된 NaN 방지 + +#### FixedUpdate() 메서드 +- **Rigidbody rotation NaN 체크 및 자동 리셋** + - `RB.rotation`이 NaN이면 `Quaternion.identity`로 리셋 + - `RB.angularVelocity`를 `Vector3.zero`로 리셋 + - `transform.rotation`도 함께 리셋 + - `_currentAngle`, `_turnVel` 초기화 +- **Rigidbody position NaN 체크** + - `RB.position`이 NaN이면 현재 `transform.position`로 리셋 + - `RB.velocity`를 `Vector3.zero`로 리셋 +- **Rigidbody velocity NaN 체크** + - `RB.velocity`가 NaN이면 `Vector3.zero`로 리셋 +- **_yHeight NaN 체크** + - 물리 계산 결과가 NaN이면 0으로 설정 + +#### Turn() 메서드 +- **modifier NaN 체크** (기존) +- **_currentAngle, _turnVel NaN 체크** (기존) +- **deltaTime NaN 체크** (기존) +- **targetAngle NaN 체크** (기존) +- **SmoothDampAngle 결과 NaN 체크** (기존) +- **eulerAngles 벡터 NaN 체크** (신규) +- **transform.rotation NaN 체크 및 리셋** (신규) + - transform.rotation이 NaN이면 모든 관련 값 리셋 + +#### Accelerate() 메서드 +- **modifier NaN 체크** (기존) +- **forward 벡터 NaN 체크** (기존) +- **RB null 체크** (기존) + +--- + +### 2. DefenseAgent.cs - 입력 값 NaN 방지 + +#### OnActionReceived() 메서드 +- **현재 속도 값 검증** + - `currentLinearVelocity`, `currentAngularVelocity` NaN 체크 +- **목표 속도 값 검증** + - `targetLinearVelocity`, `targetAngularVelocity` NaN 체크 +- **나눗셈 전 안전 체크** + - `maxLinearVelocity > 0.01f` 확인 후 계산 + - `maxAngularVelocity > 0.01f` 확인 후 계산 +- **throttle, steering NaN 체크** + - 계산 결과가 NaN이면 0으로 설정 +- **_smoothThrottle, _smoothSteering NaN 체크** + - Lerp 전후 모두 검증 +- **최종 값 검증** + - `finalThrottle`, `finalSteering` NaN 체크 + - `finalSteering` 범위 제한 (-1 ~ 1) + +--- + +## NaN 발생 원인 분석 + +### 가능한 원인들: +1. **0으로 나누기**: `velocityControlGain / maxLinearVelocity`에서 `maxLinearVelocity`가 0 +2. **무한대 값**: 계산 과정에서 값이 무한대로 발산 +3. **Rigidbody 물리 엔진 버그**: Unity 물리 엔진 자체의 문제 +4. **Transform 회전 값 오염**: 이전 프레임의 NaN 값이 누적 + +--- + +## 해결 방법 + +### 즉시 적용된 해결책: +1. ✅ **모든 float 값에 NaN 체크 추가** +2. ✅ **Rigidbody rotation/position/velocity 직접 체크 및 리셋** +3. ✅ **나눗셈 전 분모 값 검증** +4. ✅ **Transform 회전 값 검증 및 리셋** +5. ✅ **계산 결과마다 NaN 체크** + +### 추가 권장 사항: +1. **Unity 에디터 재시작** (캐시 문제 해결) +2. **Rigidbody 설정 확인**: + - Constraints에서 Freeze Rotation이 체크되어 있지 않은지 확인 + - Interpolate 설정 확인 +3. **물리 타임스텝 확인**: + - Edit → Project Settings → Time + - Fixed Timestep: 0.02 (기본값 권장) +4. **디버그 로그 모니터링**: + - Console에서 `[Engine] ⚠️` 메시지 확인 + - NaN이 감지되면 자동으로 리셋됨 + +--- + +## 테스트 방법 + +### 1. Play 모드에서 테스트 +1. Unity 에디터에서 Play 모드 진입 +2. 키보드 입력 (WASD 또는 화살표 키) +3. Console 창 확인: + - `[Engine] ⚠️ Rigidbody rotation이 NaN입니다!` 메시지가 나타나면 자동 리셋됨 + - 배가 정상적으로 움직이는지 확인 + +### 2. 로그 확인 +- `[DefenseAgent] Engine 제어` 로그에서 `Throttle`, `Steering` 값이 NaN이 아닌지 확인 +- `Input rotation is { NaN, NaN, NaN, NaN }` 에러가 더 이상 나타나지 않는지 확인 + +### 3. 배 동작 확인 +- 배가 사라지지 않는지 확인 +- 회전이 정상적으로 작동하는지 확인 +- 조작이 즉각 반응하는지 확인 + +--- + +## 예상 결과 + +### ✅ 해결된 문제: +1. **"Input rotation is { NaN, NaN, NaN, NaN }" 에러 제거** +2. **배가 사라지는 현상 방지** +3. **조작이 먹히지 않는 현상 방지** +4. **회전이 이상한 현상 방지** + +### ⚠️ 주의사항: +- NaN이 감지되면 자동으로 리셋되므로, 배가 잠깐 멈출 수 있습니다 +- NaN이 자주 발생하면 근본 원인(물리 설정, Rigidbody 설정)을 확인해야 합니다 +- 디버그 로그가 활성화되어 있으면 Console에 경고 메시지가 표시됩니다 + +--- + +## 추가 디버깅 + +### NaN이 계속 발생하는 경우: +1. **Rigidbody 설정 확인**: + ```csharp + // DefenseAgent GameObject의 Rigidbody 확인 + - Mass: 1 (너무 작거나 크지 않게) + - Drag: 0.5 (적절한 값) + - Angular Drag: 0.5 (적절한 값) + - Constraints: 모두 해제 (Freeze Position/Rotation 체크 해제) + ``` + +2. **물리 레이어 확인**: + - 배가 다른 오브젝트와 충돌하면서 NaN이 발생할 수 있음 + - Physics Layers 설정 확인 + +3. **Time.fixedDeltaTime 확인**: + - Edit → Project Settings → Time + - Fixed Timestep이 0.02인지 확인 + +4. **에디터 재시작**: + - Unity 에디터 완전 종료 후 재시작 + - Library 폴더 삭제 후 재컴파일 (최후의 수단) diff --git a/Assets/Scripts/Defense/NaNErrorFixComplete.md.meta b/Assets/Scripts/Defense/NaNErrorFixComplete.md.meta new file mode 100644 index 000000000..d11c19994 --- /dev/null +++ b/Assets/Scripts/Defense/NaNErrorFixComplete.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4786c2a02fdd04c49803945b2862bb71 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Defense/README_Implementation.md b/Assets/Scripts/Defense/README_Implementation.md new file mode 100644 index 000000000..34d163ff4 --- /dev/null +++ b/Assets/Scripts/Defense/README_Implementation.md @@ -0,0 +1,238 @@ +# MA-PPO 구현 가이드 + +## 생성된 스크립트 목록 + +### 팀 스크립트 (그룹 보상 분배) +1. **DefenseRewardCalculator.cs** - 보상 계산 중앙화 + - 협동 기동 보상 계산 (헤딩/속도 동기화, 간격 유지, 그물 장력) + - 전술 기동 보상 계산 (수직 차단, 추적 이득) + - 안전 및 제약 페널티 계산 + +2. **DefenseEnvController.cs** - 환경 관리 및 그룹 보상 분배 + - `SimpleMultiAgentGroup` 관리 + - 매 프레임 보상 계산 및 분배 + - 임무 성과 보상 처리 (포획, 모선 방어, 방어선 침범) + - 모선 충돌 처리 (Game Over) + +3. **MotherShipCollisionDetector.cs** - 모선 충돌 감지 + - 모선 GameObject에 부착 + - 적군-모선 충돌 감지 및 알림 + +### 개인 스크립트 (에이전트) +4. **DefenseAgent.cs** (개선됨) - 개별 에이전트 + - 목표 속도 기반 액션 + - 상대 좌표 기반 관측 + - 적군 거리 기반 정렬 + - 개별 보상 제거 (그룹 보상으로 전환) + +### 수정된 스크립트 +5. **WebCollisionDetector.cs** (수정됨) + - `DefenseEnvController`를 통한 그룹 보상 처리 + - 적의 위치 전달 + +6. **DefenseBoatManager.cs** (수정됨) + - `DefenseEnvController`와 통합 + - 타임아웃 시 그룹 보상 처리 + +--- + +## Unity 설정 가이드 + +### 1. Scene 설정 + +#### Step 1: SimpleMultiAgentGroup 추가 +1. 빈 GameObject 생성 (이름: "DefenseEnvController") +2. `SimpleMultiAgentGroup` 컴포넌트 추가 +3. `DefenseEnvController` 컴포넌트 추가 +4. `DefenseRewardCalculator` 컴포넌트 추가 + +#### Step 2: DefenseEnvController 설정 +- **defenseAgent1**: 방어 에이전트 1 할당 +- **defenseAgent2**: 방어 에이전트 2 할당 +- **m_AgentGroup**: 같은 GameObject의 `SimpleMultiAgentGroup` 할당 +- **rewardCalculator**: 같은 GameObject의 `DefenseRewardCalculator` 할당 +- **motherShip**: 모선 GameObject 할당 +- **enemyShips**: 적군 선박 배열 할당 (최대 5대) +- **webObject**: Web GameObject 할당 + +#### Step 3: DefenseAgent 설정 +각 DefenseAgent에 다음 설정: +- **enemyShips**: 적군 선박 배열 (DefenseEnvController와 동일하게) +- **maxEnemyCount**: 5 (또는 적군 수에 맞게) +- **partnerAgent**: 파트너 DefenseAgent 할당 +- **motherShip**: 모선 GameObject 할당 +- **webObject**: Web GameObject 할당 +- **maxLinearVelocity**: 20 (m/s) +- **maxAngularVelocity**: 90 (deg/s) + +**⚠️ 중요: DecisionRequester 추가** +- 각 DefenseAgent GameObject에 `DecisionRequester` 컴포넌트 추가 +- **Decision Period**: 5 (또는 원하는 값, 낮을수록 더 자주 결정) +- **Take Actions Between Decisions**: 체크 해제 (권장) +- **Behavior Type**: + - 테스트 시: **Heuristic Only** (키보드 입력 테스트) + - 학습 시: **Default** (또는 Behavior Config에서 설정) + +#### Step 4: SimpleMultiAgentGroup 설정 +- **Agents**: defenseAgent1, defenseAgent2 추가 +- **Behavior Name**: Behavior Config 이름 설정 + +#### Step 5: 모선 충돌 감지 설정 +1. 모선 GameObject 선택 +2. `MotherShipCollisionDetector` 컴포넌트 추가 +3. **envController**: DefenseEnvController 할당 +4. **enemyTag**: "attack_boat" 설정 + +#### Step 6: WebCollisionDetector 설정 +1. Web GameObject 선택 +2. `WebCollisionDetector` 컴포넌트 확인 +3. **envController**: DefenseEnvController 할당 + +--- + +### 2. Behavior Config 설정 + +#### Observation Space +- **크기**: `11 + (4 × maxEnemyCount)` + - 예: maxEnemyCount = 5 → 31개 + - 예: maxEnemyCount = 3 → 23개 + - 예: maxEnemyCount = 1 → 15개 + +#### Action Space +- **크기**: 2개 (연속 액션) + - `actions[0]`: 목표 선속도 (-1~1) + - `actions[1]`: 목표 각속도 (-1~1) + +#### Hyperparameters +- **Algorithm**: PPO +- **Learning Rate**: 3e-4 +- **Batch Size**: 128 +- **Buffer Size**: 2048 +- **Beta (entropy)**: 0.01 +- **Epsilon (clipping)**: 0.2 +- **Lambda (GAE)**: 0.95 +- **Gamma (discount)**: 0.99 + +--- + +### 3. 보상 값 튜닝 가이드 + +#### 기본 보상 값 (계획서 기준) +- **협동 기동**: 0.0002 (헤딩/속도/간격 동기화) +- **그물 장력**: 0.0005 +- **전술 기동**: 0.0002~0.0005 (수직 차단, 추적 이득) +- **임무 성과**: 1.0 (포획), 0.5 (모선 방어) +- **패널티**: -1.75 (모선 충돌), -1.0 (아군 충돌), -0.1 (경계선 침범) + +#### 튜닝 팁 +1. 학습 초기에는 협동 보상을 약간 높게 (0.0003~0.0005) +2. 학습이 안정화되면 협동 보상을 낮춰서 최종 목표에 집중 +3. 모선 충돌 패널티는 절대 낮추지 말 것 (최악의 결과) +4. 보상 비율 검증: 최종 목표 보상이 협동 보상 누적합보다 10배 이상 커야 함 + +--- + +### 4. 디버깅 체크리스트 + +#### 초기 설정 확인 +- [ ] SimpleMultiAgentGroup이 두 에이전트를 등록했는지 확인 +- [ ] DefenseEnvController가 m_AgentGroup을 참조하는지 확인 +- [ ] DefenseRewardCalculator가 DefenseEnvController에 할당되었는지 확인 +- [ ] 모선에 MotherShipCollisionDetector가 추가되었는지 확인 +- [ ] WebCollisionDetector가 envController를 참조하는지 확인 + +#### 휴리스틱 테스트 확인 ⚠️ 중요 +- [ ] **각 DefenseAgent에 DecisionRequester 컴포넌트가 추가되었는지 확인** +- [ ] **DecisionRequester의 Behavior Type이 Heuristic Only로 설정되었는지 확인** (테스트 시) +- [ ] **Decision Period가 적절한지 확인** (5 권장) +- [ ] 에이전트 이름에 "1" 또는 "2"가 포함되어 있는지 확인 +- [ ] 키보드 입력이 작동하는지 확인 (WASD 또는 화살표 키) + +#### 관측값 확인 +- [ ] Observation Space 크기가 올바른지 확인 (11 + 4×적군수) +- [ ] 적군 배열이 올바르게 할당되었는지 확인 +- [ ] 상대 좌표 계산이 올바른지 확인 (Gizmo로 시각화) + +#### 액션 확인 +- [ ] 목표 속도가 올바르게 throttle/steering으로 변환되는지 확인 +- [ ] 가속도 제한이 작동하는지 확인 +- [ ] 스무딩이 적절한지 확인 + +#### 보상 확인 +- [ ] 그룹 보상이 두 에이전트 모두에 분배되는지 확인 +- [ ] 개별 보상이 제거되었는지 확인 (DefenseAgent.CalculateReward 비활성화) +- [ ] 보상 값이 계획서와 일치하는지 확인 + +--- + +### 5. 학습 시작 전 확인사항 + +1. **Unity Editor에서 테스트** + - Heuristic 모드로 두 에이전트가 정상 동작하는지 확인 + - 키보드 입력이 목표 속도로 변환되는지 확인 + +2. **보상 분배 테스트** + - DefenseEnvController의 Update()가 정상 호출되는지 확인 + - 그룹 보상이 분배되는지 로그로 확인 + +3. **충돌 감지 테스트** + - 모선 충돌이 정상 감지되는지 확인 + - Web 충돌이 정상 감지되는지 확인 + +4. **에피소드 관리 테스트** + - 에피소드 시작/종료가 정상 작동하는지 확인 + - 리셋이 올바르게 되는지 확인 + +--- + +### 6. 문제 해결 + +#### 문제: 휴리스틱이 작동하지 않음 (움직이지 않음) +- **원인 1**: DecisionRequester 컴포넌트가 없음 +- **해결**: 각 DefenseAgent에 DecisionRequester 추가 +- **원인 2**: Behavior Type이 Heuristic Only로 설정되지 않음 +- **해결**: DecisionRequester의 Behavior Type을 Heuristic Only로 설정 +- **원인 3**: _engine이 null이거나 RB가 null +- **해결**: DefenseAgent가 Boat 컴포넌트를 가지고 있는지 확인 +- **원인 4**: OnActionReceived가 호출되지 않음 +- **해결**: DecisionRequester의 Decision Period 확인 (너무 크면 느림) + +#### 문제: 그룹 보상이 분배되지 않음 +- **원인**: SimpleMultiAgentGroup이 에이전트를 등록하지 않음 +- **해결**: Start()에서 RegisterAgent() 호출 확인 + +#### 문제: 관측값 크기 불일치 +- **원인**: maxEnemyCount와 실제 적군 수 불일치 +- **해결**: Behavior Config의 Observation Space 크기 확인 + +#### 문제: 목표 속도가 적용되지 않음 +- **원인**: 가속도 제한이 너무 엄격함 +- **해결**: maxLinearAcceleration, maxAngularAcceleration 값 조정 + +#### 문제: 보상 해킹 발생 +- **원인**: 협동 보상 값이 너무 큼 +- **해결**: 협동 보상 값을 더 낮춤 (0.0001~0.0002) + +--- + +### 7. 다음 단계 + +1. Unity Scene 설정 완료 +2. Behavior Config 설정 완료 +3. Heuristic 모드로 테스트 +4. 학습 시작 +5. 보상 값 튜닝 +6. 성능 검증 + +--- + +## 참고 파일 + +- **계획서**: `MA_PPO_Implementation_Plan.md` +- **구현 스크립트**: + - `DefenseRewardCalculator.cs` + - `DefenseEnvController.cs` + - `MotherShipCollisionDetector.cs` + - `DefenseAgent.cs` (개선됨) + - `WebCollisionDetector.cs` (수정됨) + - `DefenseBoatManager.cs` (수정됨) diff --git a/Assets/Scripts/Defense/README_Implementation.md.meta b/Assets/Scripts/Defense/README_Implementation.md.meta new file mode 100644 index 000000000..f79065b6e --- /dev/null +++ b/Assets/Scripts/Defense/README_Implementation.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f4b25741b9700d943bde429eab6a4cac +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git "a/Assets/Scripts/Defense/RL_\355\214\214\354\235\274\354\240\225\353\246\254.md" "b/Assets/Scripts/Defense/RL_\355\214\214\354\235\274\354\240\225\353\246\254.md" new file mode 100644 index 000000000..fbcee530f --- /dev/null +++ "b/Assets/Scripts/Defense/RL_\355\214\214\354\235\274\354\240\225\353\246\254.md" @@ -0,0 +1,298 @@ +# 강화학습 관련 파일 정리 + +## 📁 파일 구조 + +``` +Scripts/ +├── MLAgents/ +│ └── DefenseAgent.cs # 방어 에이전트 (메인) +│ +└── Defense/ + ├── DefenseEnvController.cs # 환경 컨트롤러 (중앙 허브) + ├── DefenseRewardCalculator.cs # 보상 계산기 + │ + ├── MLAgents/ + │ ├── AttackAgent.cs # 공격 에이전트 + │ ├── DynamicWeb.cs # 웹 생성 및 관리 + │ ├── WebCollisionDetector.cs # 웹 충돌 감지 + │ ├── SimpleExplosionOnCollision.cs # 폭발 효과 + │ └── AttackBoatDisabler.cs # 공격 보트 비활성화 + │ + ├── MotherShipCollisionDetector.cs # 모선 충돌 감지 + └── MotherShipGenerator.cs # 모선 생성 +``` + +--- + +## 🎯 핵심 파일 설명 + +### 1. **DefenseAgent.cs** (`MLAgents/DefenseAgent.cs`) +**역할:** 방어 에이전트 (메인 학습 대상) + +**주요 기능:** +- 2대의 방어 선박이 협력하여 적군을 web 사이로 유도 +- 목표 속도 기반 연속 액션 (throttle, steering) +- 상대 좌표 기반 관측 (파트너, 적군, 모선, web) +- 그룹 보상 수신 (SimpleMultiAgentGroup) + +**액션:** +- `ContinuousActions[0]`: throttle (-1 ~ 1) +- `ContinuousActions[1]`: steering (-1 ~ 1) + +**관측:** +- 파트너 상대 위치/속도 +- 적군 상대 위치/속도 (최대 5대) +- 모선 상대 위치 +- Web 상대 위치 +- 자신의 속도/각속도 + +--- + +### 2. **DefenseEnvController.cs** (`Defense/DefenseEnvController.cs`) +**역할:** 환경 컨트롤러 (중앙 허브) + +**주요 기능:** +- 에피소드 시작/종료 관리 +- 모든 선박 위치 리셋 +- 적군 선박 재생성 및 추적 +- 그룹 보상 분배 +- Web 자동 생성 및 관리 +- 충돌 이벤트 처리 (Web, MotherShip) + +**핵심 메서드:** +- `RestartEpisode()`: 에피소드 재시작 +- `ResetScene()`: 환경 리셋 +- `ResetPositionsOnly()`: 위치만 리셋 +- `OnEnemyHitWeb()`: 적군이 Web 충돌 시 +- `OnEnemyHitMotherShip()`: 적군이 모선 충돌 시 + +--- + +### 3. **DefenseRewardCalculator.cs** (`Defense/DefenseRewardCalculator.cs`) +**역할:** 보상 계산기 + +**주요 기능:** +- 협동 기동 보상 계산 +- 전술 기동 보상 계산 +- 안전 및 제약 페널티 계산 +- 에이전트 상태 수집 + +**보상 종류:** +- 협동 보상: 두 에이전트 간 거리 유지 +- 전술 보상: 적군을 web 사이로 유도 +- 안전 페널티: 충돌, 경계 침범 등 + +--- + +### 4. **AttackAgent.cs** (`Defense/MLAgents/AttackAgent.cs`) +**역할:** 공격 에이전트 (적군) + +**주요 기능:** +- 모선에 접근하는 것이 목표 +- 거리 기반 보상 (가까울수록 높은 보상) +- Raycast 기반 관측 +- Heuristic 제공 (수동 조작 가능) + +**보상:** +- 모선과의 거리가 가까울수록 보상 +- 시간당 작은 페널티 (빠른 접근 유도) + +--- + +## 🔧 보조 스크립트 + +### 5. **DynamicWeb.cs** (`Defense/MLAgents/DynamicWeb.cs`) +**역할:** Web 오브젝트 동적 생성 및 관리 + +**주요 기능:** +- 두 방어 선박 사이에 Web 생성 +- Web 크기/위치/회전 자동 조정 +- 충돌 감지용 Collider 설정 + +--- + +### 6. **WebCollisionDetector.cs** (`Defense/MLAgents/WebCollisionDetector.cs`) +**역할:** Web 충돌 감지 + +**주요 기능:** +- `attack_boat` 태그와 충돌 감지 +- `DefenseEnvController.OnEnemyHitWeb()` 호출 +- 폭발 효과 및 에피소드 재시작 트리거 + +--- + +### 7. **MotherShipCollisionDetector.cs** (`Defense/MotherShipCollisionDetector.cs`) +**역할:** 모선 충돌 감지 + +**주요 기능:** +- `attack_boat` 태그와 충돌 감지 +- `DefenseEnvController.OnEnemyHitMotherShip()` 호출 +- 폭발 효과 및 에피소드 재시작 트리거 + +--- + +### 8. **SimpleExplosionOnCollision.cs** (`Defense/MLAgents/SimpleExplosionOnCollision.cs`) +**역할:** 충돌 시 폭발 효과 + +**주요 기능:** +- 충돌 시 ParticleSystem 생성 +- 일정 시간 후 자동 파괴 + +--- + +### 9. **AttackBoatDisabler.cs** (`Defense/MLAgents/AttackBoatDisabler.cs`) +**역할:** 공격 보트 비활성화 관리 + +**주요 기능:** +- 특정 조건에서 공격 보트 비활성화 +- 에피소드 리셋 시 재활성화 + +--- + +## 📊 데이터 흐름 + +``` +DefenseAgent (2대) + ↓ 관측/액션 +DefenseEnvController (중앙 허브) + ↓ 보상 계산 요청 +DefenseRewardCalculator + ↓ 보상 반환 +DefenseEnvController + ↓ 그룹 보상 분배 +SimpleMultiAgentGroup + ↓ 보상 전달 +DefenseAgent (2대) +``` + +--- + +## 🎮 에피소드 흐름 + +1. **시작:** + - `DefenseEnvController.Start()` → `ResetScene()` + - 모든 선박 초기 위치로 리셋 + - Web 자동 생성 + +2. **진행:** + - `DefenseAgent`들이 관측 수집 및 액션 수행 + - `DefenseRewardCalculator`가 보상 계산 + - `DefenseEnvController`가 보상 분배 + +3. **종료 조건:** + - 모든 적군 선박 파괴 + - 적군이 Web 충돌 + - 적군이 모선 충돌 + - 최대 환경 스텝 수 도달 + +4. **재시작:** + - `RestartEpisode()` 호출 + - 모든 위치/속도 리셋 + - 파괴된 적군 재생성 + - Web 재생성 + +--- + +## 🔗 파일 간 의존성 + +``` +DefenseAgent + ├── DefenseEnvController (보상 수신, 에피소드 관리) + ├── DefenseRewardCalculator (보상 계산) + └── SimpleMultiAgentGroup (그룹 보상) + +DefenseEnvController + ├── DefenseAgent (에이전트 관리) + ├── DefenseRewardCalculator (보상 계산) + ├── SimpleMultiAgentGroup (그룹 보상) + ├── WebCollisionDetector (Web 충돌) + └── MotherShipCollisionDetector (모선 충돌) + +AttackAgent + └── DefenseEnvController (에피소드 관리) +``` + +--- + +## 📝 설정 파일 + +### Unity ML-Agents 설정 +- Behavior Name: `DefenseAgent` +- Vector Observation Space: 변수 (파트너, 적군, 모선, web 등) +- Vector Action Space: Continuous (2) - throttle, steering +- Max Step: `DefenseEnvController.maxEnvironmentSteps` + +### 인스펙터 설정 +**DefenseEnvController:** +- `defenseAgent1`, `defenseAgent2`: 방어 에이전트 할당 +- `motherShip`: 모선 GameObject +- `enemyShips[]`: 적군 선박 배열 +- `webObject`: Web GameObject (자동 생성 가능) +- `maxEnvironmentSteps`: 최대 환경 스텝 수 + +**DefenseAgent:** +- `partnerAgent`: 파트너 에이전트 +- `enemyShips[]`: 적군 선박 배열 +- `webObject`: Web GameObject +- `motherShip`: 모선 GameObject + +--- + +## 🚀 사용 방법 + +1. **씬 설정:** + - `DefenseEnvController`를 씬에 추가 + - `DefenseAgent` 2개를 방어 선박에 추가 + - `AttackAgent`를 적군 선박에 추가 (선택사항) + +2. **인스펙터 설정:** + - `DefenseEnvController`에 에이전트 및 오브젝트 할당 + - `DefenseAgent`에 파트너 및 적군 할당 + +3. **학습 시작:** + - Unity에서 Play 모드 실행 + - Python에서 ML-Agents 학습 시작 + - `mlagents-learn` 명령어 사용 + +--- + +## 📚 관련 문서 + +- `EpisodeEndConditions.md`: 에피소드 종료 조건 설명 +- `SimpleMultiAgentGroup_설명.md`: 그룹 보상 설명 +- `UnitySetupGuide.md`: Unity 설정 가이드 +- `MA_PPO_Implementation_Plan.md`: 다중 에이전트 PPO 구현 계획 + +--- + +## ⚠️ 주의사항 + +1. **에이전트 등록:** + - `DefenseAgent`는 `SimpleMultiAgentGroup`에 등록되어야 함 + - `DefenseEnvController.Start()`에서 자동 등록 + +2. **Web 생성:** + - `DefenseEnvController.autoCreateWeb = true`로 설정 시 자동 생성 + - 수동 생성 시 `webObject`에 할당 + +3. **충돌 감지:** + - Web과 모선에 Collider 및 Rigidbody 필요 + - `isTrigger = true` 설정 필요 + +4. **에피소드 리셋:** + - 모든 위치 리셋은 코루틴으로 처리됨 + - 비활성화 → 리셋 → 활성화 순서로 진행 + +--- + +## 🔄 최근 변경사항 + +- 모든 디버그 로그 제거 (성능 최적화) +- Web 자동 생성 기능 추가 +- 충돌 감지 시스템 개선 +- 적군 선박 재생성 시스템 추가 + +--- + +**작성일:** 2026-01-26 +**버전:** 1.0 diff --git "a/Assets/Scripts/Defense/RL_\355\214\214\354\235\274\354\240\225\353\246\254.md.meta" "b/Assets/Scripts/Defense/RL_\355\214\214\354\235\274\354\240\225\353\246\254.md.meta" new file mode 100644 index 000000000..47daba4b3 --- /dev/null +++ "b/Assets/Scripts/Defense/RL_\355\214\214\354\235\274\354\240\225\353\246\254.md.meta" @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6ef3d8aea639dc74ea32b0575b509fde +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git "a/Assets/Scripts/Defense/SimpleMultiAgentGroup_\354\204\244\353\252\205.md" "b/Assets/Scripts/Defense/SimpleMultiAgentGroup_\354\204\244\353\252\205.md" new file mode 100644 index 000000000..e5684d21f --- /dev/null +++ "b/Assets/Scripts/Defense/SimpleMultiAgentGroup_\354\204\244\353\252\205.md" @@ -0,0 +1,101 @@ +# SimpleMultiAgentGroup 설명 + +## ❓ SimpleMultiAgentGroup이란? + +**SimpleMultiAgentGroup**은 Unity ML-Agents 패키지에서 제공하는 **컴포넌트**입니다. + +### ✅ 중요한 사실: +- **별도 파일을 만들 필요 없습니다!** +- **스크립트를 작성할 필요 없습니다!** +- Unity ML-Agents 패키지에 이미 포함되어 있습니다. + +--- + +## 📦 ML-Agents 패키지 확인 방법 + +### 1. Package Manager에서 확인 +1. Unity 에디터에서 **Window → Package Manager** 열기 +2. **In Project** 탭 선택 +3. 검색창에 `ml-agents` 입력 +4. `com.unity.ml-agents` 패키지가 설치되어 있는지 확인 + +### 2. manifest.json에서 확인 +프로젝트 루트의 `Packages/manifest.json` 파일에서: +```json +{ + "dependencies": { + "com.unity.ml-agents": "..." + } +} +``` +이 줄이 있으면 ML-Agents 패키지가 설치된 것입니다. + +--- + +## 🔧 SimpleMultiAgentGroup 사용 방법 + +### Unity Inspector에서: +1. GameObject 선택 +2. **Add Component** 클릭 +3. 검색창에 `SimpleMultiAgentGroup` 입력 +4. **SimpleMultiAgentGroup** 컴포넌트 추가 + +### 코드에서 사용: +```csharp +using Unity.MLAgents; + +public class DefenseEnvController : MonoBehaviour +{ + public SimpleMultiAgentGroup m_AgentGroup; // Inspector에서 할당 + + void Start() + { + // 자동으로 찾기 + m_AgentGroup = GetComponent(); + } +} +``` + +--- + +## ⚠️ SimpleMultiAgentGroup을 찾을 수 없는 경우 + +### 문제 1: Add Component에서 검색되지 않음 +**해결 방법:** +1. Unity 에디터 재시작 +2. Assets → Reimport All +3. Library 폴더 삭제 후 Unity 재시작 (최후의 수단) + +### 문제 2: ML-Agents 패키지가 설치되지 않음 +**해결 방법:** +1. Window → Package Manager +2. + → Add package by name +3. `com.unity.ml-agents` 입력 +4. Install 클릭 + +### 문제 3: 패키지 버전 호환성 문제 +**확인 사항:** +- Unity 버전이 ML-Agents와 호환되는지 확인 +- ML-Agents 패키지 버전 확인 + +--- + +## 📚 참고 자료 + +- Unity ML-Agents 공식 문서: https://github.com/Unity-Technologies/ml-agents +- SimpleMultiAgentGroup API: Unity ML-Agents 패키지 내 문서 + +--- + +## 💡 요약 + +**SimpleMultiAgentGroup은:** +- ✅ Unity ML-Agents 패키지의 일부 +- ✅ 별도 파일/스크립트 불필요 +- ✅ Add Component로 추가 가능 +- ❌ 직접 만들 필요 없음 + +**만약 찾을 수 없다면:** +1. ML-Agents 패키지 설치 확인 +2. Unity 에디터 재시작 +3. Library 폴더 삭제 후 재시작 diff --git "a/Assets/Scripts/Defense/SimpleMultiAgentGroup_\354\204\244\353\252\205.md.meta" "b/Assets/Scripts/Defense/SimpleMultiAgentGroup_\354\204\244\353\252\205.md.meta" new file mode 100644 index 000000000..5a9a7e647 --- /dev/null +++ "b/Assets/Scripts/Defense/SimpleMultiAgentGroup_\354\204\244\353\252\205.md.meta" @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d2d2863a294d8954192777b3ad263b33 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git "a/Assets/Scripts/Defense/SimpleMultiAgentGroup_\354\227\206\354\235\264_\354\202\254\354\232\251\355\225\230\352\270\260.md" "b/Assets/Scripts/Defense/SimpleMultiAgentGroup_\354\227\206\354\235\264_\354\202\254\354\232\251\355\225\230\352\270\260.md" new file mode 100644 index 000000000..60c69bbe2 --- /dev/null +++ "b/Assets/Scripts/Defense/SimpleMultiAgentGroup_\354\227\206\354\235\264_\354\202\254\354\232\251\355\225\230\352\270\260.md" @@ -0,0 +1,127 @@ +# SimpleMultiAgentGroup 없이 사용하기 + +## ✅ 수정 완료 + +**DefenseEnvController**가 이제 SimpleMultiAgentGroup 없이도 작동합니다! + +--- + +## 🔧 작동 방식 + +### SimpleMultiAgentGroup이 있는 경우: +- **그룹 보상 모드**: 두 에이전트가 동일한 보상을 받음 +- `m_AgentGroup.AddGroupReward()` 사용 +- `m_AgentGroup.EndGroupEpisode()` 사용 + +### SimpleMultiAgentGroup이 없는 경우: +- **개별 보상 모드**: 각 에이전트에 개별적으로 보상 부여 +- `defenseAgent1.AddReward()` 사용 +- `defenseAgent1.EndEpisode()` 사용 + +--- + +## 📋 설정 방법 + +### 방법 1: SimpleMultiAgentGroup 없이 사용 (현재 권장) + +1. **DefenseEnvController GameObject 생성** +2. **컴포넌트 추가**: + - ✅ DefenseEnvController + - ✅ DefenseRewardCalculator + - ❌ SimpleMultiAgentGroup (추가하지 않음) + +3. **DefenseEnvController 설정**: + - defenseAgent1, defenseAgent2 할당 + - rewardCalculator 할당 (같은 GameObject) + - motherShip, enemyShips, webObject 할당 + - **m_AgentGroup은 비워둠** (null) + +### 방법 2: SimpleMultiAgentGroup과 함께 사용 + +1. **DefenseEnvController GameObject 생성** +2. **컴포넌트 추가**: + - ✅ SimpleMultiAgentGroup + - ✅ DefenseEnvController + - ✅ DefenseRewardCalculator + +3. **설정**: + - SimpleMultiAgentGroup의 Agents 배열에 defenseAgent1, defenseAgent2 추가 + - DefenseEnvController의 m_AgentGroup에 SimpleMultiAgentGroup 할당 + +--- + +## 🎯 랜덤 스폰 기능 + +### DefenseBoatManager 설정 + +**Inspector에서:** +- **Enable Random Spawn**: 체크 (랜덤 스폰 활성화) +- **Spawn Range**: 20 (기본값, 조절 가능) + +### 동작 방식 + +에피소드가 시작될 때: +1. **모선은 제외** (위치 유지) +2. **아군 선박 (DefenseAgent 1, 2)**: + - 기존 위치에서 ±spawnRange 범위로 랜덤 생성 + - 랜덤 회전 (0~360도) +3. **적군 선박들**: + - 기존 위치에서 ±spawnRange 범위로 랜덤 생성 + - 랜덤 회전 (0~360도) +4. **Web 오브젝트**: + - 두 아군 선박의 중간 위치로 자동 배치 + +--- + +## 📊 보상 분배 비교 + +### 그룹 보상 모드 (SimpleMultiAgentGroup 있음) +``` +협동 보상 계산 → m_AgentGroup.AddGroupReward(0.0002) +→ defenseAgent1과 defenseAgent2 모두 +0.0002 받음 +``` + +### 개별 보상 모드 (SimpleMultiAgentGroup 없음) +``` +협동 보상 계산 → defenseAgent1.AddReward(0.0002) + → defenseAgent2.AddReward(0.0002) +→ 각각 +0.0002 받음 (결과는 동일) +``` + +**결과적으로 보상 값은 동일하지만, MA-PPO 학습에는 그룹 보상이 더 효과적입니다.** + +--- + +## ⚠️ 주의사항 + +### 개별 보상 모드의 한계: +- MA-PPO의 그룹 학습 최적화를 완전히 활용하지 못할 수 있음 +- 하지만 기본적인 학습은 가능함 + +### 권장 사항: +- 가능하면 SimpleMultiAgentGroup 사용 (더 나은 협동 학습) +- 없어도 작동은 하지만, 그룹 보상이 더 효과적 + +--- + +## 🐛 문제 해결 + +### 문제: 보상이 분배되지 않음 +- **확인**: DefenseEnvController의 enableDebugLog 활성화 +- **확인**: Console에서 "[DefenseEnvController] 개별 보상 모드로 작동합니다" 메시지 확인 + +### 문제: 랜덤 스폰이 작동하지 않음 +- **확인**: DefenseBoatManager의 enableRandomSpawn이 체크되어 있는지 +- **확인**: spawnRange 값이 0보다 큰지 + +--- + +## 💡 요약 + +✅ **SimpleMultiAgentGroup 없이도 작동합니다!** +- 개별 보상 모드로 자동 전환 +- 모든 기능 정상 작동 + +✅ **랜덤 스폰 기능 추가됨** +- 에피소드 시작 시 모선 제외 모든 선박 랜덤 재생성 +- Inspector에서 range 조절 가능 diff --git "a/Assets/Scripts/Defense/SimpleMultiAgentGroup_\354\227\206\354\235\264_\354\202\254\354\232\251\355\225\230\352\270\260.md.meta" "b/Assets/Scripts/Defense/SimpleMultiAgentGroup_\354\227\206\354\235\264_\354\202\254\354\232\251\355\225\230\352\270\260.md.meta" new file mode 100644 index 000000000..8f5b3154f --- /dev/null +++ "b/Assets/Scripts/Defense/SimpleMultiAgentGroup_\354\227\206\354\235\264_\354\202\254\354\232\251\355\225\230\352\270\260.md.meta" @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: fb401b071d2369f418783aa3ee313fac +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Defense/SpeedOptimizationGuide.md b/Assets/Scripts/Defense/SpeedOptimizationGuide.md new file mode 100644 index 000000000..9fda2e600 --- /dev/null +++ b/Assets/Scripts/Defense/SpeedOptimizationGuide.md @@ -0,0 +1,143 @@ +# 전진 속도 최적화 가이드 + +## 수정된 파라미터 + +### DefenseAgent.cs + +#### 1. velocityControlGain +- **이전**: `1.0f` +- **현재**: `2.5f` +- **효과**: 속도 오차에 대한 반응 강도 증가 (2.5배 빠른 가속) + +#### 2. maxLinearAcceleration +- **이전**: `5f` (m/s²) +- **현재**: `12f` (m/s²) +- **효과**: 최대 가속도 제한 완화 (2.4배 빠른 가속) + +#### 3. inputSmoothing +- **이전**: `0.2f` +- **현재**: `0.4f` +- **효과**: 입력 반응 속도 증가 (2배 빠른 반응) + +#### 4. Throttle 계산 개선 +- **이전**: 속도 오차만 사용 +- **현재**: 속도 오차 + 목표 속도 비례 결합 +- **효과**: 목표 속도가 높을수록 더 강한 throttle 적용 + +--- + +## 추가 최적화 옵션 + +### Unity Inspector에서 조정 가능한 값들: + +#### DefenseAgent 컴포넌트: +1. **maxLinearVelocity** (기본: 20 m/s) + - 더 빠르게 하려면: `25 ~ 30`으로 증가 + - 주의: 너무 높으면 제어가 어려워질 수 있음 + +2. **velocityControlGain** (기본: 2.5) + - 더 빠른 가속: `3.0 ~ 4.0`으로 증가 + - 주의: 너무 높으면 불안정할 수 있음 + +3. **maxLinearAcceleration** (기본: 12 m/s²) + - 더 빠른 가속: `15 ~ 20`으로 증가 + - 주의: 물리적으로 비현실적일 수 있음 + +4. **inputSmoothing** (기본: 0.4) + - 더 빠른 반응: `0.5 ~ 0.7`로 증가 + - 주의: 너무 높으면 부드러움이 떨어짐 + +#### Engine 컴포넌트 (Boat GameObject): +1. **horsePower** (기본: 18) + - 더 강한 엔진: `25 ~ 30`으로 증가 + - 주의: 너무 높으면 제어가 어려워질 수 있음 + +--- + +## 속도 테스트 방법 + +### 1. 현재 속도 확인 +- Console에서 `[DefenseAgent] Engine 제어` 로그 확인 +- `CurrentVel` 값이 `maxLinearVelocity`에 가까워지는지 확인 + +### 2. 가속도 확인 +- 키를 누르고 있을 때 속도가 빠르게 증가하는지 확인 +- `Throttle` 값이 1.0에 가까워지는지 확인 + +### 3. 반응 속도 확인 +- 키를 누르는 즉시 배가 반응하는지 확인 +- 지연이 느껴지면 `inputSmoothing` 증가 + +--- + +## 권장 설정 값 + +### 빠른 속도 (권장): +``` +maxLinearVelocity: 25 +velocityControlGain: 3.0 +maxLinearAcceleration: 15 +inputSmoothing: 0.5 +horsePower: 25 +``` + +### 균형잡힌 속도 (기본): +``` +maxLinearVelocity: 20 +velocityControlGain: 2.5 +maxLinearAcceleration: 12 +inputSmoothing: 0.4 +horsePower: 18 +``` + +### 부드러운 속도: +``` +maxLinearVelocity: 18 +velocityControlGain: 2.0 +maxLinearAcceleration: 10 +inputSmoothing: 0.3 +horsePower: 18 +``` + +--- + +## 문제 해결 + +### 여전히 느린 경우: +1. **Engine의 horsePower 확인** + - Boat GameObject의 Engine 컴포넌트에서 `horsePower` 값 확인 + - 18보다 작으면 증가 필요 + +2. **Rigidbody 설정 확인** + - Mass가 너무 크지 않은지 확인 (1 ~ 5 권장) + - Drag가 너무 크지 않은지 확인 (0.5 ~ 1.0 권장) + +3. **물리 타임스텝 확인** + - Edit → Project Settings → Time + - Fixed Timestep: 0.02 (기본값) + +4. **가속도 제한 확인** + - `maxLinearAcceleration`이 너무 작으면 속도 증가가 제한됨 + - 12 이상 권장 + +### 너무 빠른 경우: +1. **velocityControlGain 감소** (2.0 ~ 2.5) +2. **maxLinearAcceleration 감소** (8 ~ 10) +3. **inputSmoothing 감소** (0.2 ~ 0.3) + +--- + +## 디버그 로그 확인 + +Console에서 다음 로그를 확인하세요: +``` +[DefenseAgent] Engine 제어: ..., Throttle=..., CurrentVel=... +``` + +- **Throttle**: 1.0에 가까울수록 최대 가속 +- **CurrentVel**: `maxLinearVelocity`에 가까워질수록 최대 속도 + +Throttle이 1.0에 도달하지 못하면: +- `velocityControlGain` 증가 +- `maxLinearAcceleration` 증가 +- `horsePower` 증가 diff --git a/Assets/Scripts/Defense/SpeedOptimizationGuide.md.meta b/Assets/Scripts/Defense/SpeedOptimizationGuide.md.meta new file mode 100644 index 000000000..933379715 --- /dev/null +++ b/Assets/Scripts/Defense/SpeedOptimizationGuide.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 21ed873a94ca05647aaaca36e7522a6c +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Defense/TacticalAssignmentReceiver.cs b/Assets/Scripts/Defense/TacticalAssignmentReceiver.cs new file mode 100644 index 000000000..8be809976 --- /dev/null +++ b/Assets/Scripts/Defense/TacticalAssignmentReceiver.cs @@ -0,0 +1,155 @@ +using UnityEngine; +using System.Collections.Generic; + +namespace BoatAttack +{ + /// + /// Roonshot 전술 서버에서 수신한 배정 결과를 DefenseEnvController에 연동 + /// TacticalClient에서 배정 결과를 가져와 에이전트 관측에 타겟 정보를 제공합니다. + /// + public class TacticalAssignmentReceiver : MonoBehaviour + { + [Header("References")] + [Tooltip("전술 클라이언트")] + public TacticalClient tacticalClient; + + [Tooltip("방어 환경 컨트롤러")] + public DefenseEnvController envController; + + [Header("Status (Read Only)")] + [SerializeField] private string _currentFormation = "UNKNOWN"; + [SerializeField] private float _currentConfidence = 0f; + [SerializeField] private int _assignmentCount = 0; + + // 에이전트별 타겟 적군 인덱스 (-1 = 배정 없음) + private int _agent1TargetIndex = -1; + private int _agent2TargetIndex = -1; + + // 타겟 적군 월드 위치 (에이전트 관측용) + private Vector3 _agent1TargetPos = Vector3.zero; + private Vector3 _agent2TargetPos = Vector3.zero; + + /// + /// Agent1의 배정된 타겟 적군 인덱스 (-1 = 없음) + /// + public int Agent1TargetIndex => _agent1TargetIndex; + + /// + /// Agent2의 배정된 타겟 적군 인덱스 (-1 = 없음) + /// + public int Agent2TargetIndex => _agent2TargetIndex; + + /// + /// Agent1의 타겟 적군 위치 + /// + public Vector3 Agent1TargetPosition => _agent1TargetPos; + + /// + /// Agent2의 타겟 적군 위치 + /// + public Vector3 Agent2TargetPosition => _agent2TargetPos; + + /// + /// 현재 포메이션 이름 + /// + public string CurrentFormation => _currentFormation; + + /// + /// 현재 분류 신뢰도 + /// + public float CurrentConfidence => _currentConfidence; + + private void Update() + { + if (tacticalClient == null || !tacticalClient.IsConnected) + return; + + var assignment = tacticalClient.GetLatestAssignment(); + if (assignment == null || assignment.assignments == null) + return; + + _currentFormation = assignment.formation ?? "UNKNOWN"; + _currentConfidence = assignment.confidence; + _assignmentCount = assignment.assignments.Length; + + // 배정 결과 → 적군 인덱스 매핑 + _agent1TargetIndex = -1; + _agent2TargetIndex = -1; + + foreach (var entry in assignment.assignments) + { + if (entry.pair == null || entry.pair.Length == 0) + continue; + + // target_enemy_id → enemyShips 배열 인덱스 찾기 + int enemyIndex = FindEnemyIndex(entry.target_enemy_id); + + // 어느 에이전트 쌍에 해당하는지 판별 + foreach (string friendlyId in entry.pair) + { + if (friendlyId == "Friendly_0") + { + _agent1TargetIndex = enemyIndex; + } + else if (friendlyId == "Friendly_1") + { + _agent2TargetIndex = enemyIndex; + } + } + } + + // 타겟 위치 업데이트 + UpdateTargetPositions(); + } + + /// + /// 적군 ID 문자열 → enemyShips 배열 인덱스 변환 + /// + private int FindEnemyIndex(string enemyId) + { + if (string.IsNullOrEmpty(enemyId) || envController == null || envController.enemyShips == null) + return -1; + + // "Enemy_0" → 0 + if (enemyId.StartsWith("Enemy_")) + { + string numStr = enemyId.Substring(6); + if (int.TryParse(numStr, out int idx) && idx >= 0 && idx < envController.enemyShips.Length) + { + return idx; + } + } + + return -1; + } + + /// + /// 타겟 적군 위치 업데이트 + /// + private void UpdateTargetPositions() + { + if (envController == null || envController.enemyShips == null) + return; + + var enemies = envController.enemyShips; + + if (_agent1TargetIndex >= 0 && _agent1TargetIndex < enemies.Length && enemies[_agent1TargetIndex] != null) + { + _agent1TargetPos = enemies[_agent1TargetIndex].transform.position; + } + else + { + _agent1TargetPos = Vector3.zero; + } + + if (_agent2TargetIndex >= 0 && _agent2TargetIndex < enemies.Length && enemies[_agent2TargetIndex] != null) + { + _agent2TargetPos = enemies[_agent2TargetIndex].transform.position; + } + else + { + _agent2TargetPos = Vector3.zero; + } + } + } +} diff --git a/Assets/Scripts/Defense/TacticalAssignmentReceiver.cs.meta b/Assets/Scripts/Defense/TacticalAssignmentReceiver.cs.meta new file mode 100644 index 000000000..b8f081b23 --- /dev/null +++ b/Assets/Scripts/Defense/TacticalAssignmentReceiver.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5c08212d87dbb4146ae923b6664c6b54 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Defense/UnitySetupGuide.md b/Assets/Scripts/Defense/UnitySetupGuide.md new file mode 100644 index 000000000..209de03f1 --- /dev/null +++ b/Assets/Scripts/Defense/UnitySetupGuide.md @@ -0,0 +1,221 @@ +# Unity Scene 설정 가이드 (단계별) + +## 🎯 핵심: DefenseEnvController와 DefenseRewardCalculator 할당 위치 + +### ✅ 정답: **같은 GameObject에 함께 추가** + +--- + +## 📋 단계별 설정 방법 + +### Step 1: 빈 GameObject 생성 + +1. Unity Hierarchy 창에서 **우클릭** +2. **Create Empty** 선택 +3. 이름을 **"DefenseEnvController"**로 변경 + - 이 GameObject가 환경 관리의 중심이 됩니다 + +--- + +### Step 2: 컴포넌트 추가 + +**DefenseEnvController GameObject를 선택한 상태에서:** + +1. **Inspector 창**에서 **Add Component** 클릭 +2. 다음 컴포넌트들을 **순서대로** 추가: + +#### ① SimpleMultiAgentGroup +- **⚠️ 중요**: 이것은 Unity ML-Agents 패키지에서 제공하는 컴포넌트입니다 +- **별도 파일을 만들 필요 없습니다!** +- 검색: `SimpleMultiAgentGroup` +- 추가 후 설정: + - **Behavior Name**: Behavior Config 이름 입력 (예: "DefenseBehavior") + +**만약 SimpleMultiAgentGroup을 찾을 수 없다면:** +1. **Window → Package Manager** 열기 +2. **Unity Registry** 선택 +3. **ML-Agents** 검색 +4. **com.unity.ml-agents** 패키지 설치 확인 +5. 설치되어 있지 않다면 **Install** 클릭 + +#### ② DefenseEnvController +- 검색: `DefenseEnvController` +- 추가 후 설정 (아래 Step 3 참고) + +#### ③ DefenseRewardCalculator +- 검색: `DefenseRewardCalculator` +- 추가 후 설정 (아래 Step 4 참고) + +--- + +### Step 3: DefenseEnvController 설정 + +**DefenseEnvController 컴포넌트**의 Inspector에서: + +#### Agents 섹션: +- **Defense Agent 1**: + - Hierarchy에서 DefenseAgent 1 GameObject를 드래그 앤 드롭 +- **Defense Agent 2**: + - Hierarchy에서 DefenseAgent 2 GameObject를 드래그 앤 드롭 + +#### Components 섹션: +- **M Agent Group**: + - **같은 GameObject의 SimpleMultiAgentGroup**을 드래그 앤 드롭 + - 또는 Inspector에서 드롭다운으로 선택 +- **Reward Calculator**: + - **같은 GameObject의 DefenseRewardCalculator**를 드래그 앤 드롭 + - 또는 Inspector에서 드롭다운으로 선택 + +#### Settings 섹션: +- **Mother Ship**: + - Hierarchy에서 모선 GameObject를 드래그 앤 드롭 +- **Enemy Ships**: + - 배열 크기 설정 (예: 5) + - 각 요소에 적군 선박 GameObject들을 드래그 앤 드롭 +- **Web Object**: + - Hierarchy에서 Web GameObject를 드래그 앤 드롭 + +--- + +### Step 4: DefenseRewardCalculator 설정 + +**DefenseRewardCalculator 컴포넌트**는 기본값으로 작동하지만, 필요시 보상 값을 조정할 수 있습니다: + +- **Heading Sync Reward**: 0.0002 (기본값) +- **Speed Sync Reward**: 0.0002 (기본값) +- **Distance Maintain Reward**: 0.0002 (기본값) +- **Net Tension Reward**: 0.0005 (기본값) +- 등등... + +--- + +### Step 5: SimpleMultiAgentGroup 설정 + +**SimpleMultiAgentGroup 컴포넌트**의 Inspector에서: + +- **Agents**: + - 배열 크기: 2 + - [0]: DefenseAgent 1 드래그 앤 드롭 + - [1]: DefenseAgent 2 드래그 앤 드롭 +- **Behavior Name**: + - Behavior Config 이름 입력 (예: "DefenseBehavior") + +--- + +## 📸 시각적 구조 + +``` +Hierarchy: +├── DefenseEnvController (GameObject) +│ ├── SimpleMultiAgentGroup (컴포넌트) +│ ├── DefenseEnvController (컴포넌트) +│ │ ├── defenseAgent1 → DefenseAgent 1 GameObject +│ │ ├── defenseAgent2 → DefenseAgent 2 GameObject +│ │ ├── m_AgentGroup → 같은 GameObject의 SimpleMultiAgentGroup +│ │ ├── rewardCalculator → 같은 GameObject의 DefenseRewardCalculator +│ │ ├── motherShip → 모선 GameObject +│ │ ├── enemyShips[0~4] → 적군 선박들 +│ │ └── webObject → Web GameObject +│ └── DefenseRewardCalculator (컴포넌트) +│ └── (보상 값 설정) +├── DefenseAgent 1 (GameObject) +│ └── DefenseAgent (컴포넌트) +├── DefenseAgent 2 (GameObject) +│ └── DefenseAgent (컴포넌트) +├── MotherShip (GameObject) +│ └── MotherShipCollisionDetector (컴포넌트) +│ └── envController → DefenseEnvController GameObject +└── Web (GameObject) + └── WebCollisionDetector (컴포넌트) + └── envController → DefenseEnvController GameObject +``` + +--- + +## ⚠️ 중요 체크리스트 + +### DefenseEnvController GameObject: +- [ ] SimpleMultiAgentGroup 컴포넌트 추가됨 +- [ ] DefenseEnvController 컴포넌트 추가됨 +- [ ] DefenseRewardCalculator 컴포넌트 추가됨 +- [ ] defenseAgent1 할당됨 +- [ ] defenseAgent2 할당됨 +- [ ] m_AgentGroup이 같은 GameObject의 SimpleMultiAgentGroup을 참조 +- [ ] rewardCalculator가 같은 GameObject의 DefenseRewardCalculator를 참조 +- [ ] motherShip 할당됨 +- [ ] enemyShips 배열에 적군들 할당됨 +- [ ] webObject 할당됨 + +### SimpleMultiAgentGroup: +- [ ] Agents 배열에 defenseAgent1, defenseAgent2 추가됨 +- [ ] Behavior Name 설정됨 + +--- + +## 🔍 자동 찾기 기능 + +`DefenseEnvController.cs`의 `Start()` 메서드에서 일부 참조를 자동으로 찾습니다: + +```csharp +// 자동으로 찾는 것들: +- SimpleMultiAgentGroup (같은 GameObject에서) +- DefenseRewardCalculator (같은 GameObject에서) +- MotherShip (태그로 찾기) +``` + +하지만 **수동으로 할당하는 것이 더 안전하고 명확**합니다! + +--- + +## 🐛 문제 해결 + +### 문제: "SimpleMultiAgentGroup을 찾을 수 없습니다" 에러 + +#### 원인 1: 컴포넌트가 추가되지 않음 +- **해결**: DefenseEnvController GameObject에 SimpleMultiAgentGroup 컴포넌트 추가 +- Add Component → `SimpleMultiAgentGroup` 검색 + +#### 원인 2: ML-Agents 패키지가 설치되지 않음 +- **확인 방법**: + 1. Window → Package Manager 열기 + 2. In Project 탭에서 `com.unity.ml-agents` 검색 + 3. 설치되어 있는지 확인 +- **해결**: + - 패키지가 없다면: Package Manager → + → Add package by name → `com.unity.ml-agents` 입력 + - 또는 Unity Registry에서 ML-Agents 검색하여 설치 + +#### 원인 3: Add Component에서 SimpleMultiAgentGroup을 찾을 수 없음 +- **해결**: + 1. Unity 에디터 재시작 + 2. Assets → Reimport All (필요시) + 3. Library 폴더 삭제 후 Unity 재시작 (최후의 수단) + +### 문제: "DefenseRewardCalculator를 찾을 수 없습니다" 에러 +- **원인**: 같은 GameObject에 DefenseRewardCalculator가 없음 +- **해결**: DefenseEnvController GameObject에 DefenseRewardCalculator 추가 + +### 문제: 보상이 분배되지 않음 +- **원인**: m_AgentGroup이 null이거나 에이전트가 등록되지 않음 +- **해결**: + 1. m_AgentGroup이 할당되었는지 확인 + 2. SimpleMultiAgentGroup의 Agents 배열에 에이전트가 추가되었는지 확인 + +--- + +## 💡 요약 + +**핵심 정리:** +1. **빈 GameObject 생성** → 이름: "DefenseEnvController" +2. **3개 컴포넌트 추가**: + - SimpleMultiAgentGroup + - DefenseEnvController + - DefenseRewardCalculator +3. **DefenseEnvController 컴포넌트 설정**: + - defenseAgent1, defenseAgent2 할당 + - m_AgentGroup → 같은 GameObject의 SimpleMultiAgentGroup + - rewardCalculator → 같은 GameObject의 DefenseRewardCalculator + - motherShip, enemyShips, webObject 할당 +4. **SimpleMultiAgentGroup 설정**: + - Agents 배열에 defenseAgent1, defenseAgent2 추가 + +**모든 것이 같은 GameObject에 있어야 합니다!** diff --git a/Assets/Scripts/Defense/UnitySetupGuide.md.meta b/Assets/Scripts/Defense/UnitySetupGuide.md.meta new file mode 100644 index 000000000..5bb4826ba --- /dev/null +++ b/Assets/Scripts/Defense/UnitySetupGuide.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6b7c394c2d7aa334b9076b1208649a24 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ProjectSettings/boot.config b/Assets/Scripts/Defense/human_con_ex.py similarity index 100% rename from ProjectSettings/boot.config rename to Assets/Scripts/Defense/human_con_ex.py diff --git a/Assets/Scripts/Defense/human_con_ex.py.meta b/Assets/Scripts/Defense/human_con_ex.py.meta new file mode 100644 index 000000000..2b6b8242c --- /dev/null +++ b/Assets/Scripts/Defense/human_con_ex.py.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: fcb77bda6c2418748ae407ace36261ba +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Editor/CreateGradientTexture.cs b/Assets/Scripts/Editor/CreateGradientTexture.cs new file mode 100644 index 000000000..9de596af2 --- /dev/null +++ b/Assets/Scripts/Editor/CreateGradientTexture.cs @@ -0,0 +1,106 @@ +using UnityEngine; +using UnityEditor; +using System.IO; + +namespace BoatAttack +{ + /// + /// 윤기나는 검정색 그라데이션 텍스처를 생성하는 에디터 스크립트 + /// + public class CreateGradientTexture : EditorWindow + { + private int textureWidth = 512; + private int textureHeight = 512; + private Gradient gradient = new Gradient(); + private string textureName = "Gradient_Black_Shiny"; + private string savePath = "Assets/Textures"; + + [MenuItem("Tools/Create Gradient Texture")] + public static void ShowWindow() + { + GetWindow("Gradient Texture Creator"); + } + + private void OnEnable() + { + // 기본 그라데이션 설정 (검정색 계열) + gradient.SetKeys( + new GradientColorKey[] + { + new GradientColorKey(Color.black, 0.0f), + new GradientColorKey(new Color(0.1f, 0.1f, 0.1f), 0.5f), + new GradientColorKey(Color.black, 1.0f) + }, + new GradientAlphaKey[] + { + new GradientAlphaKey(1.0f, 0.0f), + new GradientAlphaKey(1.0f, 1.0f) + } + ); + } + + private void OnGUI() + { + GUILayout.Label("그라데이션 텍스처 생성기", EditorStyles.boldLabel); + EditorGUILayout.Space(); + + textureName = EditorGUILayout.TextField("텍스처 이름", textureName); + textureWidth = EditorGUILayout.IntField("너비", textureWidth); + textureHeight = EditorGUILayout.IntField("높이", textureHeight); + savePath = EditorGUILayout.TextField("저장 경로", savePath); + + EditorGUILayout.Space(); + EditorGUILayout.LabelField("그라데이션 설정"); + gradient = EditorGUILayout.GradientField(gradient); + + EditorGUILayout.Space(); + + if (GUILayout.Button("텍스처 생성")) + { + CreateTexture(); + } + + EditorGUILayout.Space(); + EditorGUILayout.HelpBox("생성된 텍스처는 지정된 경로에 저장됩니다.", MessageType.Info); + } + + private void CreateTexture() + { + Texture2D texture = new Texture2D(textureWidth, textureHeight, TextureFormat.RGBA32, true); + + // 그라데이션 생성 (위에서 아래로) + for (int y = 0; y < textureHeight; y++) + { + float t = (float)y / textureHeight; + Color color = gradient.Evaluate(t); + + for (int x = 0; x < textureWidth; x++) + { + texture.SetPixel(x, y, color); + } + } + + texture.Apply(); + + // 파일로 저장 + byte[] pngData = texture.EncodeToPNG(); + string fullPath = Path.Combine(savePath, textureName + ".png"); + + // 디렉토리가 없으면 생성 + if (!Directory.Exists(savePath)) + { + Directory.CreateDirectory(savePath); + } + + File.WriteAllBytes(fullPath, pngData); + AssetDatabase.Refresh(); + + Debug.Log($"텍스처 생성 완료: {fullPath}"); + + // 생성된 텍스처 선택 + Object asset = AssetDatabase.LoadAssetAtPath(fullPath); + Selection.activeObject = asset; + EditorGUIUtility.PingObject(asset); + } + } +} diff --git a/Assets/Scripts/Editor/CreateGradientTexture.cs.meta b/Assets/Scripts/Editor/CreateGradientTexture.cs.meta new file mode 100644 index 000000000..326ba8a9e --- /dev/null +++ b/Assets/Scripts/Editor/CreateGradientTexture.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6e119cdad60b7e144b7d2079b2fa4cb4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Editor/CreateShinyBlackMaterial.cs b/Assets/Scripts/Editor/CreateShinyBlackMaterial.cs new file mode 100644 index 000000000..59d964829 --- /dev/null +++ b/Assets/Scripts/Editor/CreateShinyBlackMaterial.cs @@ -0,0 +1,98 @@ +using UnityEngine; +using UnityEditor; + +namespace BoatAttack +{ + /// + /// 윤기나는 검정색 Material을 생성하는 에디터 스크립트 + /// + public class CreateShinyBlackMaterial : EditorWindow + { + private Texture2D gradientTexture; + private float metallic = 0.8f; + private float smoothness = 0.9f; + private string materialName = "Shiny_Black_Gradient"; + private string savePath = "Assets/Materials"; + + [MenuItem("Tools/Create Shiny Black Material")] + public static void ShowWindow() + { + GetWindow("Shiny Material Creator"); + } + + private void OnGUI() + { + GUILayout.Label("윤기나는 검정색 Material 생성기", EditorStyles.boldLabel); + EditorGUILayout.Space(); + + materialName = EditorGUILayout.TextField("Material 이름", materialName); + gradientTexture = (Texture2D)EditorGUILayout.ObjectField("그라데이션 텍스처", gradientTexture, typeof(Texture2D), false); + + EditorGUILayout.Space(); + EditorGUILayout.LabelField("물리적 속성", EditorStyles.boldLabel); + metallic = EditorGUILayout.Slider("Metallic", metallic, 0f, 1f); + smoothness = EditorGUILayout.Slider("Smoothness", smoothness, 0f, 1f); + + EditorGUILayout.Space(); + + if (GUILayout.Button("Material 생성")) + { + CreateMaterial(); + } + + EditorGUILayout.Space(); + EditorGUILayout.HelpBox("Standard Shader를 사용하여 윤기나는 효과를 만듭니다.", MessageType.Info); + } + + private void CreateMaterial() + { + Material mat = new Material(Shader.Find("Universal Render Pipeline/Lit")); + mat.name = materialName; + + // 텍스처 설정 + if (gradientTexture != null) + { + mat.SetTexture("_BaseMap", gradientTexture); + mat.SetColor("_BaseColor", Color.white); + } + else + { + // 텍스처가 없으면 검정색으로 설정 + mat.SetColor("_BaseColor", Color.black); + } + + // Metallic 설정 + mat.SetFloat("_Metallic", metallic); + + // Smoothness 설정 + mat.SetFloat("_Smoothness", smoothness); + + // 디렉토리가 없으면 생성 + if (!AssetDatabase.IsValidFolder(savePath)) + { + string[] folders = savePath.Split('/'); + string currentPath = folders[0]; + for (int i = 1; i < folders.Length; i++) + { + if (!AssetDatabase.IsValidFolder(currentPath + "/" + folders[i])) + { + AssetDatabase.CreateFolder(currentPath, folders[i]); + } + currentPath += "/" + folders[i]; + } + } + + // Material 저장 + string fullPath = savePath + "/" + materialName + ".mat"; + AssetDatabase.CreateAsset(mat, fullPath); + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + + Debug.Log($"Material 생성 완료: {fullPath}"); + + // 생성된 Material 선택 + Selection.activeObject = mat; + EditorGUIUtility.PingObject(mat); + } + } +} diff --git a/Assets/Scripts/Editor/CreateShinyBlackMaterial.cs.meta b/Assets/Scripts/Editor/CreateShinyBlackMaterial.cs.meta new file mode 100644 index 000000000..68c15f728 --- /dev/null +++ b/Assets/Scripts/Editor/CreateShinyBlackMaterial.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f124df87dec78c64586b308041508b2f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Editor/CreateShinyBlackMaterialQuick.cs b/Assets/Scripts/Editor/CreateShinyBlackMaterialQuick.cs new file mode 100644 index 000000000..10d620468 --- /dev/null +++ b/Assets/Scripts/Editor/CreateShinyBlackMaterialQuick.cs @@ -0,0 +1,96 @@ +using UnityEngine; +using UnityEditor; + +namespace BoatAttack +{ + /// + /// 윤기나는 검정색 그라데이션 Material을 즉시 생성하는 스크립트 + /// + public class CreateShinyBlackMaterialQuick + { + [MenuItem("Tools/Create Shiny Black Material (Quick)")] + public static void CreateMaterial() + { + // 텍스처 먼저 생성 + Texture2D gradientTexture = CreateGradientTexture(512, 512); + + // Material 생성 + Material mat = new Material(Shader.Find("Universal Render Pipeline/Lit")); + mat.name = "Shiny_Black_Gradient"; + + // 텍스처 설정 + mat.SetTexture("_BaseMap", gradientTexture); + mat.SetColor("_BaseColor", Color.white); + + // Metallic 설정 (윤기나는 효과) + mat.SetFloat("_Metallic", 0.8f); + + // Smoothness 설정 (매끄러운 표면) + mat.SetFloat("_Smoothness", 0.9f); + + // 텍스처 저장 + string texturePath = "Assets/Textures/Gradient_Black_Shiny.png"; + if (!AssetDatabase.IsValidFolder("Assets/Textures")) + { + AssetDatabase.CreateFolder("Assets", "Textures"); + } + byte[] pngData = gradientTexture.EncodeToPNG(); + System.IO.File.WriteAllBytes(texturePath, pngData); + AssetDatabase.ImportAsset(texturePath); + + // 텍스처를 Material에 다시 할당 (에셋 참조로) + Texture2D savedTexture = AssetDatabase.LoadAssetAtPath(texturePath); + mat.SetTexture("_BaseMap", savedTexture); + + // Material 저장 + string materialPath = "Assets/Materials/Shiny_Black_Gradient.mat"; + if (!AssetDatabase.IsValidFolder("Assets/Materials")) + { + AssetDatabase.CreateFolder("Assets", "Materials"); + } + + AssetDatabase.CreateAsset(mat, materialPath); + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + + Debug.Log($"Material 생성 완료: {materialPath}"); + Debug.Log($"텍스처 생성 완료: {texturePath}"); + + // 생성된 Material 선택 + Selection.activeObject = mat; + EditorGUIUtility.PingObject(mat); + } + + private static Texture2D CreateGradientTexture(int width, int height) + { + Texture2D texture = new Texture2D(width, height, TextureFormat.RGBA32, true); + + // 검정색 그라데이션 생성 (위에서 아래로) + for (int y = 0; y < height; y++) + { + float t = (float)y / height; + + // 검정 → 어두운 회색 → 검정 그라데이션 + Color color; + if (t < 0.5f) + { + // 위쪽: 검정 → 어두운 회색 + color = Color.Lerp(Color.black, new Color(0.1f, 0.1f, 0.1f), t * 2f); + } + else + { + // 아래쪽: 어두운 회색 → 검정 + color = Color.Lerp(new Color(0.1f, 0.1f, 0.1f), Color.black, (t - 0.5f) * 2f); + } + + for (int x = 0; x < width; x++) + { + texture.SetPixel(x, y, color); + } + } + + texture.Apply(); + return texture; + } + } +} diff --git a/Assets/Scripts/Editor/CreateShinyBlackMaterialQuick.cs.meta b/Assets/Scripts/Editor/CreateShinyBlackMaterialQuick.cs.meta new file mode 100644 index 000000000..2a978b828 --- /dev/null +++ b/Assets/Scripts/Editor/CreateShinyBlackMaterialQuick.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f4bd00cb6dea12f44979e82318d9c264 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Editor/CreateTexture2DArrayAsset.cs b/Assets/Scripts/Editor/CreateTexture2DArrayAsset.cs index c8b8b3624..0bb73b612 100644 --- a/Assets/Scripts/Editor/CreateTexture2DArrayAsset.cs +++ b/Assets/Scripts/Editor/CreateTexture2DArrayAsset.cs @@ -1,66 +1,66 @@ -using UnityEngine; -using UnityEditor; - -/// -/// Not ideal code, use at own peril... -/// -[ExecuteInEditMode] -public class CreateTexture2DArrayAsset : MonoBehaviour { - - public TextureFormat texFormat; - public bool mipmaps; - public Texture2D[] textures = new Texture2D[0]; - public Cubemap[] cubeMaps = new Cubemap[0]; - - [ContextMenu("Create Texture2D Array asset")] - void CreateTexture2DAsset() - { - //Texture2DArray array = new Texture2DArray(textures[0].width, textures[0].height, textures.Length, GraphicsFormatUtility.GetGraphicsFormat(TextureFormat.ARGB32, false), TextureCreationFlags.None); - Texture2DArray array = new Texture2DArray(textures[0].width, textures[0].height, textures.Length, texFormat, mipmaps); - Debug.Log(array); - Debug.Log(array.format); - for (int i = 0; i < textures.Length; i++) - array.SetPixels(textures[i].GetPixels(), i); - - array.Apply(); - AssetDatabase.CreateAsset(array, "Assets/TextureArray.asset"); - } - - [ContextMenu("Create Cubemap Array asset")] - void CreateCubeArrayAsset() - { - //Texture2DArray array = new Texture2DArray(textures[0].width, textures[0].height, textures.Length, GraphicsFormatUtility.GetGraphicsFormat(TextureFormat.ARGB32, false), TextureCreationFlags.None); - TextureFormat tf = cubeMaps[0].format; - int mipLevel = cubeMaps[0].mipmapCount; - - CubemapArray array = new CubemapArray(cubeMaps[0].width, cubeMaps.Length, texFormat, mipmaps); - - - for (int i = 0; i < 6; i++) //iterate for each cube face - { - for (int j = 0; j < cubeMaps.Length; j++) - { - for (int m = 0; m < mipLevel; m++) - { - CubemapFace face = (CubemapFace)i; - array.SetPixels(cubeMaps[j].GetPixels(face), face, j, m); - } - } - } - - for (int j = 0; j < 6; j++) - { - //CubemapFace face = (CubemapFace)i; - // array.SetPixels(textures[j].GetPixels(), face, j); - for (int i = 0; i < mipLevel; i++) - { - //for() - // Graphics.CopyTexture(textures[j], 0, i, array, j, i); - } - - } - - array.Apply(); - AssetDatabase.CreateAsset(array, "Assets/CubemapArray.asset"); - } -} +using UnityEngine; +using UnityEditor; + +/// +/// Not ideal code, use at own peril... +/// +[ExecuteInEditMode] +public class CreateTexture2DArrayAsset : MonoBehaviour { + + public TextureFormat texFormat; + public bool mipmaps; + public Texture2D[] textures = new Texture2D[0]; + public Cubemap[] cubeMaps = new Cubemap[0]; + + [ContextMenu("Create Texture2D Array asset")] + void CreateTexture2DAsset() + { + //Texture2DArray array = new Texture2DArray(textures[0].width, textures[0].height, textures.Length, GraphicsFormatUtility.GetGraphicsFormat(TextureFormat.ARGB32, false), TextureCreationFlags.None); + Texture2DArray array = new Texture2DArray(textures[0].width, textures[0].height, textures.Length, texFormat, mipmaps); + Debug.Log(array); + Debug.Log(array.format); + for (int i = 0; i < textures.Length; i++) + array.SetPixels(textures[i].GetPixels(), i); + + array.Apply(); + AssetDatabase.CreateAsset(array, "Assets/TextureArray.asset"); + } + + [ContextMenu("Create Cubemap Array asset")] + void CreateCubeArrayAsset() + { + //Texture2DArray array = new Texture2DArray(textures[0].width, textures[0].height, textures.Length, GraphicsFormatUtility.GetGraphicsFormat(TextureFormat.ARGB32, false), TextureCreationFlags.None); + TextureFormat tf = cubeMaps[0].format; + int mipLevel = cubeMaps[0].mipmapCount; + + CubemapArray array = new CubemapArray(cubeMaps[0].width, cubeMaps.Length, texFormat, mipmaps); + + + for (int i = 0; i < 6; i++) //iterate for each cube face + { + for (int j = 0; j < cubeMaps.Length; j++) + { + for (int m = 0; m < mipLevel; m++) + { + CubemapFace face = (CubemapFace)i; + array.SetPixels(cubeMaps[j].GetPixels(face), face, j, m); + } + } + } + + for (int j = 0; j < 6; j++) + { + //CubemapFace face = (CubemapFace)i; + // array.SetPixels(textures[j].GetPixels(), face, j); + for (int i = 0; i < mipLevel; i++) + { + //for() + // Graphics.CopyTexture(textures[j], 0, i, array, j, i); + } + + } + + array.Apply(); + AssetDatabase.CreateAsset(array, "Assets/CubemapArray.asset"); + } +} diff --git a/Assets/Scripts/Editor/LinkGameViewCamera.prefab b/Assets/Scripts/Editor/LinkGameViewCamera.prefab new file mode 100644 index 000000000..94f6061f0 --- /dev/null +++ b/Assets/Scripts/Editor/LinkGameViewCamera.prefab @@ -0,0 +1,153 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &251524200295667666 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5260567718057574709} + - component: {fileID: 2925269175919186199} + - component: {fileID: 6053316668851367148} + - component: {fileID: 8403063454423129131} + - component: {fileID: -6918340408813756036} + m_Layer: 0 + m_Name: LinkGameViewCamera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5260567718057574709 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 251524200295667666} + 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: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!20 &2925269175919186199 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 251524200295667666} + 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!81 &6053316668851367148 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 251524200295667666} + m_Enabled: 1 +--- !u!114 &8403063454423129131 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 251524200295667666} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 72ece51f2901e7445ab60da3685d6b5f, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ShowDebugText: 0 + m_ShowCameraFrustum: 1 + m_IgnoreTimeScale: 0 + m_WorldUpOverride: {fileID: 0} + m_UpdateMethod: 2 + m_BlendUpdateMethod: 1 + m_DefaultBlend: + m_Style: 1 + m_Time: 2 + m_CustomCurve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_CustomBlends: {fileID: 0} + m_CameraCutEvent: + m_PersistentCalls: + m_Calls: [] + m_CameraActivatedEvent: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &-6918340408813756036 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 251524200295667666} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_RenderPostProcessing: 0 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_AllowXRRendering: 1 + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_Version: 2 diff --git a/Assets/Scripts/Editor/LinkGameViewCamera.prefab.meta b/Assets/Scripts/Editor/LinkGameViewCamera.prefab.meta new file mode 100644 index 000000000..6df18f1aa --- /dev/null +++ b/Assets/Scripts/Editor/LinkGameViewCamera.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 06c1498f28fc872469470c64d14027c4 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Editor/LodLightmapCopy.cs b/Assets/Scripts/Editor/LodLightmapCopy.cs index 296ea67e2..a035ec703 100644 --- a/Assets/Scripts/Editor/LodLightmapCopy.cs +++ b/Assets/Scripts/Editor/LodLightmapCopy.cs @@ -35,13 +35,24 @@ private static void Execute() { //is lod0 lightmapped var lods = lodGroup.GetLODs(); + if (lods == null || lods.Length == 0) continue; + var lod0 = lods[0].renderers; + if (lod0 == null || lod0.Length == 0) continue; + //if(lod0[0].lightmapIndex == -1) return; //copy settings to other lods for (var i = 1; i < lods.Length; i++) { - for (var j = 0; j < lod0.Length; j++) + if (lods[i].renderers == null) continue; + + // lod0와 현재 LOD의 renderer 개수 중 작은 값만큼만 복사 + int copyCount = Mathf.Min(lod0.Length, lods[i].renderers.Length); + + for (var j = 0; j < copyCount; j++) { + if (lod0[j] == null || lods[i].renderers[j] == null) continue; + lods[i].renderers[j].lightmapIndex = lod0[j].lightmapIndex; lods[i].renderers[j].lightmapScaleOffset = lod0[j].lightmapScaleOffset; } diff --git a/Assets/Scripts/Editor/SamplePlayFromHere.cs b/Assets/Scripts/Editor/SamplePlayFromHere.cs new file mode 100644 index 000000000..de2746644 --- /dev/null +++ b/Assets/Scripts/Editor/SamplePlayFromHere.cs @@ -0,0 +1,30 @@ +using UnityEditor; +using UnityEngine; +using GameplayIngredients.Editor; + +static class SamplePlayFromHere +{ + [InitializeOnLoadMethod] + static void SetupPlayFromHere() + { + PlayFromHere.OnPlayFromHere += PlayFromHere_OnPlayFromHere; + } + + private static void PlayFromHere_OnPlayFromHere(Vector3 position, Vector3 forward) + { + // Get the FirstPersonCharacter prefab in Resources and instantiate it + var prefab = (GameObject)Resources.Load("FirstPersonCharacter"); + var player = GameObject.Instantiate(prefab); + player.name = "(Play from Here) " + prefab.name; + + // position the character correctly, so the current POV matches the player's height + var controller = player.GetComponent(); + player.transform.position = new Vector3(position.x, position.y - controller.PlayerHeight, position.z); + + // orient the player correctly + var orient = forward; + orient.Scale(new Vector3(1, 0, 1)); + player.transform.forward = orient; + + } +} diff --git a/Assets/Scripts/Editor/SamplePlayFromHere.cs.meta b/Assets/Scripts/Editor/SamplePlayFromHere.cs.meta new file mode 100644 index 000000000..d72fd278b --- /dev/null +++ b/Assets/Scripts/Editor/SamplePlayFromHere.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6b666fefd76623d4aa8d60aa166c683f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Editor/TacticalSystemSetup.cs b/Assets/Scripts/Editor/TacticalSystemSetup.cs new file mode 100644 index 000000000..9cfb2a9ac --- /dev/null +++ b/Assets/Scripts/Editor/TacticalSystemSetup.cs @@ -0,0 +1,803 @@ +using UnityEditor; +using UnityEngine; +using UnityEngine.UI; + +namespace BoatAttack +{ + /// + /// 전술 시스템 자동 세팅 에디터 스크립트 (v5) + /// - Page 0: 레이더 전용 (풀스크린 레이더 + 컨트롤) + /// - Page 1: 환경 정보 (SeaState 바 + Wind 나침반) + /// - Page 2: 아군 선박 스펙 (3D 프리뷰) + /// - Page 3: 적군 선박 스펙 (3D 프리뷰) + /// + public static class TacticalSystemSetup + { + static readonly Color BG_DARK = new Color(0.06f, 0.06f, 0.12f, 0.95f); + static readonly Color BG_PANEL = new Color(0.08f, 0.1f, 0.16f, 0.92f); + static readonly Color ACCENT_GREEN = new Color(0.3f, 1f, 0.5f, 1f); + static readonly Color ACCENT_CYAN = new Color(0.2f, 0.85f, 1f, 1f); + static readonly Color ACCENT_RED = new Color(1f, 0.3f, 0.25f, 1f); + static readonly Color ACCENT_YELLOW = new Color(1f, 0.9f, 0.3f, 1f); + static readonly Color TEXT_DIM = new Color(0.6f, 0.6f, 0.7f, 1f); + static readonly Color TEXT_BRIGHT = new Color(0.9f, 0.9f, 0.95f, 1f); + static readonly Color SLIDER_BG = new Color(0.12f, 0.12f, 0.2f, 1f); + static readonly Color SLIDER_FILL = new Color(0.15f, 0.5f, 0.25f, 1f); + static readonly Color HANDLE_COLOR = new Color(0.85f, 0.85f, 0.9f, 1f); + + [MenuItem("BoatAttack/Setup Tactical System (All)", false, 100)] + public static void SetupAll() + { + var env = Object.FindObjectOfType(); + if (env == null) + { + EditorUtility.DisplayDialog("Error", + "DefenseEnvController를 씬에서 찾을 수 없습니다.", "OK"); + return; + } + var envCtrl = Object.FindObjectOfType(); + + SetupTacticalNetwork(env); + SetupFullUI(env, envCtrl); + + EditorUtility.DisplayDialog("Setup Complete", + "전술 시스템 v5 세팅 완료!\n\n" + + "- Page 0: 레이더 (풀스크린)\n" + + "- Page 1: 환경 (SeaState + Wind)\n" + + "- Page 2: 아군 선박 스펙 (3D)\n" + + "- Page 3: 적군 선박 스펙 (3D)\n\n" + + "[Tab] 페이지 전환\n" + + "[Enter] 게임 모드 (UI 숨김 + 미니 레이더)\n" + + "[Esc] 이전 페이지 / UI 복귀\n\n" + + "Island 태그 추가 필요!\n" + + "Ctrl+S로 씬 저장하세요.", "OK"); + } + + [MenuItem("BoatAttack/Tag Islands", false, 105)] + public static void TagIslands() + { + int count = 0; + // "Island Level" 이름으로 시작하는 오브젝트 검색 + foreach (var go in Object.FindObjectsOfType()) + { + if (go.name.StartsWith("Island Level") || go.name.Contains("Island")) + { + // Terrain 또는 MeshFilter가 있는 경우만 + if (go.GetComponent() != null || + go.GetComponentInChildren() != null) + { + if (go.tag != "Island") + { + Undo.RecordObject(go, "Tag Island"); + go.tag = "Island"; + EditorUtility.SetDirty(go); + count++; + } + } + } + } + EditorUtility.DisplayDialog("Tag Islands", + $"{count}개 오브젝트에 Island 태그 적용 완료.\nCtrl+S로 씬 저장하세요.", "OK"); + } + + [MenuItem("BoatAttack/Remove Tactical UI", false, 110)] + public static void RemoveTacticalUI() + { + var pm = Object.FindObjectOfType(); + if (pm != null) Undo.DestroyObjectImmediate(pm.gameObject); + var tc = Object.FindObjectOfType(); + if (tc != null) Undo.DestroyObjectImmediate(tc.gameObject); + } + + static void SetupTacticalNetwork(DefenseEnvController env) + { + if (Object.FindObjectOfType() != null) return; + + var obj = new GameObject("TacticalSystem"); + Undo.RegisterCreatedObjectUndo(obj, "Create TacticalSystem"); + + var client = obj.AddComponent(); + client.envController = env; + client.host = "localhost"; + client.port = 9877; + client.sendInterval = 0.1f; + client.autoConnect = true; + + var receiver = obj.AddComponent(); + receiver.tacticalClient = client; + receiver.envController = env; + EditorUtility.SetDirty(obj); + } + + // ================================================================ + // Full UI + // ================================================================ + + static void SetupFullUI(DefenseEnvController env, EnvironmentController envCtrl) + { + var existing = Object.FindObjectOfType(); + if (existing != null) Undo.DestroyObjectImmediate(existing.gameObject); + + // Canvas + var canvasObj = new GameObject("TacticalUI_Canvas"); + Undo.RegisterCreatedObjectUndo(canvasObj, "Create TacticalUI"); + + var canvas = canvasObj.AddComponent(); + canvas.renderMode = RenderMode.ScreenSpaceOverlay; + canvas.sortingOrder = 100; + + var scaler = canvasObj.AddComponent(); + scaler.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize; + scaler.referenceResolution = new Vector2(1920, 1080); + scaler.matchWidthOrHeight = 0.5f; + + canvasObj.AddComponent(); + + // EventSystem 중복 방지 (비활성 포함 검색) + var existingES = Object.FindObjectsOfType(true); + if (existingES == null || existingES.Length == 0) + { + var esObj = new GameObject("EventSystem"); + esObj.AddComponent(); +#if ENABLE_INPUT_SYSTEM + esObj.AddComponent(); +#else + esObj.AddComponent(); +#endif + Undo.RegisterCreatedObjectUndo(esObj, "Create EventSystem"); + } + + var pm = canvasObj.AddComponent(); + + // TacticalUIController는 Canvas에 (항상 활성) + var uiCtrl = canvasObj.AddComponent(); + uiCtrl.envController = env; + uiCtrl.environmentController = envCtrl; + + // Page 0: Radar (풀스크린 레이더) + var page0 = CreateFullscreenPage(canvasObj.transform, "Page_Radar"); + BuildRadarPage(page0, uiCtrl, env); + + // Page 1: Environment + var page1 = CreateFullscreenPage(canvasObj.transform, "Page_Environment"); + BuildEnvironmentPage(page1, uiCtrl, envCtrl); + + // Page 2: Friendly Ship Spec + var page2 = CreateFullscreenPage(canvasObj.transform, "Page_FriendlySpec"); + var fSpec = page2.AddComponent(); + fSpec.envController = env; + fSpec.isEnemy = false; + BuildShipSpecPage(page2, fSpec, env, "FRIENDLY SHIP PARAMETER", ACCENT_CYAN, false); + + // Page 3: Enemy Ship Spec + var page3 = CreateFullscreenPage(canvasObj.transform, "Page_EnemySpec"); + var eSpec = page3.AddComponent(); + eSpec.envController = env; + eSpec.isEnemy = true; + BuildShipSpecPage(page3, eSpec, env, "ENEMY SHIP PARAMETER", ACCENT_RED, true); + + // PageManager + pm.pages = new[] { page0, page1, page2, page3 }; + pm.pageNames = new[] { "RADAR", "ENVIRONMENT", "FRIENDLY SHIP", "ENEMY SHIP" }; + var indicatorObj = CreateIndicatorBar(canvasObj.transform, pm); + pm.indicatorBar = indicatorObj; + + // 게임 모드용 미니 레이더 오버레이 (Canvas 직속, 시작 시 숨김) + var radarOverlay = BuildMiniRadarOverlay(canvasObj.transform, env); + pm.radarOverlay = radarOverlay; + radarOverlay.SetActive(false); + + // SetDirty + EditorUtility.SetDirty(pm); + EditorUtility.SetDirty(uiCtrl); + EditorUtility.SetDirty(fSpec); + EditorUtility.SetDirty(eSpec); + EditorUtility.SetDirty(canvasObj); + } + + // ================================================================ + // Page 0: Tactical Command (레이더 좌상단 소형) + // ================================================================ + + static void BuildRadarPage(GameObject page, TacticalUIController uiCtrl, DefenseEnvController env) + { + page.AddComponent().color = BG_DARK; + + CreateLabel(page.transform, "Title", "TACTICAL COMMAND", + new Vector2(0, 1), new Vector2(1, 1), new Vector2(20, -10), new Vector2(-20, 25), + 22, FontStyle.Bold, ACCENT_GREEN); + + // === 좌상단: 소형 레이더 (화면의 약 1/5) === + var radarBg = CreatePanel(page.transform, "RadarBg", + new Vector2(0.02f, 0.52f), new Vector2(0.38f, 0.95f), + Vector2.zero, Vector2.zero, new Color(0.03f, 0.06f, 0.03f, 0.95f)); + + var radarObj = new GameObject("RadarDisplay"); + radarObj.transform.SetParent(radarBg.transform, false); + var radarRt = radarObj.AddComponent(); + radarRt.anchorMin = new Vector2(0.03f, 0.03f); + radarRt.anchorMax = new Vector2(0.97f, 0.97f); + radarRt.offsetMin = Vector2.zero; + radarRt.offsetMax = Vector2.zero; + + var radar = radarObj.AddComponent(); + radar.envController = env; + radar.radarRange = 1000f; + uiCtrl.radarDisplay = radar; + + // 레이더 하단 정보 + var radarInfo = CreatePanel(page.transform, "RadarInfo", + new Vector2(0.02f, 0.44f), new Vector2(0.38f, 0.52f), + Vector2.zero, Vector2.zero, new Color(0.05f, 0.08f, 0.05f, 0.8f)); + + CreateLabel(radarInfo.transform, "RangeLabel", "RANGE", + new Vector2(0, 0), new Vector2(0.25f, 1), + new Vector2(8, 0), Vector2.zero, 10, FontStyle.Normal, TEXT_DIM); + + uiCtrl.textRadarRange = CreateLabel(radarInfo.transform, "RangeVal", "1000m", + new Vector2(0.25f, 0), new Vector2(0.55f, 1), + Vector2.zero, Vector2.zero, 12, FontStyle.Bold, ACCENT_GREEN).GetComponent(); + + // 범례 + CreateLabel(radarInfo.transform, "Legend", + "\u25B2 Friend \u25B2 Enemy \u25C6 MS", + new Vector2(0.55f, 0), new Vector2(1, 1), + Vector2.zero, Vector2.zero, 9, FontStyle.Normal, TEXT_DIM); + + // === 우측: 공격 모드 + 슬라이더 === + var ctrlPanel = CreatePanel(page.transform, "ControlPanel", + new Vector2(0.40f, 0.44f), new Vector2(0.98f, 0.95f), + Vector2.zero, Vector2.zero, BG_PANEL); + + // 공격 모드 + CreateLabel(ctrlPanel.transform, "ModeTitle", "ATTACK MODE", + new Vector2(0, 0.85f), new Vector2(0.4f, 0.98f), + new Vector2(12, 0), Vector2.zero, 14, FontStyle.Bold, TEXT_DIM); + + uiCtrl.textAttackMode = CreateLabel(ctrlPanel.transform, "ModeVal", "파상공격", + new Vector2(0.4f, 0.85f), new Vector2(0.75f, 0.98f), + Vector2.zero, Vector2.zero, 14, FontStyle.Bold, ACCENT_YELLOW).GetComponent(); + + // 공격 모드 버튼 (가로 배치) + uiCtrl.btnWaveAttack = CreateBtn(ctrlPanel.transform, "BtnWave", "파상공격", + new Vector2(0.02f, 0.7f), new Vector2(0.33f, 0.84f), new Color(0.15f, 0.45f, 0.15f, 1f)); + uiCtrl.btnDiversionary = CreateBtn(ctrlPanel.transform, "BtnDiv", "양동작전", + new Vector2(0.35f, 0.7f), new Vector2(0.66f, 0.84f), new Color(0.25f, 0.25f, 0.3f, 1f)); + uiCtrl.btnConcentrated = CreateBtn(ctrlPanel.transform, "BtnConc", "집중공격", + new Vector2(0.68f, 0.7f), new Vector2(0.98f, 0.84f), new Color(0.25f, 0.25f, 0.3f, 1f)); + + // 구분선 + CreatePanel(ctrlPanel.transform, "Divider1", + new Vector2(0.05f, 0.67f), new Vector2(0.95f, 0.675f), + Vector2.zero, Vector2.zero, new Color(0.3f, 0.3f, 0.4f, 0.5f)); + + // 파라미터 슬라이더 + CreateLabel(ctrlPanel.transform, "ParamTitle", "PARAMETERS", + new Vector2(0, 0.56f), new Vector2(0.4f, 0.66f), + new Vector2(12, 0), Vector2.zero, 14, FontStyle.Bold, TEXT_DIM); + + var slArea = CreatePanel(ctrlPanel.transform, "Sliders", + new Vector2(0.02f, 0.03f), new Vector2(0.98f, 0.55f), + Vector2.zero, Vector2.zero, new Color(0, 0, 0, 0)); + + var (sl1, tx1) = MakeSlider(slArea.transform, "EnemyCount", "적군 수", + new Vector2(0, 0.68f), new Vector2(0.48f, 1)); + uiCtrl.sliderEnemyCount = sl1; uiCtrl.textEnemyCount = tx1; + + var (sl2, tx2) = MakeSlider(slArea.transform, "MSHits", "모선 피격", + new Vector2(0.52f, 0.68f), new Vector2(1, 1)); + uiCtrl.sliderMothershipHits = sl2; uiCtrl.textMothershipHits = tx2; + + var (sl3, tx3) = MakeSlider(slArea.transform, "SimSpeed", "시뮬레이션", + new Vector2(0, 0.34f), new Vector2(0.48f, 0.66f)); + uiCtrl.sliderSimSpeed = sl3; uiCtrl.textSimSpeed = tx3; + + // === 하단: 상태 요약 === + var statusBar = CreatePanel(page.transform, "StatusBar", + new Vector2(0.02f, 0.02f), new Vector2(0.98f, 0.42f), + Vector2.zero, Vector2.zero, BG_PANEL); + + CreateLabel(statusBar.transform, "StatusTitle", "STATUS", + new Vector2(0, 0.85f), new Vector2(0.3f, 1), + new Vector2(12, 0), Vector2.zero, 16, FontStyle.Bold, TEXT_DIM); + + // 상태 정보 그리드 + uiCtrl.textStatusFriendly = CreateLabel(statusBar.transform, "StatFriendly", + "FRIENDLY: 2 vessels", + new Vector2(0.02f, 0.6f), new Vector2(0.48f, 0.82f), + new Vector2(10, 0), Vector2.zero, 14, FontStyle.Normal, ACCENT_CYAN).GetComponent(); + + uiCtrl.textStatusEnemy = CreateLabel(statusBar.transform, "StatEnemy", + "ENEMY: 0 vessels", + new Vector2(0.52f, 0.6f), new Vector2(0.98f, 0.82f), + new Vector2(10, 0), Vector2.zero, 14, FontStyle.Normal, ACCENT_RED).GetComponent(); + + uiCtrl.textStatusMothership = CreateLabel(statusBar.transform, "StatMS", + "MOTHERSHIP: Active", + new Vector2(0.02f, 0.35f), new Vector2(0.48f, 0.58f), + new Vector2(10, 0), Vector2.zero, 14, FontStyle.Normal, mothershipColor()).GetComponent(); + + uiCtrl.textStatusWeb = CreateLabel(statusBar.transform, "StatWeb", + "WEB: Deployed", + new Vector2(0.52f, 0.35f), new Vector2(0.98f, 0.58f), + new Vector2(10, 0), Vector2.zero, 14, FontStyle.Normal, ACCENT_GREEN).GetComponent(); + + uiCtrl.textStatusTime = CreateLabel(statusBar.transform, "StatTime", + "TIME: 0.0s", + new Vector2(0.02f, 0.1f), new Vector2(0.48f, 0.33f), + new Vector2(10, 0), Vector2.zero, 14, FontStyle.Normal, TEXT_BRIGHT).GetComponent(); + + uiCtrl.textStatusEpisode = CreateLabel(statusBar.transform, "StatEpisode", + "EPISODE: 0", + new Vector2(0.52f, 0.1f), new Vector2(0.98f, 0.33f), + new Vector2(10, 0), Vector2.zero, 14, FontStyle.Normal, TEXT_BRIGHT).GetComponent(); + } + + static Color mothershipColor() => new Color(0.85f, 0.85f, 1f, 1f); + + // ================================================================ + // Page 1: Environment + // ================================================================ + + static void BuildEnvironmentPage(GameObject page, TacticalUIController uiCtrl, EnvironmentController envCtrl) + { + page.AddComponent().color = BG_DARK; + + CreateLabel(page.transform, "Title", "ENVIRONMENT", + new Vector2(0, 1), new Vector2(1, 1), new Vector2(20, -10), new Vector2(-20, 25), + 22, FontStyle.Bold, ACCENT_GREEN); + + // 좌측: Sea State + var seaPanel = CreatePanel(page.transform, "SeaPanel", + new Vector2(0.03f, 0.08f), new Vector2(0.48f, 0.92f), + Vector2.zero, Vector2.zero, BG_PANEL); + + CreateLabel(seaPanel.transform, "SeaTitle", "SEA STATE", + new Vector2(0, 0.88f), new Vector2(1, 0.98f), + new Vector2(15, 0), Vector2.zero, 18, FontStyle.Bold, ACCENT_CYAN); + + // Sea State 바 (큰 버전) + var seaBarObj = new GameObject("SeaStateBar"); + seaBarObj.transform.SetParent(seaPanel.transform, false); + var seaBarRt = seaBarObj.AddComponent(); + seaBarRt.anchorMin = new Vector2(0.05f, 0.7f); + seaBarRt.anchorMax = new Vector2(0.95f, 0.82f); + seaBarRt.offsetMin = Vector2.zero; + seaBarRt.offsetMax = Vector2.zero; + var seaBar = seaBarObj.AddComponent(); + uiCtrl.seaStateBar = seaBar; + + uiCtrl.textSeaStateLabel = CreateLabel(seaPanel.transform, "SeaValue", "Calm", + new Vector2(0.05f, 0.58f), new Vector2(0.95f, 0.7f), + Vector2.zero, Vector2.zero, 28, FontStyle.Bold, ACCENT_GREEN).GetComponent(); + + // Sea State 세부 정보 + CreateLabel(seaPanel.transform, "WaveHdr", "Wave Parameters", + new Vector2(0.05f, 0.45f), new Vector2(0.95f, 0.55f), + Vector2.zero, Vector2.zero, 14, FontStyle.Bold, TEXT_DIM); + + uiCtrl.textWaveStrength = CreateLabel(seaPanel.transform, "WaveStr", "Strength: 0.0", + new Vector2(0.08f, 0.35f), new Vector2(0.95f, 0.44f), + Vector2.zero, Vector2.zero, 15, FontStyle.Normal, TEXT_BRIGHT).GetComponent(); + + uiCtrl.textWaveSpeed = CreateLabel(seaPanel.transform, "WaveSpd", "Speed: 0.0", + new Vector2(0.08f, 0.25f), new Vector2(0.95f, 0.34f), + Vector2.zero, Vector2.zero, 15, FontStyle.Normal, TEXT_BRIGHT).GetComponent(); + + uiCtrl.textWaveDirection = CreateLabel(seaPanel.transform, "WaveDir", "Direction: 0\u00b0", + new Vector2(0.08f, 0.15f), new Vector2(0.95f, 0.24f), + Vector2.zero, Vector2.zero, 15, FontStyle.Normal, TEXT_BRIGHT).GetComponent(); + + // 우측: Wind + var windPanel = CreatePanel(page.transform, "WindPanel", + new Vector2(0.52f, 0.08f), new Vector2(0.97f, 0.92f), + Vector2.zero, Vector2.zero, BG_PANEL); + + CreateLabel(windPanel.transform, "WindTitle", "WIND", + new Vector2(0, 0.88f), new Vector2(1, 0.98f), + new Vector2(15, 0), Vector2.zero, 18, FontStyle.Bold, ACCENT_CYAN); + + // Wind 나침반 (큰 버전) + var compassObj = new GameObject("WindCompass"); + compassObj.transform.SetParent(windPanel.transform, false); + var compassRt = compassObj.AddComponent(); + compassRt.anchorMin = new Vector2(0.1f, 0.3f); + compassRt.anchorMax = new Vector2(0.9f, 0.85f); + compassRt.offsetMin = Vector2.zero; + compassRt.offsetMax = Vector2.zero; + var compass = compassObj.AddComponent(); + uiCtrl.windCompass = compass; + + // 풍속/풍향 텍스트 + uiCtrl.textWindStrength = CreateLabel(windPanel.transform, "WindSpeed", "0 m/s", + new Vector2(0.05f, 0.15f), new Vector2(0.5f, 0.28f), + Vector2.zero, Vector2.zero, 22, FontStyle.Bold, ACCENT_CYAN).GetComponent(); + + uiCtrl.textWindDirection = CreateLabel(windPanel.transform, "WindDir", "0\u00b0", + new Vector2(0.5f, 0.15f), new Vector2(0.95f, 0.28f), + Vector2.zero, Vector2.zero, 22, FontStyle.Bold, TEXT_BRIGHT).GetComponent(); + + CreateLabel(windPanel.transform, "WindSpeedLbl", "Wind Speed", + new Vector2(0.05f, 0.08f), new Vector2(0.5f, 0.15f), + Vector2.zero, Vector2.zero, 12, FontStyle.Normal, TEXT_DIM); + + CreateLabel(windPanel.transform, "WindDirLbl", "Direction", + new Vector2(0.5f, 0.08f), new Vector2(0.95f, 0.15f), + Vector2.zero, Vector2.zero, 12, FontStyle.Normal, TEXT_DIM); + } + + // ================================================================ + // Page 2/3: Ship Spec (3D Preview) + // ================================================================ + + static void BuildShipSpecPage(GameObject page, ShipSpecPanel spec, + DefenseEnvController env, string title, Color accent, bool isEnemy) + { + page.AddComponent().color = BG_DARK; + + // 타이틀 + CreateLabel(page.transform, "Title", title, + new Vector2(0, 1), new Vector2(1, 1), new Vector2(30, -15), new Vector2(-30, 30), + 26, FontStyle.Bold, accent); + + // 중앙: 3D 선박 프리뷰 (RawImage + ShipPreviewRenderer) + var previewArea = CreatePanel(page.transform, "PreviewArea", + new Vector2(0.28f, 0.12f), new Vector2(0.72f, 0.85f), + Vector2.zero, Vector2.zero, new Color(0.04f, 0.06f, 0.1f, 0.5f)); + + var rawImgObj = new GameObject("ShipPreviewImage"); + rawImgObj.transform.SetParent(previewArea.transform, false); + var rawRt = rawImgObj.AddComponent(); + rawRt.anchorMin = new Vector2(0.02f, 0.02f); + rawRt.anchorMax = new Vector2(0.98f, 0.98f); + rawRt.offsetMin = Vector2.zero; + rawRt.offsetMax = Vector2.zero; + var rawImg = rawImgObj.AddComponent(); + rawImg.color = Color.white; + + var preview = previewArea.AddComponent(); + preview.targetImage = rawImg; + preview.envController = env; + preview.isEnemy = isEnemy; + spec.shipPreview = preview; + + // 실시간 정보 바 + var rtBar = CreatePanel(page.transform, "RealtimeBar", + new Vector2(0.25f, 0.86f), new Vector2(0.75f, 0.93f), + new Vector2(5, 2), new Vector2(-5, -2), new Color(0.05f, 0.1f, 0.15f, 0.8f)); + + spec.textShipName = CreateLabel(rtBar.transform, "Name", "VESSEL", + new Vector2(0, 0), new Vector2(0.33f, 1), new Vector2(10, 0), Vector2.zero, + 16, FontStyle.Bold, accent).GetComponent(); + + spec.textCurrentSpeed = CreateLabel(rtBar.transform, "Speed", "0 kn", + new Vector2(0.33f, 0), new Vector2(0.66f, 1), Vector2.zero, Vector2.zero, + 14, FontStyle.Normal, ACCENT_YELLOW).GetComponent(); + + spec.textCurrentHeading = CreateLabel(rtBar.transform, "Heading", "0\u00b0", + new Vector2(0.66f, 0), new Vector2(1, 1), Vector2.zero, new Vector2(-10, 0), + 14, FontStyle.Normal, TEXT_BRIGHT).GetComponent(); + + // 왼쪽 스펙 + var leftSpec = CreatePanel(page.transform, "LeftSpec", + new Vector2(0, 0.08f), new Vector2(0.26f, 0.83f), + new Vector2(20, 10), new Vector2(-5, -10), new Color(0, 0, 0, 0)); + BuildLeftSliders(leftSpec.transform, spec); + + // 오른쪽 스펙 + var rightSpec = CreatePanel(page.transform, "RightSpec", + new Vector2(0.74f, 0.08f), new Vector2(1, 0.83f), + new Vector2(5, 10), new Vector2(-20, -10), new Color(0, 0, 0, 0)); + BuildRightSliders(rightSpec.transform, spec, accent); + + EditorUtility.SetDirty(preview); + } + + static void BuildLeftSliders(Transform p, ShipSpecPanel s) + { + var (s1, t1) = MakeSlider(p, "MaxSpeed", "Max Speed(kn)", + new Vector2(0, 0.84f), new Vector2(1, 1)); + s.sliderMaxSpeed = s1; s.textMaxSpeed = t1; + + CreateLabel(p, "FuelLbl", "Fuel", new Vector2(0, 0.76f), new Vector2(0.5f, 0.82f), + new Vector2(5, 0), Vector2.zero, 13, FontStyle.Normal, TEXT_DIM); + s.textFuelPercent = CreateLabel(p, "FuelVal", "100%", + new Vector2(0.5f, 0.76f), new Vector2(1, 0.82f), + Vector2.zero, new Vector2(-5, 0), 14, FontStyle.Bold, ACCENT_GREEN).GetComponent(); + + CreateLabel(p, "EngHdr", "[ENGINE]", new Vector2(0, 0.64f), new Vector2(1, 0.72f), + new Vector2(5, 0), Vector2.zero, 15, FontStyle.Bold, TEXT_BRIGHT); + + var (s2, t2) = MakeSlider(p, "MinRPM", "Min RPM", + new Vector2(0, 0.46f), new Vector2(1, 0.62f)); + s.sliderMinRPM = s2; s.textMinRPM = t2; + + var (s3, t3) = MakeSlider(p, "MaxRPM", "Max RPM", + new Vector2(0, 0.28f), new Vector2(1, 0.44f)); + s.sliderMaxRPM = s3; s.textMaxRPM = t3; + + var (s4, t4) = MakeSlider(p, "MaxThrust", "Max Thruster", + new Vector2(0, 0.1f), new Vector2(1, 0.26f)); + s.sliderMaxThrust = s4; s.textMaxThrust = t4; + } + + static void BuildRightSliders(Transform p, ShipSpecPanel s, Color accent) + { + CreateLabel(p, "RudHdr", "[RUDDER]", new Vector2(0, 0.88f), new Vector2(1, 0.98f), + new Vector2(5, 0), Vector2.zero, 15, FontStyle.Bold, TEXT_BRIGHT); + + var (s1, t1) = MakeSlider(p, "MaxAngle", "Max Angle", + new Vector2(0, 0.7f), new Vector2(1, 0.86f)); + s.sliderMaxAngle = s1; s.textMaxAngle = t1; + + var (s2, t2) = MakeSlider(p, "AngSpeed", "Angle Speed", + new Vector2(0, 0.52f), new Vector2(1, 0.68f)); + s.sliderAngleSpeed = s2; s.textAngleSpeed = t2; + + CreateLabel(p, "MissLbl", "\u25C6 Missile", + new Vector2(0, 0.36f), new Vector2(0.6f, 0.46f), + new Vector2(5, 0), Vector2.zero, 14, FontStyle.Normal, accent); + s.textMissileCount = CreateLabel(p, "MissVal", "0", + new Vector2(0.6f, 0.36f), new Vector2(1, 0.46f), + Vector2.zero, new Vector2(-5, 0), 16, FontStyle.Bold, ACCENT_YELLOW).GetComponent(); + + CreateLabel(p, "BulLbl", "\u25C6 Bullet", + new Vector2(0, 0.22f), new Vector2(0.6f, 0.32f), + new Vector2(5, 0), Vector2.zero, 14, FontStyle.Normal, accent); + s.textBulletCount = CreateLabel(p, "BulVal", "0", + new Vector2(0.6f, 0.22f), new Vector2(1, 0.32f), + Vector2.zero, new Vector2(-5, 0), 16, FontStyle.Bold, ACCENT_YELLOW).GetComponent(); + } + + // ================================================================ + // Indicator Bar + Nav Buttons + // ================================================================ + + static GameObject CreateIndicatorBar(Transform root, TacticalPageManager pm) + { + var bar = CreatePanel(root, "PageIndicator", + new Vector2(0, 0), new Vector2(1, 0), + new Vector2(0, 0), new Vector2(0, 45), new Color(0.04f, 0.04f, 0.08f, 0.9f)); + + pm.btnPrev = MakeNavBtn(bar.transform, "BtnPrev", "<", + new Vector2(0, 0), new Vector2(0.06f, 1)); + + pm.textPageIndicator = CreateLabel(bar.transform, "PageNum", "1/4", + new Vector2(0.07f, 0), new Vector2(0.18f, 1), new Vector2(10, 0), Vector2.zero, + 16, FontStyle.Bold, ACCENT_GREEN).GetComponent(); + + pm.textPageName = CreateLabel(bar.transform, "PageName", "RADAR", + new Vector2(0.18f, 0), new Vector2(0.7f, 1), new Vector2(10, 0), Vector2.zero, + 14, FontStyle.Normal, TEXT_BRIGHT).GetComponent(); + + CreateLabel(bar.transform, "Hint", "[Tab] Page [Enter] Game Mode", + new Vector2(0.7f, 0), new Vector2(0.93f, 1), Vector2.zero, Vector2.zero, + 10, FontStyle.Normal, TEXT_DIM); + + pm.btnNext = MakeNavBtn(bar.transform, "BtnNext", ">", + new Vector2(0.94f, 0), new Vector2(1, 1)); + + return bar; + } + + static Button MakeNavBtn(Transform parent, string name, string label, + Vector2 anchorMin, Vector2 anchorMax) + { + var obj = new GameObject(name); + obj.transform.SetParent(parent, false); + var rt = obj.AddComponent(); + rt.anchorMin = anchorMin; + rt.anchorMax = anchorMax; + rt.offsetMin = new Vector2(2, 2); + rt.offsetMax = new Vector2(-2, -2); + + var img = obj.AddComponent(); + img.color = new Color(0.15f, 0.2f, 0.3f, 1f); + + var btn = obj.AddComponent