Merge remote-tracking branch 'origin/main'

This commit is contained in:
Florian 2025-06-12 18:11:10 +02:00
commit 856df114f2
969 changed files with 7759 additions and 181715 deletions

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

6
blueberryPeak/.vsconfig Normal file
View File

@ -0,0 +1,6 @@
{
"version": "1.0",
"components": [
"Microsoft.VisualStudio.Workload.ManagedGame"
]
}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 9471daccbab05cc42ba92f8b95430b4c
guid: 99fe7d155e6f54b4d8dd9af5b7d854a2
folderAsset: yes
DefaultImporter:
externalObjects: {}

View 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": []
}

View 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:

View 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

View File

@ -1,8 +1,8 @@
fileFormatVersion: 2
guid: 5ea06692b5e63084d93a698311d20aca
guid: 4b6187e2bbe805f49a24550ecab2983f
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View 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

View File

@ -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

Binary file not shown.

View 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

Binary file not shown.

View 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:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 9febbbf636223404a8c49dcb5a7dcfcd
guid: f0bb2116d0de83349be241ed4a1f6256
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -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}

View File

@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 1c9c4178b20079848a8a074a02173a8a
DefaultImporter:
guid: f5ecddf1014fe7e4f86b7d300efc62b6
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:

View File

@ -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}

View File

@ -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

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 5adadf737c9b7184db1900bc0429e3c4
guid: 69a97310172db8057b8313949b218895
DefaultImporter:
externalObjects: {}
userData:

View File

@ -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

View 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
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 9a881c5714daa538f8fa52539a6fc646

View 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;
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: d4b49c1facb0cd79f9d371c933c683ae

View 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;
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 0cd5165fe60040d5b9a395e0b7286a61

View 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);
}
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 23256d9e6183ca49ab546e357a0a1717

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 80ed8cc17593bbb4eb707a6f2eacf2b1
guid: 28d0e57e7e08d2739b1550947f95eafa
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 74d21d8454f1807488522fa3bddecb4e
guid: a2f38606bb0a47e51a8d2efa48091e63
folderAsset: yes
DefaultImporter:
externalObjects: {}

View 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"
}
]
}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 443f3d1781e1e734ab7c4b3fd84a8c1b
guid: 60bb20fabd0d82a699c11fced68a823e
TextScriptImporter:
externalObjects: {}
userData:

View 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;
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: a504573bd52d6f5dfa9a6c6fd707e406

View 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;
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 178f0835c01b2024b84d3cb3b7c75b17

View 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)!");
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 7092f720acd98807697b6306506e4410

View 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()
{
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 97b2d6a2aaac4ffdbbd8c5ebfc674d24

Binary file not shown.

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 311aae98c3bd2e943a15b320dd052212
guid: 65ee353b8aac5b74294199a4362faad1
TextureImporter:
internalIDToNameTable: []
externalObjects: {}

Binary file not shown.

View File

@ -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

Binary file not shown.

View File

@ -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

Binary file not shown.

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: e96c9e458ebcdc943aa97539d4f59ecd
guid: 8a30a566805820348954c27a68ba748b
TextureImporter:
internalIDToNameTable: []
externalObjects: {}

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: 1371b52db9429d245bd36377dc622f13
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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
}

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: 98897d1ac68099144841035bb82dc516
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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

View File

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: b096639186b0c8e4eae3ffcbfe7ff259

View File

@ -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

View File

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 21328126a8414b64d97fa11e6f9cf439

View File

@ -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

View File

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: e30c7857cb5d04344bd98747ff621ec8

View File

@ -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

View File

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 5db252510a903954bacd43a55c060ea8

View File

@ -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

View File

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: f9929fba59b92884bbe4ed1505320ef5

View File

@ -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

View File

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: bd73e5564a78cc44e83fe4fc48b86157

View File

@ -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

View File

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: b82cac07a468c3f44934e2dd2544d0dd

View File

@ -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

View File

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: b3b33d9af0ce9d2499e4953cb95ffb8b

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: c08341a32ec8b884d8103e4672151d80
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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

View File

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 8f5d4393483f6c541b0a40c5affcdf10

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 89759db542964994e8e7a7233081ea36
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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

View File

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 645f82fe998a7744ebaf993e86a6fff8

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 8a3cccc549ac48a40875724e7a9eba9e
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: a35f25ba992fd3242bf12837d045f84f
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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

View File

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 2e368d65ed67d084fa74c77a8f268628

View File

@ -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

View File

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 15ef5eecd26fe6146b722aaeaaa71802

View File

@ -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

View File

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: bde7747312fd6224799b9cd78aee5de6

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 12d194bd70245be47b8c0022e968293a
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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

View File

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 63c37ebda62dbd346ab3ac5552529755

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 93be6545bbe07cc479143071f3bf8d7e
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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

View File

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 39ba0bd65bc9c8640bd7e6dfa72f57db

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: c2be086ff067bfe458dee407b33ba1f5
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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; } }
}
}

View File

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 277049f9e5fc8c246b844cc0925fe084

View File

@ -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; } }
}
}

View File

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 1f32dd5678e38fa468b5c6956c0b6def

Some files were not shown because too many files have changed in this diff Show More