Merge remote-tracking branch 'origin/main'
This commit is contained in:
commit
856df114f2
BIN
blender/Models/Market_Stand Base Color.png
(Stored with Git LFS)
Normal file
BIN
blender/Models/Market_Stand Base Color.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
blender/Models/Market_Stand.blend
(Stored with Git LFS)
Normal file
BIN
blender/Models/Market_Stand.blend
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
blender/Models/Market_Stand.fbx
(Stored with Git LFS)
Normal file
BIN
blender/Models/Market_Stand.fbx
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
blender/Models/Market_Stand_Blue Base Color.png
(Stored with Git LFS)
Normal file
BIN
blender/Models/Market_Stand_Blue Base Color.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
blender/Models/Market_Stand_Blue.blend
(Stored with Git LFS)
Normal file
BIN
blender/Models/Market_Stand_Blue.blend
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
blender/Models/Market_Stand_Blue.fbx
(Stored with Git LFS)
Normal file
BIN
blender/Models/Market_Stand_Blue.fbx
(Stored with Git LFS)
Normal file
Binary file not shown.
6
blueberryPeak/.vsconfig
Normal file
6
blueberryPeak/.vsconfig
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"version": "1.0",
|
||||
"components": [
|
||||
"Microsoft.VisualStudio.Workload.ManagedGame"
|
||||
]
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9471daccbab05cc42ba92f8b95430b4c
|
||||
guid: 99fe7d155e6f54b4d8dd9af5b7d854a2
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
146
blueberryPeak/Assets/Input/PlayerInput.inputactions
Normal file
146
blueberryPeak/Assets/Input/PlayerInput.inputactions
Normal file
@ -0,0 +1,146 @@
|
||||
{
|
||||
"name": "PlayerInput",
|
||||
"maps": [
|
||||
{
|
||||
"name": "PlayerMap",
|
||||
"id": "ecc5edf4-4f00-4dd6-ba1b-dda50220ce5c",
|
||||
"actions": [
|
||||
{
|
||||
"name": "Movement",
|
||||
"type": "Value",
|
||||
"id": "4d87b403-7336-4ca2-88c6-367c9685855e",
|
||||
"expectedControlType": "Vector2",
|
||||
"processors": "",
|
||||
"interactions": "",
|
||||
"initialStateCheck": true
|
||||
},
|
||||
{
|
||||
"name": "Jump",
|
||||
"type": "Button",
|
||||
"id": "efe22dd9-a8dd-4832-b5df-ca4f29e5b2eb",
|
||||
"expectedControlType": "",
|
||||
"processors": "",
|
||||
"interactions": "",
|
||||
"initialStateCheck": false
|
||||
},
|
||||
{
|
||||
"name": "Interaction",
|
||||
"type": "Button",
|
||||
"id": "bbba85ac-3dd5-4193-8b68-36b750993483",
|
||||
"expectedControlType": "",
|
||||
"processors": "",
|
||||
"interactions": "",
|
||||
"initialStateCheck": false
|
||||
}
|
||||
],
|
||||
"bindings": [
|
||||
{
|
||||
"name": "2D Vector",
|
||||
"id": "77fda54c-98a4-408b-ba3c-719d9499628b",
|
||||
"path": "2DVector",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"action": "Movement",
|
||||
"isComposite": true,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "up",
|
||||
"id": "4f4eaf29-6ac5-403c-aa25-d09c06180ec9",
|
||||
"path": "<Keyboard>/w",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"action": "Movement",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": true
|
||||
},
|
||||
{
|
||||
"name": "down",
|
||||
"id": "efc82bf6-c180-4f7e-9559-9fb1676a27eb",
|
||||
"path": "<Keyboard>/s",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"action": "Movement",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": true
|
||||
},
|
||||
{
|
||||
"name": "left",
|
||||
"id": "2cafe0de-f11f-41a2-80c9-8de91cc024b0",
|
||||
"path": "<Keyboard>/a",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"action": "Movement",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": true
|
||||
},
|
||||
{
|
||||
"name": "right",
|
||||
"id": "265d1cc9-e023-432e-8f9a-8c084306fd5f",
|
||||
"path": "<Keyboard>/d",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"action": "Movement",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": true
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "2343c103-43b3-45e4-a586-5c097e5f280d",
|
||||
"path": "<Keyboard>/space",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"action": "Jump",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "d8e18a6b-101a-4cac-87c3-7649149daf0e",
|
||||
"path": "<Keyboard>/e",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"action": "Interaction",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "CameraMap",
|
||||
"id": "0a7bd42a-5e70-4e8c-a3de-00652464e7cb",
|
||||
"actions": [
|
||||
{
|
||||
"name": "RotateCamera",
|
||||
"type": "Value",
|
||||
"id": "431b877a-e984-45e5-91a0-f2835635adc2",
|
||||
"expectedControlType": "Vector2",
|
||||
"processors": "",
|
||||
"interactions": "",
|
||||
"initialStateCheck": true
|
||||
}
|
||||
],
|
||||
"bindings": [
|
||||
{
|
||||
"name": "",
|
||||
"id": "07e08eb8-3362-43fe-abd0-23ffd863bb68",
|
||||
"path": "<Mouse>/delta",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"action": "RotateCamera",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"controlSchemes": []
|
||||
}
|
14
blueberryPeak/Assets/Input/PlayerInput.inputactions.meta
Normal file
14
blueberryPeak/Assets/Input/PlayerInput.inputactions.meta
Normal file
@ -0,0 +1,14 @@
|
||||
fileFormatVersion: 2
|
||||
guid: be9004d90ff609fe6a33a9a4fbcfb30a
|
||||
ScriptedImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
script: {fileID: 11500000, guid: 8404be70184654265930450def6a9037, type: 3}
|
||||
generateWrapperCode: 0
|
||||
wrapperCodePath:
|
||||
wrapperClassName:
|
||||
wrapperCodeNamespace:
|
138
blueberryPeak/Assets/Materials/Material.002.mat
Normal file
138
blueberryPeak/Assets/Materials/Material.002.mat
Normal file
@ -0,0 +1,138 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &-318673653038007055
|
||||
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: 9
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Material.002
|
||||
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:
|
||||
- MOTIONVECTORS
|
||||
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:
|
||||
- _AddPrecomputedVelocity: 0
|
||||
- _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.9063317, g: 0.9063317, b: 0.9063317, a: 1}
|
||||
- _Color: {r: 0.9063317, g: 0.9063317, b: 0.9063317, 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: []
|
||||
m_AllowLocking: 1
|
@ -1,8 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5ea06692b5e63084d93a698311d20aca
|
||||
guid: 4b6187e2bbe805f49a24550ecab2983f
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
138
blueberryPeak/Assets/Materials/Material.003.mat
Normal file
138
blueberryPeak/Assets/Materials/Material.003.mat
Normal file
@ -0,0 +1,138 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &-9144359278050869504
|
||||
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: 9
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Material.003
|
||||
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:
|
||||
- MOTIONVECTORS
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BaseMap:
|
||||
m_Texture: {fileID: 2800000, guid: 4ea2ffdff6485518994c5b9f07778b79, 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: 4ea2ffdff6485518994c5b9f07778b79, 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:
|
||||
- _AddPrecomputedVelocity: 0
|
||||
- _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: 1, g: 1, b: 1, a: 1}
|
||||
- _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: []
|
||||
m_AllowLocking: 1
|
@ -1,8 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 69d39931291d213498bf7bbd3d60e88f
|
||||
guid: a8c7f15b14f40df478fbf02532a40a79
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
BIN
blueberryPeak/Assets/Models/Bush_No_Blueberries.fbx
(Stored with Git LFS)
Normal file
BIN
blueberryPeak/Assets/Models/Bush_No_Blueberries.fbx
(Stored with Git LFS)
Normal file
Binary file not shown.
107
blueberryPeak/Assets/Models/Bush_No_Blueberries.fbx.meta
Normal file
107
blueberryPeak/Assets/Models/Bush_No_Blueberries.fbx.meta
Normal file
@ -0,0 +1,107 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8cefd73b11e429b40ab8e61600eaf74d
|
||||
ModelImporter:
|
||||
serializedVersion: 22200
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
materials:
|
||||
materialImportMode: 2
|
||||
materialName: 0
|
||||
materialSearch: 1
|
||||
materialLocation: 1
|
||||
animations:
|
||||
legacyGenerateAnimations: 4
|
||||
bakeSimulation: 0
|
||||
resampleCurves: 1
|
||||
optimizeGameObjects: 0
|
||||
removeConstantScaleCurves: 0
|
||||
motionNodeName:
|
||||
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
|
||||
importPhysicalCameras: 1
|
||||
importVisibility: 1
|
||||
importBlendShapes: 1
|
||||
importCameras: 1
|
||||
importLights: 1
|
||||
nodeNameCollisionStrategy: 1
|
||||
fileIdsGeneration: 2
|
||||
swapUVChannels: 0
|
||||
generateSecondaryUV: 0
|
||||
useFileUnits: 1
|
||||
keepQuads: 0
|
||||
weldVertices: 1
|
||||
bakeAxisConversion: 0
|
||||
preserveHierarchy: 0
|
||||
skinWeightsMode: 0
|
||||
maxBonesPerVertex: 4
|
||||
minBoneWeight: 0.001
|
||||
optimizeBones: 1
|
||||
meshOptimizationFlags: -1
|
||||
indexFormat: 0
|
||||
secondaryUVAngleDistortion: 8
|
||||
secondaryUVAreaDistortion: 15.000001
|
||||
secondaryUVHardAngle: 88
|
||||
secondaryUVMarginMethod: 1
|
||||
secondaryUVMinLightmapResolution: 40
|
||||
secondaryUVMinObjectScale: 1
|
||||
secondaryUVPackMargin: 4
|
||||
useFileScale: 1
|
||||
strictVertexDataChecks: 0
|
||||
tangentSpace:
|
||||
normalSmoothAngle: 60
|
||||
normalImportMode: 0
|
||||
tangentImportMode: 3
|
||||
normalCalculationMode: 4
|
||||
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
|
||||
blendShapeNormalImportMode: 1
|
||||
normalSmoothingSource: 0
|
||||
referencedClips: []
|
||||
importAnimation: 1
|
||||
humanDescription:
|
||||
serializedVersion: 3
|
||||
human: []
|
||||
skeleton: []
|
||||
armTwist: 0.5
|
||||
foreArmTwist: 0.5
|
||||
upperLegTwist: 0.5
|
||||
legTwist: 0.5
|
||||
armStretch: 0.05
|
||||
legStretch: 0.05
|
||||
feetSpacing: 0
|
||||
globalScale: 1
|
||||
rootMotionBoneName:
|
||||
hasTranslationDoF: 0
|
||||
hasExtraRoot: 0
|
||||
skeletonHasParents: 1
|
||||
lastHumanDescriptionAvatarSource: {instanceID: 0}
|
||||
autoGenerateAvatarMappingIfUnspecified: 1
|
||||
animationType: 2
|
||||
humanoidOversampling: 1
|
||||
avatarSetup: 0
|
||||
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
|
||||
importBlendShapeDeformPercent: 1
|
||||
remapMaterialsIfMaterialImportModeIsNone: 0
|
||||
additionalBone: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
BIN
blueberryPeak/Assets/Models/Bush_With_Blueberriess.fbx
(Stored with Git LFS)
Normal file
BIN
blueberryPeak/Assets/Models/Bush_With_Blueberriess.fbx
(Stored with Git LFS)
Normal file
Binary file not shown.
127
blueberryPeak/Assets/Models/Bush_With_Blueberriess.fbx.meta
Normal file
127
blueberryPeak/Assets/Models/Bush_With_Blueberriess.fbx.meta
Normal file
@ -0,0 +1,127 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d17453879435f2149b8e7c5efef8fb4e
|
||||
ModelImporter:
|
||||
serializedVersion: 22200
|
||||
internalIDToNameTable: []
|
||||
externalObjects:
|
||||
- first:
|
||||
type: UnityEngine:Material
|
||||
assembly: UnityEngine.CoreModule
|
||||
name: Material.002
|
||||
second: {fileID: 2100000, guid: 4b6187e2bbe805f49a24550ecab2983f, type: 2}
|
||||
- first:
|
||||
type: UnityEngine:Material
|
||||
assembly: UnityEngine.CoreModule
|
||||
name: Material.003
|
||||
second: {fileID: 2100000, guid: a8c7f15b14f40df478fbf02532a40a79, type: 2}
|
||||
- first:
|
||||
type: UnityEngine:Texture2D
|
||||
assembly: UnityEngine.CoreModule
|
||||
name: Blueberry Base Color
|
||||
second: {fileID: 2800000, guid: 65ee353b8aac5b74294199a4362faad1, type: 3}
|
||||
- first:
|
||||
type: UnityEngine:Texture2D
|
||||
assembly: UnityEngine.CoreModule
|
||||
name: Bush Base Color_New2
|
||||
second: {fileID: 2800000, guid: 840ca9bc1a2d7f547a03688b2b853b84, type: 3}
|
||||
materials:
|
||||
materialImportMode: 2
|
||||
materialName: 0
|
||||
materialSearch: 1
|
||||
materialLocation: 1
|
||||
animations:
|
||||
legacyGenerateAnimations: 4
|
||||
bakeSimulation: 0
|
||||
resampleCurves: 1
|
||||
optimizeGameObjects: 0
|
||||
removeConstantScaleCurves: 0
|
||||
motionNodeName:
|
||||
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
|
||||
importPhysicalCameras: 1
|
||||
importVisibility: 1
|
||||
importBlendShapes: 1
|
||||
importCameras: 1
|
||||
importLights: 1
|
||||
nodeNameCollisionStrategy: 1
|
||||
fileIdsGeneration: 2
|
||||
swapUVChannels: 0
|
||||
generateSecondaryUV: 0
|
||||
useFileUnits: 1
|
||||
keepQuads: 0
|
||||
weldVertices: 1
|
||||
bakeAxisConversion: 0
|
||||
preserveHierarchy: 0
|
||||
skinWeightsMode: 0
|
||||
maxBonesPerVertex: 4
|
||||
minBoneWeight: 0.001
|
||||
optimizeBones: 1
|
||||
meshOptimizationFlags: -1
|
||||
indexFormat: 0
|
||||
secondaryUVAngleDistortion: 8
|
||||
secondaryUVAreaDistortion: 15.000001
|
||||
secondaryUVHardAngle: 88
|
||||
secondaryUVMarginMethod: 1
|
||||
secondaryUVMinLightmapResolution: 40
|
||||
secondaryUVMinObjectScale: 1
|
||||
secondaryUVPackMargin: 4
|
||||
useFileScale: 1
|
||||
strictVertexDataChecks: 0
|
||||
tangentSpace:
|
||||
normalSmoothAngle: 60
|
||||
normalImportMode: 0
|
||||
tangentImportMode: 3
|
||||
normalCalculationMode: 4
|
||||
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
|
||||
blendShapeNormalImportMode: 1
|
||||
normalSmoothingSource: 0
|
||||
referencedClips: []
|
||||
importAnimation: 1
|
||||
humanDescription:
|
||||
serializedVersion: 3
|
||||
human: []
|
||||
skeleton: []
|
||||
armTwist: 0.5
|
||||
foreArmTwist: 0.5
|
||||
upperLegTwist: 0.5
|
||||
legTwist: 0.5
|
||||
armStretch: 0.05
|
||||
legStretch: 0.05
|
||||
feetSpacing: 0
|
||||
globalScale: 1
|
||||
rootMotionBoneName:
|
||||
hasTranslationDoF: 0
|
||||
hasExtraRoot: 0
|
||||
skeletonHasParents: 1
|
||||
lastHumanDescriptionAvatarSource: {instanceID: 0}
|
||||
autoGenerateAvatarMappingIfUnspecified: 1
|
||||
animationType: 2
|
||||
humanoidOversampling: 1
|
||||
avatarSetup: 0
|
||||
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
|
||||
importBlendShapeDeformPercent: 1
|
||||
remapMaterialsIfMaterialImportModeIsNone: 0
|
||||
additionalBone: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9febbbf636223404a8c49dcb5a7dcfcd
|
||||
guid: f0bb2116d0de83349be241ed4a1f6256
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
@ -0,0 +1,59 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1001 &5380989960468041038
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 0}
|
||||
m_Modifications:
|
||||
- target: {fileID: -8679921383154817045, guid: 8cefd73b11e429b40ab8e61600eaf74d, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: -20.487371
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: 8cefd73b11e429b40ab8e61600eaf74d, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 4.9351387
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: 8cefd73b11e429b40ab8e61600eaf74d, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: -135.40582
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: 8cefd73b11e429b40ab8e61600eaf74d, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: 8cefd73b11e429b40ab8e61600eaf74d, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: 8cefd73b11e429b40ab8e61600eaf74d, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: 8cefd73b11e429b40ab8e61600eaf74d, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: 8cefd73b11e429b40ab8e61600eaf74d, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: 8cefd73b11e429b40ab8e61600eaf74d, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: 8cefd73b11e429b40ab8e61600eaf74d, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 919132149155446097, guid: 8cefd73b11e429b40ab8e61600eaf74d, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: Bush_No_Blueberries
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: 8cefd73b11e429b40ab8e61600eaf74d, type: 3}
|
@ -1,6 +1,6 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1c9c4178b20079848a8a074a02173a8a
|
||||
DefaultImporter:
|
||||
guid: f5ecddf1014fe7e4f86b7d300efc62b6
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
@ -0,0 +1,86 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1001 &5584948443635425812
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 0}
|
||||
m_Modifications:
|
||||
- target: {fileID: -8679921383154817045, guid: d17453879435f2149b8e7c5efef8fb4e, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: -20.262705
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: d17453879435f2149b8e7c5efef8fb4e, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 4.8899636
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: d17453879435f2149b8e7c5efef8fb4e, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: -136.32555
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: d17453879435f2149b8e7c5efef8fb4e, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: d17453879435f2149b8e7c5efef8fb4e, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: d17453879435f2149b8e7c5efef8fb4e, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: d17453879435f2149b8e7c5efef8fb4e, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: d17453879435f2149b8e7c5efef8fb4e, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: d17453879435f2149b8e7c5efef8fb4e, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: d17453879435f2149b8e7c5efef8fb4e, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 919132149155446097, guid: d17453879435f2149b8e7c5efef8fb4e, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: Bush_With_Blueberriess
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5453915583638957547, guid: d17453879435f2149b8e7c5efef8fb4e, type: 3}
|
||||
propertyPath: 'm_Materials.Array.data[0]'
|
||||
value:
|
||||
objectReference: {fileID: -3846018093981099296, guid: 8cefd73b11e429b40ab8e61600eaf74d, type: 3}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents:
|
||||
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: d17453879435f2149b8e7c5efef8fb4e, type: 3}
|
||||
insertIndex: -1
|
||||
addedObject: {fileID: 5504569332439045826}
|
||||
m_SourcePrefab: {fileID: 100100000, guid: d17453879435f2149b8e7c5efef8fb4e, type: 3}
|
||||
--- !u!1 &4701987624285347653 stripped
|
||||
GameObject:
|
||||
m_CorrespondingSourceObject: {fileID: 919132149155446097, guid: d17453879435f2149b8e7c5efef8fb4e, type: 3}
|
||||
m_PrefabInstance: {fileID: 5584948443635425812}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!114 &5504569332439045826
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4701987624285347653}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d4b49c1facb0cd79f9d371c933c683ae, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
interactRange: 3
|
||||
inventory: []
|
||||
InteractAction: {fileID: 0}
|
@ -1,6 +1,6 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8f24c213bb375234bb7a90140f0e35f6
|
||||
DefaultImporter:
|
||||
guid: 4ae08d37e69194e48bb57affce3b41fb
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
File diff suppressed because it is too large
Load Diff
2421
blueberryPeak/Assets/Scenes/flo_s_scene.unity
Normal file
2421
blueberryPeak/Assets/Scenes/flo_s_scene.unity
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5adadf737c9b7184db1900bc0429e3c4
|
||||
guid: 69a97310172db8057b8313949b218895
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
@ -602,7 +602,10 @@ MonoBehaviour:
|
||||
m_LightCookieSize: {x: 1, y: 1}
|
||||
m_LightCookieOffset: {x: 0, y: 0}
|
||||
m_SoftShadowQuality: 0
|
||||
<<<<<<< Updated upstream
|
||||
--- !u!1 &1056483047
|
||||
=======
|
||||
--- !u!1 &865713942
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
@ -610,9 +613,368 @@ GameObject:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 865713944}
|
||||
- component: {fileID: 865713943}
|
||||
m_Layer: 0
|
||||
m_Name: WwiseGlobal
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!114 &865713943
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 865713942}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: c9d5ddca75153324c9685094dbef0fc9, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
InitializationSettings: {fileID: 11400000, guid: 69d39931291d213498bf7bbd3d60e88f, type: 2}
|
||||
basePath:
|
||||
language:
|
||||
defaultPoolSize: 0
|
||||
lowerPoolSize: 0
|
||||
streamingPoolSize: 0
|
||||
memoryCutoffThreshold: 0
|
||||
monitorPoolSize: 0
|
||||
monitorQueuePoolSize: 0
|
||||
callbackManagerBufferSize: 0
|
||||
spatialAudioPoolSize: 0
|
||||
maxSoundPropagationDepth: 0
|
||||
engineLogging: 0
|
||||
--- !u!4 &865713944
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 865713942}
|
||||
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!1 &920841144
|
||||
>>>>>>> Stashed changes
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
<<<<<<< Updated upstream
|
||||
- component: {fileID: 1056483050}
|
||||
- component: {fileID: 1056483049}
|
||||
- component: {fileID: 1056483048}
|
||||
=======
|
||||
- component: {fileID: 920841147}
|
||||
- component: {fileID: 920841146}
|
||||
- component: {fileID: 920841145}
|
||||
m_Layer: 0
|
||||
m_Name: Terrain_(100.00, 0.00, 0.00)
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 2147483647
|
||||
m_IsActive: 1
|
||||
--- !u!154 &920841145
|
||||
TerrainCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 920841144}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
m_TerrainData: {fileID: 15600000, guid: 32f8d13543ce04461ae01adae3c0dfff, type: 2}
|
||||
m_EnableTreeColliders: 1
|
||||
--- !u!218 &920841146
|
||||
Terrain:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 920841144}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 6
|
||||
m_TerrainData: {fileID: 15600000, guid: 32f8d13543ce04461ae01adae3c0dfff, type: 2}
|
||||
m_TreeDistance: 5000
|
||||
m_TreeBillboardDistance: 50
|
||||
m_TreeCrossFadeLength: 5
|
||||
m_TreeMaximumFullLODCount: 50
|
||||
m_DetailObjectDistance: 80
|
||||
m_DetailObjectDensity: 1
|
||||
m_HeightmapPixelError: 5
|
||||
m_SplatMapDistance: 1000
|
||||
m_HeightmapMinimumLODSimplification: 0
|
||||
m_HeightmapMaximumLOD: 0
|
||||
m_ShadowCastingMode: 2
|
||||
m_DrawHeightmap: 1
|
||||
m_DrawInstanced: 0
|
||||
m_DrawTreesAndFoliage: 1
|
||||
m_StaticShadowCaster: 0
|
||||
m_IgnoreQualitySettings: 0
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_MaterialTemplate: {fileID: 2100000, guid: a563fe890ec251a40831c7ad252593ce, type: 2}
|
||||
m_BakeLightProbesForTrees: 1
|
||||
m_PreserveTreePrototypeLayers: 0
|
||||
m_DeringLightProbesForTrees: 1
|
||||
m_ReceiveGI: 1
|
||||
m_ScaleInLightmap: 0.256
|
||||
m_LightmapParameters: {fileID: 15203, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_GroupingID: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_AllowAutoConnect: 1
|
||||
m_EnableHeightmapRayTracing: 1
|
||||
m_EnableTreesAndDetailsRayTracing: 0
|
||||
m_TreeMotionVectorModeOverride: 3
|
||||
--- !u!4 &920841147
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 920841144}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 100}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 283682413}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &1210642098
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1210642101}
|
||||
- component: {fileID: 1210642100}
|
||||
- component: {fileID: 1210642099}
|
||||
m_Layer: 0
|
||||
m_Name: Terrain_(-100.00, 0.00, -200.00)
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 2147483647
|
||||
m_IsActive: 1
|
||||
--- !u!154 &1210642099
|
||||
TerrainCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1210642098}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
m_TerrainData: {fileID: 15600000, guid: 123b5057bf9f34aa98a34c05e9267e16, type: 2}
|
||||
m_EnableTreeColliders: 1
|
||||
--- !u!218 &1210642100
|
||||
Terrain:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1210642098}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 6
|
||||
m_TerrainData: {fileID: 15600000, guid: 123b5057bf9f34aa98a34c05e9267e16, type: 2}
|
||||
m_TreeDistance: 5000
|
||||
m_TreeBillboardDistance: 50
|
||||
m_TreeCrossFadeLength: 5
|
||||
m_TreeMaximumFullLODCount: 50
|
||||
m_DetailObjectDistance: 80
|
||||
m_DetailObjectDensity: 1
|
||||
m_HeightmapPixelError: 5
|
||||
m_SplatMapDistance: 1000
|
||||
m_HeightmapMinimumLODSimplification: 0
|
||||
m_HeightmapMaximumLOD: 0
|
||||
m_ShadowCastingMode: 2
|
||||
m_DrawHeightmap: 1
|
||||
m_DrawInstanced: 0
|
||||
m_DrawTreesAndFoliage: 1
|
||||
m_StaticShadowCaster: 0
|
||||
m_IgnoreQualitySettings: 0
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_MaterialTemplate: {fileID: 2100000, guid: a563fe890ec251a40831c7ad252593ce, type: 2}
|
||||
m_BakeLightProbesForTrees: 1
|
||||
m_PreserveTreePrototypeLayers: 0
|
||||
m_DeringLightProbesForTrees: 1
|
||||
m_ReceiveGI: 1
|
||||
m_ScaleInLightmap: 0.256
|
||||
m_LightmapParameters: {fileID: 15203, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_GroupingID: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_AllowAutoConnect: 1
|
||||
m_EnableHeightmapRayTracing: 1
|
||||
m_EnableTreesAndDetailsRayTracing: 0
|
||||
m_TreeMotionVectorModeOverride: 3
|
||||
--- !u!4 &1210642101
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1210642098}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: -200, y: 0, z: -100}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 283682413}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &1619901994
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1619901995}
|
||||
- component: {fileID: 1619901998}
|
||||
- component: {fileID: 1619901997}
|
||||
- component: {fileID: 1619901996}
|
||||
m_Layer: 0
|
||||
m_Name: PlayerGround
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &1619901995
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1619901994}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: -0.003, y: -1.31, z: 0.011}
|
||||
m_LocalScale: {x: 0.032779634, y: 0.05932965, z: 0.05932965}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1885117175165463222}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!64 &1619901996
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1619901994}
|
||||
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: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
|
||||
--- !u!23 &1619901997
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1619901994}
|
||||
m_Enabled: 0
|
||||
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_RayTracingAccelStructBuildFlagsOverride: 0
|
||||
m_RayTracingAccelStructBuildFlags: 1
|
||||
m_SmallMeshCulling: 1
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
m_StaticBatchRoot: {fileID: 0}
|
||||
m_ProbeAnchor: {fileID: 0}
|
||||
m_LightProbeVolumeOverride: {fileID: 0}
|
||||
m_ScaleInLightmap: 1
|
||||
m_ReceiveGI: 1
|
||||
m_PreserveUVs: 0
|
||||
m_IgnoreNormalsForChartDetection: 0
|
||||
m_ImportantGI: 0
|
||||
m_StitchLightmapSeams: 1
|
||||
m_SelectedEditorRenderState: 3
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!33 &1619901998
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1619901994}
|
||||
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
|
||||
--- !u!1 &1696518994
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1696518997}
|
||||
- component: {fileID: 1696518996}
|
||||
- component: {fileID: 1696518995}
|
||||
>>>>>>> Stashed changes
|
||||
m_Layer: 0
|
||||
m_Name: Terrain
|
||||
m_TagString: Untagged
|
||||
@ -813,9 +1175,10 @@ GameObject:
|
||||
m_Component:
|
||||
- component: {fileID: 1758990464}
|
||||
- component: {fileID: 1758990463}
|
||||
- component: {fileID: 1758990462}
|
||||
- component: {fileID: 1758990465}
|
||||
- component: {fileID: 1758990466}
|
||||
- component: {fileID: 1758990468}
|
||||
- component: {fileID: 1758990467}
|
||||
m_Layer: 0
|
||||
m_Name: Main Camera
|
||||
m_TagString: MainCamera
|
||||
@ -823,14 +1186,6 @@ GameObject:
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!81 &1758990462
|
||||
AudioListener:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1758990461}
|
||||
m_Enabled: 1
|
||||
--- !u!20 &1758990463
|
||||
Camera:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -955,6 +1310,328 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier:
|
||||
resolutionWidth: 1000
|
||||
renderImage: {fileID: 765614675}
|
||||
<<<<<<< Updated upstream
|
||||
=======
|
||||
--- !u!114 &1758990467
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1758990461}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: e279c79f46ba866438afc957062b00ed, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
isDefaultListener: 1
|
||||
bOverrideScalingFactor: 0
|
||||
scalingFactor: -1
|
||||
listenerId: 0
|
||||
--- !u!114 &1758990468
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1758990461}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: c937869b929adf9479ee3544d8886f7f, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_listeners:
|
||||
initialListenerList: []
|
||||
useDefaultListeners: 1
|
||||
isEnvironmentAware: 0
|
||||
isStaticObject: 0
|
||||
usePositionOffsetData: 0
|
||||
m_positionOffsetData:
|
||||
KeepMe: 0
|
||||
positionOffset: {x: 0, y: 0, z: 0}
|
||||
scalingFactor: 1
|
||||
m_posOffsetData: {fileID: 0}
|
||||
listenerMask: 1
|
||||
--- !u!1 &1792442177
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1792442180}
|
||||
- component: {fileID: 1792442179}
|
||||
- component: {fileID: 1792442178}
|
||||
m_Layer: 0
|
||||
m_Name: Terrain_(0.00, 0.00, -100.00)
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 2147483647
|
||||
m_IsActive: 1
|
||||
--- !u!154 &1792442178
|
||||
TerrainCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1792442177}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
m_TerrainData: {fileID: 15600000, guid: dbe8473984f5149e8afa390cbc3e60dc, type: 2}
|
||||
m_EnableTreeColliders: 1
|
||||
--- !u!218 &1792442179
|
||||
Terrain:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1792442177}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 6
|
||||
m_TerrainData: {fileID: 15600000, guid: dbe8473984f5149e8afa390cbc3e60dc, type: 2}
|
||||
m_TreeDistance: 5000
|
||||
m_TreeBillboardDistance: 50
|
||||
m_TreeCrossFadeLength: 5
|
||||
m_TreeMaximumFullLODCount: 50
|
||||
m_DetailObjectDistance: 80
|
||||
m_DetailObjectDensity: 1
|
||||
m_HeightmapPixelError: 5
|
||||
m_SplatMapDistance: 1000
|
||||
m_HeightmapMinimumLODSimplification: 0
|
||||
m_HeightmapMaximumLOD: 0
|
||||
m_ShadowCastingMode: 2
|
||||
m_DrawHeightmap: 1
|
||||
m_DrawInstanced: 0
|
||||
m_DrawTreesAndFoliage: 1
|
||||
m_StaticShadowCaster: 0
|
||||
m_IgnoreQualitySettings: 0
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_MaterialTemplate: {fileID: 2100000, guid: a563fe890ec251a40831c7ad252593ce, type: 2}
|
||||
m_BakeLightProbesForTrees: 1
|
||||
m_PreserveTreePrototypeLayers: 0
|
||||
m_DeringLightProbesForTrees: 1
|
||||
m_ReceiveGI: 1
|
||||
m_ScaleInLightmap: 0.256
|
||||
m_LightmapParameters: {fileID: 15203, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_GroupingID: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_AllowAutoConnect: 1
|
||||
m_EnableHeightmapRayTracing: 1
|
||||
m_EnableTreesAndDetailsRayTracing: 0
|
||||
m_TreeMotionVectorModeOverride: 3
|
||||
--- !u!4 &1792442180
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1792442177}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: -100, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 283682413}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &1810293202
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1810293205}
|
||||
- component: {fileID: 1810293204}
|
||||
- component: {fileID: 1810293203}
|
||||
m_Layer: 0
|
||||
m_Name: Terrain_(-100.00, 0.00, -100.00)
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 2147483647
|
||||
m_IsActive: 1
|
||||
--- !u!154 &1810293203
|
||||
TerrainCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1810293202}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
m_TerrainData: {fileID: 15600000, guid: 647ba0c8af63547ed8c2ae619572ae5d, type: 2}
|
||||
m_EnableTreeColliders: 1
|
||||
--- !u!218 &1810293204
|
||||
Terrain:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1810293202}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 6
|
||||
m_TerrainData: {fileID: 15600000, guid: 647ba0c8af63547ed8c2ae619572ae5d, type: 2}
|
||||
m_TreeDistance: 5000
|
||||
m_TreeBillboardDistance: 50
|
||||
m_TreeCrossFadeLength: 5
|
||||
m_TreeMaximumFullLODCount: 50
|
||||
m_DetailObjectDistance: 80
|
||||
m_DetailObjectDensity: 1
|
||||
m_HeightmapPixelError: 5
|
||||
m_SplatMapDistance: 1000
|
||||
m_HeightmapMinimumLODSimplification: 0
|
||||
m_HeightmapMaximumLOD: 0
|
||||
m_ShadowCastingMode: 2
|
||||
m_DrawHeightmap: 1
|
||||
m_DrawInstanced: 0
|
||||
m_DrawTreesAndFoliage: 1
|
||||
m_StaticShadowCaster: 0
|
||||
m_IgnoreQualitySettings: 0
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_MaterialTemplate: {fileID: 2100000, guid: a563fe890ec251a40831c7ad252593ce, type: 2}
|
||||
m_BakeLightProbesForTrees: 1
|
||||
m_PreserveTreePrototypeLayers: 0
|
||||
m_DeringLightProbesForTrees: 1
|
||||
m_ReceiveGI: 1
|
||||
m_ScaleInLightmap: 0.256
|
||||
m_LightmapParameters: {fileID: 15203, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_GroupingID: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_AllowAutoConnect: 1
|
||||
m_EnableHeightmapRayTracing: 1
|
||||
m_EnableTreesAndDetailsRayTracing: 0
|
||||
m_TreeMotionVectorModeOverride: 3
|
||||
--- !u!4 &1810293205
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1810293202}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: -200, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 283682413}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &1831115026
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1831115029}
|
||||
- component: {fileID: 1831115028}
|
||||
- component: {fileID: 1831115027}
|
||||
m_Layer: 0
|
||||
m_Name: Terrain_(100.00, 0.00, 100.00)
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 2147483647
|
||||
m_IsActive: 1
|
||||
--- !u!154 &1831115027
|
||||
TerrainCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1831115026}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
m_TerrainData: {fileID: 15600000, guid: e788cba8f1dca4841a97965e9db0671e, type: 2}
|
||||
m_EnableTreeColliders: 1
|
||||
--- !u!218 &1831115028
|
||||
Terrain:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1831115026}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 6
|
||||
m_TerrainData: {fileID: 15600000, guid: e788cba8f1dca4841a97965e9db0671e, type: 2}
|
||||
m_TreeDistance: 5000
|
||||
m_TreeBillboardDistance: 50
|
||||
m_TreeCrossFadeLength: 5
|
||||
m_TreeMaximumFullLODCount: 50
|
||||
m_DetailObjectDistance: 80
|
||||
m_DetailObjectDensity: 1
|
||||
m_HeightmapPixelError: 5
|
||||
m_SplatMapDistance: 1000
|
||||
m_HeightmapMinimumLODSimplification: 0
|
||||
m_HeightmapMaximumLOD: 0
|
||||
m_ShadowCastingMode: 2
|
||||
m_DrawHeightmap: 1
|
||||
m_DrawInstanced: 0
|
||||
m_DrawTreesAndFoliage: 1
|
||||
m_StaticShadowCaster: 0
|
||||
m_IgnoreQualitySettings: 0
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_MaterialTemplate: {fileID: 2100000, guid: a563fe890ec251a40831c7ad252593ce, type: 2}
|
||||
m_BakeLightProbesForTrees: 1
|
||||
m_PreserveTreePrototypeLayers: 0
|
||||
m_DeringLightProbesForTrees: 1
|
||||
m_ReceiveGI: 1
|
||||
m_ScaleInLightmap: 0.256
|
||||
m_LightmapParameters: {fileID: 15203, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_GroupingID: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_AllowAutoConnect: 1
|
||||
m_EnableHeightmapRayTracing: 1
|
||||
m_EnableTreesAndDetailsRayTracing: 0
|
||||
m_TreeMotionVectorModeOverride: 3
|
||||
--- !u!4 &1831115029
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1831115026}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 200}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 283682413}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
>>>>>>> Stashed changes
|
||||
--- !u!1 &2128201284 stripped
|
||||
GameObject:
|
||||
m_CorrespondingSourceObject: {fileID: 7563270112099016041, guid: 5704dc66b89074156933e2ba70d2d2d7, type: 3}
|
||||
@ -3824,7 +4501,11 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 235347041090592828, guid: 5704dc66b89074156933e2ba70d2d2d7, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
<<<<<<< Updated upstream
|
||||
value: 3.2
|
||||
=======
|
||||
value: 6.222
|
||||
>>>>>>> Stashed changes
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 235347041090592828, guid: 5704dc66b89074156933e2ba70d2d2d7, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
@ -3864,12 +4545,38 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedGameObjects:
|
||||
- targetCorrespondingSourceObject: {fileID: 235347041090592828, guid: 5704dc66b89074156933e2ba70d2d2d7, type: 3}
|
||||
insertIndex: -1
|
||||
addedObject: {fileID: 1619901995}
|
||||
m_AddedComponents:
|
||||
- targetCorrespondingSourceObject: {fileID: 7563270112099016041, guid: 5704dc66b89074156933e2ba70d2d2d7, type: 3}
|
||||
insertIndex: -1
|
||||
addedObject: {fileID: 2128201287}
|
||||
- targetCorrespondingSourceObject: {fileID: 7563270112099016041, guid: 5704dc66b89074156933e2ba70d2d2d7, type: 3}
|
||||
insertIndex: -1
|
||||
addedObject: {fileID: 1885117175165463223}
|
||||
m_SourcePrefab: {fileID: 100100000, guid: 5704dc66b89074156933e2ba70d2d2d7, type: 3}
|
||||
--- !u!4 &1885117175165463222 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 235347041090592828, guid: 5704dc66b89074156933e2ba70d2d2d7, type: 3}
|
||||
m_PrefabInstance: {fileID: 1885117175165463221}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!114 &1885117175165463223
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2128201284}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d4b49c1facb0cd79f9d371c933c683ae, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
interactRange: 3
|
||||
inventory: []
|
||||
InteractAction: {fileID: 0}
|
||||
--- !u!1001 &3777076745723235148
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -3927,6 +4634,140 @@ PrefabInstance:
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: 8c75047ed6d9f49b59c8bd4d1b5ddee3, type: 3}
|
||||
--- !u!1001 &3852619589072227671
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 0}
|
||||
m_Modifications:
|
||||
- target: {fileID: 4701987624285347653, guid: 4ae08d37e69194e48bb57affce3b41fb, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: Bush_With_Blueberriess
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5335358705816815103, guid: 4ae08d37e69194e48bb57affce3b41fb, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: -20.262705
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5335358705816815103, guid: 4ae08d37e69194e48bb57affce3b41fb, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 4.8899636
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5335358705816815103, guid: 4ae08d37e69194e48bb57affce3b41fb, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: -136.32555
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5335358705816815103, guid: 4ae08d37e69194e48bb57affce3b41fb, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5335358705816815103, guid: 4ae08d37e69194e48bb57affce3b41fb, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5335358705816815103, guid: 4ae08d37e69194e48bb57affce3b41fb, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5335358705816815103, guid: 4ae08d37e69194e48bb57affce3b41fb, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5335358705816815103, guid: 4ae08d37e69194e48bb57affce3b41fb, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5335358705816815103, guid: 4ae08d37e69194e48bb57affce3b41fb, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5335358705816815103, guid: 4ae08d37e69194e48bb57affce3b41fb, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents:
|
||||
- targetCorrespondingSourceObject: {fileID: 4701987624285347653, guid: 4ae08d37e69194e48bb57affce3b41fb, type: 3}
|
||||
insertIndex: -1
|
||||
addedObject: {fileID: 3852619589072227673}
|
||||
m_SourcePrefab: {fileID: 100100000, guid: 4ae08d37e69194e48bb57affce3b41fb, type: 3}
|
||||
--- !u!1 &3852619589072227672 stripped
|
||||
GameObject:
|
||||
m_CorrespondingSourceObject: {fileID: 4701987624285347653, guid: 4ae08d37e69194e48bb57affce3b41fb, type: 3}
|
||||
m_PrefabInstance: {fileID: 3852619589072227671}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!114 &3852619589072227673
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3852619589072227672}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 9a881c5714daa538f8fa52539a6fc646, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!1001 &4976744974992492520
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 0}
|
||||
m_Modifications:
|
||||
- target: {fileID: 5074558466868719647, guid: f5ecddf1014fe7e4f86b7d300efc62b6, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: Bush_No_Blueberries
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5559593300083174053, guid: f5ecddf1014fe7e4f86b7d300efc62b6, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: -20.487371
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5559593300083174053, guid: f5ecddf1014fe7e4f86b7d300efc62b6, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 4.9351387
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5559593300083174053, guid: f5ecddf1014fe7e4f86b7d300efc62b6, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: -135.40582
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5559593300083174053, guid: f5ecddf1014fe7e4f86b7d300efc62b6, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5559593300083174053, guid: f5ecddf1014fe7e4f86b7d300efc62b6, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5559593300083174053, guid: f5ecddf1014fe7e4f86b7d300efc62b6, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5559593300083174053, guid: f5ecddf1014fe7e4f86b7d300efc62b6, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5559593300083174053, guid: f5ecddf1014fe7e4f86b7d300efc62b6, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5559593300083174053, guid: f5ecddf1014fe7e4f86b7d300efc62b6, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5559593300083174053, guid: f5ecddf1014fe7e4f86b7d300efc62b6, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: f5ecddf1014fe7e4f86b7d300efc62b6, type: 3}
|
||||
--- !u!1001 &5846972023128301814
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -3998,4 +4839,10 @@ SceneRoots:
|
||||
- {fileID: 3777076745723235148}
|
||||
- {fileID: 5846972023128301814}
|
||||
- {fileID: 942480673780448989}
|
||||
<<<<<<< Updated upstream
|
||||
- {fileID: 1056483050}
|
||||
=======
|
||||
- {fileID: 865713944}
|
||||
- {fileID: 3852619589072227671}
|
||||
- {fileID: 4976744974992492520}
|
||||
>>>>>>> Stashed changes
|
||||
|
32
blueberryPeak/Assets/Scripts/BushInteraction.cs
Normal file
32
blueberryPeak/Assets/Scripts/BushInteraction.cs
Normal file
@ -0,0 +1,32 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
using Random = UnityEngine.Random;
|
||||
|
||||
public class BushInteraction : MonoBehaviour
|
||||
{
|
||||
private int blueberryCount = 0;
|
||||
private bool BlueBerriesPicked = false;
|
||||
// Start is called once before the first execution of Update after the MonoBehaviour is created
|
||||
void Start()
|
||||
{
|
||||
blueberryCount = Random.Range(1, 5); // Randomly initialize blueberry count between 1 and 5
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void OnTriggerEnter(Collider other)
|
||||
{
|
||||
// increase blueberry count in the StateManager
|
||||
if (!BlueBerriesPicked)
|
||||
{
|
||||
other.gameObject.GetComponent<PlayerInteraction>().CollectBlueberry(blueberryCount);
|
||||
BlueBerriesPicked = true;
|
||||
}
|
||||
//TODO: switch to different bush model, so that the player can see that the bush is empty
|
||||
|
||||
}
|
||||
}
|
2
blueberryPeak/Assets/Scripts/BushInteraction.cs.meta
Normal file
2
blueberryPeak/Assets/Scripts/BushInteraction.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9a881c5714daa538f8fa52539a6fc646
|
89
blueberryPeak/Assets/Scripts/PlayerInteraction.cs
Normal file
89
blueberryPeak/Assets/Scripts/PlayerInteraction.cs
Normal file
@ -0,0 +1,89 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.InputSystem;
|
||||
|
||||
|
||||
|
||||
public class PlayerInteraction : MonoBehaviour
|
||||
{
|
||||
public float interactRange = 3f;
|
||||
private int blueberryCount = 0;
|
||||
public List<InventoryItem> inventory = new List<InventoryItem>();
|
||||
|
||||
[SerializeField] InputActionReference InteractAction;
|
||||
|
||||
void Start()
|
||||
{
|
||||
// initialize the QuestLoader
|
||||
/*
|
||||
QuestLoader questLoader = FindFirstObjectByType<QuestLoader>();
|
||||
if (questLoader == null)
|
||||
{
|
||||
Debug.LogError("QuestLoader not found in the scene.");
|
||||
return;
|
||||
}
|
||||
quest = questLoader.allQuests[questIndex];
|
||||
Debug.Log("Loaded quest: " + quest.name);
|
||||
*/
|
||||
|
||||
InteractAction.action.Enable();
|
||||
InteractAction.action.performed += OnInteract;
|
||||
}
|
||||
|
||||
void OnInteract(InputAction.CallbackContext context)
|
||||
{
|
||||
if (context.performed)
|
||||
{
|
||||
Ray ray = new Ray(transform.position, transform.forward);
|
||||
RaycastHit hit;
|
||||
|
||||
if (Physics.Raycast(ray, out hit, interactRange))
|
||||
{
|
||||
if (hit.collider.CompareTag("Interactable"))
|
||||
{
|
||||
Debug.Log("Interacted with: " + hit.collider.name);
|
||||
// You can add more actions here
|
||||
hit.collider.GetComponent<QuestGiver>().Talk();
|
||||
//
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Update()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void CollectBlueberry(int newBlueberries)
|
||||
{
|
||||
blueberryCount += newBlueberries;
|
||||
Debug.Log("Collected " + blueberryCount + " blueberries. Total: " + blueberryCount);
|
||||
}
|
||||
|
||||
public void AddToInventory(InventoryItem reward)
|
||||
{
|
||||
inventory.Add(reward);
|
||||
Debug.Log("Added " + reward.name + " to inventory. Total items: " + inventory.Count);
|
||||
}
|
||||
|
||||
public void RemoveFromInventory(InventoryItem reward)
|
||||
{
|
||||
Debug.Log("Attempting to remove " + reward.name + " from inventory.");
|
||||
if (inventory.Contains(reward))
|
||||
{
|
||||
inventory.Remove(reward);
|
||||
Debug.Log("Removed " + reward.name + " from inventory. Total items: " + inventory.Count);
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning("Item not found in inventory: " + reward.name);
|
||||
}
|
||||
}
|
||||
|
||||
public int GetItemQuantity(string itemName)
|
||||
{
|
||||
InventoryItem item = inventory.Find(i => i.itemName == itemName);
|
||||
return item != null ? item.quantity : 0;
|
||||
}
|
||||
}
|
2
blueberryPeak/Assets/Scripts/PlayerInteraction.cs.meta
Normal file
2
blueberryPeak/Assets/Scripts/PlayerInteraction.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d4b49c1facb0cd79f9d371c933c683ae
|
89
blueberryPeak/Assets/Scripts/PlayerJump.cs
Normal file
89
blueberryPeak/Assets/Scripts/PlayerJump.cs
Normal file
@ -0,0 +1,89 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.InputSystem;
|
||||
|
||||
public class PlayerJump : MonoBehaviour
|
||||
{
|
||||
[SerializeField] private InputActionReference jump;
|
||||
[SerializeField] private float forceValue = 5f;
|
||||
[SerializeField] private GameObject playerGround;
|
||||
[SerializeField] private float groundRayOffset = 0.1f;
|
||||
[SerializeField] private float groundRayDistanceThreshold = 0.001f;
|
||||
//[SerializeField] private Animator animator;
|
||||
|
||||
private Rigidbody rb;
|
||||
private CapsuleCollider collider;
|
||||
private BoxCollider boxCollider;
|
||||
private bool isJumping = false;
|
||||
private bool isGrounded = true;
|
||||
// Start is called before the first frame update
|
||||
void Start()
|
||||
{
|
||||
rb = GetComponent<Rigidbody>();
|
||||
collider = GetComponent<CapsuleCollider>();
|
||||
boxCollider = playerGround.GetComponent<BoxCollider>();
|
||||
jump.action.Enable();
|
||||
jump.action.performed += OnJump;
|
||||
StartCoroutine(GroundCheck());
|
||||
}
|
||||
|
||||
void OnJump(InputAction.CallbackContext context)
|
||||
{
|
||||
if (!isGrounded || isJumping)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
StartCoroutine(JumpControlFlow());
|
||||
|
||||
}
|
||||
// Update is called once per frame
|
||||
void Update()
|
||||
{
|
||||
//animator.SetBool("Jumping", isJumping);
|
||||
}
|
||||
|
||||
IEnumerator GroundCheck()
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
float bottomOfCollider = collider.bounds.min.y;
|
||||
Vector3 newPlayerGroundPosition = new Vector3(playerGround.transform.position.x, bottomOfCollider,
|
||||
playerGround.transform.position.z);
|
||||
playerGround.transform.position = newPlayerGroundPosition;
|
||||
|
||||
Vector3 rayCastOrigin = new Vector3(playerGround.transform.position.x, playerGround.transform.position.y + groundRayOffset,
|
||||
playerGround.transform.position.z);
|
||||
|
||||
Vector3 playerGroundExtents = playerGround.transform.lossyScale;
|
||||
|
||||
bool isHitting = Physics.BoxCast(rayCastOrigin, playerGroundExtents / 2, -transform.up, out RaycastHit hit, playerGround.transform.rotation);
|
||||
if (isHitting && hit.distance <= groundRayOffset + groundRayDistanceThreshold)
|
||||
{
|
||||
isGrounded = true;
|
||||
isJumping = false;
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
isGrounded = false;
|
||||
}
|
||||
yield return null;
|
||||
}
|
||||
}
|
||||
|
||||
IEnumerator JumpControlFlow()
|
||||
{
|
||||
rb.AddForce(Vector3.up * forceValue, ForceMode.Impulse);
|
||||
|
||||
while (isGrounded)
|
||||
{
|
||||
yield return null;
|
||||
}
|
||||
isJumping = true;
|
||||
|
||||
boxCollider.enabled = true;
|
||||
yield return null;
|
||||
}
|
||||
}
|
2
blueberryPeak/Assets/Scripts/PlayerJump.cs.meta
Normal file
2
blueberryPeak/Assets/Scripts/PlayerJump.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0cd5165fe60040d5b9a395e0b7286a61
|
66
blueberryPeak/Assets/Scripts/PlayerMovement.cs
Normal file
66
blueberryPeak/Assets/Scripts/PlayerMovement.cs
Normal file
@ -0,0 +1,66 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.InputSystem;
|
||||
|
||||
[RequireComponent(typeof(CharacterController))]
|
||||
public class PlayerMovement : MonoBehaviour
|
||||
{
|
||||
[SerializeField] private float movementSpeed = 5f;
|
||||
[SerializeField] private float rotationSpeed = 200f;
|
||||
[SerializeField] private InputActionReference movement;
|
||||
[SerializeField] private Transform cameraTransform;
|
||||
[SerializeField] private Vector3 cameraOffset = new Vector3(0, 10, -10);
|
||||
|
||||
private Vector3 inputDirection = Vector3.zero;
|
||||
|
||||
private CharacterController controller;
|
||||
|
||||
void LateUpdate()
|
||||
{
|
||||
// Keep the camera centered on the player at a fixed isometric offset
|
||||
if (cameraTransform != null)
|
||||
{
|
||||
cameraTransform.position = transform.position + cameraOffset;
|
||||
cameraTransform.LookAt(transform.position);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Start()
|
||||
{
|
||||
controller = GetComponent<CharacterController>();
|
||||
|
||||
movement.action.Enable();
|
||||
movement.action.performed += OnMovement;
|
||||
movement.action.canceled += OnMovementStop;
|
||||
}
|
||||
|
||||
|
||||
void OnMovement(InputAction.CallbackContext context)
|
||||
{
|
||||
Vector2 inputVector = context.ReadValue<Vector2>();
|
||||
inputDirection = new Vector3(inputVector.x, 0, inputVector.y);
|
||||
}
|
||||
|
||||
void OnMovementStop(InputAction.CallbackContext context)
|
||||
{
|
||||
inputDirection = Vector3.zero;
|
||||
}
|
||||
|
||||
|
||||
void Update()
|
||||
{
|
||||
Cursor.lockState = CursorLockMode.Locked;
|
||||
|
||||
// Move the player
|
||||
Vector3 move = inputDirection.normalized * movementSpeed;
|
||||
controller.SimpleMove(move);
|
||||
|
||||
// Rotate the player toward movement direction
|
||||
if (inputDirection != Vector3.zero)
|
||||
{
|
||||
Quaternion toRotation = Quaternion.LookRotation(inputDirection, Vector3.up);
|
||||
transform.rotation = Quaternion.RotateTowards(transform.rotation, toRotation, rotationSpeed*Time.deltaTime);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
2
blueberryPeak/Assets/Scripts/PlayerMovement.cs.meta
Normal file
2
blueberryPeak/Assets/Scripts/PlayerMovement.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 23256d9e6183ca49ab546e357a0a1717
|
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 80ed8cc17593bbb4eb707a6f2eacf2b1
|
||||
guid: 28d0e57e7e08d2739b1550947f95eafa
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 74d21d8454f1807488522fa3bddecb4e
|
||||
guid: a2f38606bb0a47e51a8d2efa48091e63
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
44
blueberryPeak/Assets/Scripts/Quests/QuestFiles/quest1.json
Normal file
44
blueberryPeak/Assets/Scripts/Quests/QuestFiles/quest1.json
Normal file
@ -0,0 +1,44 @@
|
||||
{
|
||||
"name": "Find Glasses",
|
||||
"reward": 50,
|
||||
"initialDialog": [
|
||||
{
|
||||
"speaker": "QuestGiver",
|
||||
"text": "Hello there! I seem to have misplaced my glasses. Could you help me find them?"
|
||||
},
|
||||
{
|
||||
"speaker": "Player",
|
||||
"text": "Sure, I can help you with that. Where did you last see them?"
|
||||
},
|
||||
{
|
||||
"speaker": "QuestGiver",
|
||||
"text": "I think I lost them in the forest."
|
||||
}
|
||||
],
|
||||
"reminderDialog": [
|
||||
{
|
||||
"speaker": "QuestGiver",
|
||||
"text": "Have you found my glasses yet?"
|
||||
},
|
||||
{
|
||||
"speaker": "Player",
|
||||
"text": "Not yet, but I'm still looking."
|
||||
}
|
||||
],
|
||||
"successDialog": [
|
||||
{
|
||||
"speaker": "QuestGiver",
|
||||
"text": "Thank you so much for finding my glasses! Here is your reward."
|
||||
},
|
||||
{
|
||||
"speaker": "Player",
|
||||
"text": "You're welcome! I'm glad I could help."
|
||||
}
|
||||
],
|
||||
"repetitionDialog": [
|
||||
{
|
||||
"speaker": "QuestGiver",
|
||||
"text": "Thank you for finding my Glasses"
|
||||
}
|
||||
]
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 443f3d1781e1e734ab7c4b3fd84a8c1b
|
||||
guid: 60bb20fabd0d82a699c11fced68a823e
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
109
blueberryPeak/Assets/Scripts/Quests/QuestGiver.cs
Normal file
109
blueberryPeak/Assets/Scripts/Quests/QuestGiver.cs
Normal file
@ -0,0 +1,109 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEditor.SearchService;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Events;
|
||||
|
||||
public class QuestGiver : MonoBehaviour
|
||||
{
|
||||
|
||||
[SerializeField] private TextAsset questFile;
|
||||
[SerializeField] private InventoryItem reward;
|
||||
[SerializeField] private InventoryItem requiredItem;
|
||||
public bool isActive = false;
|
||||
public bool isCompleted = false;
|
||||
|
||||
public QuestData quest;
|
||||
// Start is called once before the first execution of Update after the MonoBehaviour is created
|
||||
void Awake()
|
||||
{
|
||||
if (questFile == null)
|
||||
{
|
||||
Debug.LogError("Quest file is not assigned in the inspector.");
|
||||
return;
|
||||
}
|
||||
// Load the quest data from the TextAsset
|
||||
try
|
||||
{
|
||||
quest = JsonUtility.FromJson<QuestData>(questFile.text);
|
||||
}
|
||||
catch (System.Exception e)
|
||||
{
|
||||
Debug.LogError("Failed to parse quest data: " + e.Message);
|
||||
return;
|
||||
}
|
||||
}
|
||||
void Start()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update()
|
||||
{
|
||||
|
||||
}
|
||||
public QuestData GetCurrentQuest()
|
||||
{
|
||||
return quest;
|
||||
}
|
||||
|
||||
public void CheckInventory(List<InventoryItem> inventory)
|
||||
{
|
||||
// Check if the required item is in the player's inventory
|
||||
if (inventory.Contains(requiredItem))
|
||||
{
|
||||
isCompleted = true; // Mark the quest as completed
|
||||
FinishQuest();
|
||||
}
|
||||
else
|
||||
{
|
||||
isCompleted = false; // Mark the quest as not completed
|
||||
}
|
||||
}
|
||||
public Dialog[] Talk()
|
||||
{
|
||||
Debug.Log("Talking to quest giver: " + quest.id);
|
||||
if (!isActive && isCompleted)
|
||||
{
|
||||
// If the quest is completed, return the repetition dialog
|
||||
return quest.repetitionDialog;
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
if (!isActive)
|
||||
{
|
||||
// Initialize the quest
|
||||
isActive = true;
|
||||
return quest.initialDialog;
|
||||
}
|
||||
|
||||
else if (isActive && isCompleted)
|
||||
{
|
||||
isActive = false; // reset the quest
|
||||
isCompleted = true;
|
||||
// take the Requireditem from the player inventory
|
||||
|
||||
// If the quest is active and completed, return the success dialog
|
||||
return quest.successDialog;
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
CheckInventory(GameObject.Find("Player").GetComponent<PlayerInteraction>().inventory);
|
||||
// If the quest is active but not completed, return the reminder dialog
|
||||
return quest.reminderDialog;
|
||||
}
|
||||
}
|
||||
}
|
||||
public Dialog[] FinishQuest()
|
||||
{
|
||||
// If the quest is active and completed, return the success dialog
|
||||
isActive = false;
|
||||
isCompleted = true;
|
||||
GameObject.Find("Player").GetComponent<PlayerInteraction>().RemoveFromInventory(requiredItem);
|
||||
|
||||
reward.giveReward(GameObject.Find("Player")); // Give the reward to the player
|
||||
return quest.successDialog;
|
||||
}
|
||||
}
|
2
blueberryPeak/Assets/Scripts/Quests/QuestGiver.cs.meta
Normal file
2
blueberryPeak/Assets/Scripts/Quests/QuestGiver.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a504573bd52d6f5dfa9a6c6fd707e406
|
25
blueberryPeak/Assets/Scripts/Quests/QuestModel.cs
Normal file
25
blueberryPeak/Assets/Scripts/Quests/QuestModel.cs
Normal file
@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
|
||||
|
||||
[Serializable]
|
||||
public class Dialog
|
||||
{
|
||||
public string speaker;
|
||||
public string text;
|
||||
}
|
||||
|
||||
|
||||
|
||||
[Serializable]
|
||||
public class QuestData
|
||||
{
|
||||
public int id;
|
||||
public Dialog[] initialDialog;
|
||||
public Dialog[] reminderDialog;
|
||||
public Dialog[] successDialog;
|
||||
public Dialog[] repetitionDialog;
|
||||
}
|
||||
|
||||
|
2
blueberryPeak/Assets/Scripts/Quests/QuestModel.cs.meta
Normal file
2
blueberryPeak/Assets/Scripts/Quests/QuestModel.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 178f0835c01b2024b84d3cb3b7c75b17
|
34
blueberryPeak/Assets/Scripts/Quests/Reward.cs
Normal file
34
blueberryPeak/Assets/Scripts/Quests/Reward.cs
Normal file
@ -0,0 +1,34 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.Events;
|
||||
|
||||
|
||||
// base class for all rewards
|
||||
public abstract class InventoryItem : ScriptableObject
|
||||
{
|
||||
[SerializeField] public string itemName;
|
||||
[SerializeField] public int quantity = 1;
|
||||
|
||||
|
||||
public abstract void giveReward(GameObject player);
|
||||
|
||||
}
|
||||
|
||||
[CreateAssetMenu(menuName = "GameItems/ItemReward")]
|
||||
public class ItemReward : InventoryItem
|
||||
{
|
||||
public ItemReward(string itemName, int quantity)
|
||||
{
|
||||
this.itemName = itemName;
|
||||
this.quantity = quantity;
|
||||
}
|
||||
|
||||
public override void giveReward(GameObject player)
|
||||
{
|
||||
ItemReward reward = ScriptableObject.CreateInstance<ItemReward>();
|
||||
reward.itemName = itemName;
|
||||
reward.quantity = quantity;
|
||||
player.GetComponent<PlayerInteraction>().AddToInventory(reward);
|
||||
// Add logic to give an item to the player
|
||||
Debug.Log($"You have received {quantity} {itemName}(s)!");
|
||||
}
|
||||
}
|
2
blueberryPeak/Assets/Scripts/Quests/Reward.cs.meta
Normal file
2
blueberryPeak/Assets/Scripts/Quests/Reward.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7092f720acd98807697b6306506e4410
|
16
blueberryPeak/Assets/Scripts/test.cs
Normal file
16
blueberryPeak/Assets/Scripts/test.cs
Normal file
@ -0,0 +1,16 @@
|
||||
using UnityEngine;
|
||||
|
||||
public class test : MonoBehaviour
|
||||
{
|
||||
// Start is called once before the first execution of Update after the MonoBehaviour is created
|
||||
void Start()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
2
blueberryPeak/Assets/Scripts/test.cs.meta
Normal file
2
blueberryPeak/Assets/Scripts/test.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 97b2d6a2aaac4ffdbbd8c5ebfc674d24
|
BIN
blueberryPeak/Assets/Textures/Bluberry_Bush/Blueberry Base Color 4.png
(Stored with Git LFS)
Normal file
BIN
blueberryPeak/Assets/Textures/Bluberry_Bush/Blueberry Base Color 4.png
(Stored with Git LFS)
Normal file
Binary file not shown.
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 311aae98c3bd2e943a15b320dd052212
|
||||
guid: 65ee353b8aac5b74294199a4362faad1
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
BIN
blueberryPeak/Assets/Textures/Bluberry_Bush/Bush Base Color_New2.png
(Stored with Git LFS)
Normal file
BIN
blueberryPeak/Assets/Textures/Bluberry_Bush/Bush Base Color_New2.png
(Stored with Git LFS)
Normal file
Binary file not shown.
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 92e103fedb2b4654d84deb69bca1d81b
|
||||
guid: 840ca9bc1a2d7f547a03688b2b853b84
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
BIN
blueberryPeak/Assets/Textures/Blueberry Base Color.png
(Stored with Git LFS)
Normal file
BIN
blueberryPeak/Assets/Textures/Blueberry Base Color.png
(Stored with Git LFS)
Normal file
Binary file not shown.
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f9efe3af208bcd94297685b3651bd771
|
||||
guid: fef64f1bf3ab44146b667d75ceac1f14
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
BIN
blueberryPeak/Assets/Textures/Bush Base Color_New2.png
(Stored with Git LFS)
Normal file
BIN
blueberryPeak/Assets/Textures/Bush Base Color_New2.png
(Stored with Git LFS)
Normal file
Binary file not shown.
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e96c9e458ebcdc943aa97539d4f59ecd
|
||||
guid: 8a30a566805820348954c27a68ba748b
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1371b52db9429d245bd36377dc622f13
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,21 +0,0 @@
|
||||
{
|
||||
"name": "AK.Wwise.Unity.API.Editor",
|
||||
"references": [
|
||||
"AK.Wwise.Unity.API",
|
||||
"AK.Wwise.Unity.API.WwiseTypes",
|
||||
"AK.Wwise.Unity.MonoBehaviour",
|
||||
"Ak.Wwise.Api.WAAPI",
|
||||
"AK.Wwise.Unity.ProjectDatabase"
|
||||
],
|
||||
"includePlatforms": [
|
||||
"Editor"
|
||||
],
|
||||
"excludePlatforms": [],
|
||||
"allowUnsafeCode": false,
|
||||
"overrideReferences": false,
|
||||
"precompiledReferences": [],
|
||||
"autoReferenced": true,
|
||||
"defineConstraints": [ "!UNITY_SERVER" ],
|
||||
"versionDefines": [],
|
||||
"noEngineReferences": false
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 98897d1ac68099144841035bb82dc516
|
||||
AssemblyDefinitionImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,121 +0,0 @@
|
||||
/*******************************************************************************
|
||||
The content of this file includes portions of the proprietary AUDIOKINETIC Wwise
|
||||
Technology released in source code form as part of the game integration package.
|
||||
The content of this file may not be used without valid licenses to the
|
||||
AUDIOKINETIC Wwise Technology.
|
||||
Note that the use of the game engine is subject to the Unity(R) Terms of
|
||||
Service at https://unity3d.com/legal/terms-of-service
|
||||
|
||||
License Usage
|
||||
|
||||
Licensees holding valid licenses to the AUDIOKINETIC Wwise Technology may use
|
||||
this file in accordance with the end user license agreement provided with the
|
||||
software or, alternatively, in accordance with the terms contained
|
||||
in a written agreement between you and Audiokinetic Inc.
|
||||
Copyright (c) 2025 Audiokinetic Inc.
|
||||
*******************************************************************************/
|
||||
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
|
||||
#if UNITY_EDITOR
|
||||
namespace Wwise.API.Editor.SoundBankDirectoryWatcher.Common
|
||||
{
|
||||
[UnityEditor.InitializeOnLoad]
|
||||
public class AkSoundBankDirectoryWatcher
|
||||
{
|
||||
private static readonly AkSoundBankDirectoryWatcher instance;
|
||||
public static AkSoundBankDirectoryWatcher Instance { get { return instance; } }
|
||||
|
||||
private bool emptyPathErrorWasLogged = false;
|
||||
private string soundBankDirectoryPath;
|
||||
private string platformName;
|
||||
private string languageName;
|
||||
private bool forceUpdate = false;
|
||||
private bool initCallbackRequired = false;
|
||||
|
||||
private const int SecondsBetweenChecks = 3;
|
||||
private static System.DateTime s_lastFileCheck = System.DateTime.Now.AddSeconds(-SecondsBetweenChecks);
|
||||
private static System.DateTime s_lastSoundBankDirectoryUpdate = System.DateTime.MinValue;
|
||||
|
||||
private AkSoundBankDirectoryWatcher()
|
||||
{
|
||||
platformName = AkBasePathGetter.GetPlatformName();
|
||||
UnityEditor.EditorApplication.update += OnEditorUpdate;
|
||||
WwiseProjectDatabase.SoundBankDirectoryUpdated += AkPlatformPluginList.ExecuteParse;
|
||||
forceUpdate = true;
|
||||
Execute();
|
||||
}
|
||||
|
||||
static AkSoundBankDirectoryWatcher()
|
||||
{
|
||||
instance = new AkSoundBankDirectoryWatcher();
|
||||
}
|
||||
|
||||
~AkSoundBankDirectoryWatcher()
|
||||
{
|
||||
UnityEditor.EditorApplication.update -= OnEditorUpdate;
|
||||
WwiseProjectDatabase.SoundBankDirectoryUpdated -= AkPlatformPluginList.ExecuteParse;
|
||||
}
|
||||
|
||||
private void Execute()
|
||||
{
|
||||
if (initCallbackRequired)
|
||||
{
|
||||
initCallbackRequired = false;
|
||||
WwiseProjectDatabase.PostInitCallback();
|
||||
}
|
||||
if (AkWwiseEditorSettings.Instance.WwiseProjectPath == "")
|
||||
{
|
||||
if (!emptyPathErrorWasLogged)
|
||||
{
|
||||
Debug.LogWarning("WwiseProjectPath is empty in the Wwise integration settings. Set it in order to enable the project database.");
|
||||
emptyPathErrorWasLogged = true;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (System.DateTime.Now.Subtract(s_lastFileCheck).Seconds >= SecondsBetweenChecks &&
|
||||
!UnityEditor.EditorApplication.isCompiling && !UnityEditor.EditorApplication.isPlayingOrWillChangePlaymode && !AkUtilities.GeneratingSoundBanks)
|
||||
{
|
||||
var filename = System.IO.Path.Combine(AkBasePathGetter.GetWwiseRootOutputPath());
|
||||
var wProjPath = System.IO.Path.Combine(AkBasePathGetter.GetWwiseProjectPath());
|
||||
var time = System.IO.File.GetLastWriteTime(filename);
|
||||
Task.Run(() => InitProjectDB(filename, wProjPath, time));
|
||||
s_lastFileCheck = System.DateTime.Now;
|
||||
}
|
||||
}
|
||||
|
||||
private void OnEditorUpdate()
|
||||
{
|
||||
Execute();
|
||||
}
|
||||
|
||||
private async Task InitProjectDB(string filename, string wProjPath, DateTime time)
|
||||
{
|
||||
if (time > s_lastSoundBankDirectoryUpdate || forceUpdate)
|
||||
{
|
||||
if (!await WwiseProjectDatabase.InitAsync(filename, platformName))
|
||||
{
|
||||
var userWarning = "";
|
||||
if (!AkUtilities.IsSettingEnabled(wProjPath,"GenerateSoundBankJSON"))
|
||||
{
|
||||
userWarning = "Ensure that the Generate JSON Metadata option is enabled in the Wwise Project Settings on the SoundBanks tab, then regenerate the SoundBanks.";
|
||||
}
|
||||
else
|
||||
{
|
||||
userWarning = "Ensure that the SoundBanks Path in the Integration Settings matches the Root Output Path in the Wwise Project Settings on the SoundBanks tab, then regenerate the SoundBanks.";
|
||||
}
|
||||
|
||||
UnityEngine.Debug.LogError("WwiseUnity: Cannot find ProjectInfo.json at " + filename + ". " + userWarning);
|
||||
}
|
||||
s_lastSoundBankDirectoryUpdate = time;
|
||||
forceUpdate = false;
|
||||
|
||||
initCallbackRequired = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b096639186b0c8e4eae3ffcbfe7ff259
|
@ -1,63 +0,0 @@
|
||||
/*******************************************************************************
|
||||
The content of this file includes portions of the proprietary AUDIOKINETIC Wwise
|
||||
Technology released in source code form as part of the game integration package.
|
||||
The content of this file may not be used without valid licenses to the
|
||||
AUDIOKINETIC Wwise Technology.
|
||||
Note that the use of the game engine is subject to the Unity(R) Terms of
|
||||
Service at https://unity3d.com/legal/terms-of-service
|
||||
|
||||
License Usage
|
||||
|
||||
Licensees holding valid licenses to the AUDIOKINETIC Wwise Technology may use
|
||||
this file in accordance with the end user license agreement provided with the
|
||||
software or, alternatively, in accordance with the terms contained
|
||||
in a written agreement between you and Audiokinetic Inc.
|
||||
Copyright (c) 2025 Audiokinetic Inc.
|
||||
*******************************************************************************/
|
||||
|
||||
#if UNITY_EDITOR
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using UnityEditor;
|
||||
using UnityEditor.VersionControl;
|
||||
|
||||
[UnityEditor.InitializeOnLoad]
|
||||
public abstract class AkPlatformPluginActivator
|
||||
{
|
||||
public abstract string WwisePlatformName { get; }
|
||||
public abstract string PluginDirectoryName { get; }
|
||||
public virtual ISet<string> Architectures => null;
|
||||
|
||||
public virtual string DSPDirectoryPath => string.Empty;
|
||||
|
||||
public virtual string StaticPluginRegistrationName => null;
|
||||
public virtual string StaticPluginDefine => null;
|
||||
|
||||
public virtual bool RequiresStaticPluginRegistration => false;
|
||||
|
||||
public virtual void FilterOutPlatformIfNeeded(BuildTarget target, PluginImporter pluginImporter,
|
||||
string pluginPlatform)
|
||||
{
|
||||
}
|
||||
|
||||
public virtual bool IsPluginSDKVersionCompatible(string pluginSDKVersion)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
internal virtual bool IsBuildEnvironmentValid()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
internal string[] GetPluginPathParts(string pluginPath)
|
||||
{
|
||||
var indexOfPluginFolder = pluginPath.IndexOf(AkPluginActivatorConstants.WwisePluginFolder, StringComparison.OrdinalIgnoreCase);
|
||||
return pluginPath.Substring(indexOfPluginFolder + AkPluginActivatorConstants.WwisePluginFolder.Length + 1).Split('/');
|
||||
}
|
||||
|
||||
public abstract AkPluginActivator.PluginImporterInformation GetPluginImporterInformation(PluginImporter pluginImporter);
|
||||
internal abstract bool ConfigurePlugin(PluginImporter pluginImporter, AkPluginActivator.PluginImporterInformation pluginImporterInformation);
|
||||
|
||||
}
|
||||
#endif
|
@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 21328126a8414b64d97fa11e6f9cf439
|
@ -1,282 +0,0 @@
|
||||
/*******************************************************************************
|
||||
The content of this file includes portions of the proprietary AUDIOKINETIC Wwise
|
||||
Technology released in source code form as part of the game integration package.
|
||||
The content of this file may not be used without valid licenses to the
|
||||
AUDIOKINETIC Wwise Technology.
|
||||
Note that the use of the game engine is subject to the Unity(R) Terms of
|
||||
Service at https://unity3d.com/legal/terms-of-service
|
||||
|
||||
License Usage
|
||||
|
||||
Licensees holding valid licenses to the AUDIOKINETIC Wwise Technology may use
|
||||
this file in accordance with the end user license agreement provided with the
|
||||
software or, alternatively, in accordance with the terms contained
|
||||
in a written agreement between you and Audiokinetic Inc.
|
||||
Copyright (c) 2025 Audiokinetic Inc.
|
||||
*******************************************************************************/
|
||||
|
||||
#if UNITY_EDITOR
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEditor;
|
||||
|
||||
internal class AkPlatformPluginList
|
||||
{
|
||||
private static readonly Dictionary<string, System.DateTime> s_LastParsed = new Dictionary<string, System.DateTime>();
|
||||
|
||||
private static readonly Dictionary<string, HashSet<AkPluginInfo>> s_PerPlatformPlugins = new Dictionary<string, HashSet<AkPluginInfo>>();
|
||||
|
||||
internal static void GetPluginsUsedForPlatform(string deploymentTargetName, out HashSet<AkPluginInfo> UsedPlugins)
|
||||
{
|
||||
s_PerPlatformPlugins.TryGetValue(deploymentTargetName, out UsedPlugins);
|
||||
}
|
||||
|
||||
internal static bool ContainsPlatform(string platform)
|
||||
{
|
||||
return s_PerPlatformPlugins.ContainsKey(platform);
|
||||
}
|
||||
|
||||
public static bool IsPluginUsed(AkPlatformPluginActivator in_config, string in_UnityPlatform, string in_PluginName)
|
||||
{
|
||||
var pluginDSPPlatform = in_config.WwisePlatformName;
|
||||
|
||||
if (!s_PerPlatformPlugins.ContainsKey(pluginDSPPlatform))
|
||||
{
|
||||
return false; //XML not parsed, don't touch anything.
|
||||
}
|
||||
|
||||
if (in_PluginName.Contains("AkUnitySoundEngine"))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
var pluginName = in_PluginName;
|
||||
if (in_PluginName.StartsWith("lib"))
|
||||
{
|
||||
pluginName = in_PluginName.Substring(3);
|
||||
}
|
||||
|
||||
const string factory = "Factory";
|
||||
int indexOfFactory = in_PluginName.IndexOf(factory);
|
||||
// Ensure the plugin name ends with "Factory.h"
|
||||
if (indexOfFactory != -1 && indexOfFactory + factory.Length == in_PluginName.Length)
|
||||
{
|
||||
pluginName = in_PluginName.Substring(0, indexOfFactory);
|
||||
}
|
||||
|
||||
System.Collections.Generic.HashSet<AkPluginInfo> plugins;
|
||||
if (s_PerPlatformPlugins.TryGetValue(pluginDSPPlatform, out plugins))
|
||||
{
|
||||
if (!in_config.RequiresStaticPluginRegistration)
|
||||
{
|
||||
foreach (var pluginInfo in plugins)
|
||||
{
|
||||
if (pluginInfo.DllName == pluginName ||
|
||||
(pluginInfo.StaticLibName == "AkMeterFX" && pluginName.Contains("AkSoundEngine")))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Exceptions
|
||||
if (!string.IsNullOrEmpty(in_config.StaticPluginRegistrationName) && pluginName.Contains(in_config.StaticPluginRegistrationName))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
//WebGL, iOS, tvOS, visionOS, and Switch deal with the static libs directly, unlike all other platforms.
|
||||
//Luckily the DLL name is always a subset of the lib name.
|
||||
foreach (var pluginInfo in plugins)
|
||||
{
|
||||
if (pluginInfo.StaticLibName == pluginName)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static void ExecuteParse()
|
||||
{
|
||||
Update();
|
||||
}
|
||||
public static void Update(bool forceUpdate = false)
|
||||
{
|
||||
//Gather all GeneratedSoundBanks folder from the project
|
||||
var allPaths = AkUtilities.GetAllBankPaths();
|
||||
var bNeedRefresh = false;
|
||||
var projectDir = AkBasePathGetter.GetWwiseProjectDirectory();
|
||||
var baseSoundBankPath = AkBasePathGetter.GetFullSoundBankPathEditor();
|
||||
|
||||
AkWwiseInitializationSettings.UpdatePlatforms();
|
||||
|
||||
//make a copy of the platform map and handle "special" custom platforms
|
||||
var platformMap = new Dictionary<string, List<string>>();
|
||||
foreach (var key in AkUtilities.PlatformMapping.Keys)
|
||||
{
|
||||
platformMap.Add(key, new List<string>(AkUtilities.PlatformMapping[key]));
|
||||
foreach (var customPF in AkUtilities.PlatformMapping[key])
|
||||
{
|
||||
if (customPF != key && (AkWwiseInitializationSettings.PlatformSettings.IsDistinctPlatform(customPF)))
|
||||
{
|
||||
platformMap.Add(customPF, new List<string> { customPF });
|
||||
platformMap[key].Remove(customPF);
|
||||
}
|
||||
}
|
||||
if (platformMap[key].Count==0)
|
||||
{
|
||||
platformMap.Remove(key);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Go through all BasePlatforms
|
||||
foreach (var pairPF in platformMap)
|
||||
{
|
||||
//Go through all custom platforms related to that base platform and check if any of the bank files were updated.
|
||||
var bParse = forceUpdate;
|
||||
var fullPaths = new System.Collections.Generic.List<string>();
|
||||
foreach (var customPF in pairPF.Value)
|
||||
{
|
||||
string bankPath;
|
||||
if (!allPaths.TryGetValue(customPF, out bankPath))
|
||||
continue;
|
||||
|
||||
var pluginFile = "";
|
||||
try
|
||||
{
|
||||
pluginFile = System.IO.Path.Combine(projectDir, System.IO.Path.Combine(bankPath, "PluginInfo.xml"));
|
||||
pluginFile = pluginFile.Replace('/', System.IO.Path.DirectorySeparatorChar);
|
||||
if (!System.IO.File.Exists(pluginFile))
|
||||
{
|
||||
//Try in StreamingAssets too.
|
||||
pluginFile = System.IO.Path.Combine(System.IO.Path.Combine(baseSoundBankPath, customPF), "PluginInfo.xml");
|
||||
if (!System.IO.File.Exists(pluginFile))
|
||||
continue;
|
||||
}
|
||||
|
||||
fullPaths.Add(pluginFile);
|
||||
|
||||
var t = System.IO.File.GetLastWriteTime(pluginFile);
|
||||
var lastTime = System.DateTime.MinValue;
|
||||
bool bParsedBefore = s_LastParsed.TryGetValue(customPF, out lastTime);
|
||||
if (!bParsedBefore || lastTime < t)
|
||||
{
|
||||
bParse = true;
|
||||
s_LastParsed[customPF] = t;
|
||||
}
|
||||
}
|
||||
catch (System.Exception ex)
|
||||
{
|
||||
UnityEngine.Debug.LogError("WwiseUnity: " + pluginFile + " could not be parsed. " + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
if (bParse)
|
||||
{
|
||||
var platform = pairPF.Key;
|
||||
|
||||
var newDlls = ParsePlugins(platform);
|
||||
System.Collections.Generic.HashSet<AkPluginInfo> oldDlls = null;
|
||||
|
||||
s_PerPlatformPlugins.TryGetValue(platform, out oldDlls);
|
||||
s_PerPlatformPlugins[platform] = newDlls;
|
||||
|
||||
//Check if there was any change.
|
||||
if (!bNeedRefresh && oldDlls != null)
|
||||
{
|
||||
if (oldDlls.Count == newDlls.Count)
|
||||
{
|
||||
oldDlls.IntersectWith(newDlls);
|
||||
}
|
||||
|
||||
bNeedRefresh |= oldDlls.Count != newDlls.Count;
|
||||
}
|
||||
else
|
||||
{
|
||||
bNeedRefresh |= newDlls.Count > 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (bNeedRefresh)
|
||||
{
|
||||
AkPluginActivator.ActivatePluginsForEditor();
|
||||
}
|
||||
}
|
||||
|
||||
private static bool PlatformUsesStaticLibs(string platform)
|
||||
{
|
||||
var pair = AkPluginActivator.BuildTargetToPlatformPluginActivator.FirstOrDefault(x => x.Value.WwisePlatformName == platform);
|
||||
|
||||
if (pair.Equals(default(KeyValuePair<BuildTarget, AkPlatformPluginActivator>)))
|
||||
{
|
||||
// Platform not found
|
||||
return false;
|
||||
}
|
||||
return pair.Value.RequiresStaticPluginRegistration;
|
||||
}
|
||||
|
||||
private static HashSet<AkPluginInfo> ParsePlugins(string platform)
|
||||
{
|
||||
var newPlugins = new System.Collections.Generic.HashSet<AkPluginInfo>();
|
||||
var usesStaticLibs = PlatformUsesStaticLibs(platform);
|
||||
|
||||
try
|
||||
{
|
||||
WwisePluginRefArray pluginRefArray = new WwisePluginRefArray();
|
||||
for (var i = 0; i < WwiseProjectDatabase.GetPluginCount(); i++)
|
||||
{
|
||||
var pluginRef = pluginRefArray[i];
|
||||
var rawPluginID = pluginRef.Id;
|
||||
if (rawPluginID == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
AkPluginActivatorConstants.PluginID pluginID = (AkPluginActivatorConstants.PluginID)rawPluginID;
|
||||
|
||||
if (AkPluginActivatorConstants.alwaysSkipPluginsIDs.Contains(pluginID))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var dll = string.Empty;
|
||||
|
||||
if (!usesStaticLibs && AkPluginActivatorConstants.builtInPluginIDs.Contains(pluginID))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(dll))
|
||||
{
|
||||
dll = pluginRef.DLL;
|
||||
}
|
||||
|
||||
var staticLibName = pluginRef.StaticLib;
|
||||
|
||||
AkPluginInfo newPluginInfo = new AkPluginInfo();
|
||||
newPluginInfo.PluginID = rawPluginID;
|
||||
newPluginInfo.DllName = dll;
|
||||
newPluginInfo.StaticLibName = staticLibName;
|
||||
|
||||
if (string.IsNullOrEmpty(newPluginInfo.StaticLibName) && !AkPluginActivatorConstants.PluginIDToStaticLibName.TryGetValue(pluginID, out newPluginInfo.StaticLibName))
|
||||
{
|
||||
newPluginInfo.StaticLibName = dll;
|
||||
}
|
||||
|
||||
newPlugins.Add(newPluginInfo);
|
||||
}
|
||||
}
|
||||
catch (System.Exception ex)
|
||||
{
|
||||
UnityEngine.Debug.LogError("WwiseUnity: plugins could not be parsed. " + ex.Message);
|
||||
}
|
||||
|
||||
return newPlugins;
|
||||
}
|
||||
}
|
||||
#endif
|
@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e30c7857cb5d04344bd98747ff621ec8
|
@ -1,316 +0,0 @@
|
||||
/*******************************************************************************
|
||||
The content of this file includes portions of the proprietary AUDIOKINETIC Wwise
|
||||
Technology released in source code form as part of the game integration package.
|
||||
The content of this file may not be used without valid licenses to the
|
||||
AUDIOKINETIC Wwise Technology.
|
||||
Note that the use of the game engine is subject to the Unity(R) Terms of
|
||||
Service at https://unity3d.com/legal/terms-of-service
|
||||
|
||||
License Usage
|
||||
|
||||
Licensees holding valid licenses to the AUDIOKINETIC Wwise Technology may use
|
||||
this file in accordance with the end user license agreement provided with the
|
||||
software or, alternatively, in accordance with the terms contained
|
||||
in a written agreement between you and Audiokinetic Inc.
|
||||
Copyright (c) 2025 Audiokinetic Inc.
|
||||
*******************************************************************************/
|
||||
|
||||
#if UNITY_EDITOR
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
[InitializeOnLoad]
|
||||
public class AkPluginActivator : UnityEditor.AssetPostprocessor
|
||||
{
|
||||
private const string EditorConfiguration = AkPluginActivatorConstants.CONFIG_PROFILE;
|
||||
private static bool bIsAlreadyActivating = false;
|
||||
static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths, bool didDomainReload)
|
||||
{
|
||||
if (UnityEditor.AssetDatabase.IsAssetImportWorkerProcess() || bIsAlreadyActivating)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (Array.IndexOf(Environment.GetCommandLineArgs(), "-verboseAkPluginActivator") != -1)
|
||||
{
|
||||
UnityEngine.Debug.Log("Enabling verbose logging!");
|
||||
IsVerboseLogging = true;
|
||||
}
|
||||
|
||||
if (didDomainReload)
|
||||
{
|
||||
ActivatePluginsForEditor();
|
||||
}
|
||||
}
|
||||
|
||||
public static string GetCurrentConfig()
|
||||
{
|
||||
var CurrentConfig = AkWwiseProjectInfo.GetData().CurrentPluginConfig;
|
||||
if (string.IsNullOrEmpty(CurrentConfig))
|
||||
{
|
||||
CurrentConfig = AkPluginActivatorConstants.CONFIG_PROFILE;
|
||||
}
|
||||
|
||||
return CurrentConfig;
|
||||
}
|
||||
|
||||
public static Dictionary<BuildTarget, AkPlatformPluginActivator> BuildTargetToPlatformPluginActivator = new Dictionary<BuildTarget, AkPlatformPluginActivator>();
|
||||
|
||||
public static void RegisterPlatformPluginActivator(BuildTarget target, AkPlatformPluginActivator platformPluginActivator)
|
||||
{
|
||||
LogVerbose("Adding platform " + target.ToString() + " to PluginActivator");
|
||||
BuildTargetToPlatformPluginActivator.Add(target, platformPluginActivator);
|
||||
}
|
||||
|
||||
internal static string GetPluginInfoPlatform(string path)
|
||||
{
|
||||
var indexOfPluginFolder = path.IndexOf(AkPluginActivatorConstants.WwisePluginFolder, StringComparison.OrdinalIgnoreCase);
|
||||
if (indexOfPluginFolder == -1)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return path.Substring(indexOfPluginFolder + AkPluginActivatorConstants.WwisePluginFolder.Length + 1).Split('/')[0];
|
||||
}
|
||||
|
||||
internal static List<PluginImporter> GetWwisePluginImporters(string platformFilter = "")
|
||||
{
|
||||
PluginImporter[] pluginImporters = PluginImporter.GetAllImporters();
|
||||
List<PluginImporter> wwisePlugins = new List<PluginImporter>();
|
||||
foreach (var pluginImporter in pluginImporters)
|
||||
{
|
||||
if (pluginImporter.assetPath.Contains("Wwise/API/"))
|
||||
{
|
||||
if (string.IsNullOrEmpty(platformFilter) || platformFilter == GetPluginInfoPlatform(pluginImporter.assetPath))
|
||||
{
|
||||
wwisePlugins.Add(pluginImporter);
|
||||
}
|
||||
}
|
||||
}
|
||||
return wwisePlugins;
|
||||
}
|
||||
|
||||
public class PluginImporterInformation
|
||||
{
|
||||
public string PluginName;
|
||||
public string PluginArch;
|
||||
public string PluginSDKVersion;
|
||||
public string PluginConfig;
|
||||
|
||||
public string EditorOS;
|
||||
public string EditorCPU;
|
||||
|
||||
public bool IsX86 => PluginArch == "x86";
|
||||
public bool IsX64 => PluginArch == "x86_64";
|
||||
|
||||
public bool IsSupportLibrary => AkPluginActivatorConstants.SupportLibraries.Contains(PluginName);
|
||||
}
|
||||
|
||||
public static void ActivatePluginsForDeployment(BuildTarget target, bool Activate)
|
||||
{
|
||||
if (!BuildTargetToPlatformPluginActivator.TryGetValue(target, out var platformPluginActivator))
|
||||
{
|
||||
Debug.LogError("WwiseUnity: Unable to find Plugin Activator for Build Target " + target + ". Check that platform " + target + " has been installed as part of your Wwise Integration.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!platformPluginActivator.IsBuildEnvironmentValid())
|
||||
{
|
||||
Debug.LogError("Build Environment for platform " + platformPluginActivator.WwisePlatformName + " is not valid. Current BuildTarget is " + EditorUserBuildSettings.activeBuildTarget);
|
||||
return;
|
||||
}
|
||||
|
||||
bIsAlreadyActivating = true;
|
||||
|
||||
if (Activate)
|
||||
{
|
||||
StaticPluginRegistration.Setup(target, platformPluginActivator);
|
||||
}
|
||||
|
||||
var importers = GetWwisePluginImporters();
|
||||
var assetChanged = false;
|
||||
foreach (var pluginImporter in importers)
|
||||
{
|
||||
var pluginPlatform = GetPluginInfoPlatform(pluginImporter.assetPath);
|
||||
if (pluginPlatform != platformPluginActivator.PluginDirectoryName)
|
||||
{
|
||||
if (Activate)
|
||||
{
|
||||
platformPluginActivator.FilterOutPlatformIfNeeded(target, pluginImporter, pluginPlatform);
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
var pluginInfo = platformPluginActivator.GetPluginImporterInformation(pluginImporter);
|
||||
var bShouldActivatePlugin = platformPluginActivator.ConfigurePlugin(pluginImporter, pluginInfo);
|
||||
|
||||
if (pluginImporter.GetCompatibleWithAnyPlatform())
|
||||
{
|
||||
LogVerbose("Plugin" + pluginImporter.assetPath + " was compatible with the \"any\" platform, deactivating.");
|
||||
pluginImporter.SetCompatibleWithAnyPlatform(false);
|
||||
assetChanged = true;
|
||||
}
|
||||
|
||||
if (pluginInfo.PluginConfig == "DSP")
|
||||
{
|
||||
if (!pluginInfo.IsSupportLibrary && !AkPlatformPluginList.IsPluginUsed(platformPluginActivator, pluginPlatform, Path.GetFileNameWithoutExtension(pluginImporter.assetPath)))
|
||||
{
|
||||
LogVerbose("Plugin" + pluginImporter.assetPath + " is not used, skipping.");
|
||||
bShouldActivatePlugin = false;
|
||||
}
|
||||
}
|
||||
else if (pluginInfo.PluginConfig != GetCurrentConfig())
|
||||
{
|
||||
LogVerbose("Plugin" + pluginImporter.assetPath + " does not match current config (" + GetCurrentConfig() + "). Skipping.");
|
||||
bShouldActivatePlugin = false;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(pluginInfo.PluginSDKVersion))
|
||||
{
|
||||
var sdkCompatible = platformPluginActivator.IsPluginSDKVersionCompatible(pluginInfo.PluginSDKVersion);
|
||||
LogVerbose("Plugin " + pluginImporter.assetPath + " is " + (sdkCompatible ? "" : "NOT ") + "compatible with current platform SDK");
|
||||
bShouldActivatePlugin &= sdkCompatible;
|
||||
}
|
||||
|
||||
bool isCompatibleWithPlatform = bShouldActivatePlugin && Activate;
|
||||
LogVerbose("Will set plugin " + pluginImporter.assetPath + " as " + (isCompatibleWithPlatform ? "" : "NOT ") + "compatible with platform.");
|
||||
assetChanged |= pluginImporter.GetCompatibleWithPlatform(target) != isCompatibleWithPlatform;
|
||||
|
||||
pluginImporter.SetCompatibleWithPlatform(target, isCompatibleWithPlatform);
|
||||
|
||||
if (assetChanged)
|
||||
{
|
||||
LogVerbose("Changed plugin " + pluginImporter.assetPath + ", saving and reimporting.");
|
||||
pluginImporter.SaveAndReimport();
|
||||
}
|
||||
}
|
||||
|
||||
bIsAlreadyActivating = false;
|
||||
}
|
||||
|
||||
public static void ActivatePluginsForEditor()
|
||||
{
|
||||
var importers = GetWwisePluginImporters();
|
||||
var changedSomeAssets = false;
|
||||
|
||||
bIsAlreadyActivating = true;
|
||||
AssetDatabase.StartAssetEditing();
|
||||
foreach (var pluginImporter in importers)
|
||||
{
|
||||
var pluginPlatform = GetPluginInfoPlatform(pluginImporter.assetPath);
|
||||
if (string.IsNullOrEmpty(pluginPlatform) || (pluginPlatform != "Mac" && pluginPlatform != "Windows"))
|
||||
{
|
||||
pluginImporter.SetCompatibleWithEditor(false);
|
||||
changedSomeAssets = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
BuildTarget pluginBuildTarget = pluginPlatform == "Mac" ? BuildTarget.StandaloneOSX : BuildTarget.StandaloneWindows64;
|
||||
|
||||
if (!BuildTargetToPlatformPluginActivator.TryGetValue(pluginBuildTarget, out var platformPluginActivator))
|
||||
{
|
||||
Debug.Log("WwiseUnity: Build Target " + pluginBuildTarget + " not supported.");
|
||||
bIsAlreadyActivating = false;
|
||||
return;
|
||||
}
|
||||
|
||||
var pluginInfo = platformPluginActivator.GetPluginImporterInformation(pluginImporter);
|
||||
|
||||
var assetChanged = false;
|
||||
if (pluginImporter.GetCompatibleWithAnyPlatform())
|
||||
{
|
||||
LogVerbose("ActivatePluginsForEditor: Plugin" + pluginImporter.assetPath + " was compatible with the \"any\" platform, deactivating.");
|
||||
pluginImporter.SetCompatibleWithAnyPlatform(false);
|
||||
assetChanged = true;
|
||||
}
|
||||
|
||||
var bActivate = false;
|
||||
if (!string.IsNullOrEmpty(pluginInfo.EditorOS))
|
||||
{
|
||||
if (pluginInfo.PluginConfig == "DSP")
|
||||
{
|
||||
if (!AkPlatformPluginList.ContainsPlatform(platformPluginActivator.WwisePlatformName))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
bActivate = AkPlatformPluginList.IsPluginUsed(platformPluginActivator, pluginPlatform,
|
||||
Path.GetFileNameWithoutExtension(pluginImporter.assetPath));
|
||||
}
|
||||
else
|
||||
{
|
||||
bActivate = pluginInfo.PluginConfig == EditorConfiguration;
|
||||
}
|
||||
|
||||
if (bActivate)
|
||||
{
|
||||
LogVerbose("ActivatePluginsForEditor: Activating " + pluginImporter.assetPath);
|
||||
pluginImporter.SetEditorData("CPU", pluginInfo.EditorCPU);
|
||||
pluginImporter.SetEditorData("OS", pluginInfo.EditorOS);
|
||||
}
|
||||
|
||||
assetChanged |= pluginImporter.GetCompatibleWithEditor() != bActivate;
|
||||
pluginImporter.SetCompatibleWithEditor(bActivate);
|
||||
}
|
||||
else
|
||||
{
|
||||
LogVerbose("ActivatePluginsForEditor: Could not determine EditorOS for " + pluginImporter.assetPath);
|
||||
}
|
||||
|
||||
if (assetChanged)
|
||||
{
|
||||
changedSomeAssets = true;
|
||||
LogVerbose("ActivatePluginsForEditor: Changed plugin " + pluginImporter.assetPath + ", saving and reimporting.");
|
||||
}
|
||||
}
|
||||
|
||||
AssetDatabase.StopAssetEditing();
|
||||
if (changedSomeAssets)
|
||||
{
|
||||
Debug.Log("WwiseUnity: Plugins successfully activated for " + EditorConfiguration + " in Editor.");
|
||||
AssetDatabase.Refresh();
|
||||
}
|
||||
|
||||
bIsAlreadyActivating = false;
|
||||
}
|
||||
|
||||
public static void DeactivateAllPlugins()
|
||||
{
|
||||
var importers = GetWwisePluginImporters();
|
||||
foreach (var pluginImporter in importers)
|
||||
{
|
||||
if (pluginImporter.assetPath.IndexOf(AkPluginActivatorConstants.WwisePluginFolder, StringComparison.OrdinalIgnoreCase) == -1)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
pluginImporter.SetCompatibleWithAnyPlatform(false);
|
||||
pluginImporter.SaveAndReimport();
|
||||
}
|
||||
}
|
||||
|
||||
public static void ForceUpdate()
|
||||
{
|
||||
AkPlatformPluginList.Update(true);
|
||||
Update();
|
||||
}
|
||||
|
||||
public static void Update()
|
||||
{
|
||||
AkPluginActivatorMenus.CheckMenuItems(GetCurrentConfig());
|
||||
}
|
||||
|
||||
public static bool IsVerboseLogging = false;
|
||||
public static void LogVerbose(string msg)
|
||||
{
|
||||
if (IsVerboseLogging)
|
||||
{
|
||||
Debug.Log("wwiseunity: AkPluginActivator VERBOSE: " + msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5db252510a903954bacd43a55c060ea8
|
@ -1,193 +0,0 @@
|
||||
/*******************************************************************************
|
||||
The content of this file includes portions of the proprietary AUDIOKINETIC Wwise
|
||||
Technology released in source code form as part of the game integration package.
|
||||
The content of this file may not be used without valid licenses to the
|
||||
AUDIOKINETIC Wwise Technology.
|
||||
Note that the use of the game engine is subject to the Unity(R) Terms of
|
||||
Service at https://unity3d.com/legal/terms-of-service
|
||||
|
||||
License Usage
|
||||
|
||||
Licensees holding valid licenses to the AUDIOKINETIC Wwise Technology may use
|
||||
this file in accordance with the end user license agreement provided with the
|
||||
software or, alternatively, in accordance with the terms contained
|
||||
in a written agreement between you and Audiokinetic Inc.
|
||||
Copyright (c) 2025 Audiokinetic Inc.
|
||||
*******************************************************************************/
|
||||
|
||||
#if UNITY_EDITOR
|
||||
public class AkPluginActivatorConstants
|
||||
{
|
||||
internal const string WwisePluginFolder = "Runtime/Plugins";
|
||||
|
||||
public const string CONFIG_DEBUG = "Debug";
|
||||
public const string CONFIG_PROFILE = "Profile";
|
||||
public const string CONFIG_RELEASE = "Release";
|
||||
|
||||
internal static readonly System.Collections.Generic.HashSet<PluginID> builtInPluginIDs =
|
||||
new System.Collections.Generic.HashSet<PluginID>
|
||||
{
|
||||
PluginID.AkCompressor,
|
||||
PluginID.AkDelay,
|
||||
PluginID.AkExpander,
|
||||
PluginID.AkGain,
|
||||
PluginID.AkMatrixReverb,
|
||||
PluginID.AkMeter,
|
||||
PluginID.AkParametricEQ,
|
||||
PluginID.AkPeakLimiter,
|
||||
PluginID.AkRoomVerb,
|
||||
PluginID.AkReflect,
|
||||
#if !UNITY_2018_3_OR_NEWER
|
||||
PluginID.VitaReverb,
|
||||
PluginID.VitaCompressor,
|
||||
PluginID.VitaDelay,
|
||||
PluginID.VitaDistortion,
|
||||
PluginID.VitaEQ,
|
||||
#endif
|
||||
};
|
||||
|
||||
internal static readonly System.Collections.Generic.HashSet<PluginID> alwaysSkipPluginsIDs =
|
||||
new System.Collections.Generic.HashSet<PluginID>
|
||||
{
|
||||
PluginID.SineGenerator,
|
||||
PluginID.SinkAuxiliary,
|
||||
PluginID.SinkCommunication,
|
||||
PluginID.SinkControllerHeadphones,
|
||||
PluginID.SinkControllerSpeaker,
|
||||
PluginID.SinkDVRByPass,
|
||||
PluginID.SinkNoOutput,
|
||||
PluginID.SinkSystem,
|
||||
PluginID.ToneGenerator,
|
||||
PluginID.WwiseSilence,
|
||||
PluginID.AkAudioInput,
|
||||
};
|
||||
|
||||
internal static readonly System.Collections.Generic.Dictionary<PluginID, string> PluginIDToStaticLibName =
|
||||
new System.Collections.Generic.Dictionary<PluginID, string>
|
||||
{
|
||||
{ PluginID.Ak3DAudioBedMixer, "Ak3DAudioBedMixerFX" },
|
||||
{ PluginID.AkAudioInput, "AkAudioInputSource" },
|
||||
{ PluginID.AkCompressor, "AkCompressorFX" },
|
||||
{ PluginID.AkRouterMixer, "AkRouterMixerFX" },
|
||||
{ PluginID.AkChannelRouter, "AkChannelRouterFX" },
|
||||
{ PluginID.AkConvolutionReverb, "AkConvolutionReverbFX" },
|
||||
{ PluginID.AkDelay, "AkDelayFX" },
|
||||
{ PluginID.AkExpander, "AkExpanderFX" },
|
||||
{ PluginID.AkFlanger, "AkFlangerFX" },
|
||||
{ PluginID.AkGain, "AkGainFX" },
|
||||
{ PluginID.AkGuitarDistortion, "AkGuitarDistortionFX" },
|
||||
{ PluginID.AkHarmonizer, "AkHarmonizerFX" },
|
||||
{ PluginID.AkMatrixReverb, "AkMatrixReverbFX" },
|
||||
{ PluginID.AkMeter, "AkMeterFX" },
|
||||
{ PluginID.AkMotionSink, "AkMotionSink" },
|
||||
{ PluginID.AkMotionSource, "AkMotionSourceSource" },
|
||||
{ PluginID.AkParametricEQ, "AkParametricEQFX" },
|
||||
{ PluginID.AkPeakLimiter, "AkPeakLimiterFX" },
|
||||
{ PluginID.AkPitchShifter, "AkPitchShifterFX" },
|
||||
{ PluginID.AkRecorder, "AkRecorderFX" },
|
||||
{ PluginID.AkReflect, "AkReflectFX" },
|
||||
{ PluginID.AkRoomVerb, "AkRoomVerbFX" },
|
||||
{ PluginID.AkSoundSeedGrain, "AkSoundSeedGrainSource" },
|
||||
{ PluginID.AkSoundSeedWind, "AkSoundSeedWindSource" },
|
||||
{ PluginID.AkSoundSeedWoosh, "AkSoundSeedWooshSource" },
|
||||
{ PluginID.AkStereoDelay, "AkStereoDelayFX" },
|
||||
{ PluginID.AkSynthOne, "AkSynthOneSource" },
|
||||
{ PluginID.AkTimeStretch, "AkTimeStretchFX" },
|
||||
{ PluginID.AkTremolo, "AkTremoloFX" },
|
||||
{ PluginID.AuroHeadphone, "AuroHeadphoneFX" },
|
||||
{ PluginID.CrankcaseAudioREVModelPlayer, "CrankcaseAudioREVModelPlayerSource" },
|
||||
{ PluginID.iZHybridReverb, "iZHybridReverbFX" },
|
||||
{ PluginID.iZTrashBoxModeler, "iZTrashBoxModelerFX" },
|
||||
{ PluginID.iZTrashDelay, "iZTrashDelayFX" },
|
||||
{ PluginID.iZTrashDistortion, "iZTrashDistortionFX" },
|
||||
{ PluginID.iZTrashDynamics, "iZTrashDynamicsFX" },
|
||||
{ PluginID.iZTrashFilters, "iZTrashFiltersFX" },
|
||||
{ PluginID.iZTrashMultibandDistortion, "iZTrashMultibandDistortionFX" },
|
||||
{ PluginID.MasteringSuite, "MasteringSuiteFX" },
|
||||
{ PluginID.AkImpacterSource, "AkImpacterSource" },
|
||||
{ PluginID.McDSPFutzBox, "McDSPFutzBoxFX" },
|
||||
{ PluginID.McDSPLimiter, "McDSPLimiterFX" },
|
||||
{ PluginID.ResonanceAudioRenderer, "ResonanceAudioFX" },
|
||||
{ PluginID.ResonanceAudioRoomEffect, "ResonanceAudioFX" },
|
||||
{ PluginID.IgniterLive, "IgniterLiveSource" },
|
||||
{ PluginID.IgniterLiveSynth, "IgniterLiveSource" }
|
||||
};
|
||||
|
||||
// Support libraries are DLLs that do not have an associated Wwise plug-in ID; they are meant to be loaded manually by the application
|
||||
internal static readonly System.Collections.Generic.List<string> SupportLibraries =
|
||||
new System.Collections.Generic.List<string>
|
||||
{
|
||||
"AkVorbisHwAccelerator"
|
||||
};
|
||||
|
||||
internal enum PluginID
|
||||
{
|
||||
// Built-in plugins
|
||||
Ak3DAudioBedMixer = 0x00BE0003, // Wwise 3D Audio Bed Mixer
|
||||
AkCompressor = 0x006C0003, //Wwise Compressor
|
||||
AkRouterMixer = 0x00AC0006, //Wwise RouterMixer
|
||||
AkChannelRouter = 0x00BF0003, // Wwise Channel Router
|
||||
AkDelay = 0x006A0003, //Delay
|
||||
AkExpander = 0x006D0003, //Wwise Expander
|
||||
AkGain = 0x008B0003, //Gain
|
||||
AkMatrixReverb = 0x00730003, //Matrix Reverb
|
||||
AkMeter = 0x00810003, //Wwise Meter
|
||||
AkParametricEQ = 0x00690003, //Wwise Parametric EQ
|
||||
AkPeakLimiter = 0x006E0003, //Wwise Peak Limiter
|
||||
AkRoomVerb = 0x00760003, //Wwise RoomVerb
|
||||
SineGenerator = 0x00640002, //Sine
|
||||
SinkAuxiliary = 0xB40007,
|
||||
SinkCommunication = 0xB00007,
|
||||
SinkControllerHeadphones = 0xB10007,
|
||||
SinkControllerSpeaker = 0xB30007,
|
||||
SinkDVRByPass = 0xAF0007,
|
||||
SinkNoOutput = 0xB50007,
|
||||
SinkSystem = 0xAE0007,
|
||||
ToneGenerator = 0x00660002, //Tone Generator
|
||||
WwiseSilence = 0x00650002, //Wwise Silence
|
||||
#if !UNITY_2018_3_OR_NEWER
|
||||
VitaReverb = 0x008C0003, //Vita Reverb
|
||||
VitaCompressor = 0x008D0003, //Vita Compressor
|
||||
VitaDelay = 0x008E0003, //Vita Delay
|
||||
VitaDistortion = 0x008F0003, //Vita Distortion
|
||||
VitaEQ = 0x00900003, //Vita EQ
|
||||
#endif
|
||||
|
||||
// Static or DLL plugins
|
||||
AkAudioInput = 0xC80002,
|
||||
AkConvolutionReverb = 0x7F0003,
|
||||
AkFlanger = 0x7D0003,
|
||||
AkGuitarDistortion = 0x7E0003,
|
||||
AkHarmonizer = 0x8A0003,
|
||||
AkMotionSink = 0x1FB0007,
|
||||
AkMotionSource = 0x1990002,
|
||||
AkPitchShifter = 0x880003,
|
||||
AkRecorder = 0x840003,
|
||||
AkReflect = 0xAB0003,
|
||||
AkSoundSeedGrain = 0xB70002,
|
||||
AkSoundSeedWind = 0x770002,
|
||||
AkSoundSeedWoosh = 0x780002,
|
||||
AkStereoDelay = 0x870003,
|
||||
AkSynthOne = 0x940002,
|
||||
AkTimeStretch = 0x820003,
|
||||
AkTremolo = 0x830003,
|
||||
AuroHeadphone = 0x44C1073,
|
||||
CrankcaseAudioREVModelPlayer = 0x1A01052,
|
||||
iZHybridReverb = 0x21033,
|
||||
iZTrashBoxModeler = 0x71033,
|
||||
iZTrashDelay = 0x41033,
|
||||
iZTrashDistortion = 0x31033,
|
||||
iZTrashDynamics = 0x51033,
|
||||
iZTrashFilters = 0x61033,
|
||||
iZTrashMultibandDistortion = 0x91033,
|
||||
MasteringSuite = 0xBA0003,
|
||||
AkImpacterSource = 0xB80002,
|
||||
McDSPFutzBox = 0x6E1003,
|
||||
McDSPLimiter = 0x671003,
|
||||
ResonanceAudioRenderer = 0x641103,
|
||||
ResonanceAudioRoomEffect = 0xC81106,
|
||||
IgniterLive = 0x5110D2,
|
||||
IgniterLiveSynth = 0x5210D2
|
||||
}
|
||||
}
|
||||
#endif
|
@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f9929fba59b92884bbe4ed1505320ef5
|
@ -1,61 +0,0 @@
|
||||
/*******************************************************************************
|
||||
The content of this file includes portions of the proprietary AUDIOKINETIC Wwise
|
||||
Technology released in source code form as part of the game integration package.
|
||||
The content of this file may not be used without valid licenses to the
|
||||
AUDIOKINETIC Wwise Technology.
|
||||
Note that the use of the game engine is subject to the Unity(R) Terms of
|
||||
Service at https://unity3d.com/legal/terms-of-service
|
||||
|
||||
License Usage
|
||||
|
||||
Licensees holding valid licenses to the AUDIOKINETIC Wwise Technology may use
|
||||
this file in accordance with the end user license agreement provided with the
|
||||
software or, alternatively, in accordance with the terms contained
|
||||
in a written agreement between you and Audiokinetic Inc.
|
||||
Copyright (c) 2025 Audiokinetic Inc.
|
||||
*******************************************************************************/
|
||||
|
||||
#if UNITY_EDITOR
|
||||
public class AkPluginActivatorMenus
|
||||
{
|
||||
private const string MENU_PATH = "Assets/Wwise/Activate Plugins/";
|
||||
|
||||
[UnityEditor.MenuItem(MENU_PATH + AkPluginActivatorConstants.CONFIG_DEBUG)]
|
||||
public static void ActivateDebug()
|
||||
{
|
||||
ActivateConfig(AkPluginActivatorConstants.CONFIG_DEBUG);
|
||||
}
|
||||
|
||||
[UnityEditor.MenuItem(MENU_PATH + AkPluginActivatorConstants.CONFIG_PROFILE)]
|
||||
public static void ActivateProfile()
|
||||
{
|
||||
ActivateConfig(AkPluginActivatorConstants.CONFIG_PROFILE);
|
||||
}
|
||||
|
||||
[UnityEditor.MenuItem(MENU_PATH + AkPluginActivatorConstants.CONFIG_RELEASE)]
|
||||
public static void ActivateRelease()
|
||||
{
|
||||
ActivateConfig(AkPluginActivatorConstants.CONFIG_RELEASE);
|
||||
}
|
||||
|
||||
public static void CheckMenuItems(string config)
|
||||
{
|
||||
UnityEditor.Menu.SetChecked(MENU_PATH + AkPluginActivatorConstants.CONFIG_DEBUG, config == AkPluginActivatorConstants.CONFIG_DEBUG);
|
||||
UnityEditor.Menu.SetChecked(MENU_PATH + AkPluginActivatorConstants.CONFIG_PROFILE, config == AkPluginActivatorConstants.CONFIG_PROFILE);
|
||||
UnityEditor.Menu.SetChecked(MENU_PATH + AkPluginActivatorConstants.CONFIG_RELEASE, config == AkPluginActivatorConstants.CONFIG_RELEASE);
|
||||
}
|
||||
private static void SetCurrentConfig(string config)
|
||||
{
|
||||
var data = AkWwiseProjectInfo.GetData();
|
||||
data.CurrentPluginConfig = config;
|
||||
UnityEditor.EditorUtility.SetDirty(data);
|
||||
}
|
||||
|
||||
private static void ActivateConfig(string config)
|
||||
{
|
||||
SetCurrentConfig(config);
|
||||
AkPluginActivatorMenus.CheckMenuItems(config);
|
||||
}
|
||||
|
||||
}
|
||||
#endif
|
@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bd73e5564a78cc44e83fe4fc48b86157
|
@ -1,35 +0,0 @@
|
||||
/*******************************************************************************
|
||||
The content of this file includes portions of the proprietary AUDIOKINETIC Wwise
|
||||
Technology released in source code form as part of the game integration package.
|
||||
The content of this file may not be used without valid licenses to the
|
||||
AUDIOKINETIC Wwise Technology.
|
||||
Note that the use of the game engine is subject to the Unity(R) Terms of
|
||||
Service at https://unity3d.com/legal/terms-of-service
|
||||
|
||||
License Usage
|
||||
|
||||
Licensees holding valid licenses to the AUDIOKINETIC Wwise Technology may use
|
||||
this file in accordance with the end user license agreement provided with the
|
||||
software or, alternatively, in accordance with the terms contained
|
||||
in a written agreement between you and Audiokinetic Inc.
|
||||
Copyright (c) 2025 Audiokinetic Inc.
|
||||
*******************************************************************************/
|
||||
|
||||
#if UNITY_EDITOR
|
||||
internal class AkPluginInfo
|
||||
{
|
||||
public uint PluginID;
|
||||
public string DllName;
|
||||
public string StaticLibName;
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return PluginID.GetHashCode();
|
||||
}
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
return PluginID.Equals(obj);
|
||||
}
|
||||
}
|
||||
#endif
|
@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b82cac07a468c3f44934e2dd2544d0dd
|
@ -1,194 +0,0 @@
|
||||
/*******************************************************************************
|
||||
The content of this file includes portions of the proprietary AUDIOKINETIC Wwise
|
||||
Technology released in source code form as part of the game integration package.
|
||||
The content of this file may not be used without valid licenses to the
|
||||
AUDIOKINETIC Wwise Technology.
|
||||
Note that the use of the game engine is subject to the Unity(R) Terms of
|
||||
Service at https://unity3d.com/legal/terms-of-service
|
||||
|
||||
License Usage
|
||||
|
||||
Licensees holding valid licenses to the AUDIOKINETIC Wwise Technology may use
|
||||
this file in accordance with the end user license agreement provided with the
|
||||
software or, alternatively, in accordance with the terms contained
|
||||
in a written agreement between you and Audiokinetic Inc.
|
||||
Copyright (c) 2025 Audiokinetic Inc.
|
||||
*******************************************************************************/
|
||||
|
||||
#if UNITY_EDITOR
|
||||
using System.IO;
|
||||
|
||||
internal class StaticPluginRegistration
|
||||
{
|
||||
private readonly System.Collections.Generic.HashSet<string> FactoriesHeaderFilenames =
|
||||
new System.Collections.Generic.HashSet<string>();
|
||||
|
||||
private readonly UnityEditor.BuildTarget Target;
|
||||
|
||||
public static void Setup(UnityEditor.BuildTarget target, AkPlatformPluginActivator platformPluginActivator)
|
||||
{
|
||||
if (!platformPluginActivator.RequiresStaticPluginRegistration)
|
||||
return;
|
||||
|
||||
string deploymentTargetName = platformPluginActivator.WwisePlatformName;
|
||||
|
||||
var staticPluginRegistration = new StaticPluginRegistration(target);
|
||||
var importers = AkPluginActivator.GetWwisePluginImporters(platformPluginActivator.PluginDirectoryName);
|
||||
foreach (var pluginImporter in importers)
|
||||
{
|
||||
var pluginInfo = platformPluginActivator.GetPluginImporterInformation(pluginImporter);
|
||||
var pluginPlatform = AkPluginActivator.GetPluginInfoPlatform(pluginImporter.assetPath);
|
||||
if (pluginPlatform != platformPluginActivator.PluginDirectoryName)
|
||||
continue;
|
||||
|
||||
if (platformPluginActivator.Architectures != null && platformPluginActivator.Architectures.Count != 0)
|
||||
{
|
||||
if (!platformPluginActivator.Architectures.Contains(pluginInfo.PluginArch))
|
||||
{
|
||||
UnityEngine.Debug.Log("WwiseUnity: Architecture not found: " + pluginInfo.PluginArch);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (pluginInfo.PluginConfig != "DSP")
|
||||
continue;
|
||||
|
||||
if (!AkPlatformPluginList.IsPluginUsed(platformPluginActivator, pluginPlatform, Path.GetFileNameWithoutExtension(pluginImporter.assetPath)))
|
||||
continue;
|
||||
|
||||
staticPluginRegistration.TryAddLibrary(platformPluginActivator, pluginImporter.assetPath);
|
||||
}
|
||||
|
||||
System.Collections.Generic.HashSet<AkPluginInfo> plugins;
|
||||
AkPlatformPluginList.GetPluginsUsedForPlatform(deploymentTargetName, out plugins);
|
||||
var missingPlugins = staticPluginRegistration.GetMissingPlugins(plugins);
|
||||
if (missingPlugins.Count == 0)
|
||||
{
|
||||
if (plugins == null)
|
||||
UnityEngine.Debug.LogWarningFormat("WwiseUnity: The activated Wwise plug-ins may not be correct. Could not read PluginInfo.xml for platform: {0}", deploymentTargetName);
|
||||
|
||||
staticPluginRegistration.TryWriteToFile(platformPluginActivator);
|
||||
}
|
||||
else
|
||||
{
|
||||
UnityEngine.Debug.LogErrorFormat(
|
||||
"WwiseUnity: These plugins used by the Wwise project are missing from the Unity project: {0}. Please check folder Assets/Wwise/API/Runtime/Plugin/{1}.",
|
||||
string.Join(", ", missingPlugins.ToArray()), deploymentTargetName);
|
||||
}
|
||||
}
|
||||
|
||||
private StaticPluginRegistration(UnityEditor.BuildTarget target)
|
||||
{
|
||||
Target = target;
|
||||
}
|
||||
|
||||
private void TryAddLibrary(AkPlatformPluginActivator config, string AssetPath)
|
||||
{
|
||||
if (AssetPath.EndsWith(".a"))
|
||||
{
|
||||
//Extract the lib name, generate the registration code.
|
||||
var begin = AssetPath.LastIndexOf('/') + 4;
|
||||
var end = AssetPath.LastIndexOf('.') - begin;
|
||||
var LibName = AssetPath.Substring(begin, end); //Remove the lib prefix and the .a extension
|
||||
|
||||
if (!LibName.Contains("AkUnitySoundEngine"))
|
||||
{
|
||||
string headerFilename = LibName + "Factory.h";
|
||||
|
||||
string fullPath = Path.GetFullPath(AkUtilities.GetPathInPackage(Path.Combine(AkPluginActivatorConstants.WwisePluginFolder, config.DSPDirectoryPath, headerFilename)));
|
||||
|
||||
if (File.Exists(fullPath))
|
||||
{
|
||||
FactoriesHeaderFilenames.Add(headerFilename);
|
||||
}
|
||||
else
|
||||
{
|
||||
UnityEngine.Debug.LogErrorFormat("WwiseUnity: Could not find '{0}', required for building plugin.", fullPath);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (AssetPath.EndsWith("Factory.h"))
|
||||
{
|
||||
FactoriesHeaderFilenames.Add(Path.GetFileName(AssetPath));
|
||||
}
|
||||
}
|
||||
|
||||
private void TryWriteToFile(AkPlatformPluginActivator config)
|
||||
{
|
||||
System.Text.StringBuilder CppText = new System.Text.StringBuilder(2000);
|
||||
|
||||
string RelativePath = Path.Combine(config.DSPDirectoryPath, config.StaticPluginRegistrationName + ".cpp");
|
||||
CppText.AppendLine("#define " + config.StaticPluginDefine);
|
||||
|
||||
// The purpose of this cpp file is to force the linker to recognize the usage of AK::PluginRegistration global objects
|
||||
// so that the static constructors for these objects are executed when the binary is being loaded in.
|
||||
// However, some platforms (e.g. WebGL) have a really aggressive LTO (link-time optimization) pass that will strip these
|
||||
// symbols even when they are defined as extern here.
|
||||
// To avoid any stripping, we call from C# a native function (AkVerifyPluginRegistration)
|
||||
// that looks at these symbols, forcing the linker to recognize that these symbols are required for proper program execution.
|
||||
|
||||
CppText.AppendLine(@"namespace AK { class PluginRegistration; };");
|
||||
CppText.AppendLine(@"class AkUnityStaticPlugin;");
|
||||
CppText.AppendLine(@"AkUnityStaticPlugin * g_pAkUnityStaticPluginList = nullptr;");
|
||||
CppText.AppendLine(@"class AkUnityStaticPlugin {");
|
||||
CppText.AppendLine("\tpublic:");
|
||||
CppText.AppendLine("\tAkUnityStaticPlugin(AK::PluginRegistration* pReg) : m_pNext(g_pAkUnityStaticPluginList), m_pReg(pReg) { g_pAkUnityStaticPluginList = this; }");
|
||||
CppText.AppendLine("\tAkUnityStaticPlugin *m_pNext;");
|
||||
CppText.AppendLine("\tAK::PluginRegistration * m_pReg;");
|
||||
CppText.AppendLine(@"};");
|
||||
|
||||
CppText.AppendLine(@"#define AK_STATIC_LINK_PLUGIN(_pluginName_) \");
|
||||
CppText.AppendLine(@"extern AK::PluginRegistration _pluginName_##Registration; \");
|
||||
CppText.AppendLine(@"AkUnityStaticPlugin _pluginName_##UnityStaticPlugin(&_pluginName_##Registration);");
|
||||
|
||||
foreach (var filename in FactoriesHeaderFilenames)
|
||||
{
|
||||
CppText.AppendLine("#include \"" + filename + "\"");
|
||||
}
|
||||
CppText.AppendLine("extern \"C\" {");
|
||||
CppText.AppendLine("\t__attribute__ ((visibility(\"default\"))) bool AkVerifyPluginRegistration() {");
|
||||
CppText.AppendLine("\t\tbool bReg = true;");
|
||||
CppText.AppendLine("\t\tAkUnityStaticPlugin * pNext = g_pAkUnityStaticPluginList;");
|
||||
CppText.AppendLine("\t\twhile (pNext != nullptr) { bReg = bReg && pNext->m_pReg != nullptr; pNext = pNext->m_pNext; }");
|
||||
CppText.AppendLine("\t\treturn bReg;");
|
||||
CppText.AppendLine("\t}");
|
||||
CppText.AppendLine("}");
|
||||
|
||||
try
|
||||
{
|
||||
var FullPath = Path.GetFullPath(AkUtilities.GetPathInPackage(Path.Combine(AkPluginActivatorConstants.WwisePluginFolder, RelativePath)));
|
||||
File.WriteAllText(FullPath, CppText.ToString());
|
||||
}
|
||||
catch (System.Exception e)
|
||||
{
|
||||
UnityEngine.Debug.LogError("WwiseUnity: Could not write <" + RelativePath + ">. Exception: " + e.Message);
|
||||
return;
|
||||
}
|
||||
|
||||
UnityEditor.AssetDatabase.Refresh();
|
||||
}
|
||||
|
||||
private System.Collections.Generic.List<string> GetMissingPlugins(System.Collections.Generic.HashSet<AkPluginInfo> usedPlugins)
|
||||
{
|
||||
var pluginList = new System.Collections.Generic.List<string>();
|
||||
if (usedPlugins == null)
|
||||
return pluginList;
|
||||
|
||||
foreach (var plugin in usedPlugins)
|
||||
{
|
||||
if (string.IsNullOrEmpty(plugin.StaticLibName))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
string includeFilename = plugin.StaticLibName + "Factory.h";
|
||||
if (!FactoriesHeaderFilenames.Contains(includeFilename))
|
||||
{
|
||||
pluginList.Add(plugin.StaticLibName);
|
||||
}
|
||||
}
|
||||
|
||||
return pluginList;
|
||||
}
|
||||
}
|
||||
#endif
|
@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b3b33d9af0ce9d2499e4953cb95ffb8b
|
@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c08341a32ec8b884d8103e4672151d80
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,58 +0,0 @@
|
||||
/*******************************************************************************
|
||||
The content of this file includes portions of the proprietary AUDIOKINETIC Wwise
|
||||
Technology released in source code form as part of the game integration package.
|
||||
The content of this file may not be used without valid licenses to the
|
||||
AUDIOKINETIC Wwise Technology.
|
||||
Note that the use of the game engine is subject to the Unity(R) Terms of
|
||||
Service at https://unity3d.com/legal/terms-of-service
|
||||
|
||||
License Usage
|
||||
|
||||
Licensees holding valid licenses to the AUDIOKINETIC Wwise Technology may use
|
||||
this file in accordance with the end user license agreement provided with the
|
||||
software or, alternatively, in accordance with the terms contained
|
||||
in a written agreement between you and Audiokinetic Inc.
|
||||
Copyright (c) 2025 Audiokinetic Inc.
|
||||
*******************************************************************************/
|
||||
|
||||
#if UNITY_EDITOR
|
||||
using UnityEditor;
|
||||
|
||||
[UnityEditor.InitializeOnLoad]
|
||||
public class AkMacPluginActivator : AkPlatformPluginActivator
|
||||
{
|
||||
public override string WwisePlatformName => "Mac";
|
||||
public override string PluginDirectoryName => "Mac";
|
||||
|
||||
static AkMacPluginActivator()
|
||||
{
|
||||
if (UnityEditor.AssetDatabase.IsAssetImportWorkerProcess())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
AkPluginActivator.RegisterPlatformPluginActivator(BuildTarget.StandaloneOSX, new AkMacPluginActivator());
|
||||
}
|
||||
|
||||
private const int CONFIG_INDEX = 1;
|
||||
public override AkPluginActivator.PluginImporterInformation GetPluginImporterInformation(PluginImporter pluginImporter)
|
||||
{
|
||||
return new AkPluginActivator.PluginImporterInformation
|
||||
{
|
||||
PluginConfig = GetPluginPathParts(pluginImporter.assetPath)[CONFIG_INDEX],
|
||||
|
||||
EditorOS = "OSX",
|
||||
EditorCPU = "AnyCPU"
|
||||
};
|
||||
}
|
||||
|
||||
internal override bool ConfigurePlugin(PluginImporter pluginImporter, AkPluginActivator.PluginImporterInformation pluginImporterInformation)
|
||||
{
|
||||
pluginImporter.SetPlatformData(BuildTarget.StandaloneLinux64, "CPU", "None");
|
||||
pluginImporter.SetPlatformData(BuildTarget.StandaloneWindows, "CPU", "None");
|
||||
pluginImporter.SetPlatformData(BuildTarget.StandaloneWindows64, "CPU", "None");
|
||||
pluginImporter.SetPlatformData(BuildTarget.StandaloneOSX, "CPU", "AnyCPU");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
#endif
|
@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8f5d4393483f6c541b0a40c5affcdf10
|
@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 89759db542964994e8e7a7233081ea36
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,72 +0,0 @@
|
||||
/*******************************************************************************
|
||||
The content of this file includes portions of the proprietary AUDIOKINETIC Wwise
|
||||
Technology released in source code form as part of the game integration package.
|
||||
The content of this file may not be used without valid licenses to the
|
||||
AUDIOKINETIC Wwise Technology.
|
||||
Note that the use of the game engine is subject to the Unity(R) Terms of
|
||||
Service at https://unity3d.com/legal/terms-of-service
|
||||
|
||||
License Usage
|
||||
|
||||
Licensees holding valid licenses to the AUDIOKINETIC Wwise Technology may use
|
||||
this file in accordance with the end user license agreement provided with the
|
||||
software or, alternatively, in accordance with the terms contained
|
||||
in a written agreement between you and Audiokinetic Inc.
|
||||
Copyright (c) 2025 Audiokinetic Inc.
|
||||
*******************************************************************************/
|
||||
|
||||
#if UNITY_EDITOR
|
||||
using UnityEditor;
|
||||
|
||||
[UnityEditor.InitializeOnLoad]
|
||||
public class AkWindowsPluginActivator : AkPlatformPluginActivator
|
||||
{
|
||||
public override string WwisePlatformName => "Windows";
|
||||
public override string PluginDirectoryName => "Windows";
|
||||
|
||||
|
||||
|
||||
static AkWindowsPluginActivator()
|
||||
{
|
||||
if (UnityEditor.AssetDatabase.IsAssetImportWorkerProcess())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
AkPluginActivator.RegisterPlatformPluginActivator(BuildTarget.StandaloneWindows, new AkWindowsPluginActivator());
|
||||
AkPluginActivator.RegisterPlatformPluginActivator(BuildTarget.StandaloneWindows64, new AkWindowsPluginActivator());
|
||||
}
|
||||
|
||||
private const int ARCH_INDEX = 1;
|
||||
private const int CONFIG_INDEX = 2;
|
||||
|
||||
private const int EDITOR_CPU_INDEX = 1;
|
||||
public override AkPluginActivator.PluginImporterInformation GetPluginImporterInformation(PluginImporter pluginImporter)
|
||||
{
|
||||
var parts = GetPluginPathParts(pluginImporter.assetPath);
|
||||
return new AkPluginActivator.PluginImporterInformation
|
||||
{
|
||||
PluginConfig = parts[CONFIG_INDEX],
|
||||
PluginArch = parts[ARCH_INDEX],
|
||||
|
||||
EditorOS = "Windows",
|
||||
EditorCPU = parts[EDITOR_CPU_INDEX]
|
||||
};
|
||||
}
|
||||
|
||||
internal override bool ConfigurePlugin(PluginImporter pluginImporter, AkPluginActivator.PluginImporterInformation pluginImporterInformation)
|
||||
{
|
||||
if (pluginImporterInformation.PluginArch != "x86" && pluginImporterInformation.PluginArch != "x86_64")
|
||||
{
|
||||
UnityEngine.Debug.Log("WwiseUnity: Architecture not found: " + pluginImporterInformation.PluginArch);
|
||||
return false;
|
||||
}
|
||||
|
||||
pluginImporter.SetPlatformData(BuildTarget.StandaloneLinux64, "CPU", "None");
|
||||
pluginImporter.SetPlatformData(BuildTarget.StandaloneWindows, "CPU", pluginImporterInformation.IsX86 ? "AnyCPU" : "None");
|
||||
pluginImporter.SetPlatformData(BuildTarget.StandaloneWindows64, "CPU", pluginImporterInformation.IsX64 ? "AnyCPU" : "None");
|
||||
pluginImporter.SetPlatformData(BuildTarget.StandaloneOSX, "CPU", "None");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
#endif
|
@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 645f82fe998a7744ebaf993e86a6fff8
|
@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8a3cccc549ac48a40875724e7a9eba9e
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a35f25ba992fd3242bf12837d045f84f
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,145 +0,0 @@
|
||||
/*******************************************************************************
|
||||
The content of this file includes portions of the proprietary AUDIOKINETIC Wwise
|
||||
Technology released in source code form as part of the game integration package.
|
||||
The content of this file may not be used without valid licenses to the
|
||||
AUDIOKINETIC Wwise Technology.
|
||||
Note that the use of the game engine is subject to the Unity(R) Terms of
|
||||
Service at https://unity3d.com/legal/terms-of-service
|
||||
|
||||
License Usage
|
||||
|
||||
Licensees holding valid licenses to the AUDIOKINETIC Wwise Technology may use
|
||||
this file in accordance with the end user license agreement provided with the
|
||||
software or, alternatively, in accordance with the terms contained
|
||||
in a written agreement between you and Audiokinetic Inc.
|
||||
Copyright (c) 2025 Audiokinetic Inc.
|
||||
*******************************************************************************/
|
||||
|
||||
#if UNITY_EDITOR
|
||||
|
||||
public class AkUnityIntegrationBuilderBase
|
||||
{
|
||||
private readonly string m_progTitle = "WwiseUnity: Rebuilding Unity Integration Progress";
|
||||
protected string m_assetsDir = "Undefined";
|
||||
protected string m_assetsPluginsDir = "Undefined";
|
||||
protected string m_buildScriptDir = "Undefined";
|
||||
protected string m_buildScriptFile = "Undefined";
|
||||
protected string m_platform = "Undefined";
|
||||
protected string m_shell = "python";
|
||||
protected string m_wwiseSdkDir = "";
|
||||
|
||||
public AkUnityIntegrationBuilderBase()
|
||||
{
|
||||
var unityProjectRoot = System.IO.Directory.GetCurrentDirectory();
|
||||
m_assetsDir = System.IO.Path.Combine(unityProjectRoot, "Assets");
|
||||
m_assetsPluginsDir = System.IO.Path.Combine(m_assetsDir, "Plugins");
|
||||
m_buildScriptDir =
|
||||
System.IO.Path.Combine(System.IO.Path.Combine(System.IO.Path.Combine(m_assetsDir, "Wwise"), "AkUnitySoundEngine"),
|
||||
"Common");
|
||||
m_buildScriptFile = "BuildWwiseUnityIntegration.py";
|
||||
}
|
||||
|
||||
public void BuildByConfig(string config, string arch)
|
||||
{
|
||||
if (UnityEditor.EditorApplication.isPlaying)
|
||||
{
|
||||
UnityEngine.Debug.LogWarning("WwiseUnity: Editor is in play mode. Stop playing any scenes and retry. Aborted.");
|
||||
return;
|
||||
}
|
||||
|
||||
// Try to parse config to get Wwise location.
|
||||
var configPath = System.IO.Path.Combine(m_buildScriptDir, "BuildWwiseUnityIntegration.json");
|
||||
var fi = new System.IO.FileInfo(configPath);
|
||||
if (fi.Exists)
|
||||
{
|
||||
var msg = string.Format("WwiseUnity: Found preference file: {0}. Use build variables defined in it.", configPath);
|
||||
UnityEngine.Debug.Log(msg);
|
||||
}
|
||||
else
|
||||
{
|
||||
var msg = string.Format("WwiseUnity: Preference file: {0} is unavailable. Need user input.", configPath);
|
||||
UnityEngine.Debug.Log(msg);
|
||||
|
||||
m_wwiseSdkDir = UnityEditor.EditorUtility.OpenFolderPanel("Choose Wwise SDK folder", ".", "");
|
||||
|
||||
var isUserCancelledBuild = m_wwiseSdkDir == "";
|
||||
if (isUserCancelledBuild)
|
||||
{
|
||||
UnityEngine.Debug.Log("WwiseUnity: User cancelled the build.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (!PreBuild())
|
||||
return;
|
||||
|
||||
// On Windows, separate shell console window will open. When building is done, close the Window yourself if it stays active. Usually at the end you will see the last line says "Build succeeded" or "Build failed".
|
||||
var progMsg = string.Format("WwiseUnity: Rebuilding Wwise Unity Integration for {0} ({1}) ...", m_platform, config);
|
||||
UnityEngine.Debug.Log(progMsg);
|
||||
|
||||
var start = new System.Diagnostics.ProcessStartInfo();
|
||||
start.FileName = m_shell;
|
||||
|
||||
start.Arguments = GetProcessArgs(config, arch);
|
||||
if (start.Arguments == "")
|
||||
return;
|
||||
start.UseShellExecute = false;
|
||||
start.RedirectStandardOutput = true;
|
||||
|
||||
UnityEditor.EditorUtility.DisplayProgressBar(m_progTitle, progMsg, 0.5f);
|
||||
|
||||
using (var process = System.Diagnostics.Process.Start(start))
|
||||
{
|
||||
using (var reader = process.StandardOutput)
|
||||
{
|
||||
process.WaitForExit();
|
||||
|
||||
try
|
||||
{
|
||||
//ExitCode throws InvalidOperationException if the process is hanging
|
||||
|
||||
var isBuildSucceeded = process.ExitCode == 0;
|
||||
if (isBuildSucceeded)
|
||||
{
|
||||
UnityEditor.EditorUtility.DisplayProgressBar(m_progTitle, progMsg, 1.0f);
|
||||
UnityEngine.Debug.Log("WwiseUnity: Build succeeded. Check detailed logs under the Logs folder.");
|
||||
}
|
||||
else
|
||||
UnityEngine.Debug.LogError("WwiseUnity: Build failed. Check detailed logs under the Logs folder.");
|
||||
|
||||
UnityEditor.AssetDatabase.Refresh();
|
||||
|
||||
UnityEditor.EditorUtility.ClearProgressBar();
|
||||
}
|
||||
catch (System.Exception ex)
|
||||
{
|
||||
UnityEditor.AssetDatabase.Refresh();
|
||||
|
||||
UnityEngine.Debug.LogError(string.Format(
|
||||
"WwiseUnity: Build process failed with exception: {}. Check detailed logs under the Logs folder.", ex));
|
||||
UnityEditor.EditorUtility.ClearProgressBar();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual string GetProcessArgs(string config, string arch)
|
||||
{
|
||||
var scriptPath = System.IO.Path.Combine(m_buildScriptDir, m_buildScriptFile);
|
||||
var args = string.Format("\"{0}\" -p {1} -c {2}", scriptPath, m_platform, config);
|
||||
if (arch != null)
|
||||
args += string.Format(" -a {0}", arch);
|
||||
|
||||
if (m_wwiseSdkDir != "")
|
||||
args += string.Format(" -w \"{0}\" -u", m_wwiseSdkDir);
|
||||
|
||||
return args;
|
||||
}
|
||||
|
||||
protected virtual bool PreBuild()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
#endif // #if UNITY_EDITOR
|
@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2e368d65ed67d084fa74c77a8f268628
|
@ -1,402 +0,0 @@
|
||||
/*******************************************************************************
|
||||
The content of this file includes portions of the proprietary AUDIOKINETIC Wwise
|
||||
Technology released in source code form as part of the game integration package.
|
||||
The content of this file may not be used without valid licenses to the
|
||||
AUDIOKINETIC Wwise Technology.
|
||||
Note that the use of the game engine is subject to the Unity(R) Terms of
|
||||
Service at https://unity3d.com/legal/terms-of-service
|
||||
|
||||
License Usage
|
||||
|
||||
Licensees holding valid licenses to the AUDIOKINETIC Wwise Technology may use
|
||||
this file in accordance with the end user license agreement provided with the
|
||||
software or, alternatively, in accordance with the terms contained
|
||||
in a written agreement between you and Audiokinetic Inc.
|
||||
Copyright (c) 2025 Audiokinetic Inc.
|
||||
*******************************************************************************/
|
||||
|
||||
#if UNITY_EDITOR
|
||||
public class AkUnityAssetsInstaller
|
||||
{
|
||||
public string[] m_arches = { };
|
||||
protected string m_assetsDir = UnityEngine.Application.dataPath;
|
||||
protected System.Collections.Generic.List<string> m_excludes = new System.Collections.Generic.List<string> { ".meta" };
|
||||
protected string m_platform = "Undefined";
|
||||
protected string m_pluginDir = System.IO.Path.Combine(UnityEngine.Application.dataPath, "Plugins");
|
||||
|
||||
// Copy file to destination directory and create the directory when none exists.
|
||||
public static bool CopyFileToDirectory(string srcFilePath, string destDir)
|
||||
{
|
||||
var fi = new System.IO.FileInfo(srcFilePath);
|
||||
if (!fi.Exists)
|
||||
{
|
||||
UnityEngine.Debug.LogError(string.Format("WwiseUnity: Failed to copy. Source is missing: {0}.", srcFilePath));
|
||||
return false;
|
||||
}
|
||||
|
||||
var di = new System.IO.DirectoryInfo(destDir);
|
||||
|
||||
if (!di.Exists)
|
||||
di.Create();
|
||||
|
||||
const bool IsToOverwrite = true;
|
||||
try
|
||||
{
|
||||
fi.CopyTo(System.IO.Path.Combine(di.FullName, fi.Name), IsToOverwrite);
|
||||
}
|
||||
catch (System.Exception ex)
|
||||
{
|
||||
UnityEngine.Debug.LogError(string.Format("WwiseUnity: Error during installation: {0}.", ex.Message));
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// Copy or overwrite destination file with source file.
|
||||
public static bool OverwriteFile(string srcFilePath, string destFilePath)
|
||||
{
|
||||
var fi = new System.IO.FileInfo(srcFilePath);
|
||||
if (!fi.Exists)
|
||||
{
|
||||
UnityEngine.Debug.LogError(string.Format("WwiseUnity: Failed to overwrite. Source is missing: {0}.", srcFilePath));
|
||||
return false;
|
||||
}
|
||||
|
||||
var di = new System.IO.DirectoryInfo(System.IO.Path.GetDirectoryName(destFilePath));
|
||||
|
||||
if (!di.Exists)
|
||||
di.Create();
|
||||
|
||||
const bool IsToOverwrite = true;
|
||||
try
|
||||
{
|
||||
fi.CopyTo(destFilePath, IsToOverwrite);
|
||||
}
|
||||
catch (System.Exception ex)
|
||||
{
|
||||
UnityEngine.Debug.LogError(string.Format("WwiseUnity: Error during installation: {0}.", ex.Message));
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// Move file to destination directory and create the directory when none exists.
|
||||
public static void MoveFileToDirectory(string srcFilePath, string destDir)
|
||||
{
|
||||
var fi = new System.IO.FileInfo(srcFilePath);
|
||||
if (!fi.Exists)
|
||||
{
|
||||
UnityEngine.Debug.LogError(string.Format("WwiseUnity: Failed to move. Source is missing: {0}.", srcFilePath));
|
||||
return;
|
||||
}
|
||||
|
||||
var di = new System.IO.DirectoryInfo(destDir);
|
||||
|
||||
if (!di.Exists)
|
||||
di.Create();
|
||||
|
||||
var destFilePath = System.IO.Path.Combine(di.FullName, fi.Name);
|
||||
try
|
||||
{
|
||||
fi.MoveTo(destFilePath);
|
||||
}
|
||||
catch (System.Exception ex)
|
||||
{
|
||||
UnityEngine.Debug.LogError(string.Format("WwiseUnity: Error during installation: {0}.", ex.Message));
|
||||
}
|
||||
}
|
||||
|
||||
// Recursively copy a directory to its destination.
|
||||
public static bool RecursiveCopyDirectory(System.IO.DirectoryInfo srcDir, System.IO.DirectoryInfo destDir,
|
||||
System.Collections.Generic.List<string> excludeExtensions = null)
|
||||
{
|
||||
if (!srcDir.Exists)
|
||||
{
|
||||
UnityEngine.Debug.LogError(string.Format("WwiseUnity: Failed to copy. Source is missing: {0}.", srcDir));
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!destDir.Exists)
|
||||
destDir.Create();
|
||||
|
||||
// Copy all files.
|
||||
var files = srcDir.GetFiles();
|
||||
foreach (var file in files)
|
||||
{
|
||||
if (excludeExtensions != null)
|
||||
{
|
||||
var fileExt = System.IO.Path.GetExtension(file.Name);
|
||||
var isFileExcluded = false;
|
||||
foreach (var ext in excludeExtensions)
|
||||
{
|
||||
if (fileExt.ToLower() == ext)
|
||||
{
|
||||
isFileExcluded = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (isFileExcluded)
|
||||
continue;
|
||||
}
|
||||
|
||||
const bool IsToOverwrite = true;
|
||||
try
|
||||
{
|
||||
file.CopyTo(System.IO.Path.Combine(destDir.FullName, file.Name), IsToOverwrite);
|
||||
}
|
||||
catch (System.Exception ex)
|
||||
{
|
||||
UnityEngine.Debug.LogError(string.Format("WwiseUnity: Error during installation: {0}.", ex.Message));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Process subdirectories.
|
||||
var dirs = srcDir.GetDirectories();
|
||||
foreach (var dir in dirs)
|
||||
{
|
||||
// Get destination directory.
|
||||
var destFullPath = System.IO.Path.Combine(destDir.FullName, dir.Name);
|
||||
|
||||
// Recurse
|
||||
var isSuccess = RecursiveCopyDirectory(dir, new System.IO.DirectoryInfo(destFullPath), excludeExtensions);
|
||||
if (!isSuccess)
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public class AkUnityPluginInstallerBase : AkUnityAssetsInstaller
|
||||
{
|
||||
private readonly string m_progTitle = "WwiseUnity: Plugin Installation Progress";
|
||||
|
||||
public bool InstallPluginByConfig(string config)
|
||||
{
|
||||
var pluginSrc = GetPluginSrcPathByConfig(config);
|
||||
var pluginDest = GetPluginDestPath("");
|
||||
|
||||
var progMsg = string.Format("Installing plugin for {0} ({1}) from {2} to {3}.", m_platform, config, pluginSrc,
|
||||
pluginDest);
|
||||
UnityEditor.EditorUtility.DisplayProgressBar(m_progTitle, progMsg, 0.5f);
|
||||
|
||||
var isSuccess = RecursiveCopyDirectory(new System.IO.DirectoryInfo(pluginSrc),
|
||||
new System.IO.DirectoryInfo(pluginDest), m_excludes);
|
||||
if (!isSuccess)
|
||||
{
|
||||
UnityEngine.Debug.LogError(string.Format("WwiseUnity: Failed to install plugin for {0} ({1}) from {2} to {3}.",
|
||||
m_platform, config, pluginSrc, pluginDest));
|
||||
UnityEditor.EditorUtility.ClearProgressBar();
|
||||
return false;
|
||||
}
|
||||
|
||||
UnityEditor.EditorUtility.DisplayProgressBar(m_progTitle, progMsg, 1.0f);
|
||||
UnityEditor.AssetDatabase.Refresh();
|
||||
|
||||
UnityEditor.EditorUtility.ClearProgressBar();
|
||||
UnityEngine.Debug.Log(string.Format("WwiseUnity: Plugin for {0} {1} installed from {2} to {3}.", m_platform, config,
|
||||
pluginSrc, pluginDest));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public virtual bool InstallPluginByArchConfig(string arch, string config)
|
||||
{
|
||||
var pluginSrc = GetPluginSrcPathByArchConfig(arch, config);
|
||||
var pluginDest = GetPluginDestPath(arch);
|
||||
|
||||
var progMsg = string.Format("Installing plugin for {0} ({1}, {2}) from {3} to {4}.", m_platform, arch, config,
|
||||
pluginSrc, pluginDest);
|
||||
UnityEditor.EditorUtility.DisplayProgressBar(m_progTitle, progMsg, 0.5f);
|
||||
|
||||
var isSuccess = RecursiveCopyDirectory(new System.IO.DirectoryInfo(pluginSrc),
|
||||
new System.IO.DirectoryInfo(pluginDest), m_excludes);
|
||||
if (!isSuccess)
|
||||
{
|
||||
UnityEngine.Debug.LogError(string.Format("WwiseUnity: Failed to install plugin for {0} ({1}, {2}) from {3} to {4}.",
|
||||
m_platform, arch, config, pluginSrc, pluginDest));
|
||||
UnityEditor.EditorUtility.ClearProgressBar();
|
||||
return false;
|
||||
}
|
||||
|
||||
UnityEditor.EditorUtility.DisplayProgressBar(m_progTitle, progMsg, 1.0f);
|
||||
UnityEditor.AssetDatabase.Refresh();
|
||||
|
||||
UnityEditor.EditorUtility.ClearProgressBar();
|
||||
UnityEngine.Debug.Log(string.Format("WwiseUnity: Plugin for {0} {1} {2} installed from {3} to {4}.", m_platform, arch,
|
||||
config, pluginSrc, pluginDest));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
protected string GetPluginSrcPathByConfig(string config)
|
||||
{
|
||||
return System.IO.Path.Combine(
|
||||
System.IO.Path.Combine(
|
||||
System.IO.Path.Combine(System.IO.Path.Combine(System.IO.Path.Combine(m_assetsDir, "Wwise"), "API", "Runtime"),
|
||||
"Plugins"), m_platform), config);
|
||||
}
|
||||
|
||||
protected string GetPluginSrcPathByArchConfig(string arch, string config)
|
||||
{
|
||||
return System.IO.Path.Combine(
|
||||
System.IO.Path.Combine(
|
||||
System.IO.Path.Combine(
|
||||
System.IO.Path.Combine(System.IO.Path.Combine(System.IO.Path.Combine(m_assetsDir, "Wwise"), "API", "Runtime"),
|
||||
"Plugins"), m_platform), arch), config);
|
||||
}
|
||||
|
||||
protected virtual string GetPluginDestPath(string arch)
|
||||
{
|
||||
return m_pluginDir;
|
||||
}
|
||||
}
|
||||
|
||||
public class AkUnityPluginInstallerMultiArchBase : AkUnityPluginInstallerBase
|
||||
{
|
||||
protected override string GetPluginDestPath(string arch)
|
||||
{
|
||||
return System.IO.Path.Combine(System.IO.Path.Combine(m_pluginDir, m_platform), arch);
|
||||
}
|
||||
}
|
||||
|
||||
public class AkDocHelper
|
||||
{
|
||||
private static string m_WwiseVersionString = string.Empty;
|
||||
|
||||
public static void OpenDoc(string platform)
|
||||
{
|
||||
if (m_WwiseVersionString == string.Empty)
|
||||
{
|
||||
var temp = AkUnitySoundEngine.GetMajorMinorVersion();
|
||||
var temp2 = AkUnitySoundEngine.GetSubminorBuildVersion();
|
||||
m_WwiseVersionString = (temp >> 16) + "." + (temp & 0xFFFF);
|
||||
if (temp2 >> 16 != 0)
|
||||
m_WwiseVersionString += "." + (temp2 >> 16);
|
||||
|
||||
m_WwiseVersionString += "_" + (temp2 & 0xFFFF);
|
||||
}
|
||||
|
||||
var docUrl = "http://www.audiokinetic.com/library/" + m_WwiseVersionString + "/?source=Unity&id=index.html";
|
||||
var isConnected = false;
|
||||
try
|
||||
{
|
||||
var request = (System.Net.HttpWebRequest) System.Net.WebRequest.Create("http://www.audiokinetic.com/robots.txt");
|
||||
request.Timeout = 1000;
|
||||
request.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
|
||||
var response = (System.Net.HttpWebResponse) request.GetResponse();
|
||||
|
||||
isConnected = response.StatusCode == System.Net.HttpStatusCode.OK;
|
||||
}
|
||||
catch (System.Exception)
|
||||
{
|
||||
isConnected = false;
|
||||
}
|
||||
|
||||
if (!isConnected)
|
||||
{
|
||||
// Can't access audiokinetic.com, open local doc.
|
||||
docUrl = GetLocalDocUrl(platform);
|
||||
if (string.IsNullOrEmpty(docUrl))
|
||||
return;
|
||||
}
|
||||
|
||||
UnityEngine.Application.OpenURL(docUrl);
|
||||
}
|
||||
|
||||
private static string GetLocalDocUrl(string platform)
|
||||
{
|
||||
var docUrl = string.Empty;
|
||||
var docPath = string.Empty;
|
||||
var dataPath = UnityEngine.Application.dataPath;
|
||||
|
||||
#if UNITY_EDITOR_WIN
|
||||
var format = (platform == "Windows")
|
||||
? "{0}/Wwise/Documentation/{1}/en/WwiseUnityIntegrationHelp_en.chm"
|
||||
: "{0}/Wwise/Documentation/{1}/en/WwiseUnityIntegrationHelp_{1}_en.chm";
|
||||
|
||||
docPath = string.Format(format, dataPath, platform);
|
||||
#else
|
||||
string DestPath = AkUtilities.GetFullPath(dataPath, "../WwiseUnityIntegrationHelp_en");
|
||||
docPath = string.Format ("{0}/html/index.html", DestPath);
|
||||
if (!System.IO.File.Exists(docPath))
|
||||
UnzipHelp(DestPath);
|
||||
|
||||
if (!System.IO.File.Exists(docPath))
|
||||
{
|
||||
UnityEngine.Debug.Log("WwiseUnity: Unable to show documentation. Please unzip WwiseUnityIntegrationHelp_AppleCommon_en.zip manually.");
|
||||
return string.Empty;
|
||||
}
|
||||
#endif
|
||||
|
||||
var fi = new System.IO.FileInfo(docPath);
|
||||
if (!fi.Exists)
|
||||
{
|
||||
UnityEngine.Debug.LogError(string.Format("WwiseUnity: Failed to find documentation: {0}. Aborted.", docPath));
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
docUrl = string.Format("file:///{0}", docPath.Replace(" ", "%20"));
|
||||
|
||||
return docUrl;
|
||||
}
|
||||
|
||||
public static void UnzipHelp(string DestPath)
|
||||
{
|
||||
// Start by extracting the zip, if it exists
|
||||
var ZipPath = System.IO.Path.Combine(
|
||||
System.IO.Path.Combine(
|
||||
System.IO.Path.Combine(
|
||||
System.IO.Path.Combine(System.IO.Path.Combine(UnityEngine.Application.dataPath, "Wwise"), "Documentation"),
|
||||
"AppleCommon"), "en"), "WwiseUnityIntegrationHelp_en.zip");
|
||||
|
||||
if (System.IO.File.Exists(ZipPath))
|
||||
{
|
||||
var start = new System.Diagnostics.ProcessStartInfo();
|
||||
start.FileName = "unzip";
|
||||
|
||||
start.Arguments = "\"" + ZipPath + "\" -d \"" + DestPath + "\"";
|
||||
|
||||
start.UseShellExecute = true;
|
||||
start.RedirectStandardOutput = false;
|
||||
|
||||
var progMsg = "WwiseUnity: Unzipping documentation...";
|
||||
var progTitle = "Unzipping Wwise documentation";
|
||||
UnityEditor.EditorUtility.DisplayProgressBar(progTitle, progMsg, 0.5f);
|
||||
|
||||
using (var process = System.Diagnostics.Process.Start(start))
|
||||
{
|
||||
while (!process.WaitForExit(1000))
|
||||
System.Threading.Thread.Sleep(100);
|
||||
try
|
||||
{
|
||||
//ExitCode throws InvalidOperationException if the process is hanging
|
||||
var returnCode = process.ExitCode;
|
||||
|
||||
var isBuildSucceeded = returnCode == 0;
|
||||
if (isBuildSucceeded)
|
||||
{
|
||||
UnityEditor.EditorUtility.DisplayProgressBar(progTitle, progMsg, 1.0f);
|
||||
UnityEngine.Debug.Log("WwiseUnity: Documentation extraction succeeded. ");
|
||||
}
|
||||
else
|
||||
UnityEngine.Debug.LogError("WwiseUnity: Extraction failed.");
|
||||
|
||||
UnityEditor.EditorUtility.ClearProgressBar();
|
||||
}
|
||||
catch (System.Exception ex)
|
||||
{
|
||||
UnityEditor.EditorUtility.ClearProgressBar();
|
||||
UnityEngine.Debug.LogError(ex.ToString());
|
||||
UnityEditor.EditorUtility.ClearProgressBar();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif // #if UNITY_EDITOR
|
@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 15ef5eecd26fe6146b722aaeaaa71802
|
@ -1,80 +0,0 @@
|
||||
/*******************************************************************************
|
||||
The content of this file includes portions of the proprietary AUDIOKINETIC Wwise
|
||||
Technology released in source code form as part of the game integration package.
|
||||
The content of this file may not be used without valid licenses to the
|
||||
AUDIOKINETIC Wwise Technology.
|
||||
Note that the use of the game engine is subject to the Unity(R) Terms of
|
||||
Service at https://unity3d.com/legal/terms-of-service
|
||||
|
||||
License Usage
|
||||
|
||||
Licensees holding valid licenses to the AUDIOKINETIC Wwise Technology may use
|
||||
this file in accordance with the end user license agreement provided with the
|
||||
software or, alternatively, in accordance with the terms contained
|
||||
in a written agreement between you and Audiokinetic Inc.
|
||||
Copyright (c) 2025 Audiokinetic Inc.
|
||||
*******************************************************************************/
|
||||
|
||||
#if UNITY_EDITOR
|
||||
internal static class AkWwiseIDConverter
|
||||
{
|
||||
private static readonly string s_bankDir = UnityEngine.Application.dataPath;
|
||||
|
||||
private static readonly string s_converterScript = System.IO.Path.Combine(
|
||||
System.IO.Path.Combine(System.IO.Path.Combine(UnityEngine.Application.dataPath, "Wwise"), "Tools"),
|
||||
"WwiseIDConverter.py");
|
||||
|
||||
private static readonly string s_progTitle = "WwiseUnity: Converting SoundBank IDs";
|
||||
|
||||
[UnityEditor.MenuItem("Assets/Wwise/Convert Wwise SoundBank IDs", false, (int) AkWwiseMenuOrder.ConvertIDs)]
|
||||
public static void ConvertWwiseSoundBankIDs()
|
||||
{
|
||||
var bankIdHeaderPath =
|
||||
UnityEditor.EditorUtility.OpenFilePanel("Choose Wwise SoundBank ID C++ header", s_bankDir, "h");
|
||||
if (string.IsNullOrEmpty(bankIdHeaderPath))
|
||||
{
|
||||
UnityEngine.Debug.Log("WwiseUnity: User canceled the action.");
|
||||
return;
|
||||
}
|
||||
|
||||
var start = new System.Diagnostics.ProcessStartInfo();
|
||||
start.FileName = "python";
|
||||
start.Arguments = string.Format("\"{0}\" \"{1}\"", s_converterScript, bankIdHeaderPath);
|
||||
start.UseShellExecute = false;
|
||||
start.RedirectStandardOutput = true;
|
||||
|
||||
var progMsg = "WwiseUnity: Converting C++ SoundBank IDs into C# ...";
|
||||
UnityEditor.EditorUtility.DisplayProgressBar(s_progTitle, progMsg, 0.5f);
|
||||
|
||||
using (var process = System.Diagnostics.Process.Start(start))
|
||||
{
|
||||
process.WaitForExit();
|
||||
try
|
||||
{
|
||||
//ExitCode throws InvalidOperationException if the process is hanging
|
||||
if (process.ExitCode == 0)
|
||||
{
|
||||
UnityEditor.EditorUtility.DisplayProgressBar(s_progTitle, progMsg, 1.0f);
|
||||
UnityEngine.Debug.Log(string.Format(
|
||||
"WwiseUnity: SoundBank ID conversion succeeded. Find generated Unity script under {0}.", s_bankDir));
|
||||
}
|
||||
else
|
||||
UnityEngine.Debug.LogError("WwiseUnity: Conversion failed.");
|
||||
|
||||
UnityEditor.AssetDatabase.Refresh();
|
||||
}
|
||||
catch (System.Exception ex)
|
||||
{
|
||||
UnityEditor.AssetDatabase.Refresh();
|
||||
|
||||
UnityEditor.EditorUtility.ClearProgressBar();
|
||||
UnityEngine.Debug.LogError(string.Format(
|
||||
"WwiseUnity: SoundBank ID conversion process failed with exception: {}. Check detailed logs under the folder: Assets/Wwise/Logs.",
|
||||
ex));
|
||||
}
|
||||
|
||||
UnityEditor.EditorUtility.ClearProgressBar();
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif // #if UNITY_EDITOR
|
@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bde7747312fd6224799b9cd78aee5de6
|
@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 12d194bd70245be47b8c0022e968293a
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,30 +0,0 @@
|
||||
/*******************************************************************************
|
||||
The content of this file includes portions of the proprietary AUDIOKINETIC Wwise
|
||||
Technology released in source code form as part of the game integration package.
|
||||
The content of this file may not be used without valid licenses to the
|
||||
AUDIOKINETIC Wwise Technology.
|
||||
Note that the use of the game engine is subject to the Unity(R) Terms of
|
||||
Service at https://unity3d.com/legal/terms-of-service
|
||||
|
||||
License Usage
|
||||
|
||||
Licensees holding valid licenses to the AUDIOKINETIC Wwise Technology may use
|
||||
this file in accordance with the end user license agreement provided with the
|
||||
software or, alternatively, in accordance with the terms contained
|
||||
in a written agreement between you and Audiokinetic Inc.
|
||||
Copyright (c) 2025 Audiokinetic Inc.
|
||||
*******************************************************************************/
|
||||
|
||||
#if UNITY_EDITOR
|
||||
public class AkWwiseMenu_Mac
|
||||
{
|
||||
private const string MENU_PATH = "Help/Wwise Help/";
|
||||
private const string Platform = "Mac";
|
||||
|
||||
[UnityEditor.MenuItem(MENU_PATH + Platform, false, (int) AkWwiseHelpOrder.WwiseHelpOrder)]
|
||||
public static void OpenDoc()
|
||||
{
|
||||
AkDocHelper.OpenDoc(Platform);
|
||||
}
|
||||
}
|
||||
#endif // #if UNITY_EDITOR
|
@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 63c37ebda62dbd346ab3ac5552529755
|
@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 93be6545bbe07cc479143071f3bf8d7e
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,30 +0,0 @@
|
||||
/*******************************************************************************
|
||||
The content of this file includes portions of the proprietary AUDIOKINETIC Wwise
|
||||
Technology released in source code form as part of the game integration package.
|
||||
The content of this file may not be used without valid licenses to the
|
||||
AUDIOKINETIC Wwise Technology.
|
||||
Note that the use of the game engine is subject to the Unity(R) Terms of
|
||||
Service at https://unity3d.com/legal/terms-of-service
|
||||
|
||||
License Usage
|
||||
|
||||
Licensees holding valid licenses to the AUDIOKINETIC Wwise Technology may use
|
||||
this file in accordance with the end user license agreement provided with the
|
||||
software or, alternatively, in accordance with the terms contained
|
||||
in a written agreement between you and Audiokinetic Inc.
|
||||
Copyright (c) 2025 Audiokinetic Inc.
|
||||
*******************************************************************************/
|
||||
|
||||
#if UNITY_EDITOR
|
||||
public class AkWwiseMenu_Windows
|
||||
{
|
||||
private const string MENU_PATH = "Help/Wwise Help/";
|
||||
private const string Platform = "Windows";
|
||||
|
||||
[UnityEditor.MenuItem(MENU_PATH + Platform, false, (int) AkWwiseHelpOrder.WwiseHelpOrder)]
|
||||
public static void OpenDoc()
|
||||
{
|
||||
AkDocHelper.OpenDoc(Platform);
|
||||
}
|
||||
}
|
||||
#endif // #if UNITY_EDITOR
|
@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 39ba0bd65bc9c8640bd7e6dfa72f57db
|
@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c2be086ff067bfe458dee407b33ba1f5
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,31 +0,0 @@
|
||||
/*******************************************************************************
|
||||
The content of this file includes portions of the proprietary AUDIOKINETIC Wwise
|
||||
Technology released in source code form as part of the game integration package.
|
||||
The content of this file may not be used without valid licenses to the
|
||||
AUDIOKINETIC Wwise Technology.
|
||||
Note that the use of the game engine is subject to the Unity(R) Terms of
|
||||
Service at https://unity3d.com/legal/terms-of-service
|
||||
|
||||
License Usage
|
||||
|
||||
Licensees holding valid licenses to the AUDIOKINETIC Wwise Technology may use
|
||||
this file in accordance with the end user license agreement provided with the
|
||||
software or, alternatively, in accordance with the terms contained
|
||||
in a written agreement between you and Audiokinetic Inc.
|
||||
Copyright (c) 2025 Audiokinetic Inc.
|
||||
*******************************************************************************/
|
||||
|
||||
namespace AK.Wwise.Editor
|
||||
{
|
||||
[UnityEditor.CustomPropertyDrawer(typeof(AcousticTexture))]
|
||||
public class AcousticTextureDrawer : BaseTypeDrawer
|
||||
{
|
||||
protected override string GetComponentName(UnityEditor.SerializedProperty wwiseObjectReference)
|
||||
{
|
||||
var componentName = base.GetComponentName(wwiseObjectReference);
|
||||
return string.IsNullOrEmpty(componentName) ? "None" : componentName;
|
||||
}
|
||||
|
||||
protected override WwiseObjectType WwiseObjectType { get { return WwiseObjectType.AcousticTexture; } }
|
||||
}
|
||||
}
|
@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 277049f9e5fc8c246b844cc0925fe084
|
@ -1,25 +0,0 @@
|
||||
/*******************************************************************************
|
||||
The content of this file includes portions of the proprietary AUDIOKINETIC Wwise
|
||||
Technology released in source code form as part of the game integration package.
|
||||
The content of this file may not be used without valid licenses to the
|
||||
AUDIOKINETIC Wwise Technology.
|
||||
Note that the use of the game engine is subject to the Unity(R) Terms of
|
||||
Service at https://unity3d.com/legal/terms-of-service
|
||||
|
||||
License Usage
|
||||
|
||||
Licensees holding valid licenses to the AUDIOKINETIC Wwise Technology may use
|
||||
this file in accordance with the end user license agreement provided with the
|
||||
software or, alternatively, in accordance with the terms contained
|
||||
in a written agreement between you and Audiokinetic Inc.
|
||||
Copyright (c) 2025 Audiokinetic Inc.
|
||||
*******************************************************************************/
|
||||
|
||||
namespace AK.Wwise.Editor
|
||||
{
|
||||
[UnityEditor.CustomPropertyDrawer(typeof(AuxBus))]
|
||||
public class AuxBusDrawer : BaseTypeDrawer
|
||||
{
|
||||
protected override WwiseObjectType WwiseObjectType { get { return WwiseObjectType.AuxBus; } }
|
||||
}
|
||||
}
|
@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1f32dd5678e38fa468b5c6956c0b6def
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user