Steam lobby implemented

This commit is contained in:
Madhav Kapa 2023-06-01 08:03:48 -07:00
parent c7647c8097
commit 49efee80e2
95 changed files with 10258 additions and 6167 deletions

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="UserContentModel">
<attachedFolders />
<explicitIncludes />
<explicitExcludes />
</component>
</project>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RiderProjectSettingsUpdater">
<option name="vcsConfiguration" value="2" />
</component>
</project>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

View File

@ -0,0 +1,195 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AnalysisUIOptions">
<option name="SCOPE_TYPE" value="8" />
<option name="CUSTOM_SCOPE_NAME" value="Project Files" />
</component>
<component name="AutoImportSettings">
<option name="autoReloadType" value="SELECTIVE" />
</component>
<component name="ChangeListManager">
<list default="true" id="8e9b3697-c9b4-441a-aeed-4ea7b4488600" name="Changes" comment="">
<change beforePath="$PROJECT_DIR$/Assets/Adobe/Substance3DForUnity/Editor/Adobe.Substance.Editor.asmdef" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Adobe/Substance3DForUnity/Editor/Adobe.Substance.Editor.asmdef" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Adobe/Substance3DForUnity/Runtime/Adobe.Substance.asmdef" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Adobe/Substance3DForUnity/Runtime/Adobe.Substance.asmdef" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Adobe/Substance3DForUnity/Runtime/Runtime/Adobe.Substance.Runtime.asmdef" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Adobe/Substance3DForUnity/Runtime/Runtime/Adobe.Substance.Runtime.asmdef" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/DefaultPrefabObjects.asset" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/DefaultPrefabObjects.asset" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/FishNet/CodeGenerating/Unity.FishNet.CodeGen.asmdef" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/FishNet/CodeGenerating/Unity.FishNet.CodeGen.asmdef" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/FishNet/CodeGenerating/cecil-0.11.4/Mono.Cecil.sln.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/FishNet/CodeGenerating/cecil-0.11.4/MonoFN.Cecil.asmdef" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/FishNet/CodeGenerating/cecil-0.11.4/MonoFN.Cecil.asmdef" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/FishNet/Demos/FishNet.Demos.asmdef" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/FishNet/Demos/FishNet.Demos.asmdef" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/FishNet/Demos/Network LOD/Prefabs/mydef.asmdef" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/FishNet/Demos/Network LOD/Prefabs/mydef.asmdef" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/FishNet/Demos/Network LOD/Scenes/NetworkLOD_Demo.unity" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/FishNet/Demos/Network LOD/Scenes/NetworkLOD_Demo.unity" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/FishNet/Example/FishNet.Example.asmdef" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/FishNet/Example/FishNet.Example.asmdef" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/FishNet/Plugins/FishyFacepunch/SteamManager.cs" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/FishNet/Plugins/FishyFacepunch/SteamManager.cs.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/FishNet/Runtime/Config.json" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/FishNet/Runtime/Config.json" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/FishNet/Runtime/FishNet.Runtime.asmdef" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/FishNet/Runtime/FishNet.Runtime.asmdef" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/FishNet/Runtime/Transporting/Transports/Tugboat/LiteNetLib/LiteNetLib.csproj.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Packages/Facepunch/Facepunch.Steamworks.Posix.dll.meta" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Packages/Facepunch/Facepunch.Steamworks.Posix.dll.meta" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Packages/Facepunch/Facepunch.Steamworks.Posix.xml" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Packages/Facepunch/Facepunch.Steamworks.Posix.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Packages/Facepunch/Facepunch.Steamworks.Win32.xml" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Packages/Facepunch/Facepunch.Steamworks.Win32.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Packages/Facepunch/Facepunch.Steamworks.Win64.xml" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Packages/Facepunch/Facepunch.Steamworks.Win64.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Packages/Facepunch/redistributable_bin/steam_api.dll.meta" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Packages/Facepunch/redistributable_bin/steam_api.dll.meta" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/CharacterControllerForce.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/CharacterControllerForce.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/DGemItem.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/DGemItem.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Darkness/VectorFieldHandler.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Darkness/VectorFieldHandler.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/DynamicLine.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/DynamicLine.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Enemies/AI/SkinlessMonsterAnimator.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Enemies/AI/SkinlessMonsterAnimator.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Enemies/AI/SkinlessMonsterComponent.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Enemies/AI/SkinlessMonsterComponent.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Enemies/AI/Tester/TestSkinnlessMonster.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Enemies/AI/Tester/TestSkinnlessMonster.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Enemies/DummyComponent.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Enemies/DummyComponent.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Enemies/MonsterComponent.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Enemies/MonsterComponent.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Enemies/Robot/IKControl_Robot.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Enemies/Robot/IKControl_Robot.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Enemies/Robot/RobotMouthAnimator.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Enemies/Robot/RobotMouthAnimator.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Enemies/SwarmAnimator.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Enemies/SwarmAnimator.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Enviornment/EmissiveLightMatching.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Enviornment/EmissiveLightMatching.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Experimental/TestAnimationParameters.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Experimental/TestAnimationParameters.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Game/InGameManager.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Game/InGameManager.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Game/InGameMenuManager.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Game/InGameMenuManager.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Game/Optimizer.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Game/Optimizer.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/GemItem.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/GemItem.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Holograms/RotatingHologram.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Holograms/RotatingHologram.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Interactable/Insertable.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Interactable/Insertable.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Interactable/Interactable.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Interactable/Interactable.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Interactable/ItemSelector.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Interactable/ItemSelector.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Inventory/Inventory.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Inventory/Inventory.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Inventory/TempInventory.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Inventory/TempInventory.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Item/CarryableItem.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Item/CarryableItem.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Item/DoorInteractable.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Item/DoorInteractable.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Item/FlareBeacon/FlareBeacon.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Item/FlareBeacon/FlareBeacon.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Item/GenericInteractable.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Item/GenericInteractable.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Item/HeavyInteractableItem.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Item/HeavyInteractableItem.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Item/HeavyItemReceiver.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Item/HeavyItemReceiver.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Item/InteractableItem.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Item/InteractableItem.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Item/KeyItem.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Item/KeyItem.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Item/Pistol/BulletComponent.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Item/Pistol/BulletComponent.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Item/Pistol/PistolAnimationAimAssist.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Item/Pistol/PistolAnimationAimAssist.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Item/Pistol/PistolComponent.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Item/Pistol/PistolComponent.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Item/Registers/FlareRegister.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Item/Registers/FlareRegister.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Item/SpecialItemCycler.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Item/SpecialItemCycler.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Levels/Level0Scripts/BasicLevelProgressionSystem.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Levels/Level0Scripts/BasicLevelProgressionSystem.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Levels/Level0Scripts/LevelZeroSpecial.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Levels/Level0Scripts/LevelZeroSpecial.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/MainMenu/MainMenuManager.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/MainMenu/MainMenuManager.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Player/CameraController.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Player/CameraController.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Player/CameraShift.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Player/CameraShift.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Player/NoiseVisibilitySettingsManager.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Player/NoiseVisibilitySettingsManager.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Player/PlayerAim.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Player/PlayerAim.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Player/PlayerAnimationController.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Player/PlayerAnimationController.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Player/PlayerComponent.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Player/PlayerComponent.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Player/PlayerInteractionHandler.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Player/PlayerInteractionHandler.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Player/PlayerMovementController.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Player/PlayerMovementController.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Player/StatsOutputScreen.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Player/StatsOutputScreen.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/UI/ObjectiveText.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/UI/ObjectiveText.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/UI/WaypointMarker.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/UI/WaypointMarker.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/TextMesh Pro/Sprites/EmojiOne.json" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/TextMesh Pro/Sprites/EmojiOne.json" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/VFXGraph/GabrielAguiarProductions/VFXGraph_Muzzle_2020.3_HDRP_v1.0.1.unitypackage.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/VFXGraph/GabrielAguiarProductions/VFXGraph_Muzzle_2020.3_URP_v1.0.1.unitypackage.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Packages/manifest.json" beforeDir="false" afterPath="$PROJECT_DIR$/Packages/manifest.json" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Packages/packages-lock.json" beforeDir="false" afterPath="$PROJECT_DIR$/Packages/packages-lock.json" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ProjectSettings/SceneTemplateSettings.json" beforeDir="false" afterPath="$PROJECT_DIR$/ProjectSettings/SceneTemplateSettings.json" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="HighlightingSettingsPerFile">
<setting file="file://$PROJECT_DIR$/Assets/Scripts/Steam/FriendObject.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/Assets/Scripts/Steam/SteamFriendManager.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/Assets/Scripts/Steam/SteamManager.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$USER_HOME$/Downloads/Unity-Facepunch-Steamwork-tutorial-main/Assets/SteamFriendsManager.cs" root0="SKIP_HIGHLIGHTING" />
</component>
<component name="MarkdownSettingsMigration">
<option name="stateVersion" value="1" />
</component>
<component name="ProjectId" id="2QaKQGlpcBQN822RXF9HTdnO83e" />
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent">{
&quot;keyToString&quot;: {
&quot;RunOnceActivity.OpenProjectViewOnStart&quot;: &quot;true&quot;,
&quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
&quot;WebServerToolWindowFactoryState&quot;: &quot;false&quot;,
&quot;ignore.virus.scanning.warn.message&quot;: &quot;true&quot;,
&quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
&quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
&quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
&quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
&quot;settings.editor.selected.configurable&quot;: &quot;preferences.pluginManager&quot;,
&quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
},
&quot;keyToStringList&quot;: {
&quot;rider.external.source.directories&quot;: [
&quot;C:\\Users\\madha\\AppData\\Roaming\\JetBrains\\Rider2023.1\\resharper-host\\DecompilerCache&quot;,
&quot;C:\\Users\\madha\\AppData\\Roaming\\JetBrains\\Rider2023.1\\resharper-host\\SourcesCache&quot;,
&quot;C:\\Users\\madha\\AppData\\Local\\Symbols\\src&quot;
]
}
}</component>
<component name="RunManager" selected="Attach to Unity Editor.Attach to Unity Editor">
<configuration name="Start Unity" type="RunUnityExe" factoryName="Unity Executable">
<option name="EXE_PATH" value="C:\Program Files\Unity\Hub\Editor\2021.3.18f1\Editor\Unity.exe" />
<option name="PROGRAM_PARAMETERS" value="-projectPath C:\Users\madha\Documents\station_obscurum_temp -debugCodeOptimization" />
<option name="WORKING_DIRECTORY" value="C:\Users\madha\Documents\station_obscurum_temp" />
<option name="PASS_PARENT_ENVS" value="1" />
<option name="USE_EXTERNAL_CONSOLE" value="0" />
<method v="2" />
</configuration>
<configuration name="Unit Tests (batch mode)" type="RunUnityExe" factoryName="Unity Executable">
<option name="EXE_PATH" value="C:\Program Files\Unity\Hub\Editor\2021.3.18f1\Editor\Unity.exe" />
<option name="PROGRAM_PARAMETERS" value="-runTests -batchmode -projectPath C:\Users\madha\Documents\station_obscurum_temp -testResults Logs/results.xml -testPlatform EditMode -debugCodeOptimization" />
<option name="WORKING_DIRECTORY" value="C:\Users\madha\Documents\station_obscurum_temp" />
<option name="PASS_PARENT_ENVS" value="1" />
<option name="USE_EXTERNAL_CONSOLE" value="0" />
<method v="2" />
</configuration>
<configuration name="Attach to Unity Editor &amp; Play" type="UNITY_DEBUG_RUN_CONFIGURATION" factoryName="UNITY_ATTACH_AND_PLAY" show_console_on_std_err="false" show_console_on_std_out="false" port="50000" address="localhost">
<option name="allowRunningInParallel" value="false" />
<option name="listenPortForConnections" value="false" />
<option name="pid" />
<option name="projectPathOnTarget" />
<option name="selectedOptions">
<list />
</option>
<method v="2" />
</configuration>
<configuration name="Attach to Unity Editor" type="UNITY_DEBUG_RUN_CONFIGURATION" factoryName="Unity Debug" show_console_on_std_err="false" show_console_on_std_out="false" port="50000" address="localhost">
<option name="allowRunningInParallel" value="false" />
<option name="listenPortForConnections" value="false" />
<option name="pid" />
<option name="projectPathOnTarget" />
<option name="selectedOptions">
<list />
</option>
<method v="2" />
</configuration>
</component>
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="8e9b3697-c9b4-441a-aeed-4ea7b4488600" name="Changes" comment="" />
<created>1685586236403</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1685586236403</updated>
<workItem from="1685586237466" duration="1661000" />
<workItem from="1685631913453" duration="701000" />
<workItem from="1685633165416" duration="1363000" />
<workItem from="1685636004032" duration="545000" />
<workItem from="1685636572156" duration="4819000" />
<workItem from="1685617055026" duration="83000" />
<workItem from="1685617157524" duration="1587000" />
</task>
<servers />
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="3" />
</component>
<component name="UnityProjectConfiguration" hasMinimizedUI="true" />
<component name="UnityUnitTestConfiguration" currentTestLauncher="Both" />
<component name="VcsManagerConfiguration">
<option name="CLEAR_INITIAL_COMMIT_MESSAGE" value="true" />
</component>
</project>

55
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,55 @@
{
"files.exclude":
{
"**/.DS_Store":true,
"**/.git":true,
"**/.gitmodules":true,
"**/*.booproj":true,
"**/*.pidb":true,
"**/*.suo":true,
"**/*.user":true,
"**/*.userprefs":true,
"**/*.unityproj":true,
"**/*.dll":true,
"**/*.exe":true,
"**/*.pdf":true,
"**/*.mid":true,
"**/*.midi":true,
"**/*.wav":true,
"**/*.gif":true,
"**/*.ico":true,
"**/*.jpg":true,
"**/*.jpeg":true,
"**/*.png":true,
"**/*.psd":true,
"**/*.tga":true,
"**/*.tif":true,
"**/*.tiff":true,
"**/*.3ds":true,
"**/*.3DS":true,
"**/*.fbx":true,
"**/*.FBX":true,
"**/*.lxo":true,
"**/*.LXO":true,
"**/*.ma":true,
"**/*.MA":true,
"**/*.obj":true,
"**/*.OBJ":true,
"**/*.asset":true,
"**/*.cubemap":true,
"**/*.flare":true,
"**/*.mat":true,
"**/*.meta":true,
"**/*.prefab":true,
"**/*.unity":true,
"build/":true,
"Build/":true,
"Library/":true,
"library/":true,
"obj/":true,
"Obj/":true,
"ProjectSettings/":true,
"temp/":true,
"Temp/":true
}
}

View File

@ -1,19 +1,19 @@
{
"name": "Adobe.SubstanceEditor",
"rootNamespace": "Adobe.SubstanceEditor",
"references": [
"GUID:0322a29457affe94ab4ade0a1555000f",
"GUID:b78cd19d3dcc04e4a8eb1915990b2db1"
],
"includePlatforms": [
"Editor"
],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
"name": "Adobe.SubstanceEditor",
"rootNamespace": "Adobe.SubstanceEditor",
"references": [
"GUID:0322a29457affe94ab4ade0a1555000f",
"GUID:b78cd19d3dcc04e4a8eb1915990b2db1"
],
"includePlatforms": [
"Editor"
],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}

View File

@ -1,14 +1,14 @@
{
"name": "Adobe.Substance",
"rootNamespace": "Adobe.Substance",
"references": [],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": true,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
"name": "Adobe.Substance",
"rootNamespace": "Adobe.Substance",
"references": [],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": true,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}

View File

@ -1,16 +1,16 @@
{
"name": "Adobe.Substance.Runtime",
"rootNamespace": "Adobe.Substance.Runtime",
"references": [
"GUID:0322a29457affe94ab4ade0a1555000f"
],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
"name": "Adobe.Substance.Runtime",
"rootNamespace": "Adobe.Substance.Runtime",
"references": [
"GUID:0322a29457affe94ab4ade0a1555000f"
],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}

View File

@ -1,19 +1,19 @@
{
"name": "Unity.FishNet.Codegen",
"references": [
"FishNet.Runtime",
"FishNet.Codegen.Cecil",
"FishNet.Generated"
],
"includePlatforms": [
"Editor"
],
"excludePlatforms": [],
"allowUnsafeCode": true,
"overrideReferences": true,
"precompiledReferences": [],
"autoReferenced": false,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
"name": "Unity.FishNet.Codegen",
"references": [
"FishNet.Runtime",
"FishNet.Codegen.Cecil",
"FishNet.Generated"
],
"includePlatforms": [
"Editor"
],
"excludePlatforms": [],
"allowUnsafeCode": true,
"overrideReferences": true,
"precompiledReferences": [],
"autoReferenced": false,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}

View File

@ -1,15 +1,15 @@
{
"name": "FishNet.Codegen.Cecil",
"references": [],
"includePlatforms": [
"Editor"
],
"excludePlatforms": [],
"allowUnsafeCode": true,
"overrideReferences": true,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
"name": "FishNet.Codegen.Cecil",
"references": [],
"includePlatforms": [
"Editor"
],
"excludePlatforms": [],
"allowUnsafeCode": true,
"overrideReferences": true,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}

View File

@ -1,15 +1,15 @@
{
"name": "FishNet.Demos",
"references": [
"GUID:7c88a4a7926ee5145ad2dfa06f454c67"
],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
"name": "FishNet.Demos",
"references": [
"GUID:7c88a4a7926ee5145ad2dfa06f454c67"
],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}

View File

@ -1,17 +1,17 @@
{
"name": "mydef",
"rootNamespace": "",
"references": [
"GUID:75469ad4d38634e559750d17036d5f7c",
"GUID:7c88a4a7926ee5145ad2dfa06f454c67"
],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
"name": "mydef",
"rootNamespace": "",
"references": [
"GUID:75469ad4d38634e559750d17036d5f7c",
"GUID:7c88a4a7926ee5145ad2dfa06f454c67"
],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}

View File

@ -1348,7 +1348,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
_steamAppID: 480
_serverBindAddress:
_serverBindAddress: 76561198308605766
_port: 27015
_maximumClients: 16
_clientAddress: 76561198308605766

View File

@ -1,15 +1,15 @@
{
"name": "FishNet.Example",
"references": [
"GUID:7c88a4a7926ee5145ad2dfa06f454c67"
],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
"name": "FishNet.Example",
"references": [
"GUID:7c88a4a7926ee5145ad2dfa06f454c67"
],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}

View File

@ -1,144 +0,0 @@
using FishNet;
using FishNet.Transporting;
using Steamworks;
using System;
using System.Net;
using UnityEngine;
public class SteamManager : MonoBehaviour
{
#region Serialized.
[Header("Steam Settings")]
/// <summary>
/// Steam application Id.
/// </summary>
[Tooltip("Steam application Id.")]
[SerializeField]
private uint _steamAppID = 480;
/// <summary>
/// SSteam Mod Directory.
/// </summary>
[Tooltip("Steam Mod Directory.")]
[SerializeField]
private string _modDir = string.Empty;
/// <summary>
/// Steam Game Description.
/// </summary>
[Tooltip("Steam Game Description.")]
[SerializeField]
private string _gameDesc = string.Empty;
/// <summary>
/// Steam version.
/// </summary>
[Tooltip("Steam version.")]
[SerializeField]
private string _version = string.Empty;
[Header("Server Settings")]
/// <summary>
/// Servername.
/// </summary>
[Tooltip("Server Name")]
[SerializeField]
private string _serverName = string.Empty;
/// <summary>
/// Server Password.
/// </summary>
[Tooltip("Server Password.")]
[SerializeField]
private string _password = string.Empty;
/// <summary>
/// Steam Server Query Port.
/// </summary>
[Tooltip("Server Query Port.")]
[SerializeField]
private ushort _queryPort = 27016;
/// <summary>
/// Server VAC Secure.
/// </summary>
[Tooltip("Server VAC Secure.")]
[SerializeField]
private bool _vac = true;
/// <summary>
/// Server as Dedicated Server.
/// </summary>
[Tooltip("Server as Dedicated Server.")]
[SerializeField]
private bool _ds = true;
#endregion
void Start()
{
#if UNITY_SERVER
InstanceFinder.ServerManager.StartConnection();
InstanceFinder.ServerManager.OnServerConnectionState += OnServerConnectionState;
#endif
}
private void OnServerConnectionState(FishNet.Transporting.ServerConnectionStateArgs state)
{
if (state.ConnectionState == FishNet.Transporting.LocalConnectionState.Started)
{
var serverInit = new SteamServerInit(_modDir, _gameDesc)
{
IpAddress = IPAddress.Parse(InstanceFinder.TransportManager.Transport.GetServerBindAddress(IPAddressType.IPv4)),
GamePort = InstanceFinder.TransportManager.Transport.GetPort(),
QueryPort = _queryPort,
Secure = _vac,
DedicatedServer = _ds,
VersionString = _version,
};
serverInit.WithRandomSteamPort();
try
{
SteamServer.Init(1280590, serverInit, true);
SteamServer.ServerName = _serverName;
SteamServer.MaxPlayers = InstanceFinder.TransportManager.Transport.GetMaximumClients();
SteamServer.Passworded = !string.IsNullOrEmpty(_password);
SteamServer.DedicatedServer = _ds;
SteamServer.AutomaticHeartbeats = true;
SteamServer.LogOnAnonymous();
SteamServer.OnSteamServersConnected += OnSteamServersConnected;
SteamServer.OnSteamServersDisconnected += OnSteamServersDisconnected;
SteamServer.OnSteamServerConnectFailure += OnSteamServerConnectFailure;
if (!SteamServer.IsValid)
{
Debug.LogWarning("Couldn't initialize server");
return;
}
}
catch (Exception ex)
{
Debug.LogError("Couldn't initialize Steam server (" + ex.Message + ")");
Application.Quit();
}
}
}
private void OnSteamServersConnected()
{
Debug.Log("Dedicated Server connected to Steam successfully");
}
private void OnSteamServerConnectFailure(Result result, bool stilltrying)
{
Debug.Log("Dedicated Server failed to connect to Steam");
}
private void OnSteamServersDisconnected(Result result)
{
Debug.Log("Dedicated Server got logged out of Steam");
}
}

View File

@ -1 +1,3 @@
{"StripReleaseBuilds":true}
{
"StripReleaseBuilds": true
}

View File

@ -1,17 +1,17 @@
{
"name": "FishNet.Runtime",
"references": [
"GUID:9e24947de15b9834991c9d8411ea37cf",
"GUID:84651a3751eca9349aac36a66bba901b",
"GUID:69448af7b92c7f342b298e06a37122aa"
],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": true,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
"name": "FishNet.Runtime",
"references": [
"GUID:9e24947de15b9834991c9d8411ea37cf",
"GUID:84651a3751eca9349aac36a66bba901b",
"GUID:69448af7b92c7f342b298e06a37122aa"
],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": true,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}

View File

@ -12,7 +12,7 @@ PluginImporter:
validateReferences: 1
platformData:
- first:
'': Any
: Any
second:
enabled: 0
settings:

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -12,7 +12,7 @@ PluginImporter:
validateReferences: 1
platformData:
- first:
'': Any
: Any
second:
enabled: 0
settings:
@ -59,7 +59,7 @@ PluginImporter:
second:
enabled: 1
settings:
CPU: x86_64
CPU: AnyCPU
- first:
Standalone: LinuxUniversal
second:

View File

@ -1,5 +1,6 @@
fileFormatVersion: 2
guid: 0957b521a08374f4aa508231735153bc
guid: 8c8cec636f7034e4386a66967a4068ba
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:

View File

@ -0,0 +1,461 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &4214403233071238501
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 420310214753495322}
- component: {fileID: 860360227658967599}
- component: {fileID: 4065333453424625746}
m_Layer: 5
m_Name: Text
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &420310214753495322
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4214403233071238501}
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: 2822828485358111010}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &860360227658967599
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4214403233071238501}
m_CullTransparentMesh: 0
--- !u!114 &4065333453424625746
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4214403233071238501}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 14
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 10
m_MaxSize: 40
m_Alignment: 4
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: Invite
--- !u!1 &4515538683647385522
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4515538683647385525}
- component: {fileID: 4515538683647385527}
- component: {fileID: 4515538683647385524}
m_Layer: 5
m_Name: RawImage
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4515538683647385525
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4515538683647385522}
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: 4515538684322551740}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0.5}
m_AnchorMax: {x: 0, y: 0.5}
m_AnchoredPosition: {x: 25, y: 0}
m_SizeDelta: {x: 50, y: 50}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4515538683647385527
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4515538683647385522}
m_CullTransparentMesh: 0
--- !u!114 &4515538683647385524
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4515538683647385522}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Texture: {fileID: 0}
m_UVRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
--- !u!1 &4515538684322551741
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4515538684322551740}
- component: {fileID: 4515538684322551742}
- component: {fileID: 4515538684322551743}
- component: {fileID: 2655444595641622988}
m_Layer: 5
m_Name: Friend
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4515538684322551740
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4515538684322551741}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 4515538683647385525}
- {fileID: 4515538684548919610}
- {fileID: 2822828485358111010}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 180.38406, y: 50}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4515538684322551742
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4515538684322551741}
m_CullTransparentMesh: 0
--- !u!114 &4515538684322551743
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4515538684322551741}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.2735849, g: 0.2735849, b: 0.2735849, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 0}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &2655444595641622988
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4515538684322551741}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 57db693cbe9a46345add801ae22e1e2a, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &4515538684548919611
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4515538684548919610}
- component: {fileID: 4515538684548919612}
- component: {fileID: 4515538684548919613}
m_Layer: 5
m_Name: Text
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4515538684548919610
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4515538684548919611}
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: 4515538684322551740}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 25, y: 0}
m_SizeDelta: {x: 130.38406, y: 50}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4515538684548919612
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4515538684548919611}
m_CullTransparentMesh: 0
--- !u!114 &4515538684548919613
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4515538684548919611}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 14
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 10
m_MaxSize: 40
m_Alignment: 3
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: New Text
--- !u!1 &5420274622274495448
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2822828485358111010}
- component: {fileID: 2725042382176603738}
- component: {fileID: 1294573223005139641}
- component: {fileID: 7770455586006126737}
m_Layer: 5
m_Name: Button
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2822828485358111010
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5420274622274495448}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 420310214753495322}
m_Father: {fileID: 4515538684322551740}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 54.49, y: 0}
m_SizeDelta: {x: 51.02997, y: 30}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2725042382176603738
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5420274622274495448}
m_CullTransparentMesh: 0
--- !u!114 &1294573223005139641
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5420274622274495448}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &7770455586006126737
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5420274622274495448}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 1294573223005139641}
m_OnClick:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 2655444595641622988}
m_TargetAssemblyTypeName:
m_MethodName: Invite
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2

View File

@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 96a44475794fb6445a6f3c4b9ee13966
DefaultImporter:
guid: 2fe0c7c1393a9ac4e9322c657de9c116
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:

View File

@ -0,0 +1,227 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &4515538683647385522
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4515538683647385525}
- component: {fileID: 4515538683647385527}
- component: {fileID: 4515538683647385524}
m_Layer: 5
m_Name: RawImage
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4515538683647385525
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4515538683647385522}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 4515538684322551740}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0.5}
m_AnchorMax: {x: 0, y: 0.5}
m_AnchoredPosition: {x: 25, y: 0}
m_SizeDelta: {x: 50, y: 50}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4515538683647385527
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4515538683647385522}
m_CullTransparentMesh: 0
--- !u!114 &4515538683647385524
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4515538683647385522}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Texture: {fileID: 0}
m_UVRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
--- !u!1 &4515538684322551741
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4515538684322551740}
- component: {fileID: 4515538684322551742}
- component: {fileID: 4515538684322551743}
m_Layer: 5
m_Name: Friend
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4515538684322551740
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4515538684322551741}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 4515538683647385525}
- {fileID: 4515538684548919610}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 180.38406, y: 50}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4515538684322551742
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4515538684322551741}
m_CullTransparentMesh: 0
--- !u!114 &4515538684322551743
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4515538684322551741}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.2735849, g: 0.2735849, b: 0.2735849, a: 1}
m_RaycastTarget: 1
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 0}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &4515538684548919611
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4515538684548919610}
- component: {fileID: 4515538684548919612}
- component: {fileID: 4515538684548919613}
m_Layer: 5
m_Name: Text
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4515538684548919610
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4515538684548919611}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 4515538684322551740}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 25, y: 0}
m_SizeDelta: {x: 130.38406, y: 50}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4515538684548919612
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4515538684548919611}
m_CullTransparentMesh: 0
--- !u!114 &4515538684548919613
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4515538684548919611}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 14
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 10
m_MaxSize: 40
m_Alignment: 3
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: New Text

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 0568386c4d673bc4b86e9c4fb6d78b8d
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 246f31a0e00fea74a93125fec6d80da8
guid: 02c544c4276ebff45aa3b14a7f9a24be
DefaultImporter:
externalObjects: {}
userData:

View File

@ -0,0 +1,64 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!850595691 &4890085278179872738
LightingSettings:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: LobbyTestingSettings
serializedVersion: 4
m_GIWorkflowMode: 1
m_EnableBakedLightmaps: 1
m_EnableRealtimeLightmaps: 0
m_RealtimeEnvironmentLighting: 1
m_BounceScale: 1
m_AlbedoBoost: 1
m_IndirectOutputScale: 1
m_UsingShadowmask: 1
m_BakeBackend: 1
m_LightmapMaxSize: 1024
m_BakeResolution: 40
m_Padding: 2
m_LightmapCompression: 3
m_AO: 0
m_AOMaxDistance: 1
m_CompAOExponent: 1
m_CompAOExponentDirect: 0
m_ExtractAO: 0
m_MixedBakeMode: 2
m_LightmapsBakeMode: 1
m_FilterMode: 1
m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0}
m_ExportTrainingData: 0
m_TrainingDataDestination: TrainingData
m_RealtimeResolution: 2
m_ForceWhiteAlbedo: 0
m_ForceUpdates: 0
m_FinalGather: 0
m_FinalGatherRayCount: 256
m_FinalGatherFiltering: 1
m_PVRCulling: 1
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
m_PVRSampleCount: 500
m_PVREnvironmentSampleCount: 500
m_PVREnvironmentReferencePointCount: 2048
m_LightProbeSampleCountMultiplier: 4
m_PVRBounces: 2
m_PVRMinBounces: 2
m_PVREnvironmentMIS: 0
m_PVRFilteringMode: 2
m_PVRDenoiserTypeDirect: 0
m_PVRDenoiserTypeIndirect: 0
m_PVRDenoiserTypeAO: 0
m_PVRFilterTypeDirect: 0
m_PVRFilterTypeIndirect: 0
m_PVRFilterTypeAO: 0
m_PVRFilteringGaussRadiusDirect: 1
m_PVRFilteringGaussRadiusIndirect: 5
m_PVRFilteringGaussRadiusAO: 2
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1
m_PVRTiledBaking: 0

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: bf4cb08b84523014ba7d58b84641dafa
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 4890085278179872738
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,17 +1,23 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CharacterControllerForce : MonoBehaviour
{
float mass = 3f; // defines the character mass
Vector3 impact = Vector3.zero;
private CharacterController character;
void Start()
private Vector3 impact = Vector3.zero;
private readonly float mass = 3f; // defines the character mass
private void Start()
{
character = this.gameObject.GetComponent<CharacterController>();
character = gameObject.GetComponent<CharacterController>();
}
private void Update()
{
// apply the impact force:
if (impact.magnitude > 0.2)
character.Move(impact * Time.deltaTime);
// consumes the impact energy each cycle:
impact = Vector3.Lerp(impact, Vector3.zero, 5 * Time.deltaTime);
}
// call this function to add an impact force:
@ -21,13 +27,4 @@ public class CharacterControllerForce : MonoBehaviour
if (dir.y < 0) dir.y = -dir.y; // reflect down force on the ground
impact += dir.normalized * force / mass;
}
void Update()
{
// apply the impact force:
if (impact.magnitude > 0.2)
character.Move(impact * Time.deltaTime);
// consumes the impact energy each cycle:
impact = Vector3.Lerp(impact, Vector3.zero, 5 * Time.deltaTime);
}
}
}

View File

@ -1,12 +1,18 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DGemItem : MonoBehaviour
{
[SerializeField]
private float decSpeed = 5f;
[SerializeField] private float decSpeed = 5f;
// Start is called before the first frame update
private void Start()
{
}
// Update is called once per frame
private void Update()
{
}
private void OnTriggerEnter(Collider collision)
@ -14,20 +20,7 @@ public class DGemItem : MonoBehaviour
if (collision.gameObject.CompareTag("Player"))
{
collision.gameObject.GetComponent<PlayerMovementController>().SetSpeed(decSpeed);
Destroy(this.gameObject);
Destroy(gameObject);
}
}
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}
}

View File

@ -1,42 +1,33 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.VFX;
public class VectorFieldHandler : MonoBehaviour
{
[SerializeField]
private float avoidanceDist;
[SerializeField]
private List<Vector3> avoidances;
[SerializeField]
private Vector3 size;
[SerializeField] private float avoidanceDist;
[SerializeField] private List<Vector3> avoidances;
[SerializeField] private Vector3 size;
[SerializeField] private VisualEffect effect;
private Texture3D vField;
[SerializeField]
private VisualEffect effect;
// Start is called before the first frame update
void Start()
private void Start()
{
vField = new Texture3D((int)size.x, (int)size.y, (int)size.z, TextureFormat.RFloat, 0);
for(int x = 0;x<size.x;x++)
{
for(int y = 0; y < size.y; y++)
{
for(int z = 0; z<size.z; z++)
{
vField.SetPixel(x, y, z, new Color(1, 0, 0, 0));
}
}
}
for (var x = 0; x < size.x; x++)
for (var y = 0; y < size.y; y++)
for (var z = 0; z < size.z; z++)
vField.SetPixel(x, y, z, new Color(1, 0, 0, 0));
//vField.SetPixel(0, 0, 0, new Color(1, 0, 0, 0));
effect.SetTexture("VectorField", vField);
}
// Update is called once per frame
void Update()
private void Update()
{
}
}
}

View File

@ -1,37 +1,27 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[ExecuteAlways]
[RequireComponent(typeof(LineRenderer))]
public class DynamicLine : MonoBehaviour
{
[SerializeField]
private float length = 5f;
[SerializeField]
private int count = 2;
[SerializeField] private float length = 5f;
[SerializeField] private int count = 2;
private LineRenderer lineRenderer;
private int pCount;
private float pLength;
private int pCount;
private LineRenderer lineRenderer;
// Start is called before the first frame update
void Start()
private void Start()
{
lineRenderer= GetComponent<LineRenderer>();
lineRenderer = GetComponent<LineRenderer>();
}
// Update is called once per frame
void FixedUpdate()
private void FixedUpdate()
{
if (pLength != length||pCount!=count)
{
lineRenderer.positionCount = count;
}
if (pLength != length || pCount != count) lineRenderer.positionCount = count;
}
}
}

View File

@ -1,152 +1,131 @@
using System.Collections;
using System.Collections.Generic;
using UnityEditor.Rendering;
using UnityEngine;
using UnityEngine.Events;
public class SkinlessMonsterAnimator : MonoBehaviour
{
[SerializeField]
private Animator animator;
private float speed = 0f;
[SerializeField] private Animator animator;
[SerializeField]
[Tooltip("This is the object with the skin dissolve material")]
[SerializeField] [Tooltip("This is the object with the skin dissolve material")]
private GameObject modelObject;
[SerializeField]
private List<GameObject> objectsThatFallOnDeath= new List<GameObject>();
[SerializeField] private List<GameObject> objectsThatFallOnDeath = new();
[SerializeField] private float deathSpeed = 5f;
[SerializeField] private float fastDeathduration = 1f;
[SerializeField] private float deathDuration = 5f;
private float curDeathSpeed = 5f;
private Material dissolveMaterial;
private bool isAlive = true;
[SerializeField]
private float deathSpeed = 5f;
private float curDeathSpeed = 5f;
private bool isRunning = false;
public bool IsRunning { get { return isRunning; } }
[SerializeField]
private float fastDeathduration = 1f;
[SerializeField]
private float deathDuration = 5f;
private float speed;
public bool IsRunning { get; private set; }
// Start is called before the first frame update
void Start()
private void Start()
{
dissolveMaterial = modelObject.GetComponent<SkinnedMeshRenderer>().materials[0];
curDeathSpeed = deathSpeed;
}
// Update is called once per frame
void Update()
private void Update()
{
if (isAlive)
{
animator.SetFloat("Speed", speed);
}
else
{
float quantity = dissolveMaterial.GetFloat("_DissolveQuantity");
quantity = Mathf.Lerp(quantity, -2, Time.deltaTime *curDeathSpeed);
var quantity = dissolveMaterial.GetFloat("_DissolveQuantity");
quantity = Mathf.Lerp(quantity, -2, Time.deltaTime * curDeathSpeed);
dissolveMaterial.SetFloat("_DissolveQuantity", quantity);
}
}
public void StartMoving()
{
if (isAlive)
{
isRunning = true;
IsRunning = true;
speed = 1;
}
}
public void StopMoving()
{
if (isAlive)
{
speed = 0;
isRunning = false;
IsRunning = false;
}
}
public void Attack()
{
if (isAlive)
{
animator.SetTrigger("Attack");
}
if (isAlive) animator.SetTrigger("Attack");
}
/// <summary>
/// 0,1,2,3
/// 0,1,2,3
/// </summary>
/// <param name="attackType"></param>
public void SetAttackType(int attackType)
{
animator.SetInteger("AttackIndex", attackType);
}
public void InLight()
{
if(isAlive)
animator.SetBool("InLight", true);
if (isAlive)
animator.SetBool("InLight", true);
}
public void NotInLight()
{
if(isAlive)
animator.SetBool("InLight", false);
if (isAlive)
animator.SetBool("InLight", false);
}
public void AttackScream()
{
if(isAlive)
animator.SetTrigger("AttackScream");
if (isAlive)
animator.SetTrigger("AttackScream");
}
public void Kill(bool fast = false)
{
//animator.speed = 0;
InLight();
isAlive = false;
foreach(GameObject obj in this.objectsThatFallOnDeath)
foreach (var obj in objectsThatFallOnDeath)
{
obj.AddComponent<Rigidbody>();
if (obj.GetComponent<Collider>() != null)
{
obj.GetComponent<Collider>().enabled = false;
}
if (obj.GetComponent<Collider>() != null) obj.GetComponent<Collider>().enabled = false;
}
float dur = this.deathDuration;
var dur = deathDuration;
if (fast)
{
dur = this.fastDeathduration;
curDeathSpeed = deathSpeed * (this.deathDuration / this.fastDeathduration);
dur = fastDeathduration;
curDeathSpeed = deathSpeed * (deathDuration / fastDeathduration);
}
StartCoroutine(destroyAfterSeconds(dur));
}
private IEnumerator destroyAfterSeconds(float duration)
{
yield return new WaitForSeconds(duration);
Destroy(this.gameObject);
Destroy(gameObject);
}
}
}

View File

@ -1,321 +1,79 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class SkinlessMonsterComponent : MonoBehaviour
{
[SerializeField]
private NavMeshAgent agent;
[SerializeField]
private SkinlessMonsterAnimator animator;
private bool inDamageRange = false;
private bool inDamageMargin = false;
private bool atTarget = false;
[SerializeField]
private float atTargetDistance = 2;
private TargetInformation target;
[SerializeField] private NavMeshAgent agent;
[SerializeField]
private float health = 2f;
[SerializeField] private SkinlessMonsterAnimator animator;
[SerializeField] private float atTargetDistance = 2;
[SerializeField] private float health = 2f;
[SerializeField] [Tooltip("This is the angle of visibility the enemy has")]
private float visibilityConeLimit = 90f;
[SerializeField] private float bulletSoundRange = 15f;
[SerializeField] private float newTargetCooldown = 5f;
//private bool prePauseStoppedState = false;
[SerializeField] private BoxCollider leftHandDamage;
[SerializeField] private BoxCollider rightHandDamage;
private bool atTarget;
private float distanceToPlayer;
private FlareRegister flareRegister;
private bool inDamageMargin;
private bool inDamageRange;
private bool isAlive = true;
private InGameManager manager;
private Vector3 oppositeVector;
private PlayerComponent player;
private float distanceToPlayer;
private FlareRegister flareRegister;
[SerializeField]
[Tooltip("This is the angle of visibility the enemy has")]
private float visibilityConeLimit = 90f;
[SerializeField]
private float bulletSoundRange = 15f;
private TargetInformation target;
private GameObject targetObject;
[SerializeField]
private float newTargetCooldown = 5f;
private float timeSinceTarget = 0f;
private InGameManager manager;
//private bool prePauseStoppedState = false;
[SerializeField]
private BoxCollider leftHandDamage;
[SerializeField]
private BoxCollider rightHandDamage;
private float timeSinceTarget;
private void Awake()
{
//Find active player rn.
PlayerComponent[] players = GameObject.FindObjectsOfType<PlayerComponent>();
foreach (PlayerComponent p in players)
{
var players = FindObjectsOfType<PlayerComponent>();
foreach (var p in players)
if (p.isActiveAndEnabled)
{
player = p;
}
}
manager = GameObject.FindObjectOfType<InGameManager>();
manager = FindObjectOfType<InGameManager>();
}
private void Start()
{
flareRegister = GameObject.FindObjectOfType<FlareRegister>();
flareRegister = FindObjectOfType<FlareRegister>();
if (targetObject == null)
targetObject = new GameObject();
targetObject.name = "Enemy Target";
if(player == null)
{
player = GameObject.FindObjectOfType<PlayerComponent>();
}
}
void HandleTargetOperations()
{
//Update booleans for movement
float distToTarget = Vector3.Distance(target.target.transform.position, agent.transform.position);
atTarget = atTargetDistance >= distToTarget;
if (target.hasDamageRange)
{
inDamageRange = target.damageRange <= distToTarget;
inDamageMargin = target.damageMargin + target.damageRange <= distToTarget;
}
else
{
inDamageRange = false;
inDamageMargin = false;
}
//Perform actions.
if (target.runTowards)
{
if (inDamageRange)
{
//Damage is being dealt
animator.InLight();
//Deal Damage
health -= Time.deltaTime;
if (health < 0 && this.isAlive)
{
this.Kill();
}
}
else if (inDamageMargin)
{
//Effective stop
agent.SetDestination(transform.position);
animator.StopMoving();
}
else
{
if (atTarget)
{
//Effective stop
agent.SetDestination(transform.position);
animator.StopMoving();
if (target.isHostile)
{
animator.Attack();
animator.SetAttackType(Random.Range(0, 0));
}
}
else
{
agent.SetDestination(target.target.transform.position);
animator.StartMoving();
animator.NotInLight();
}
}
}
else
{
//Run away logic
if (atTarget || distToTarget < 3)
{
animator.StopMoving();
}
else
{
Ray r = new Ray();
r.origin = transform.position;
r.direction = oppositeVector;
RaycastHit hit;
if (Physics.Raycast(r, out hit))
{
animator.StartMoving();
agent.SetDestination(hit.point);
}
else
{
agent.SetDestination(transform.position + oppositeVector * 100);
agent.isStopped = false;
}
}
}
if (atTarget&&target.isHostile)
{
SlowLookAt(target.target.transform.position-transform.position);
}
}
void SlowLookAt(Vector3 targetVector,float animatedRotationSpeed=1f)
{
Vector3 relativePos = targetVector;
Quaternion toRotation = Quaternion.LookRotation(relativePos);
transform.rotation = Quaternion.Lerp(transform.rotation, toRotation, animatedRotationSpeed * Time.deltaTime);
}
void CheckForAOERanges()
{
foreach(BulletComponent bullet in flareRegister.bullets)
{
float dist = Vector3.Distance(bullet.transform.position, transform.position);
if (dist <= bullet.DamageRange)
{
this.health = 0;
this.Kill(true);
}
}
foreach(FlareBeacon beacon in flareRegister.beacons)
{
float dist = Vector3.Distance(beacon.transform.position, transform.position);
if (dist <= beacon.Range)
{
this.health = 0f;
}
}
if (this.health <= 0)
{
this.Kill();
}
}
public bool isPlayerVisible(bool withAngle)
{
Ray r = new Ray();
r.origin = transform.position;
r.direction = player.transform.position - transform.position;
Vector3 toPosition = (player.transform.position - transform.position).normalized;
float angleToPosition = Vector3.Angle(transform.forward, toPosition);
RaycastHit hit;
if(Physics.Raycast(r, out hit))
{
GameObject hitObject = hit.transform.gameObject;
if (hitObject.GetComponent<PlayerComponent>() != null)
{
//hit player
return angleToPosition <= this.visibilityConeLimit||!withAngle;
}else if (hitObject.GetComponentInParent<PlayerComponent>() != null)
{
//also hit player
return angleToPosition <= this.visibilityConeLimit||!withAngle;
}
}
return false;
}
void SetLiveTargeting()
{
if (!isAlive)
{
//this.targetObject.transform.position = transform.position;
this.Stop();
}
distanceToPlayer = Vector3.Distance(this.transform.position, player.transform.position);
//print("Dist Comparison "+distanceToPlayer.ToString()+" Noise:"+player.NoiseManager.NoiseDistance);
bool isPlayerVisible = this.isPlayerVisible(true);
//check if player is heard or player line of sight
if (distanceToPlayer <= player.NoiseManager.NoiseDistance||isPlayerVisible)
{
//check that nothing in between
if (this.isPlayerVisible(false))
{
this.Target(player.gameObject, true);
}
}
else
{
if (this.timeSinceTarget < this.newTargetCooldown)
{
//no further targeting
//Stop();
return;
}
BulletComponent closestBullet = null;
float closestDistance = Mathf.Infinity;
foreach(BulletComponent bullet in this.flareRegister.bullets)
{
float bDist = Vector3.Distance(bullet.transform.position, transform.position);
if (closestBullet==null||(bDist< bulletSoundRange&&bDist<closestDistance))
{
closestBullet = bullet;
closestDistance = bDist;
}
}
if (closestBullet != null&&closestBullet.DamageRange==0)
{
targetObject.transform.position= closestBullet.transform.position;
this.Target(targetObject,false);
}
else
{
targetObject.transform.position = transform.position;
this.Target(targetObject,false);
this.Stop();
}
}
if (player == null) player = FindObjectOfType<PlayerComponent>();
}
private void Update()
{
if (!player.IsAlive)
{
Stop();
}
if (target != null)
{
HandleTargetOperations();
}
if (!player.IsAlive) Stop();
if (target != null) HandleTargetOperations();
CheckForAOERanges();
if(isAlive&&player.IsAlive)
if (isAlive && player.IsAlive)
SetLiveTargeting();
timeSinceTarget += Time.deltaTime;
if (this.isAlive)
if (isAlive)
{
leftHandDamage.enabled = true;
rightHandDamage.enabled = true;
@ -325,7 +83,7 @@ public class SkinlessMonsterComponent : MonoBehaviour
leftHandDamage.enabled = false;
rightHandDamage.enabled = false;
}
/*
AI Behavior:
@ -345,6 +103,197 @@ public class SkinlessMonsterComponent : MonoBehaviour
- stop() and wait for player to leave AOE (enforced by navigation).
*/
}
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.GetComponent<BulletComponent>() != null)
health -= other.gameObject.GetComponent<BulletComponent>().DamageMagnitude;
}
private void HandleTargetOperations()
{
//Update booleans for movement
var distToTarget = Vector3.Distance(target.target.transform.position, agent.transform.position);
atTarget = atTargetDistance >= distToTarget;
if (target.hasDamageRange)
{
inDamageRange = target.damageRange <= distToTarget;
inDamageMargin = target.damageMargin + target.damageRange <= distToTarget;
}
else
{
inDamageRange = false;
inDamageMargin = false;
}
//Perform actions.
if (target.runTowards)
{
if (inDamageRange)
{
//Damage is being dealt
animator.InLight();
//Deal Damage
health -= Time.deltaTime;
if (health < 0 && isAlive) Kill();
}
else if (inDamageMargin)
{
//Effective stop
agent.SetDestination(transform.position);
animator.StopMoving();
}
else
{
if (atTarget)
{
//Effective stop
agent.SetDestination(transform.position);
animator.StopMoving();
if (target.isHostile)
{
animator.Attack();
animator.SetAttackType(Random.Range(0, 0));
}
}
else
{
agent.SetDestination(target.target.transform.position);
animator.StartMoving();
animator.NotInLight();
}
}
}
else
{
//Run away logic
if (atTarget || distToTarget < 3)
{
animator.StopMoving();
}
else
{
var r = new Ray();
r.origin = transform.position;
r.direction = oppositeVector;
RaycastHit hit;
if (Physics.Raycast(r, out hit))
{
animator.StartMoving();
agent.SetDestination(hit.point);
}
else
{
agent.SetDestination(transform.position + oppositeVector * 100);
agent.isStopped = false;
}
}
}
if (atTarget && target.isHostile) SlowLookAt(target.target.transform.position - transform.position);
}
private void SlowLookAt(Vector3 targetVector, float animatedRotationSpeed = 1f)
{
var relativePos = targetVector;
var toRotation = Quaternion.LookRotation(relativePos);
transform.rotation = Quaternion.Lerp(transform.rotation, toRotation, animatedRotationSpeed * Time.deltaTime);
}
private void CheckForAOERanges()
{
foreach (var bullet in flareRegister.bullets)
{
var dist = Vector3.Distance(bullet.transform.position, transform.position);
if (dist <= bullet.DamageRange)
{
health = 0;
Kill(true);
}
}
foreach (var beacon in flareRegister.beacons)
{
var dist = Vector3.Distance(beacon.transform.position, transform.position);
if (dist <= beacon.Range) health = 0f;
}
if (health <= 0) Kill();
}
public bool isPlayerVisible(bool withAngle)
{
var r = new Ray();
r.origin = transform.position;
r.direction = player.transform.position - transform.position;
var toPosition = (player.transform.position - transform.position).normalized;
var angleToPosition = Vector3.Angle(transform.forward, toPosition);
RaycastHit hit;
if (Physics.Raycast(r, out hit))
{
var hitObject = hit.transform.gameObject;
if (hitObject.GetComponent<PlayerComponent>() != null)
//hit player
return angleToPosition <= visibilityConeLimit || !withAngle;
if (hitObject.GetComponentInParent<PlayerComponent>() != null)
//also hit player
return angleToPosition <= visibilityConeLimit || !withAngle;
}
return false;
}
private void SetLiveTargeting()
{
if (!isAlive)
//this.targetObject.transform.position = transform.position;
Stop();
distanceToPlayer = Vector3.Distance(transform.position, player.transform.position);
//print("Dist Comparison "+distanceToPlayer.ToString()+" Noise:"+player.NoiseManager.NoiseDistance);
var isPlayerVisible = this.isPlayerVisible(true);
//check if player is heard or player line of sight
if (distanceToPlayer <= player.NoiseManager.NoiseDistance || isPlayerVisible)
{
//check that nothing in between
if (this.isPlayerVisible(false)) Target(player.gameObject, true);
}
else
{
if (timeSinceTarget < newTargetCooldown)
//no further targeting
//Stop();
return;
BulletComponent closestBullet = null;
var closestDistance = Mathf.Infinity;
foreach (var bullet in flareRegister.bullets)
{
var bDist = Vector3.Distance(bullet.transform.position, transform.position);
if (closestBullet == null || (bDist < bulletSoundRange && bDist < closestDistance))
{
closestBullet = bullet;
closestDistance = bDist;
}
}
if (closestBullet != null && closestBullet.DamageRange == 0)
{
targetObject.transform.position = closestBullet.transform.position;
Target(targetObject);
}
else
{
targetObject.transform.position = transform.position;
Target(targetObject);
Stop();
}
}
}
/*
STANDARD BEHAVIOR:
- OnSeeing/Hearing Player:
@ -360,9 +309,9 @@ public class SkinlessMonsterComponent : MonoBehaviour
*/
//Runs towards target. If its meant to be hostile, it will melee attack once in range.
public void Target(GameObject obj,bool hostile=false)
public void Target(GameObject obj, bool hostile = false)
{
if(target == null || target.target!= obj)
if (target == null || target.target != obj)
{
//target = new TargetInformation(obj,hostile,false,runTowards:true);
target = new TargetInformation();
@ -371,13 +320,13 @@ public class SkinlessMonsterComponent : MonoBehaviour
target.hasDamageRange = false;
target.runTowards = true;
timeSinceTarget = 0;
}
}
//Runs towards flare such that it stops randomly within margin before range.
public void TargetFlare(GameObject obj,float range,float margin)
public void TargetFlare(GameObject obj, float range, float margin)
{
if(target == null || target.target != obj)
if (target == null || target.target != obj)
{
//target = new TargetInformation(obj, false, true, range, margin,runTowards:true);
target = new TargetInformation();
@ -390,15 +339,17 @@ public class SkinlessMonsterComponent : MonoBehaviour
timeSinceTarget = 0;
}
}
/// <summary>
/// Runs away from object. A minimum range is specified where it no longer takes damage, and a minimum margin is
/// speicifed where it can stop running.
/// Runs away from object. A minimum range is specified where it no longer takes damage, and a minimum margin is
/// speicifed where it can stop running.
/// </summary>
/// <param name="obj"></param>
/// <param name="minRange"></param>
/// <param name="minMargin"></param>
public void RunAwayFrom(GameObject obj,float minRange,float minMargin) {
if(target== null ||target.target != obj)
public void RunAwayFrom(GameObject obj, float minRange, float minMargin)
{
if (target == null || target.target != obj)
{
//target = new TargetInformation(obj, false, true, minRange, minMargin, false);
target = new TargetInformation();
@ -416,44 +367,30 @@ public class SkinlessMonsterComponent : MonoBehaviour
public void Stop()
{
target = new TargetInformation();
target.target = this.gameObject;
target.target = gameObject;
target.isHostile = false;
target.hasDamageRange = false;
target.runTowards = true;
}
public void Kill(bool fast=false)
public void Kill(bool fast = false)
{
if (this.isAlive)
if (isAlive)
{
this.animator.Kill(fast);
this.isAlive = false;
animator.Kill(fast);
isAlive = false;
agent.isStopped = true;
}
}
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.GetComponent<BulletComponent>() != null)
{
this.health -= other.gameObject.GetComponent<BulletComponent>().DamageMagnitude;
}
}
}
class TargetInformation
{
public GameObject target;
public bool isHostile;
public bool hasDamageRange;
public float damageRange;
internal class TargetInformation
{
public float damageMargin;
public float damageRange;
public bool hasDamageRange;
public bool isHostile;
public bool runTowards;
public GameObject target;
}

View File

@ -1,38 +1,22 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TestSkinnlessMonster : MonoBehaviour
{
[SerializeField]
private SkinlessMonsterComponent monster;
[SerializeField]
private Camera cam;
[SerializeField] private SkinlessMonsterComponent monster;
[SerializeField] private Camera cam;
// Start is called before the first frame update
void Start()
private void Start()
{
}
// Update is called once per frame
void Update()
private void Update()
{
if (Input.GetKeyDown(KeyCode.Alpha1))
{
monster.Target(cam.gameObject, true);
}
if (Input.GetKeyDown(KeyCode.Alpha2))
{
monster.TargetFlare(cam.gameObject, 1, 1);
}
if (Input.GetKeyDown(KeyCode.Alpha3))
{
monster.RunAwayFrom(cam.gameObject, 1, 1);
}
if (Input.GetKeyDown(KeyCode.Alpha0))
{
monster.Stop();
}
if (Input.GetKeyDown(KeyCode.Alpha1)) monster.Target(cam.gameObject, true);
if (Input.GetKeyDown(KeyCode.Alpha2)) monster.TargetFlare(cam.gameObject, 1, 1);
if (Input.GetKeyDown(KeyCode.Alpha3)) monster.RunAwayFrom(cam.gameObject, 1, 1);
if (Input.GetKeyDown(KeyCode.Alpha0)) monster.Stop();
}
}
}

View File

@ -1,27 +1,22 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DummyComponent : MonoBehaviour
{
private Animator anim;
// Start is called before the first frame update
void Start()
private void Start()
{
anim = this.GetComponentInParent<Animator>();
anim = GetComponentInParent<Animator>();
}
// Update is called once per frame
void Update()
private void Update()
{
}
private void OnCollisionEnter(Collision collision)
{
if(collision.gameObject.GetComponent<BulletComponent>() != null)
{
anim.Play("DummyFall");
}
if (collision.gameObject.GetComponent<BulletComponent>() != null) anim.Play("DummyFall");
}
}
}

View File

@ -1,26 +1,22 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MonsterComponent : MonoBehaviour
{
[SerializeField] private float attackDamage = 1f;
[SerializeField]
private float attackDamage = 1f;
public float AttackDamage { get { return this.attackDamage; } }
[SerializeField] private bool shakeCameraOnHit = true;
public float AttackDamage => attackDamage;
public bool ShakeCameraOnHit => shakeCameraOnHit;
[SerializeField]
private bool shakeCameraOnHit = true;
public bool ShakeCameraOnHit { get { return this.shakeCameraOnHit; } }
// Start is called before the first frame update
void Start()
private void Start()
{
}
// Update is called once per frame
void Update()
private void Update()
{
}
}
}

View File

@ -1,38 +1,32 @@
using UnityEngine;
using System;
using System.Collections;
[RequireComponent(typeof(Animator))]
public class IKControl_Robot : MonoBehaviour
{
public bool ikActive;
public Transform rightHandObj;
public Transform leftHandObj;
public Transform lookObj;
public Transform stepOnObj;
public Transform stepOffObj;
protected Animator animator;
public bool ikActive = false;
public Transform rightHandObj = null;
public Transform leftHandObj = null;
public Transform lookObj = null;
public Transform stepOnObj = null;
public Transform stepOffObj = null;
void Start()
private void Start()
{
animator = GetComponent<Animator>();
transform.Rotate(0, 90, 0);
}
//a callback for calculating IK
void OnAnimatorIK()
private void OnAnimatorIK()
{
if (animator)
{
//if the IK is active, set the position and rotation directly to the goal.
if (ikActive)
{
// Set the look target position, if one has been assigned
if (lookObj != null)
{
@ -48,6 +42,7 @@ public class IKControl_Robot : MonoBehaviour
animator.SetIKPosition(AvatarIKGoal.RightHand, rightHandObj.position);
animator.SetIKRotation(AvatarIKGoal.RightHand, rightHandObj.rotation);
}
if (leftHandObj != null)
{
animator.SetIKPositionWeight(AvatarIKGoal.LeftHand, 1);
@ -55,22 +50,22 @@ public class IKControl_Robot : MonoBehaviour
animator.SetIKPosition(AvatarIKGoal.LeftHand, leftHandObj.position);
animator.SetIKRotation(AvatarIKGoal.LeftHand, leftHandObj.rotation);
}
if(stepOnObj != null)
if (stepOnObj != null)
{
animator.SetIKPositionWeight(AvatarIKGoal.LeftFoot, 1);
animator.SetIKRotationWeight(AvatarIKGoal.LeftFoot, 1);
animator.SetIKPosition(AvatarIKGoal.LeftFoot,stepOnObj.position);
animator.SetIKRotation(AvatarIKGoal.LeftFoot,stepOnObj.rotation);
animator.SetIKPosition(AvatarIKGoal.LeftFoot, stepOnObj.position);
animator.SetIKRotation(AvatarIKGoal.LeftFoot, stepOnObj.rotation);
}
if(stepOffObj!= null) {
if (stepOffObj != null)
{
animator.SetIKPositionWeight(AvatarIKGoal.RightFoot, 1);
animator.SetIKRotationWeight(AvatarIKGoal.RightFoot, 1);
animator.SetIKPosition(AvatarIKGoal.RightFoot, stepOffObj.position);
animator.SetIKRotation(AvatarIKGoal.RightFoot, stepOffObj.rotation);
}
}
//if the IK is not active, set the position and rotation of the hand and head back to the original position
@ -87,8 +82,6 @@ public class IKControl_Robot : MonoBehaviour
animator.SetIKPositionWeight(AvatarIKGoal.RightFoot, 0);
animator.SetIKRotationWeight(AvatarIKGoal.RightFoot, 0);
}
}
}

View File

@ -1,24 +1,24 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.VFX;
public class RobotMouthAnimator : MonoBehaviour
{
[SerializeField] private VisualEffect fireEffect;
[SerializeField] private Light fireLight;
private Animator anim;
[SerializeField]
private VisualEffect fireEffect;
[SerializeField]
private Light fireLight;
// Start is called before the first frame update
void Start()
private void Start()
{
anim = GetComponent<Animator>();
fireLight.gameObject.SetActive(false);
}
// Update is called once per frame
void Update()
private void Update()
{
if (Input.GetKeyDown(KeyCode.Return))
{
@ -26,21 +26,19 @@ public class RobotMouthAnimator : MonoBehaviour
if (anim.GetBool("FlapsOpen"))
{
StartCoroutine(WaitToFire());
}
else
{
fireEffect.Stop();
fireLight.gameObject.SetActive(false);
}
}
}
private IEnumerator WaitToFire()
{
yield return new WaitForSeconds(1.5f);
fireEffect.Play();
fireLight.gameObject.SetActive(true);
}
}
}

View File

@ -1,74 +1,62 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.VFX;
[ExecuteAlways]
public class SwarmAnimator : MonoBehaviour
{
[SerializeField]
private VisualEffect vfx;
[SerializeField] private VisualEffect vfx;
private Vector3 currentPosition;
private Vector3 previousPosition;
[SerializeField]
private Rigidbody rb;
[SerializeField] private Rigidbody rb;
//[SerializeField]
//private string parameterName = "DeltaVector";
[SerializeField]
private Vector3 avoidancePosDefault;
[SerializeField] private Vector3 avoidancePosDefault;
[SerializeField]
private float explodeDuration = 1.0f;
private float dur = 0f;
private bool isExploding = false;
[SerializeField] private float explodeDuration = 1.0f;
private Vector3 currentPosition;
private float dur;
private bool isExploding;
private Vector3 previousPosition;
// Start is called before the first frame update
void Start()
private void Start()
{
}
// Update is called once per frame
void Update()
private void Update()
{
previousPosition = currentPosition;
currentPosition = transform.position;
Vector3 velocity = (currentPosition - previousPosition) ;
var velocity = currentPosition - previousPosition;
vfx.SetVector3("DeltaVector", velocity);
if (Input.GetKeyDown(KeyCode.Space))
{
Explode();
}
if (Input.GetKeyDown(KeyCode.Space)) Explode();
if (isExploding)
{
if(dur> explodeDuration)
{
StopExplode();
}
if (dur > explodeDuration) StopExplode();
dur += Time.deltaTime;
}
}
void Explode()
private void FixedUpdate()
{
}
private void Explode()
{
vfx.SetVector3("Avoid", transform.position);
this.isExploding = true;
isExploding = true;
dur = 0;
//Wait a sec then stop.
}
void StopExplode()
private void StopExplode()
{
vfx.SetVector3("Avoid", avoidancePosDefault);
this.isExploding = false;
isExploding = false;
vfx.Stop();
}
private void FixedUpdate()
{
}
}
}

View File

@ -1,40 +1,36 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EmissiveLightMatching : MonoBehaviour
{
[SerializeField]
private List<int> indexes;
private List<Color> colors= new List<Color>();
[SerializeField]
private Light reference;
[SerializeField] private List<int> indexes;
[SerializeField] private Light reference;
private readonly List<Color> colors = new();
private float initIntensity;
private void Awake()
{
initIntensity = reference.intensity;
}
// Start is called before the first frame update
void Start()
private void Start()
{
foreach(int index in indexes) {
colors.Add(this.gameObject.GetComponent<MeshRenderer>().materials[index].GetColor("_EmissiveColor"));
}
foreach (var index in indexes)
colors.Add(gameObject.GetComponent<MeshRenderer>().materials[index].GetColor("_EmissiveColor"));
}
// Update is called once per frame
void Update()
private void Update()
{
int x = 0;
foreach(int i in indexes)
var x = 0;
foreach (var i in indexes)
{
this.gameObject.GetComponent<MeshRenderer>().materials[i].SetColor("_EmissiveColor", colors[x] * ((10*reference.intensity / initIntensity)));
gameObject.GetComponent<MeshRenderer>().materials[i].SetColor("_EmissiveColor",
colors[x] * (10 * reference.intensity / initIntensity));
x++;
}
}
}
}

View File

@ -1,39 +1,40 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TestAnimationParameters : MonoBehaviour
{
[SerializeField] private float speed;
[SerializeField] private int attackIndex;
[SerializeField] private int attack;
[SerializeField] private bool inlight;
[SerializeField] private int attackScream;
private Animator animator;
[SerializeField]
private float speed = 0;
[SerializeField]
private int attackIndex = 0;
[SerializeField]
private int attack = 0;
private int pattack = -1;
[SerializeField]
private bool inlight = false;
[SerializeField]
private int attackScream = 0;
private int pAttackScream = -1;
// Start is called before the first frame update
void Start()
private void Start()
{
animator= GetComponent<Animator>();
animator = GetComponent<Animator>();
}
// Update is called once per frame
void Update()
private void Update()
{
animator.SetFloat("Speed", speed);
animator.SetInteger("AttackIndex", attackIndex);
if (Input.GetKeyDown(KeyCode.Tab)){
if (Input.GetKeyDown(KeyCode.Tab))
{
animator.SetTrigger("Attack");
pattack = attack;
};
}
;
animator.SetBool("InLight", inlight);
if (Input.GetKeyDown(KeyCode.Space))
{
@ -41,4 +42,4 @@ public class TestAnimationParameters : MonoBehaviour
pAttackScream = attackScream;
}
}
}
}

View File

@ -2,115 +2,32 @@ using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class InGameManager : MonoBehaviour
{
[SerializeField] private Volume gameVolume;
[SerializeField]
private Volume gameVolume;
[SerializeField]
private Volume pausedVolume;
[SerializeField] private Volume pausedVolume;
[SerializeField]
private bool isPaused = false;
private bool isTransitioning = false;
[SerializeField] private bool isPaused;
// [SerializeField]
// [SerializeField]
//private float pauseTransitionDuration = 1f;
[SerializeField]
private Canvas gameCanvas;
[SerializeField]
private Canvas pausedCanvas;
[SerializeField]
private List<AudioSource> sounds = new List<AudioSource>();
private List<float> initSoundVolumes = new List<float>();
[SerializeField] private Canvas gameCanvas;
public bool IsPaused { get { return this.isPaused; } }
[SerializeField] private Canvas pausedCanvas;
public void TogglePause()
{
if (!isTransitioning)
{
isPaused = !isPaused;
Cursor.visible = isPaused;
if (!isPaused)
{
Cursor.lockState = CursorLockMode.Locked;
}
else
{
Cursor.lockState = CursorLockMode.None;
}
StartCoroutine(pauseTransition());
[SerializeField] private List<AudioSource> sounds = new();
}
private readonly List<float> initSoundVolumes = new();
private bool isTransitioning;
}
public void UnPause()
{
if (!isTransitioning)
{
isPaused = false;
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = isPaused;
StartCoroutine(pauseTransition());
}
}
public void Pause()
{
if (!isTransitioning)
{
isPaused = true;
Cursor.lockState = CursorLockMode.None;
Cursor.visible = isPaused;
StartCoroutine(pauseTransition());
}
}
public bool IsPaused => isPaused;
IEnumerator pauseTransition()
{
if (pausedCanvas.gameObject.activeInHierarchy && !isPaused)
{
pausedCanvas.gameObject.SetActive(false);
}
if (gameCanvas.gameObject.activeInHierarchy && isPaused)
{
gameCanvas.gameObject.SetActive(false);
}
this.isTransitioning = true;
yield return new WaitForSeconds(0);
this.isTransitioning = false;
print("Unpause canvas?" + isPaused+","+pausedCanvas.gameObject.activeInHierarchy);
if (!pausedCanvas.gameObject.activeInHierarchy && isPaused)
{
pausedCanvas.gameObject.SetActive(true);
}
if (!gameCanvas.gameObject.activeInHierarchy && !isPaused)
{
gameCanvas.gameObject.SetActive(true);
}
}
public void SetVolume(float volume)
{
for (int i = 0;i<sounds.Count;i++)
{
sounds[i].volume = initSoundVolumes[i]*volume;
}
}
// Start is called before the first frame update
void Start()
private void Start()
{
isPaused = false;
Cursor.lockState = CursorLockMode.Locked;
@ -120,23 +37,15 @@ public class InGameManager : MonoBehaviour
gameCanvas.gameObject.SetActive(true);
pausedCanvas.gameObject.SetActive(false);
foreach (AudioSource source in sounds)
{
initSoundVolumes.Add(source.volume);
}
foreach (var source in sounds) initSoundVolumes.Add(source.volume);
}
// Update is called once per frame
void Update()
private void Update()
{
if (Input.GetButtonDown("Pause"))
{
this.TogglePause();
}
if (Input.GetButtonDown("Pause")) TogglePause();
if (isTransitioning||true)
if (isTransitioning || true)
{
if (isPaused)
{
@ -149,20 +58,74 @@ public class InGameManager : MonoBehaviour
//pausedVolume.weight = pausedVolume.weight > 0.9 ? 1 : pausedVolume.weight;
gameVolume.weight = 0;
pausedVolume.weight = 1;
}
else
{
//transition out of pause
gameVolume.weight = 1;
pausedVolume.weight = 0;
}
}
}
public void TogglePause()
{
if (!isTransitioning)
{
isPaused = !isPaused;
Cursor.visible = isPaused;
if (!isPaused)
Cursor.lockState = CursorLockMode.Locked;
else
Cursor.lockState = CursorLockMode.None;
StartCoroutine(pauseTransition());
}
}
public void UnPause()
{
if (!isTransitioning)
{
isPaused = false;
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = isPaused;
StartCoroutine(pauseTransition());
}
}
public void Pause()
{
if (!isTransitioning)
{
isPaused = true;
Cursor.lockState = CursorLockMode.None;
Cursor.visible = isPaused;
StartCoroutine(pauseTransition());
}
}
private IEnumerator pauseTransition()
{
if (pausedCanvas.gameObject.activeInHierarchy && !isPaused) pausedCanvas.gameObject.SetActive(false);
if (gameCanvas.gameObject.activeInHierarchy && isPaused) gameCanvas.gameObject.SetActive(false);
isTransitioning = true;
yield return new WaitForSeconds(0);
isTransitioning = false;
print("Unpause canvas?" + isPaused + "," + pausedCanvas.gameObject.activeInHierarchy);
if (!pausedCanvas.gameObject.activeInHierarchy && isPaused) pausedCanvas.gameObject.SetActive(true);
if (!gameCanvas.gameObject.activeInHierarchy && !isPaused) gameCanvas.gameObject.SetActive(true);
}
public void SetVolume(float volume)
{
for (var i = 0; i < sounds.Count; i++) sounds[i].volume = initSoundVolumes[i] * volume;
}
public void ExitToMenu()
{
SceneManager.LoadScene(0);
}
}
}

View File

@ -1,52 +1,52 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class InGameMenuManager : MonoBehaviour
{
[SerializeField]
private Button settingsButton;
[SerializeField]
private Button returnToMenuButton;
private Animator menuAnimator;
[SerializeField]
private Scrollbar sensitivitySlider;
[SerializeField]
private Scrollbar volumeSlider;
private PlayerComponent player;
[SerializeField] private Button settingsButton;
[SerializeField] private Button returnToMenuButton;
[SerializeField] private Scrollbar sensitivitySlider;
[SerializeField] private Scrollbar volumeSlider;
private InGameManager gameManager;
private Animator menuAnimator;
private PlayerComponent player;
// Start is called before the first frame update
void Start()
private void Start()
{
menuAnimator= GetComponent<Animator>();
menuAnimator = GetComponent<Animator>();
settingsButton.onClick.AddListener(SettingsClicked);
returnToMenuButton.onClick.AddListener(SettingsUnClicked);
player = GameObject.FindObjectOfType(typeof(PlayerComponent)) as PlayerComponent;
gameManager = GameObject.FindObjectOfType<InGameManager>();
}
void SettingsClicked()
{
menuAnimator.SetBool("SettingsOpen", true);
}
void SettingsUnClicked()
{
menuAnimator.SetBool("SettingsOpen", false);
}
public void UpdateSensitivity()
{
this.player.SetSensitivity(sensitivitySlider.value*4f);
}
public void UpdateVolume()
{
gameManager.SetVolume(volumeSlider.value*2);
player = FindObjectOfType(typeof(PlayerComponent)) as PlayerComponent;
gameManager = FindObjectOfType<InGameManager>();
}
// Update is called once per frame
void Update()
private void Update()
{
}
}
private void SettingsClicked()
{
menuAnimator.SetBool("SettingsOpen", true);
}
private void SettingsUnClicked()
{
menuAnimator.SetBool("SettingsOpen", false);
}
public void UpdateSensitivity()
{
player.SetSensitivity(sensitivitySlider.value * 4f);
}
public void UpdateVolume()
{
gameManager.SetVolume(volumeSlider.value * 2);
}
}

View File

@ -1,54 +1,39 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// Attach this behavior to a master room collider. Enables everything in this room OnTriggerEnter of [tag]
/// disables everything in this room OnTriggerExit of [tag]
/// Attach this behavior to a master room collider. Enables everything in this room OnTriggerEnter of [tag]
/// disables everything in this room OnTriggerExit of [tag]
/// </summary>
public class Optimizer : MonoBehaviour
{
[SerializeField]
public string Tag;
[SerializeField]
private GameObject[] references;
[SerializeField]
private bool beginDisabled = true;
[SerializeField] public string Tag;
[SerializeField] private GameObject[] references;
[SerializeField] private bool beginDisabled = true;
private void Start()
{
if (beginDisabled)
{
Disable();
}
}
public void Enable()
{
foreach (GameObject go in references)
{
go.SetActive(true);
}
}
public void Disable()
{
foreach (GameObject go in references)
{
go.SetActive(false);
}
if (beginDisabled) Disable();
}
private void OnTriggerEnter(Collider other)
{
if (other.CompareTag(Tag))
{
Enable();
}
if (other.CompareTag(Tag)) Enable();
}
private void OnTriggerExit(Collider other)
{
if (other.CompareTag(Tag))
{
Disable();
}
if (other.CompareTag(Tag)) Disable();
}
}
public void Enable()
{
foreach (var go in references) go.SetActive(true);
}
public void Disable()
{
foreach (var go in references) go.SetActive(false);
}
}

View File

@ -1,33 +1,26 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GemItem : MonoBehaviour
{
[SerializeField]
private float instantSpeed = 98f;
[SerializeField] private float instantSpeed = 98f;
// Start is called before the first frame update
private void Start()
{
}
// Update is called once per frame
private void Update()
{
}
private void OnTriggerEnter(Collider collision)
{
if (collision.gameObject.CompareTag("Player"))
{
collision.gameObject.GetComponent<PlayerMovementController>().SetSpeed(instantSpeed);
Destroy(this.gameObject);
Destroy(gameObject);
}
}
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}
}

View File

@ -1,24 +1,20 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RotatingHologram : MonoBehaviour
{
[SerializeField]
private Vector3 globalRotation= Vector3.zero;
[SerializeField]
private Vector3 localRotation = Vector3.zero;
[SerializeField] private Vector3 globalRotation = Vector3.zero;
[SerializeField] private Vector3 localRotation = Vector3.zero;
// Start is called before the first frame update
void Start()
private void Start()
{
}
// Update is called once per frame
void Update()
private void Update()
{
this.transform.eulerAngles += globalRotation * Time.deltaTime;
this.transform.Rotate(localRotation* Time.deltaTime);
transform.eulerAngles += globalRotation * Time.deltaTime;
transform.Rotate(localRotation * Time.deltaTime);
}
}
}

View File

@ -1,18 +1,14 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Insertable : MonoBehaviour
{
// Start is called before the first frame update
void Start()
private void Start()
{
}
// Update is called once per frame
void Update()
private void Update()
{
}
}
}

View File

@ -1,20 +1,14 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Interactable : MonoBehaviour
{
// Start is called before the first frame update
void Start()
private void Start()
{
}
// Update is called once per frame
void Update()
private void Update()
{
}
}
}

View File

@ -1,57 +1,44 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ItemSelector : MonoBehaviour
{
[SerializeField]
private Camera cam;
private InteractableItem selected;
[SerializeField]
private LayerMask mask;
public static ItemSelector instance;
[SerializeField]
private float range = 1;
public InteractableItem Selected { get { return selected; } }
[SerializeField] private Camera cam;
[SerializeField] private LayerMask mask;
[SerializeField] private float range = 1;
public InteractableItem Selected { get; private set; }
// Start is called before the first frame update
void Start()
private void Start()
{
instance = this;
}
void FixedUpdate()
// Update is called once per frame
private void Update()
{
Ray ray = cam.ScreenPointToRay(Input.mousePosition);
}
private void FixedUpdate()
{
var ray = cam.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit,range,layerMask:mask))
if (Physics.Raycast(ray, out hit, range, mask))
{
if(selected!= null||hit.transform.gameObject==null)
{
selected.Disable();
}
if (Selected != null || hit.transform.gameObject == null) Selected.Disable();
selected = hit.transform.gameObject.GetComponent<InteractableItem>();
selected.Enable();
print(selected);
Selected = hit.transform.gameObject.GetComponent<InteractableItem>();
Selected.Enable();
print(Selected);
}
else
{
if (selected != null)
{
selected.Disable();
}
if (Selected != null) Selected.Disable();
}
}
// Update is called once per frame
void Update()
{
}
}
}

View File

@ -1,74 +1,67 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// Inventory:
/// <list type="bullet">Inventory Name: The name of the inventory.</list>
/// <list type="bullet">Inventory Size: The amount of size the inventory has.</list>
/// <list type="bullet">Invetory Items: List of all items in the inventory. No items in the world are "destroyed"
/// instead all items in inventory are disabled, but can be looked up by their item name.</list>
/// Inventory:
/// <list type="bullet">Inventory Name: The name of the inventory.</list>
/// <list type="bullet">Inventory Size: The amount of size the inventory has.</list>
/// <list type="bullet">
/// Invetory Items: List of all items in the inventory. No items in the world are "destroyed"
/// instead all items in inventory are disabled, but can be looked up by their item name.
/// </list>
/// </summary>
public class Inventory : MonoBehaviour
{
[SerializeField]
private string inventoryName;
[SerializeField]
private int inventorySize;
[SerializeField]
private List<string> inventoryItems;
[SerializeField] private string inventoryName;
[SerializeField] private int inventorySize;
[SerializeField] private List<string> inventoryItems;
private int inventoryReserved;
/// <summary>
/// Adds item to inventory. Does not disable.
/// Adds item to inventory. Does not disable.
/// </summary>
/// <param name="item"></param>
/// <returns></returns>
public bool AddItem(CarryableItem item)
{
if(item.ItemSize+inventoryReserved > inventorySize)
{
return false;
}
if (item.ItemSize + inventoryReserved > inventorySize) return false;
inventoryItems.Add(item.ItemName);
inventoryReserved += item.ItemSize;
//item.gameObject.SetActive(false);
return true;
}
private bool FindItemOfName(string name, out CarryableItem item)
{
//NOTE: May not work. May need to move instead of disable objects.
CarryableItem[] items = Resources.FindObjectsOfTypeAll<CarryableItem>();
foreach (CarryableItem item2 in items)
{
var items = Resources.FindObjectsOfTypeAll<CarryableItem>();
foreach (var item2 in items)
if (item2.ItemName == name)
{
item = item2;
return true;
}
}
item = null;
return false;
}
public bool RemoveItem(string name)
{
CarryableItem itemFound;
if (FindItemOfName(name,out itemFound))
if (FindItemOfName(name, out itemFound))
{
itemFound.gameObject.SetActive(true);
inventoryItems.Remove(itemFound.ItemName);
inventoryReserved -= itemFound.ItemSize;
return true;
}
return false;
}
}
}

View File

@ -1,8 +1,8 @@
using System.Collections;
using System;
using System.Collections.Generic;
using UnityEngine;
[System.Serializable]
[Serializable]
public class TempInventoryBuilderItem
{
public string name;
@ -11,57 +11,44 @@ public class TempInventoryBuilderItem
public class TempInventory : MonoBehaviour
{
private Dictionary<string,int> inventory = new Dictionary<string,int>();
[SerializeField]
private List<TempInventoryBuilderItem> initialInvent = new List<TempInventoryBuilderItem>();
[SerializeField] private List<TempInventoryBuilderItem> initialInvent = new();
private readonly Dictionary<string, int> inventory = new();
// Start is called before the first frame update
private void Start()
{
foreach (var item in initialInvent) inventory[item.name] = item.quantity;
}
// Update is called once per frame
private void Update()
{
}
public int GetQuantityOf(string name)
{
if (inventory.ContainsKey(name))
{
return inventory[name];
}
if (inventory.ContainsKey(name)) return inventory[name];
return 0;
}
public bool Add(string name,int quantity=1)
public bool Add(string name, int quantity = 1)
{
if (inventory.ContainsKey(name))
{
inventory[name] += quantity;
}
else
{
inventory.Add(name, quantity);
}
return true;
}
public bool Remove(string name,int quantity=1)
public bool Remove(string name, int quantity = 1)
{
if (inventory.ContainsKey(name))
{
inventory[name] = Mathf.Max(inventory[name] - quantity, 0);
return false;
}
else
{
return false;
}
}
// Start is called before the first frame update
void Start()
{
foreach(TempInventoryBuilderItem item in initialInvent)
{
inventory[item.name] = item.quantity;
}
return false;
}
// Update is called once per frame
void Update()
{
}
}
}

View File

@ -1,16 +1,13 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(Collider))]
[RequireComponent(typeof(Rigidbody))]
public abstract class CarryableItem : MonoBehaviour
{
[SerializeField]
private string itemName;
public string ItemName { get { return this.itemName; } }
[SerializeField]
private int itemSize = 1;
public int ItemSize { get { return this.itemSize; } }
[SerializeField] private string itemName;
}
[SerializeField] private int itemSize = 1;
public string ItemName => itemName;
public int ItemSize => itemSize;
}

View File

@ -1,77 +1,66 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DoorInteractable : HeavyItemReceiver
{
[SerializeField]
private Transform powerCoreCenter;
[SerializeField] private Transform powerCoreCenter;
[SerializeField] private float minAttractDist = 5;
[SerializeField] private string nameSearched = "Power Core";
[SerializeField] private Animator[] anims;
private HeavyInteractableItem insertedCore;
private Vector3 priorLocalPos;
private Vector3 priorLocalRot;
private Vector3 priorScale;
[SerializeField]
private float minAttractDist = 5;
[SerializeField]
private string nameSearched = "Power Core";
public bool Powered => insertedCore != null;
public bool Powered { get { return this.insertedCore!= null; } }
[SerializeField]
private Animator[] anims;
// Start is called before the first frame update
void Start()
private void Start()
{
}
// Update is called once per frame
void Update()
private void Update()
{
foreach(Animator anim in anims)
{
anim.SetBool("IsPowered", Powered);
}
foreach (var anim in anims) anim.SetBool("IsPowered", Powered);
}
public override bool Interact()
{
//print("INTERACTED!");
if(this.insertedCore== null)
if (insertedCore == null)
{
HeavyInteractableItem[] worldHeavyItems = GameObject.FindObjectsOfType<HeavyInteractableItem>();
var worldHeavyItems = FindObjectsOfType<HeavyInteractableItem>();
//print("Found:" + worldHeavyItems.Length);
for(int i = 0; i < worldHeavyItems.Length; i++)
for (var i = 0; i < worldHeavyItems.Length; i++)
{
HeavyInteractableItem item = worldHeavyItems[i];
if (!item.ItemName.Contains(nameSearched))
{
continue;
}
float dist = Vector3.Distance(item.transform.position, powerCoreCenter.transform.position);
var item = worldHeavyItems[i];
if (!item.ItemName.Contains(nameSearched)) continue;
var dist = Vector3.Distance(item.transform.position, powerCoreCenter.transform.position);
//print("DIST:" + dist);
if (dist <= minAttractDist)
{
Inventory _i = PlayerInteractionHandler.instance.Inventory;
this.Interact(ref _i, ref item);
var _i = PlayerInteractionHandler.instance.Inventory;
Interact(ref _i, ref item);
return true;
}
}
}
return false;
}
public override bool Interact(ref Inventory inventory,ref HeavyInteractableItem heavyInvent)
public override bool Interact(ref Inventory inventory, ref HeavyInteractableItem heavyInvent)
{
//print("INTERACTED 2");
// print(heavyInvent);
if (heavyInvent!=null&&heavyInvent.ItemName.Contains(nameSearched))
// print(heavyInvent);
if (heavyInvent != null && heavyInvent.ItemName.Contains(nameSearched))
{
//print("DOOR OPEN!");
heavyInvent.GetComponent<Rigidbody>().isKinematic = true;
@ -82,27 +71,26 @@ public class DoorInteractable : HeavyItemReceiver
priorScale = heavyInvent.transform.localScale;
heavyInvent.transform.parent = powerCoreCenter;
heavyInvent.gameObject.transform.localPosition = Vector3.zero;
heavyInvent.gameObject.transform.localEulerAngles = Vector3.zero;
heavyInvent.transform.parent = null;
heavyInvent.gameObject.transform.localScale = priorScale;
insertedCore = heavyInvent;
return true;
}
else if(insertedCore!=null&&heavyInvent==null)
if (insertedCore != null && heavyInvent == null)
{
heavyInvent = insertedCore;
insertedCore = null;
//get ref of player perhaps
return true;
}
else
{
return false;
}
return false;
}
}
}

View File

@ -1,70 +1,69 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class FlareBeacon : MonoBehaviour
{
[SerializeField]
private float range = 1;
public float Range { get { return range; }}
[SerializeField]
private float duration = 5f;
[SerializeField] private float range = 1;
private List<GameObject> inRange= new List<GameObject>();
[SerializeField]
private NavMeshObstacle obstacle;
[SerializeField] private float duration = 5f;
[SerializeField] private NavMeshObstacle obstacle;
private readonly List<GameObject> inRange = new();
private FlareRegister register;
void OnDrawGizmosSelected()
{
// Draw a yellow sphere at the transform's position
Gizmos.color = Color.yellow;
Gizmos.DrawWireSphere(transform.position, range);
}
public float Range => range;
// Start is called before the first frame update
void Start()
private void Start()
{
register = FlareRegister.instance;
register.beacons.Add(this);
transform.localEulerAngles = new Vector3(-89.98f, 0, 0);
Ray r = new Ray();
var r = new Ray();
r.direction = -transform.forward;
r.origin = transform.position;
RaycastHit hit;
RaycastHit[] rays = Physics.RaycastAll(r);
foreach(RaycastHit _hit in rays)
var rays = Physics.RaycastAll(r);
foreach (var _hit in rays)
{
if (_hit.transform.gameObject.GetComponent<FlareBeacon>() != null)
{
continue;
}
if (_hit.transform.gameObject.GetComponent<FlareBeacon>() != null) continue;
transform.position = _hit.point;
break;
}
if(Physics.Raycast(r,out hit)){
// transform.position = hit.point;
if (Physics.Raycast(r, out hit))
{
// transform.position = hit.point;
}
if(obstacle!=null)
obstacle.radius = this.range / 10;
if (obstacle != null)
obstacle.radius = range / 10;
}
// Update is called once per frame
void Update()
private void Update()
{
}
private void OnDrawGizmosSelected()
{
// Draw a yellow sphere at the transform's position
Gizmos.color = Color.yellow;
Gizmos.DrawWireSphere(transform.position, range);
}
private void OnTriggerEnter(Collider other)
{
inRange.Add(other.gameObject);
}
private void OnTriggerExit(Collider other)
{
inRange.Remove(other.gameObject);
}
}
}

View File

@ -1,27 +1,21 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GenericInteractable : InteractableItem
{
private void Awake()
{
BaseAwake();
}
private void Start()
{
}
public override bool Interact()
{
return false;
}
public override bool Interact(ref Inventory inventory, ref HeavyInteractableItem heavyInvent)
{
return this.Interact();
return Interact();
}
}
}

View File

@ -1,32 +1,38 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class HeavyInteractableItem : InteractableItem
{
private Vector3 init_rot;
// Start is called before the first frame update
void Start()
private void Start()
{
init_rot = transform.eulerAngles;
}
// Update is called once per frame
void Update()
private void Update()
{
}
private void FixedUpdate()
{
BaseFixedUpdate();
//print("Alpha Target:"+ base.target_alpha);
}
public void DisableAll()
{
this.GetComponent<Collider>().enabled = false;
GetComponent<Collider>().enabled = false;
}
public override bool Interact()
{
//Todo
return false;
}
public override bool Interact(ref Inventory inventory,ref HeavyInteractableItem heavyInvent)
public override bool Interact(ref Inventory inventory, ref HeavyInteractableItem heavyInvent)
{
return false;
}
@ -34,14 +40,7 @@ public class HeavyInteractableItem : InteractableItem
public void EnableAll()
{
this.GetComponent<Collider>().enabled = true;
this.transform.eulerAngles = new Vector3(init_rot.x,transform.eulerAngles.y,init_rot.z);
GetComponent<Collider>().enabled = true;
transform.eulerAngles = new Vector3(init_rot.x, transform.eulerAngles.y, init_rot.z);
}
private void FixedUpdate()
{
BaseFixedUpdate();
//print("Alpha Target:"+ base.target_alpha);
}
}
}

View File

@ -1,13 +1,9 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public abstract class HeavyItemReceiver : InteractableItem
{
protected HeavyInteractableItem item;
[SerializeField]
[Tooltip("Specify the keyword search in the name of the item!")]
[SerializeField] [Tooltip("Specify the keyword search in the name of the item!")]
protected string searchString;
}
protected HeavyInteractableItem item;
}

View File

@ -1,77 +1,68 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
[RequireComponent(typeof(Collider))]
[RequireComponent(typeof(Rigidbody))]
public abstract class InteractableItem : CarryableItem
{
[SerializeField] private Canvas interactionCanvas;
[SerializeField] protected bool canPickup;
[SerializeField]
private Canvas interactionCanvas;
private TMP_Text[] interaction_texts;
private Image[] interaction_images;
protected float target_alpha = 0;
[SerializeField]
protected bool canPickup = false;
protected bool isEnabled = false;
private TMP_Text[] interaction_texts;
protected bool isEnabled;
protected float target_alpha;
public bool CanPickup { get { return canPickup; } }
public bool IsEnabled { get { return isEnabled; } }
public bool CanPickup => canPickup;
public bool IsEnabled => isEnabled;
private void Awake()
{
BaseAwake();
}
private void FixedUpdate()
{
BaseFixedUpdate();
}
public void Enable()
{
//print("Enabled!");
interactionCanvas.transform.LookAt((GameObject.FindGameObjectWithTag("MainCamera").transform.position));
interactionCanvas.transform.LookAt(GameObject.FindGameObjectWithTag("MainCamera").transform.position);
interactionCanvas.transform.Rotate(0, 180, 0);
target_alpha = 1;
isEnabled = true;
}
public void Disable()
{
//print("Disabled!");
target_alpha = 0;
isEnabled = true;
}
public abstract bool Interact();
public abstract bool Interact(ref Inventory inventory,ref HeavyInteractableItem heavyInvent);
public abstract bool Interact(ref Inventory inventory, ref HeavyInteractableItem heavyInvent);
protected void BaseAwake()
{
interaction_texts = interactionCanvas.GetComponentsInChildren<TMP_Text>();
interaction_images = interactionCanvas.GetComponentsInChildren<Image>();
foreach (TMP_Text text in interaction_texts)
{
text.color = new Color(text.color.r, text.color.g, text.color.b, 0);
}
foreach (Image image in interaction_images)
{
foreach (var text in interaction_texts) text.color = new Color(text.color.r, text.color.g, text.color.b, 0);
foreach (var image in interaction_images)
image.color = new Color(image.color.r, image.color.g, image.color.b, 0);
}
}
protected void BaseFixedUpdate()
{
foreach (TMP_Text text in interaction_texts)
{
text.color = Color.Lerp(new Color(text.color.r, text.color.g, text.color.b, text.color.a), new Color(text.color.r, text.color.g, text.color.b, target_alpha), 10 * Time.deltaTime);
}
foreach (Image image in interaction_images)
{
image.color = Color.Lerp(new Color(image.color.r, image.color.g, image.color.b, image.color.a), new Color(image.color.r, image.color.g, image.color.b, target_alpha), 10 * Time.deltaTime);
}
}
private void Awake()
protected void BaseFixedUpdate()
{
BaseAwake();
foreach (var text in interaction_texts)
text.color = Color.Lerp(new Color(text.color.r, text.color.g, text.color.b, text.color.a),
new Color(text.color.r, text.color.g, text.color.b, target_alpha), 10 * Time.deltaTime);
foreach (var image in interaction_images)
image.color = Color.Lerp(new Color(image.color.r, image.color.g, image.color.b, image.color.a),
new Color(image.color.r, image.color.g, image.color.b, target_alpha), 10 * Time.deltaTime);
}
private void FixedUpdate()
{
BaseFixedUpdate();
}
}
}

View File

@ -1,29 +1,29 @@
using System.Collections;
using System.Collections.Generic;
using System;
using UnityEngine;
public class KeyItem : InteractableItem
{
[SerializeField]
private string keyName;
public string KeyName { get { return keyName; } }
[SerializeField] private string keyName;
public string KeyName => keyName;
private void Awake()
{
BaseAwake();
}
private void Start()
{
}
public override bool Interact()
{
throw new System.NotImplementedException();
}
public override bool Interact(ref Inventory inventory,ref HeavyInteractableItem heavyInvent)
{
return this.Interact();
}
}
public override bool Interact()
{
throw new NotImplementedException();
}
public override bool Interact(ref Inventory inventory, ref HeavyInteractableItem heavyInvent)
{
return Interact();
}
}

View File

@ -1,42 +1,40 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BulletComponent : MonoBehaviour
{
[SerializeField]
private float duration = 5f;
private float existed = 0f;
[SerializeField]
private string type = "flare";
[SerializeField] private float duration = 5f;
[SerializeField] private string type = "flare";
[SerializeField] private float damageRange = 20f;
[SerializeField] private float damageMagnitude = 1f;
private float existed;
private FlareRegister register;
[SerializeField]
private float damageRange = 20f;
[SerializeField]
private float damageMagnitude = 1f;
public float DamageMagnitude { get { return this.damageMagnitude; } }
public float DamageRange { get { return damageRange; } }
public float DamageMagnitude => damageMagnitude;
public float DamageRange => damageRange;
// Start is called before the first frame update
void Start()
private void Start()
{
register = FlareRegister.instance;
register.bullets.Add(this);
}
// Update is called once per frame
void Update()
private void Update()
{
}
private void FixedUpdate()
{
if(existed >= duration)
if (existed >= duration)
{
register.bullets.Remove(this);
Destroy(this.gameObject);
Destroy(gameObject);
}
existed += Time.fixedDeltaTime;
}
}
}

View File

@ -1,28 +1,27 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PistolAnimationAimAssist : MonoBehaviour
{
public Transform leftShoulder;
public Transform rightShoulder;
[SerializeField]
private bool isEnabled = false;
Vector3 lTarget;
Vector3 rTarget;
[SerializeField] private bool isEnabled;
private Animator anim;
private Vector3 lTarget;
private Vector3 rTarget;
// Start is called before the first frame update
void Start()
private void Start()
{
lTarget = new Vector3(72.9f, 122.2f, -129.9f);
rTarget = new Vector3(82f, 11f, -88f);
anim =GetComponent<Animator>();
anim = GetComponent<Animator>();
}
// Update is called once per frame
void Update()
private void Update()
{
if (isEnabled)
{
@ -33,12 +32,14 @@ public class PistolAnimationAimAssist : MonoBehaviour
anim.StartPlayback();
}
}
public void Enable()
{
isEnabled = true;
}
public void Disable()
{
isEnabled = false;
}
}
}

View File

@ -1,127 +1,124 @@
using System.Collections;
using System.Collections.Generic;
using Unity.Burst.CompilerServices;
using UnityEngine;
using UnityEngine.VFX;
public class PistolComponent : MonoBehaviour
{
public enum AimMode
{
GUN,
MODIFIED,
CAMERA
}
public enum AimMode {GUN,MODIFIED,CAMERA};
public AimMode aimMode = AimMode.CAMERA;
[SerializeField]
private Light targetingLight;
[SerializeField] private Light targetingLight;
[SerializeField] private GameObject targetObjectPrefab;
[SerializeField] public GameObject projectilePrefab;
[SerializeField] public string projectileName;
[SerializeField] private Transform bulletSpawnPoint;
[SerializeField] private float firePower = 20f;
[SerializeField] private float maxProjectileDuration = 5f;
[SerializeField] private float maxTargetObjDistance = 15f;
[SerializeField] private VisualEffect shootEffect;
[SerializeField] private Light shootLight;
[SerializeField] private float shootLightDuration = 0.1f;
[SerializeField] private LayerMask ignoreLayers;
private bool hasCloseTarget;
private bool IsEnabled = false;
GameObject targetObject;
[SerializeField]
GameObject targetObjectPrefab;
[SerializeField]
public GameObject projectilePrefab;
[SerializeField]
public string projectileName;
[SerializeField]
private Transform bulletSpawnPoint;
[SerializeField]
private float firePower = 20f;
[SerializeField]
private float maxProjectileDuration = 5f;
[SerializeField]
private float maxTargetObjDistance = 15f;
[SerializeField]
private VisualEffect shootEffect;
[SerializeField]
private Light shootLight;
[SerializeField]
private float shootLightDuration = 0.1f;
private float timeSinceLightDuration = 0f;
private bool IsEnabled;
private bool hasCloseTarget = false;
[SerializeField]
private LayerMask ignoreLayers;
private GameObject targetObject;
private float timeSinceLightDuration;
public bool IsLightOn => targetingLight.gameObject.activeSelf;
//private Dictionary<int,float> projectiles = new Dictionary<int, float>();
// Start is called before the first frame update
void Start()
private void Start()
{
}
// Update is called once per frame
void Update()
private void Update()
{
timeSinceLightDuration += Time.deltaTime;
}
private float CalculateDrop(Vector3 origin,Vector3 destination,Vector3 force)
{
// Calculate the initial velocity required to reach the destination.
Vector3 displacement = destination - origin;
float time = Mathf.Sqrt(2f * displacement.magnitude / Physics.gravity.magnitude);
Vector3 velocity = (displacement - 0.5f * Physics.gravity * time * time) / time + force;
// Calculate the height the object will reach during its flight.
float maxHeight = origin.y + velocity.y * time - 0.5f * Physics.gravity.y * time * time;
// Calculate the distance the object will drop during its flight.
float dropDistance = maxHeight - destination.y;
return dropDistance;
}
private void FixedUpdate()
{
if (shootLight.gameObject.activeSelf&&timeSinceLightDuration>shootLightDuration)
{
if (shootLight.gameObject.activeSelf && timeSinceLightDuration > shootLightDuration)
shootLight.gameObject.SetActive(false);
}
if (aimMode==AimMode.CAMERA)
if (aimMode == AimMode.CAMERA) targetObject.gameObject.transform.position = PlayerAim.active.targetPosition;
if (IsEnabled && aimMode != AimMode.CAMERA)
{
targetObject.gameObject.transform.position = PlayerAim.active.targetPosition;
}
if (this.IsEnabled&&aimMode!=AimMode.CAMERA)
{
Ray ray = new Ray(transform.position, transform.up);
var ray = new Ray(transform.position, transform.up);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 50,ignoreLayers))
if (Physics.Raycast(ray, out hit, 50, ignoreLayers))
{
float hitDist = Vector3.Distance(hit.point, transform.position);
var hitDist = Vector3.Distance(hit.point, transform.position);
if (hitDist < maxTargetObjDistance)
{
targetObject.gameObject.transform.position = hit.point;
targetObject.gameObject.GetComponent<MeshRenderer>().materials[0].SetColor("_EmissiveColor", new Color(255, 0,0));
targetObject.gameObject.GetComponent<MeshRenderer>().materials[0]
.SetColor("_EmissiveColor", new Color(255, 0, 0));
//Track if we have a close target
hasCloseTarget = true;
hasCloseTarget = true;
}
else
{
targetObject.gameObject.transform.position = transform.position + (ray.direction * maxTargetObjDistance);
targetObject.gameObject.GetComponent<MeshRenderer>().materials[0].SetColor("_EmissiveColor", new Color(255, 255,255));
targetObject.gameObject.transform.position =
transform.position + ray.direction * maxTargetObjDistance;
targetObject.gameObject.GetComponent<MeshRenderer>().materials[0]
.SetColor("_EmissiveColor", new Color(255, 255, 255));
//Track if we have a close target
hasCloseTarget = false;
}
//float drop = CalculateDrop(this.bulletSpawnPoint.position, hit.point, this.transform.up * this.firePower);
//print(drop);
}
else
{
targetObject.gameObject.transform.position = transform.position + (ray.direction * maxTargetObjDistance);
targetObject.gameObject.transform.position = transform.position + ray.direction * maxTargetObjDistance;
targetObject.gameObject.GetComponent<MeshRenderer>().materials[0].SetColor("_EmissiveColor", new Color(255,255,255));
targetObject.gameObject.GetComponent<MeshRenderer>().materials[0]
.SetColor("_EmissiveColor", new Color(255, 255, 255));
hasCloseTarget = false;
}
}
}
private float CalculateDrop(Vector3 origin, Vector3 destination, Vector3 force)
{
// Calculate the initial velocity required to reach the destination.
var displacement = destination - origin;
var time = Mathf.Sqrt(2f * displacement.magnitude / Physics.gravity.magnitude);
var velocity = (displacement - 0.5f * Physics.gravity * time * time) / time + force;
// Calculate the height the object will reach during its flight.
var maxHeight = origin.y + velocity.y * time - 0.5f * Physics.gravity.y * time * time;
// Calculate the distance the object will drop during its flight.
var dropDistance = maxHeight - destination.y;
return dropDistance;
}
public void Fire()
{
Fire(!hasCloseTarget);
@ -131,71 +128,62 @@ public class PistolComponent : MonoBehaviour
{
shootLightDuration = 0;
shootLight.gameObject.SetActive(true);
GameObject projectile = Instantiate(projectilePrefab, this.bulletSpawnPoint);
var projectile = Instantiate(projectilePrefab, bulletSpawnPoint);
projectile.transform.localPosition = Vector3.zero;
projectile.transform.localEulerAngles = Vector3.zero;
projectile.transform.localScale = Vector3.one;
Rigidbody pRigid = projectile.GetComponent<Rigidbody>();
var pRigid = projectile.GetComponent<Rigidbody>();
/*Modified targeting system
1. Since aim direction is vector from camera to ball (where player thinks its gonna go), raycast forward there, till hit. If no hit,
then set target distance to ~50.
2. Modify launch vector apply modified force
*/
Vector3 launchVector = pRigid.transform.up * this.firePower;
var launchVector = pRigid.transform.up * firePower;
if(offsetWithTargetBall||aimMode==AimMode.MODIFIED)
if (offsetWithTargetBall || aimMode == AimMode.MODIFIED)
{
Vector3 ballCamVector = targetObject.transform.position - this.GetComponentInParent<PlayerMovementController>().cam.transform.position;
Ray r = new Ray();
var ballCamVector = targetObject.transform.position -
GetComponentInParent<PlayerMovementController>().cam.transform.position;
var r = new Ray();
r.origin = targetObject.transform.position;
r.direction = ballCamVector.normalized;
RaycastHit hit;
if (Physics.Raycast(r,out hit,ignoreLayers))
if (Physics.Raycast(r, out hit, ignoreLayers))
{
launchVector = (hit.point - pRigid.transform.position).normalized;
launchVector *= this.firePower;
launchVector *= firePower;
}
}
else if(aimMode==AimMode.CAMERA)
else if (aimMode == AimMode.CAMERA)
{
Vector3 target = PlayerAim.active.targetPosition;
Vector3 lv = target - pRigid.transform.position;
var target = PlayerAim.active.targetPosition;
var lv = target - pRigid.transform.position;
launchVector = lv.normalized;
launchVector*= this.firePower;
launchVector *= firePower;
}
pRigid.AddForce(launchVector, ForceMode.Impulse);
projectile.transform.parent = null;
shootEffect.Play();
}
public void Enable()
{
IsEnabled = true;
if (targetObject == null)
{
targetObject = Instantiate(targetObjectPrefab);
}
if (targetObject == null) targetObject = Instantiate(targetObjectPrefab);
}
public void Disable()
{
IsEnabled = false;
if (targetObject != null)
{
Destroy(targetObject);
}
if (targetObject != null) Destroy(targetObject);
}
public void LightToggle() {
this.targetingLight.gameObject.SetActive(!this.targetingLight.gameObject.activeSelf);
public void LightToggle()
{
targetingLight.gameObject.SetActive(!targetingLight.gameObject.activeSelf);
}
public bool IsLightOn { get { return this.targetingLight.gameObject.activeSelf; } }
}
}

View File

@ -1,24 +1,21 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FlareRegister : MonoBehaviour
{
public List<BulletComponent> bullets= new List<BulletComponent>();
public List<FlareBeacon> beacons= new List<FlareBeacon>();
public static FlareRegister instance;
public List<BulletComponent> bullets = new();
public List<FlareBeacon> beacons = new();
// Start is called before the first frame update
void Start()
private void Start()
{
instance = this;
}
// Update is called once per frame
void Update()
private void Update()
{
}
}
}

View File

@ -1,10 +1,10 @@
using System.Collections;
using System;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using TMPro;
[System.Serializable]
[Serializable]
public class ItemImageRef
{
public string name;
@ -14,116 +14,100 @@ public class ItemImageRef
public class SpecialItemCycler : MonoBehaviour
{
[SerializeField]
private List<ItemImageRef> spawnableItems =new List<ItemImageRef>();
[SerializeField]
private List<ItemImageRef> shootableItems = new List<ItemImageRef>();
[SerializeField] private List<ItemImageRef> spawnableItems = new();
[SerializeField] private List<ItemImageRef> shootableItems = new();
[SerializeField] private PlayerInteractionHandler interactionHandler;
[SerializeField] private PistolComponent pistol;
[SerializeField]
private PlayerInteractionHandler interactionHandler;
[SerializeField]
private PistolComponent pistol;
private int spawnableIndex = 0;
private int shootableIndex = 0;
[SerializeField]
//private Inventory invent;
private TempInventory invent;
[SerializeField]
private Image selectedImage;
[SerializeField]
private TMP_Text selectedQuantityText;
[SerializeField] private Image selectedImage;
[SerializeField] private TMP_Text selectedQuantityText;
private int shootableIndex;
private int spawnableIndex;
private Color sqtInitColor;
// Start is called before the first frame update
void Start()
private void Start()
{
sqtInitColor = selectedQuantityText.color;
}
// Update is called once per frame
void Update()
private void Update()
{
if (interactionHandler.GunEnabled)
{
pistol.projectilePrefab = shootableItems[shootableIndex % shootableItems.Count].item;
pistol.projectileName = shootableItems[shootableIndex % shootableItems.Count].name;
}
SetImage();
if (Input.GetButtonDown("CycleItems"))
{
if (interactionHandler.GunEnabled)
{
this.shootableIndex = (shootableIndex + 1) % shootableItems.Count;
selectedImage.sprite = shootableItems[this.shootableIndex].icon;
shootableIndex = (shootableIndex + 1) % shootableItems.Count;
selectedImage.sprite = shootableItems[shootableIndex].icon;
}
else
{
this.spawnableIndex = (spawnableIndex+1)%spawnableItems.Count;
selectedImage.sprite = spawnableItems[this.spawnableIndex].icon;
spawnableIndex = (spawnableIndex + 1) % spawnableItems.Count;
selectedImage.sprite = spawnableItems[spawnableIndex].icon;
}
if (selectedImage.sprite == null)
{
selectedImage.color = new Color(selectedImage.color.r, selectedImage.color.g, selectedImage.color.b, 0);
}
else
{
selectedImage.color = new Color(selectedImage.color.r, selectedImage.color.g, selectedImage.color.b, 1);
}
}
if (Input.GetButtonDown("TempPlace"))
{
if (invent.GetQuantityOf(spawnableItems[spawnableIndex].name)>0)
if (!interactionHandler.GunEnabled && spawnableItems[spawnableIndex].item!= null)
if (invent.GetQuantityOf(spawnableItems[spawnableIndex].name) > 0)
if (!interactionHandler.GunEnabled && spawnableItems[spawnableIndex].item != null)
{
GameObject prefab = spawnableItems[spawnableIndex].item;
GameObject instance = Instantiate(prefab,interactionHandler.CarryingPos);
var prefab = spawnableItems[spawnableIndex].item;
var instance = Instantiate(prefab, interactionHandler.CarryingPos);
instance.transform.localPosition = Vector3.zero;
instance.transform.parent = null;
invent.Remove(spawnableItems[spawnableIndex].name);
}
}
}
void SetImage()
private void SetImage()
{
if (interactionHandler.GunEnabled)
{
selectedImage.sprite = shootableItems[this.shootableIndex].icon;
selectedQuantityText.text = invent.GetQuantityOf(shootableItems[this.shootableIndex].name).ToString();
selectedImage.sprite = shootableItems[shootableIndex].icon;
selectedQuantityText.text = invent.GetQuantityOf(shootableItems[shootableIndex].name).ToString();
}
else
{
selectedImage.sprite = spawnableItems[this.spawnableIndex].icon;
selectedQuantityText.text = invent.GetQuantityOf(spawnableItems[this.spawnableIndex].name).ToString();
selectedImage.sprite = spawnableItems[spawnableIndex].icon;
selectedQuantityText.text = invent.GetQuantityOf(spawnableItems[spawnableIndex].name).ToString();
}
if (selectedImage.sprite == null)
{
selectedImage.color = new Color(selectedImage.color.r, selectedImage.color.g, selectedImage.color.b, 0);
selectedQuantityText.gameObject.SetActive(false);
}
else
{
selectedImage.color = new Color(selectedImage.color.r, selectedImage.color.g, selectedImage.color.b, 1);
selectedQuantityText.gameObject.SetActive(true);
if (selectedQuantityText.text == "0")
{
selectedQuantityText.color = Color.red;
}
else
{
selectedQuantityText.color = sqtInitColor;
}
}
}
}
}

View File

@ -1,233 +1,195 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BasicLevelProgressionSystem : MonoBehaviour
{
[SerializeField]
private ObjectiveText objectiveGui;
[SerializeField]
private WaypointMarker marker;
[SerializeField]
private PlayerComponent player;
//[SerializeField]
//private float minDist = 3;
[SerializeField]
private List<ProgressionSection> sections;
public List<ProgressionSection> Sections { get { return sections; } }
//Fire1 is click or A
//Place is F or "Y" button
//Cycle is Tab or RB
//Siwtch is Shift or "X"
public enum InputType { FIRE1, PLACE, CYCLE, SWITCH, COLLISION, LOCATION,AIM,EXTERNAL};
private int progress = 0;
private bool transitioning = false;
// Start is called before the first frame update
void Start()
public enum InputType
{
FIRE1,
PLACE,
CYCLE,
SWITCH,
COLLISION,
LOCATION,
AIM,
EXTERNAL
}
[SerializeField] private ObjectiveText objectiveGui;
[SerializeField] private WaypointMarker marker;
[SerializeField] private PlayerComponent player;
//[SerializeField]
//private float minDist = 3;
[SerializeField] private List<ProgressionSection> sections;
private int progress;
private bool transitioning;
public List<ProgressionSection> Sections => sections;
// Start is called before the first frame update
private void Start()
{
}
// Update is called once per frame
void Update()
private void Update()
{
Transform cur = this.getCurrent().getActive();
if(cur != null)
var cur = getCurrent().getActive();
if (cur != null)
{
if (!this.getCurrent().objectiveOneMet)
if (!getCurrent().objectiveOneMet)
{
marker.target = cur;
objectiveGui.visualObjects[0].text.text = this.getCurrent().instruction1;
objectiveGui.visualObjects[1].text.text = this.getCurrent().istruction2;
objectiveGui.visualObjects[0].text.text = getCurrent().instruction1;
objectiveGui.visualObjects[1].text.text = getCurrent().istruction2;
}
else if(!this.getCurrent().objectiveTwoMet)
else if (!getCurrent().objectiveTwoMet)
{
marker.target = cur;
}
}
if(Input.GetButtonDown("Fire1")||Input.GetAxis("Fire1")>0.5f&&!transitioning)
{
if (Input.GetButtonDown("Fire1") || (Input.GetAxis("Fire1") > 0.5f && !transitioning))
ProgressCurrentIfInput(InputType.FIRE1);
}
if (Input.GetButtonDown("TempPlace"))
{
ProgressCurrentIfInput(InputType.PLACE);
}
if (Input.GetButtonDown("CycleItems"))
{
ProgressCurrentIfInput(InputType.CYCLE);
}
if(Input.GetButtonDown("Fire3"))
{
ProgressCurrentIfInput(InputType.SWITCH);
}
if(Input.GetAxis("Aim")>.5f || Input.GetButtonDown("Aim"))
{
if(!transitioning)
ProgressCurrentIfInput(InputType.AIM);
}
if (Input.GetButtonDown("TempPlace")) ProgressCurrentIfInput(InputType.PLACE);
if (Input.GetButtonDown("CycleItems")) ProgressCurrentIfInput(InputType.CYCLE);
if (Input.GetButtonDown("Fire3")) ProgressCurrentIfInput(InputType.SWITCH);
if (Input.GetAxis("Aim") > .5f || Input.GetButtonDown("Aim"))
if (!transitioning)
ProgressCurrentIfInput(InputType.AIM);
if (Vector3.Distance(player.transform.position, this.getCurrent().getActive().position) < 3)
if (Vector3.Distance(player.transform.position, getCurrent().getActive().position) < 3)
{
bool canIterate= this.getCurrent().Iterate();
var canIterate = getCurrent().Iterate();
if (!canIterate)
{
if (!this.getCurrent().objectiveOneMet && this.getCurrent().conditionalOne == InputType.LOCATION)
{
if (!getCurrent().objectiveOneMet && getCurrent().conditionalOne == InputType.LOCATION)
OnePassed();
}else if (this.getCurrent().objectiveOneMet && this.getCurrent().conditionalTwo == InputType.LOCATION && !this.getCurrent().objectiveTwoMet)
{
TwoPassed();
}
else if (getCurrent().objectiveOneMet && getCurrent().conditionalTwo == InputType.LOCATION &&
!getCurrent().objectiveTwoMet) TwoPassed();
}
}
}
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.GetComponentInParent<PlayerComponent>() != null)
{
ProgressCurrentIfCollide();
}
if (other.gameObject.GetComponentInParent<PlayerComponent>() != null) ProgressCurrentIfCollide();
}
void ProgressCurrentIfCollide()
private void ProgressCurrentIfCollide()
{
}
private void OnePassed()
{
this.getCurrent().objectiveOneMet = true;
this.getCurrent().Progress();
getCurrent().objectiveOneMet = true;
getCurrent().Progress();
this.objectiveGui.visualObjects[0].isComplete = true;
objectiveGui.visualObjects[0].isComplete = true;
}
public void TwoPassed()
{
if (transitioning)
{
return;
}
this.getCurrent().objectiveTwoMet = true;
this.objectiveGui.visualObjects[1].isComplete = true;
this.objectiveGui.FadeOut();
if (transitioning) return;
getCurrent().objectiveTwoMet = true;
objectiveGui.visualObjects[1].isComplete = true;
objectiveGui.FadeOut();
transitioning = true;
StartCoroutine(waitForFadeIn());
}
public void ProgressCurrentIfInput(InputType type)
{
if (this.getCurrent().AtEnd() && this.getCurrent().conditionalOne == type&&!this.getCurrent().objectiveOneMet)
{
if (getCurrent().AtEnd() && getCurrent().conditionalOne == type && !getCurrent().objectiveOneMet)
OnePassed();
}else if(this.getCurrent().AtEnd() && this.getCurrent().conditionalTwo == type)
{
TwoPassed();
}
else if (getCurrent().AtEnd() && getCurrent().conditionalTwo == type) TwoPassed();
}
public ProgressionSection getCurrent()
{
return this.sections[progress];
return sections[progress];
}
private IEnumerator waitForFadeIn()
{
yield return new WaitForSeconds(3);
if (this.sections.Count > this.progress+1)
if (sections.Count > progress + 1)
{
this.progress++;
this.objectiveGui.FadeIn();
this.objectiveGui.visualObjects[0].isComplete = false;
this.objectiveGui.visualObjects[1].isComplete = false;
progress++;
objectiveGui.FadeIn();
objectiveGui.visualObjects[0].isComplete = false;
objectiveGui.visualObjects[1].isComplete = false;
}
else
{
}
transitioning = false;
}
}
[System.Serializable]
[Serializable]
public class ProgressionSection
{
[SerializeField]
public string instruction1;
[SerializeField]
public string istruction2;
[SerializeField]
public bool objectiveOneMet = false;
[SerializeField]
public BasicLevelProgressionSystem.InputType conditionalOne;
[SerializeField]
public bool objectiveTwoMet = false;
[SerializeField]
public BasicLevelProgressionSystem.InputType conditionalTwo;
[SerializeField] public string instruction1;
[SerializeField] public string istruction2;
[SerializeField] public bool objectiveOneMet;
[SerializeField] public BasicLevelProgressionSystem.InputType conditionalOne;
[SerializeField] public bool objectiveTwoMet;
[SerializeField] public BasicLevelProgressionSystem.InputType conditionalTwo;
[SerializeField] public List<Transform> positionsOne = new();
[SerializeField] public List<Transform> positionsTwo = new();
[HideInInspector] public int activePosition;
[SerializeField]
public List<Transform> positionsOne= new List<Transform>();
[SerializeField]
public List<Transform> positionsTwo = new List<Transform>();
[HideInInspector]
public int activePosition = 0;
public Transform getActive()
{
if (!objectiveOneMet)
{
return positionsOne[activePosition];
}
else
{
return positionsTwo[activePosition];
}
return positionsTwo[activePosition];
}
public bool Iterate()
{
if (!objectiveOneMet && this.activePosition + 1 < positionsOne.Count)
if (!objectiveOneMet && activePosition + 1 < positionsOne.Count)
{
this.activePosition += 1;
return true;
}else if (objectiveOneMet && !objectiveTwoMet && this.activePosition + 1 < positionsTwo.Count)
{
this.activePosition += 1;
activePosition += 1;
return true;
}
if (objectiveOneMet && !objectiveTwoMet && activePosition + 1 < positionsTwo.Count)
{
activePosition += 1;
return true;
}
return false;
}
public bool AtEnd()
{
if (!objectiveOneMet && this.activePosition + 1 < positionsOne.Count)
{
if (!objectiveOneMet && activePosition + 1 < positionsOne.Count)
return false;
}
else if (objectiveOneMet && !objectiveTwoMet && this.activePosition + 1 < positionsTwo.Count)
{
return false;
}
if (objectiveOneMet && !objectiveTwoMet && activePosition + 1 < positionsTwo.Count) return false;
return true;
}
public void Progress()
{
this.activePosition = 0;
activePosition = 0;
}
}

View File

@ -5,126 +5,108 @@ using UnityEngine.SceneManagement;
public class LevelZeroSpecial : MonoBehaviour
{
//[SerializeField]
//private int initalPlaceIndex = 0;
[SerializeField]
private DoorInteractable recepticleOne;
[SerializeField] private DoorInteractable recepticleOne;
[SerializeField]
private BasicLevelProgressionSystem progression;
[SerializeField]
private int enabledOn = 4;
private bool isEnabled = false;
[SerializeField] private BasicLevelProgressionSystem progression;
[SerializeField]
private List<HeavyInteractableItem> powercores;
[SerializeField]
private List<DoorInteractable> recepticals;
[SerializeField]
private WaypointMarker marker;
[SerializeField] private int enabledOn = 4;
[SerializeField] private List<HeavyInteractableItem> powercores;
[SerializeField] private List<DoorInteractable> recepticals;
[SerializeField] private WaypointMarker marker;
[SerializeField] private Animator cover;
[SerializeField] private Animator gate;
[SerializeField] private GameObject exitCollider;
[SerializeField] private PlayerComponent player;
[SerializeField] private WaypointMarker marker2Ref;
[SerializeField] private WaypointMarker marker3Ref;
[SerializeField] private Optimizer finalRoomOptimizer;
private int countPowered;
private bool isEnabled;
private readonly List<WaypointMarker> markers = new();
private bool transitioningOut;
private List<WaypointMarker> markers=new List<WaypointMarker>();
private int countPowered = 0;
[SerializeField]
private Animator cover;
[SerializeField]
private Animator gate;
private bool transitioningOut = false;
[SerializeField]
private GameObject exitCollider;
[SerializeField]
private PlayerComponent player;
[SerializeField]
WaypointMarker marker2Ref;
[SerializeField]
WaypointMarker marker3Ref;
[SerializeField]
private Optimizer finalRoomOptimizer;
// Start is called before the first frame update
void Start()
private void Start()
{
marker2Ref.gameObject.SetActive(false);
marker3Ref.gameObject.SetActive(false);
}
// Update is called once per frame
void Update()
private void Update()
{
if (progression.Sections[0] == progression.getCurrent())
{
if (recepticleOne.Powered)
{
progression.TwoPassed();
//progression.ProgressCurrentIfInput(BasicLevelProgressionSystem.InputType.EXTERNAL);
}
}
//progression.ProgressCurrentIfInput(BasicLevelProgressionSystem.InputType.EXTERNAL);
countPowered = 0;
if (progression.Sections[enabledOn] == progression.getCurrent() && !isEnabled)
{
isEnabled = true;
marker2Ref.gameObject.SetActive(true);
marker3Ref.gameObject.SetActive(true);
marker2Ref.target = recepticals[1].transform;
marker3Ref.target = recepticals[2].transform;
markers.Add(marker2Ref);
markers.Add(marker3Ref);
}
if (isEnabled)
{
foreach (DoorInteractable recepitcal in recepticals)
{
if (isEnabled)
foreach (var recepitcal in recepticals)
if (recepitcal.Powered)
{
countPowered++;
for(int i = 0; i < markers.Count; i++)
for (var i = 0; i < markers.Count; i++)
{
WaypointMarker marker = markers[i];
var marker = markers[i];
if (marker.gameObject.activeInHierarchy)
{
if (marker.target == recepitcal.transform)
{
marker.gameObject.SetActive(false);
markers.Remove(marker);
}
}
}
}
}
}
if (countPowered == 3 && !transitioningOut)
{
//transition to cutscene
transitioningOut = true;
gate.Play("Open");
finalRoomOptimizer.Enable();
}
if (transitioningOut)
{
if (player.transform.position.z > exitCollider.transform.position.z)
{
StartCoroutine(transitionOut());
}
}
}
IEnumerator transitionOut()
private IEnumerator transitionOut()
{
cover.Play("Cover_load_out");
yield return new WaitForSeconds(1);
SceneManager.LoadScene(0);
}
}
}

View File

@ -1,47 +1,59 @@
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class MainMenuManager : MonoBehaviour
{
private string component = "_FaceDilate";
[SerializeField]
private TMP_Text title;
[SerializeField]
private List<TMP_Text> textList= new List<TMP_Text>();
private List<float> initDilates= new List<float>();
private List<float> dilates= new List<float>();
[SerializeField] private TMP_Text title;
[SerializeField] private List<TMP_Text> textList = new();
[SerializeField] private float dilateSpeed = 0.1f;
[SerializeField] private Animator cover;
private readonly string component = "_FaceDilate";
private float dilate = -1;
private readonly List<float> dilates = new();
private float initDilate;
[SerializeField]
float dilateSpeed = 0.1f;
[SerializeField]
private Animator cover;
private bool transitioning = false;
private readonly List<float> initDilates = new();
private bool transitioning;
// Start is called before the first frame update
void Start()
private void Start()
{
//initDilate = title.fontSharedMaterials[0].GetFloat(component);
initDilate = title.fontMaterials[0].GetFloat(component);
foreach(TMP_Text text in this.textList)
foreach (var text in textList)
{
this.initDilates.Add(text.fontMaterials[0].GetFloat(component));
this.dilates.Add(-1f);
initDilates.Add(text.fontMaterials[0].GetFloat(component));
dilates.Add(-1f);
}
this.textList[0].GetComponent<Button>().onClick.AddListener(LoadFirstLevel);
this.textList[2].GetComponent<Button>().onClick.AddListener(ExitApp);
textList[0].GetComponent<Button>().onClick.AddListener(LoadFirstLevel);
textList[2].GetComponent<Button>().onClick.AddListener(ExitApp);
}
void LoadFirstLevel()
// Update is called once per frame
private void Update()
{
//dilate = Mathf.Min(initDilate, dilate += Time.deltaTime);
dilate = Mathf.Lerp(dilate, initDilate, Time.deltaTime * dilateSpeed);
title.fontMaterials[0].SetFloat(component, dilate);
for (var i = 0; i < textList.Count; i++)
{
dilates[i] = Mathf.Lerp(dilates[i], initDilates[i], Time.deltaTime * dilateSpeed);
textList[i].fontMaterials[0].SetFloat(component, dilates[i]);
}
}
private void LoadFirstLevel()
{
if (!transitioning)
{
@ -49,32 +61,16 @@ public class MainMenuManager : MonoBehaviour
transitioning = true;
StartCoroutine(_LoadFirstLevel());
}
}
private IEnumerator _LoadFirstLevel()
{
yield return new WaitForSeconds(4);
SceneManager.LoadScene(1);
}
void ExitApp()
private void ExitApp()
{
Application.Quit();
}
// Update is called once per frame
void Update()
{
//dilate = Mathf.Min(initDilate, dilate += Time.deltaTime);
dilate = Mathf.Lerp(dilate, initDilate, Time.deltaTime*dilateSpeed);
title.fontMaterials[0].SetFloat(component, dilate);
for(int i =0;i<this.textList.Count;i++)
{
dilates[i] = Mathf.Lerp(dilates[i], initDilates[i],Time.deltaTime*dilateSpeed);
textList[i].fontMaterials[0].SetFloat(component, dilates[i]);
}
}
}
}

View File

@ -1,64 +1,49 @@
using System.Collections;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using System.Threading;
using UnityEngine;
public class CameraController : MonoBehaviour
{
//private float mouseX = 0;
//private float mouseY;
[SerializeField]
private Camera cam;
[SerializeField] private Camera cam;
[SerializeField] private Transform target;
[SerializeField]
private Transform target;
private Vector3 offset;
public Vector3 Forward { get; private set; } = Vector3.zero;
private Vector3 forward= Vector3.zero;
private Vector3 right = Vector3.zero;
public Vector3 Forward { get { return this.forward; } }
public Vector3 Right { get { return this.right; } }
public Vector3 Right { get; private set; } = Vector3.zero;
//private float originalDist = 0;
//private float newDist = 0;
//[SerializeField]
// private bool isChild = false;
// private bool isChild = false;
// Start is called before the first frame update
void Start()
private void Start()
{
}
// Update is called once per frame
void Update()
private void Update()
{
GetMouseLook();
//if(target!=null&&!isChild)
//transform.position = target.transform.position+offset;
forward = new Vector3(cam.transform.forward.x, target.transform.forward.y, cam.transform.forward.z);
right = new Vector3(cam.transform.right.x, target.transform.right.y, cam.transform.right.z);
Forward = new Vector3(cam.transform.forward.x, target.transform.forward.y, cam.transform.forward.z);
Right = new Vector3(cam.transform.right.x, target.transform.right.y, cam.transform.right.z);
}
private void GetMouseLook()
{
//mouseX = Input.GetAxis("Mouse X");
//mouseY = Input.GetAxis("Mouse Y");
//transform.Rotate(0, mouseX * Time.deltaTime * 180f, 0);
//cam.transform.parent.parent.transform.Rotate(mouseY * Time.deltaTime * 180f, 0, 0);
//Cursor.visible = false;
//Cursor.lockState = CursorLockMode.Locked;
}
}
}

View File

@ -1,61 +1,62 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Cinemachine;
using UnityEngine;
public class CameraShift : MonoBehaviour
{
public static CameraShift active;
[SerializeField]
private Camera childCam;
[SerializeField]
private Transform offset;
[SerializeField] private Camera childCam;
[SerializeField] private Transform offset;
[SerializeField] private float cameraSpeed = 5f;
[SerializeField] private CinemachineFreeLook freelook;
[SerializeField] private float initRadius = 3f;
[SerializeField] private float aimingRadius = 2f;
private bool isCenter = true;
private Vector3 targetOffset;
[SerializeField]
private float cameraSpeed = 5f;
[SerializeField]
private CinemachineFreeLook freelook;
[SerializeField]
private float initRadius = 3f;
[SerializeField]
private float aimingRadius = 2f;
// Start is called before the first frame update
private void Start()
{
targetOffset = Vector3.zero;
}
// Update is called once per frame
private void Update()
{
active = this;
if (isCenter)
{
targetOffset = Vector3.zero;
freelook.m_Orbits[1].m_Radius =
Mathf.Lerp(freelook.m_Orbits[1].m_Radius, initRadius, Time.deltaTime * cameraSpeed);
}
else
{
targetOffset = offset.localPosition;
freelook.m_Orbits[1].m_Radius =
Mathf.Lerp(freelook.m_Orbits[1].m_Radius, aimingRadius, Time.deltaTime * cameraSpeed);
}
childCam.transform.localPosition =
Vector3.Lerp(childCam.transform.localPosition, targetOffset, Time.deltaTime * cameraSpeed);
}
//[SerializeField]
//private PlayerMovementController movementController;
public void ToggleCenter()
{
isCenter = !isCenter;
}
public void SetCenter(bool isCenter)
{
this.isCenter = isCenter;
}
// Start is called before the first frame update
void Start()
{
targetOffset = Vector3.zero;
}
// Update is called once per frame
void Update()
{
active = this;
if (isCenter)
{
targetOffset= Vector3.zero;
freelook.m_Orbits[1].m_Radius = Mathf.Lerp(freelook.m_Orbits[1].m_Radius, initRadius, Time.deltaTime * cameraSpeed);
}
else
{
targetOffset = offset.localPosition;
freelook.m_Orbits[1].m_Radius = Mathf.Lerp(freelook.m_Orbits[1].m_Radius, aimingRadius, Time.deltaTime*cameraSpeed);
}
childCam.transform.localPosition= Vector3.Lerp(childCam.transform.localPosition, targetOffset, Time.deltaTime*cameraSpeed);
}
}
}

View File

@ -1,72 +1,62 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Rendering;
public class NoiseVisibilitySettingsManager : MonoBehaviour
{
[SerializeField]
private float sneakNoiseDistance = 5f;
[SerializeField]
private float runNoiseDistance = 10f;
[SerializeField]
private float shootNoiseDistance = 30f;
[SerializeField]
private float standNoiseDistance = 0f;
private float noiseDistance = 0f;
public float SneakNoiseDistance { get { return sneakNoiseDistance; } }
public float RunNoiseDistance { get { return runNoiseDistance; } }
public float ShootNoiseDistance { get { return shootNoiseDistance; } }
public float StandNoiseDistance { get { return standNoiseDistance; } }
[SerializeField] private float sneakNoiseDistance = 5f;
public float NoiseDistance { get { return this.noiseDistance; } }
[SerializeField] private float runNoiseDistance = 10f;
private float timeSinceLastShot = 0f;
[SerializeField]
private float shootNoiseDuration = 2f;
private bool isSneaking = false;
private bool isRunning = false;
[SerializeField] private float shootNoiseDistance = 30f;
[SerializeField] private float standNoiseDistance;
[SerializeField] private float shootNoiseDuration = 2f;
private bool isRunning;
private bool isSneaking;
private float timeSinceLastShot;
public float SneakNoiseDistance => sneakNoiseDistance;
public float RunNoiseDistance => runNoiseDistance;
public float ShootNoiseDistance => shootNoiseDistance;
public float StandNoiseDistance => standNoiseDistance;
public float NoiseDistance { get; private set; }
// Start is called before the first frame update
void Start()
private void Start()
{
}
// Update is called once per frame
void Update()
private void Update()
{
if (timeSinceLastShot>0)
{
this.noiseDistance = this.shootNoiseDistance;
}
if (timeSinceLastShot > 0)
NoiseDistance = shootNoiseDistance;
else if (isRunning)
{
this.noiseDistance = this.runNoiseDistance;
}else if (isSneaking)
{
this.noiseDistance = this.sneakNoiseDistance;
}
NoiseDistance = runNoiseDistance;
else if (isSneaking)
NoiseDistance = sneakNoiseDistance;
else
{
this.noiseDistance = standNoiseDistance;
}
NoiseDistance = standNoiseDistance;
timeSinceLastShot -= Time.deltaTime;
}
public void ShotFired()
{
this.timeSinceLastShot = this.shootNoiseDuration;
timeSinceLastShot = shootNoiseDuration;
}
public void SetRunning(bool isRunning)
{
this.isRunning = isRunning;
}
public void SetSneaking(bool isSneaking)
{
this.isSneaking= isSneaking;
this.isSneaking = isSneaking;
}
}
}

View File

@ -1,28 +1,24 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerAim : MonoBehaviour
{
public static PlayerAim active;
public Vector3 targetPosition;
private Camera cam;
// Start is called before the first frame update
void Start()
private void Start()
{
active = this;
cam = GetComponent<Camera>();
}
// Update is called once per frame
void Update()
private void Update()
{
Ray r = new Ray(cam.transform.position,cam.transform.forward);
var r = new Ray(cam.transform.position, cam.transform.forward);
RaycastHit hit;
if(Physics.Raycast(r,out hit))
{
targetPosition = hit.point;
}
if (Physics.Raycast(r, out hit)) targetPosition = hit.point;
}
}
}

View File

@ -1,63 +1,91 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerAnimationController : MonoBehaviour
{
[SerializeField]
private Animator animController;
[SerializeField]
private string runningParameter;
[SerializeField]
private string runningSpeedParameter;
[SerializeField]
private string sideStepSpeedParameter;
[SerializeField] private Animator animController;
[SerializeField] private string runningParameter;
[SerializeField] private string runningSpeedParameter;
[SerializeField] private string sideStepSpeedParameter;
//private bool movementInterrupt = false;
[SerializeField] private PlayerInteractionHandler interactionHandler;
[SerializeField] private PlayerMovementController movement;
//private float verticalAiming = 0;
[SerializeField] private Camera hiddenCam;
private bool isRunning;
private float runningSpeed;
private float sideStepSpeed;
private bool isRunning;
//private bool movementInterrupt = false;
[SerializeField]
private PlayerInteractionHandler interactionHandler;
[SerializeField]
private PlayerMovementController movement;
// Start is called before the first frame update
private void Start()
{
}
//private float verticalAiming = 0;
[SerializeField]
private Camera hiddenCam;
// Update is called once per frame
private void Update()
{
animController.SetBool("IsCarrying", interactionHandler.IsCarrying);
animController.SetBool("HasGun", interactionHandler.GunEnabled);
public void Animate(Vector2 movement,bool jump,bool isMoving)
if (interactionHandler.GunEnabled && !interactionHandler.isDead && movement.AllowRotation)
{
if (hiddenCam.transform.localEulerAngles.x < 90)
{
//DOWN
var target = Mathf.Lerp(animController.GetLayerWeight(3), hiddenCam.transform.localEulerAngles.x / 70f,
Time.deltaTime * 10f);
animController.SetLayerWeight(3, target);
animController.SetLayerWeight(2, 0);
}
else
{
//UP
animController.SetLayerWeight(3, 0);
var target = Mathf.Lerp(animController.GetLayerWeight(2),
(360f - hiddenCam.transform.localEulerAngles.x) / (360f - 300f), Time.deltaTime * 10);
animController.SetLayerWeight(2, target);
}
}
else
{
animController.SetLayerWeight(2, Mathf.Lerp(animController.GetLayerWeight(2), 0, Time.deltaTime * 10));
animController.SetLayerWeight(3, Mathf.Lerp(animController.GetLayerWeight(3), 0, Time.deltaTime * 10));
}
//print("carrying:" + interactionHandler.IsCarrying + " running:"+animController.GetBool(runningParameter)+" running speed:" + animController.GetFloat(runningSpeedParameter));
}
public void Animate(Vector2 movement, bool jump, bool isMoving)
{
animController.SetFloat(runningSpeedParameter, movement.magnitude);
animController.SetBool(runningParameter,isMoving);
animController.SetBool(runningParameter, isMoving);
if (this.movement.IsAiming)
{
animController.SetFloat("StrafingSpeed", movement.x);
float dir = 0;
if (movement.x > 0)
{
dir = 1;
}else if (movement.x < 0)
{
dir = -1;
}
else if (movement.x < 0) dir = -1;
animController.SetFloat("StrafingDirection", dir);
}
else
{
animController.SetFloat("StrafingSpeed", 0);
animController.SetFloat("StrafingDirection", 1);
}
}
public void Animate(PlayerQuickAnimationType animation)
{
switch(animation)
switch (animation)
{
case PlayerQuickAnimationType.Grab:
print("grabbing...");
@ -67,57 +95,22 @@ public class PlayerAnimationController : MonoBehaviour
break;
}
}
public void Hit(bool isDead)
{
animController.SetTrigger("WasHit");
animController.SetBool("IsDead", isDead);
}
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
animController.SetBool("IsCarrying", interactionHandler.IsCarrying);
animController.SetBool("HasGun",interactionHandler.GunEnabled);
if (interactionHandler.GunEnabled&&!interactionHandler.isDead&&movement.AllowRotation)
{
if (hiddenCam.transform.localEulerAngles.x < 90)
{
//DOWN
float target = Mathf.Lerp(animController.GetLayerWeight(3), hiddenCam.transform.localEulerAngles.x / 70f,Time.deltaTime*10f);
animController.SetLayerWeight(3, target);
animController.SetLayerWeight(2, 0);
}
else
{
//UP
animController.SetLayerWeight(3, 0);
float target = Mathf.Lerp(animController.GetLayerWeight(2), (360f - hiddenCam.transform.localEulerAngles.x) / (360f - 300f),Time.deltaTime*10);
animController.SetLayerWeight(2, target);
}
}
else
{
animController.SetLayerWeight(2, Mathf.Lerp(animController.GetLayerWeight(2),0,Time.deltaTime*10));
animController.SetLayerWeight(3, Mathf.Lerp(animController.GetLayerWeight(3), 0, Time.deltaTime*10));
}
//print("carrying:" + interactionHandler.IsCarrying + " running:"+animController.GetBool(runningParameter)+" running speed:" + animController.GetFloat(runningSpeedParameter));
}
}
public enum PlayerAnimationType {Movement,Action}
public enum PlayerQuickAnimationType { Grab,Shoot}
public enum PlayerAnimationType
{
Movement,
Action
}
public enum PlayerQuickAnimationType
{
Grab,
Shoot
}

View File

@ -1,103 +1,72 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Cinemachine;
using TMPro;
using UnityEngine;
public class PlayerComponent : MonoBehaviour
{
[SerializeField]
private float health = 5f;
[SerializeField]
private float maxHealth = 5f;
[SerializeField]
private float stamina = 20f;
[SerializeField]
private float maxStamina = 20f;
[SerializeField] private float health = 5f;
[SerializeField] private float maxHealth = 5f;
[SerializeField] private float stamina = 20f;
[SerializeField] private float maxStamina = 20f;
[SerializeField] private NoiseVisibilitySettingsManager noiseManager;
[SerializeField] private PlayerMovementController movementController;
public NoiseVisibilitySettingsManager NoiseManager { get { return this.noiseManager; } }
public PlayerMovementController MovementController { get { return movementController; } }
[SerializeField]
private PlayerAnimationController animationController;
[SerializeField] private PlayerAnimationController animationController;
[HideInInspector]
public FlareRegister flareRegister;
[SerializeField]
private CinemachineFreeLook cameraFreeLook;
private float shakeTimer = 0;
CinemachineBasicMultiChannelPerlin perlin;
[SerializeField]
private float knockbackDuration = 1f;
[SerializeField]
private float knockbackDistance = 5f;
[SerializeField]
private StatsOutputScreen statsOutput;
[HideInInspector] public FlareRegister flareRegister;
[SerializeField] private CinemachineFreeLook cameraFreeLook;
[SerializeField] private float knockbackDuration = 1f;
[SerializeField] private float knockbackDistance = 5f;
[SerializeField] private StatsOutputScreen statsOutput;
private CinemachineBasicMultiChannelPerlin perlin;
private float shakeTimer;
public NoiseVisibilitySettingsManager NoiseManager => noiseManager;
public PlayerMovementController MovementController => movementController;
[HideInInspector] public bool IsAlive => health > 0;
[HideInInspector]
public bool IsAlive { get { return this.health > 0; } }
private void Awake()
{
flareRegister = GameObject.FindObjectOfType<FlareRegister>();
flareRegister = FindObjectOfType<FlareRegister>();
}
// Start is called before the first frame update
void Start()
private void Start()
{
perlin = cameraFreeLook.GetRig(1).GetCinemachineComponent<CinemachineBasicMultiChannelPerlin>();
}
// Update is called once per frame
void Update()
private void Update()
{
NoiseManager.SetRunning(MovementController.IsRunning);
statsOutput.health = this.health;
statsOutput.health = health;
statsOutput.stamina = 20f;
statsOutput.oxygen = 100f;
if (shakeTimer > 0)
{
shakeTimer -= Time.deltaTime;
// perlin.m_AmplitudeGain = 0;
// perlin.m_AmplitudeGain = 0;
perlin.m_AmplitudeGain = Mathf.Lerp(perlin.m_AmplitudeGain, 0, .1f);
if (shakeTimer <= 0f)
{
perlin.m_AmplitudeGain = 0;
}
if (shakeTimer <= 0f) perlin.m_AmplitudeGain = 0;
}
if (!IsAlive)
{
PlayerInteractionHandler.instance.isDead = true;
movementController.isDead = true;
}
}
public void ShakeCamera(float intensity, float time)
{
CinemachineBasicMultiChannelPerlin perlin = cameraFreeLook.GetRig(1).GetCinemachineComponent<CinemachineBasicMultiChannelPerlin>();
perlin.m_AmplitudeGain= intensity;
shakeTimer = time;
}
public void SetSensitivity(float magnitude)
{
movementController.SetSensitivity(magnitude);
}
public void Damage(float damage,bool applyShake=false)
{
this.health-=damage;
if (applyShake)
{
ShakeCamera(15, 5);
}
}
private void OnTriggerEnter(Collider other)
@ -105,12 +74,31 @@ public class PlayerComponent : MonoBehaviour
if (other.CompareTag("Damaging"))
{
print("HIT!");
MonsterComponent monster = other.GetComponentInParent<MonsterComponent>();
this.Damage(monster.AttackDamage, monster.ShakeCameraOnHit);
animationController.Hit(this.health<=0);
this.movementController.PhysicalForceMove((transform.position - monster.transform.position)*knockbackDistance);
this.movementController.LockMovement(this.knockbackDuration);
var monster = other.GetComponentInParent<MonsterComponent>();
Damage(monster.AttackDamage, monster.ShakeCameraOnHit);
animationController.Hit(health <= 0);
movementController.PhysicalForceMove((transform.position - monster.transform.position) * knockbackDistance);
movementController.LockMovement(knockbackDuration);
}
}
}
public void ShakeCamera(float intensity, float time)
{
var perlin = cameraFreeLook.GetRig(1).GetCinemachineComponent<CinemachineBasicMultiChannelPerlin>();
perlin.m_AmplitudeGain = intensity;
shakeTimer = time;
}
public void SetSensitivity(float magnitude)
{
movementController.SetSensitivity(magnitude);
}
public void Damage(float damage, bool applyShake = false)
{
health -= damage;
if (applyShake) ShakeCamera(15, 5);
}
}

View File

@ -1,83 +1,252 @@
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Xml;
using Unity.VisualScripting;
using Unity.VisualScripting.FullSerializer;
using UnityEngine;
[RequireComponent(typeof(Collider))]
public class PlayerInteractionHandler : MonoBehaviour
{
private List<InteractableItem> itemsInRange= new List<InteractableItem>();
private List<HeavyInteractableItem> heavyItemsInRange = new List<HeavyInteractableItem>();
private Inventory invent;
private TempInventory tempInvent;
public Inventory Inventory { get { return invent; } }
public static PlayerInteractionHandler instance;
[SerializeField]
private Light flashlight;
[SerializeField]
private GameObject flashlight3D;
[SerializeField] private Light flashlight;
[SerializeField] private GameObject flashlight3D;
[SerializeField] private int materialIndex = 1;
[SerializeField] private Transform carryingPos;
[SerializeField] private bool useItemSelector = true;
[SerializeField] private PistolComponent pistol;
[SerializeField] private NoiseVisibilitySettingsManager noiseManager;
[SerializeField] private CameraShift shift;
public bool isDead;
//Check if button down
private readonly AxisIsDown fireDown = new("Fire1");
private bool flashlightEnabled = true;
[SerializeField]
private int materialIndex = 1;
private Material selMaterial;
private Color initColor;
private HeavyInteractableItem heavyInvent;
public bool IsCarrying { get { return heavyInvent !=null; } }
public bool GunEnabled { get { return this.gunEnabled; } }
private bool gunEnabled = false;
[SerializeField]
private Transform carryingPos;
public Transform CarryingPos { get { return this.carryingPos; } }
private readonly List<HeavyInteractableItem> heavyItemsInRange = new();
private Color initColor;
private Inventory invent;
private ItemSelector itemSelector;
[SerializeField]
private bool useItemSelector = true;
[SerializeField]
private PistolComponent pistol;
[SerializeField]
private NoiseVisibilitySettingsManager noiseManager;
private readonly List<InteractableItem> itemsInRange = new();
private InGameManager manager;
[SerializeField]
private CameraShift shift;
private Material selMaterial;
private TempInventory tempInvent;
public Inventory Inventory => invent;
public bool IsCarrying => heavyInvent != null;
public bool GunEnabled { get; private set; }
public Transform CarryingPos => carryingPos;
public bool isDead = false;
//Check if button down
private AxisIsDown fireDown = new AxisIsDown("Fire1");
// Start is called before the first frame update
void Start()
private void Start()
{
instance = this;
invent = this.transform.parent.GetComponent<Inventory>();
invent = transform.parent.GetComponent<Inventory>();
//TEMP FIELD
tempInvent = this.transform.parent.GetComponent<TempInventory>();
tempInvent = transform.parent.GetComponent<TempInventory>();
initColor = flashlight3D.GetComponent<MeshRenderer>().materials[materialIndex].GetColor("_BaseColor");
selMaterial = flashlight3D.GetComponent<MeshRenderer>().materials[materialIndex];
itemSelector = ItemSelector.instance;
pistol.gameObject.SetActive(this.gunEnabled);
flashlightEnabled = this.flashlight.gameObject.activeSelf;
manager = GameObject.FindObjectOfType<InGameManager>();
pistol.gameObject.SetActive(GunEnabled);
flashlightEnabled = flashlight.gameObject.activeSelf;
manager = FindObjectOfType<InGameManager>();
}
// Update is called once per frame
private void Update()
{
fireDown.Check();
if (isDead)
{
DropHeavy();
return;
}
if (manager.IsPaused || isDead) return;
if (Input.GetButtonDown("Fire1") || fireDown.IsDown())
{
if (GunEnabled)
{
if (tempInvent.GetQuantityOf(pistol.projectileName) > 0)
{
pistol.Fire();
noiseManager.ShotFired();
tempInvent.Remove(pistol.projectileName);
}
}
else
{
if (!IsCarrying)
{
var t_index = 0;
var pickupFound = false;
if (itemsInRange.Count > 0)
{
while (t_index < itemsInRange.Count && !itemsInRange[t_index].CanPickup) t_index++;
if (t_index != itemsInRange.Count)
{
pickupFound = true;
invent.AddItem(itemsInRange[t_index]);
itemsInRange[0].transform.gameObject.SetActive(false);
itemsInRange.Remove(itemsInRange[t_index]);
}
}
else if (heavyItemsInRange.Count > 0)
{
pickupFound = true;
heavyInvent = heavyItemsInRange[0];
heavyInvent.transform.parent = carryingPos;
heavyInvent.transform.localPosition = Vector3.zero;
heavyInvent.GetComponent<Rigidbody>().isKinematic = true;
heavyItemsInRange.Remove(heavyItemsInRange[0]);
heavyInvent.Disable();
heavyInvent.DisableAll();
}
if (!pickupFound)
foreach (var item in itemsInRange)
if (!item.CanPickup)
{
if (!item.Interact(ref invent, ref heavyInvent))
item.Interact();
else if (item is HeavyItemReceiver)
if (heavyInvent != null)
{
heavyInvent.transform.parent = carryingPos;
heavyInvent.transform.localPosition = Vector3.zero;
heavyInvent.transform.localEulerAngles = Vector3.zero;
heavyItemsInRange.Remove(heavyInvent);
heavyInvent.GetComponent<Rigidbody>().constraints =
RigidbodyConstraints.FreezeRotation;
heavyInvent.GetComponent<Rigidbody>().isKinematic = true;
heavyInvent.Disable();
heavyInvent.DisableAll();
}
}
}
else
{
int refIndex;
if (itemsInRange.Count > 0 && receiverInRange(out refIndex))
{
((HeavyItemReceiver)itemsInRange[refIndex]).Interact(ref invent, ref heavyInvent);
heavyInvent = null;
}
else
{
DropHeavy();
}
}
}
}
if (Input.GetButtonDown("Fire2"))
{
//print(this.GunEnabled);
if (!GunEnabled)
{
if (!flashlight.gameObject.activeSelf)
EnableFlashlight();
else
DisableFlashlight();
}
else
{
pistol.LightToggle();
}
}
if (Input.GetButtonDown("Fire3"))
if (!IsCarrying)
{
GunEnabled = !GunEnabled;
if (!GunEnabled)
pistol.Disable();
pistol.gameObject.SetActive(GunEnabled);
if (GunEnabled)
pistol.Enable();
}
if (GunEnabled)
{
DisableFlashlight();
var aimAxis = Input.GetAxis("Aim");
if (aimAxis > 0.5f)
pistol.aimMode = PistolComponent.AimMode.CAMERA;
else
pistol.aimMode = PistolComponent.AimMode.MODIFIED;
}
shift.SetCenter(!GunEnabled);
}
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.GetComponent<InteractableItem>() != null)
{
var item = other.gameObject.GetComponent<InteractableItem>();
if (item is InteractableItem && item is not HeavyInteractableItem)
{
item.Enable();
itemsInRange.Add(item);
}
else if (item is HeavyInteractableItem)
{
((HeavyInteractableItem)item).Enable();
heavyItemsInRange.Add((HeavyInteractableItem)item);
}
}
}
private void OnTriggerExit(Collider other)
{
if (other.gameObject.GetComponent<InteractableItem>() != null)
{
var item = other.gameObject.GetComponent<InteractableItem>();
if (item is InteractableItem && item is not HeavyInteractableItem)
{
item.Disable();
itemsInRange.Remove(item);
}
else if (item is HeavyInteractableItem)
{
((HeavyInteractableItem)item).Disable();
//itemsInRange.Remove((HeavyInteractableItem)(item));
heavyItemsInRange.Remove((HeavyInteractableItem)item);
}
}
}
private bool receiverInRange(out int index)
{
int i = 0;
foreach(InteractableItem item in this.itemsInRange)
var i = 0;
foreach (var item in itemsInRange)
{
if(item is HeavyItemReceiver)
if (item is HeavyItemReceiver)
{
index = i;
return true;
}
i++;
}
index = -1;
return false;
}
@ -91,276 +260,57 @@ public class PlayerInteractionHandler : MonoBehaviour
heavyInvent.EnableAll();
heavyInvent = null;
}
}
// Update is called once per frame
void Update()
{
fireDown.Check();
if (this.isDead)
{
DropHeavy();
return;
}
if (manager.IsPaused||isDead)
{
return;
}
if(Input.GetButtonDown("Fire1")||fireDown.IsDown())
{
if (this.GunEnabled)
{
if (tempInvent.GetQuantityOf(this.pistol.projectileName) > 0)
{
this.pistol.Fire();
this.noiseManager.ShotFired();
tempInvent.Remove(this.pistol.projectileName);
}
}
else
{
if (!IsCarrying)
{
int t_index = 0;
bool pickupFound = false;
if (itemsInRange.Count > 0)
{
while (t_index < itemsInRange.Count && !itemsInRange[t_index].CanPickup)
{
t_index++;
}
if (t_index != itemsInRange.Count)
{
pickupFound = true;
invent.AddItem(itemsInRange[t_index]);
itemsInRange[0].transform.gameObject.SetActive(false);
itemsInRange.Remove(itemsInRange[t_index]);
}
}
else if (heavyItemsInRange.Count > 0)
{
pickupFound = true;
heavyInvent = heavyItemsInRange[0];
heavyInvent.transform.parent = carryingPos;
heavyInvent.transform.localPosition = Vector3.zero;
heavyInvent.GetComponent<Rigidbody>().isKinematic = true;
heavyItemsInRange.Remove(heavyItemsInRange[0]);
heavyInvent.Disable();
heavyInvent.DisableAll();
}
if (!pickupFound)
{
foreach (InteractableItem item in itemsInRange)
{
if (!item.CanPickup)
{
if (!item.Interact(ref invent, ref heavyInvent))
{
item.Interact();
}else if(item is HeavyItemReceiver)
{
if(heavyInvent != null)
{
heavyInvent.transform.parent = carryingPos;
heavyInvent.transform.localPosition = Vector3.zero;
heavyInvent.transform.localEulerAngles = Vector3.zero;
heavyItemsInRange.Remove(heavyInvent);
heavyInvent.GetComponent<Rigidbody>().constraints = RigidbodyConstraints.FreezeRotation;
heavyInvent.GetComponent<Rigidbody>().isKinematic = true;
heavyInvent.Disable();
heavyInvent.DisableAll();
}
}
}
}
}
}
else
{
int refIndex;
if (itemsInRange.Count > 0&&receiverInRange(out refIndex)) {
((HeavyItemReceiver)itemsInRange[refIndex]).Interact(ref this.invent, ref heavyInvent);
heavyInvent = null;
}
else
{
this.DropHeavy();
}
}
}
}
if (Input.GetButtonDown("Fire2"))
{
//print(this.GunEnabled);
if (!this.GunEnabled)
{
if (!flashlight.gameObject.activeSelf)
{
EnableFlashlight();
}
else
{
DisableFlashlight();
}
}
else
{
this.pistol.LightToggle();
}
}
if (Input.GetButtonDown("Fire3"))
{
if (!this.IsCarrying)
{
this.gunEnabled = !this.gunEnabled;
if(!this.gunEnabled)
pistol.Disable();
pistol.gameObject.SetActive(this.gunEnabled);
if (this.gunEnabled)
pistol.Enable();
}
}
if (this.GunEnabled)
{
this.DisableFlashlight();
float aimAxis = Input.GetAxis("Aim");
if (aimAxis > 0.5f)
{
pistol.aimMode = PistolComponent.AimMode.CAMERA;
}
else
{
pistol.aimMode = PistolComponent.AimMode.MODIFIED;
}
}
else
{
}
shift.SetCenter(!this.GunEnabled);
}
public void EnableFlashlight()
{
flashlight.gameObject.SetActive(true);
flashlight3D.GetComponent<MeshRenderer>().materials[materialIndex].SetColor("_BaseColor", initColor);
selMaterial.SetColor("_EmissionColor", new Color(255, 255, 255, 255));
flashlight3D.gameObject.SetActive(true);
this.flashlightEnabled = true;
flashlightEnabled = true;
}
public void DisableFlashlight()
{
flashlight.gameObject.SetActive(false);
flashlight3D.GetComponent<MeshRenderer>().materials[materialIndex].SetColor("_BaseColor", new Color(0, 0, 0));
selMaterial.SetColor("_EmissionColor", new Color(0, 0, 0, 0));
flashlight3D.gameObject.SetActive(false);
this.flashlightEnabled = false;
}
private void OnTriggerEnter(Collider other)
{
if(other.gameObject.GetComponent<InteractableItem>() != null)
{
InteractableItem item = other.gameObject.GetComponent<InteractableItem>();
if(item is InteractableItem && item is not HeavyInteractableItem)
{
((InteractableItem)item).Enable();
itemsInRange.Add(item);
}else if(item is HeavyInteractableItem)
{
((HeavyInteractableItem)item).Enable();
heavyItemsInRange.Add((HeavyInteractableItem)item);
}
}
}
private void OnTriggerExit(Collider other)
{
if (other.gameObject.GetComponent<InteractableItem>() != null)
{
InteractableItem item = other.gameObject.GetComponent<InteractableItem>();
if (item is InteractableItem && item is not HeavyInteractableItem)
{
((InteractableItem)item).Disable();
itemsInRange.Remove(item);
}
else if (item is HeavyInteractableItem)
{
((HeavyInteractableItem)item).Disable();
//itemsInRange.Remove((HeavyInteractableItem)(item));
heavyItemsInRange.Remove((HeavyInteractableItem)item);
}
}
flashlightEnabled = false;
}
}
class AxisIsDown
internal class AxisIsDown
{
private string axisName;
private bool isDown = false;
private bool pIsDown = false;
private float axis;
private bool down = false;
public void Check()
{
axis = Input.GetAxis(axisName);
isDown = axis > 0.5f;
if (isDown != pIsDown&&isDown)
{
down = true;
}
else
{
down = false;
}
pIsDown = isDown;
}
private readonly string axisName;
private bool down;
private bool isDown;
private bool pIsDown;
public bool IsDown()
{
return this.down;
}
public AxisIsDown(string axisName)
{
this.axisName = axisName;
}
public void Check()
{
axis = Input.GetAxis(axisName);
isDown = axis > 0.5f;
if (isDown != pIsDown && isDown)
down = true;
else
down = false;
pIsDown = isDown;
}
public bool IsDown()
{
return down;
}
}

View File

@ -1,85 +1,116 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Cinemachine;
using UnityEngine;
public class PlayerMovementController : MonoBehaviour
{
[SerializeField]
private PlayerAnimationController animcontroller;
[SerializeField] private PlayerAnimationController animcontroller;
private float x = 0;
private float y = 0;
[SerializeField] private CharacterController ccontroller;
[SerializeField] private CameraController cameraController;
[SerializeField] private float speed = 1f;
[SerializeField] private float sideSpeed = 0.5f;
[SerializeField] private float animatedRotationSpeed = 5f;
[SerializeField] public Camera cam;
[HideInInspector] public bool AllowRotation;
[HideInInspector] public bool IsAiming;
[SerializeField] private NoiseVisibilitySettingsManager noiseSettings;
[SerializeField] private CinemachineFreeLook freelook;
[SerializeField] private string mouseXAxis = "Mouse X";
[SerializeField] private string mouseYAxis = "Mouse Y";
public bool isDead;
private CharacterControllerForce ccForceAddon;
private float initXSensitivity = 250f;
private float initYSensitivity = 10f;
//private float mouseX = 0;
private bool isRunning = false;
private bool isSneaking = false;
public bool IsRunning { get { return isRunning; } }
[SerializeField]
private CharacterController ccontroller;
private CharacterControllerForce ccForceAddon;
[SerializeField]
private CameraController cameraController;
[SerializeField]
private float speed = 1f;
[SerializeField]
private float sideSpeed = 0.5f;
[SerializeField]
private float animatedRotationSpeed = 5f;
[SerializeField]
public Camera cam;
[HideInInspector]
public bool AllowRotation = false;
[HideInInspector]
public bool IsAiming = false;
[SerializeField]
private NoiseVisibilitySettingsManager noiseSettings;
private InGameManager manager;
public float NoiseDistance { get { return this.noiseSettings.NoiseDistance; } }
private Vector3 lookingDirectionVector;
private bool movementLocked = false;
[SerializeField]
private CinemachineFreeLook freelook;
private float initXSensitivity = 250f;
private float initYSensitivity = 10f;
[SerializeField]
private string mouseXAxis = "Mouse X";
[SerializeField]
private string mouseYAxis = "Mouse Y";
private InGameManager manager;
private bool movementLocked;
private float x;
private float y;
public bool IsRunning { get; private set; }
public float NoiseDistance => noiseSettings.NoiseDistance;
// Start is called before the first frame update
private void Start()
{
ccForceAddon = ccontroller.gameObject.GetComponent<CharacterControllerForce>();
manager = FindObjectOfType<InGameManager>();
initXSensitivity = freelook.m_XAxis.m_MaxSpeed;
initYSensitivity = freelook.m_YAxis.m_MaxSpeed;
}
// Update is called once per frame
private void Update()
{
if (isDead) return;
AllowRotation = IsAiming || IsRunning;
IsAiming = Input.GetMouseButton(1) || Input.GetAxis("Aim") > 0.5f;
GetMovementOld();
MovePlayer();
animcontroller.Animate(new Vector2(x, y), false, IsRunning);
lookingDirectionVector = (cameraController.Forward * y + cameraController.Right * x).normalized;
if ((IsRunning && !Input.GetMouseButtonDown(1)) || AllowRotation)
{
if ((AllowRotation && x == 0 && y == 0) || (IsAiming && PlayerInteractionHandler.instance.GunEnabled))
lookingDirectionVector = cameraController.Forward.normalized;
SlowLookAt(lookingDirectionVector);
}
freelook.m_XAxis.m_InputAxisName = !manager.IsPaused ? mouseXAxis : "";
freelook.m_YAxis.m_InputAxisName = !manager.IsPaused ? mouseYAxis : "";
}
public bool isDead = false;
private void GetMovementOld()
{
x = Input.GetAxis("Horizontal");
y = Input.GetAxis("Vertical");
if (movementLocked||manager.IsPaused)
if (movementLocked || manager.IsPaused)
{
x = 0;
y = 0;
}
isRunning = (Mathf.Abs(y) > 0.1f || Mathf.Abs(x) > 0.1f);
IsRunning = Mathf.Abs(y) > 0.1f || Mathf.Abs(x) > 0.1f;
}
public void SetSensitivity(float sensitivity)
{
this.freelook.m_XAxis.m_MaxSpeed = initXSensitivity * sensitivity;
this.freelook.m_YAxis.m_MaxSpeed= initYSensitivity * sensitivity;
freelook.m_XAxis.m_MaxSpeed = initXSensitivity * sensitivity;
freelook.m_YAxis.m_MaxSpeed = initYSensitivity * sensitivity;
}
private void MovePlayer()
{
Vector3 movement = Vector3.zero;
var movement = Vector3.zero;
//movement += transform.forward * Mathf.Abs(y) * Time.deltaTime * speed;//+(transform.right*x*Time.deltaTime*speed);
movement += cam.transform.forward *y * Time.deltaTime * speed;
movement += cam.transform.forward * y * Time.deltaTime * speed;
//movement += transform.forward * Mathf.Abs(x) * Time.deltaTime * speed;
@ -88,9 +119,8 @@ public class PlayerMovementController : MonoBehaviour
else
movement += cam.transform.right * x * Time.deltaTime * sideSpeed;
movement += Vector3.down*Time.deltaTime*9.8f;
movement += Vector3.down * Time.deltaTime * 9.8f;
ccontroller.Move(movement);
}
@ -101,77 +131,33 @@ public class PlayerMovementController : MonoBehaviour
private void GetJumpOld()
{
}
// Start is called before the first frame update
void Start()
private void SlowLookAt(Vector3 targetVector)
{
ccForceAddon = ccontroller.gameObject.GetComponent<CharacterControllerForce>();
manager = GameObject.FindObjectOfType<InGameManager>();
initXSensitivity =freelook.m_XAxis.m_MaxSpeed;
initYSensitivity= freelook.m_YAxis.m_MaxSpeed;
}
var relativePos = targetVector;
var toRotation = Quaternion.LookRotation(relativePos);
// Update is called once per frame
void Update()
{
if(isDead) return;
AllowRotation = IsAiming||IsRunning;
IsAiming = Input.GetMouseButton(1) || Input.GetAxis("Aim") > 0.5f;
GetMovementOld();
MovePlayer();
animcontroller.Animate(new Vector2(x, y), false,isRunning);
this.lookingDirectionVector = ((cameraController.Forward * y) + cameraController.Right * x).normalized;
if (isRunning && !Input.GetMouseButtonDown(1) || AllowRotation)
{
if (AllowRotation && x == 0 && y == 0 || IsAiming && PlayerInteractionHandler.instance.GunEnabled)
{
this.lookingDirectionVector = cameraController.Forward.normalized;
}
SlowLookAt(this.lookingDirectionVector);
}
freelook.m_XAxis.m_InputAxisName = !manager.IsPaused ? this.mouseXAxis : "";
freelook.m_YAxis.m_InputAxisName = !manager.IsPaused ? this.mouseYAxis : "";
}
void SlowLookAt(Vector3 targetVector)
{
Vector3 relativePos = targetVector;
Quaternion toRotation = Quaternion.LookRotation(relativePos);
transform.rotation = Quaternion.Lerp(transform.rotation, toRotation, animatedRotationSpeed * Time.deltaTime);
}
public void PhysicalForceMove(Vector3 vector)
{
this.ccontroller.Move(vector);
ccontroller.Move(vector);
ccForceAddon.AddImpact(vector, vector.magnitude);
}
public void LockMovement(float duration)
{
StartCoroutine(lockMovement(duration));
}
private IEnumerator lockMovement(float duration)
{
movementLocked = true;
yield return new WaitForSeconds(duration);
movementLocked = false;
}
}
}

View File

@ -1,60 +1,49 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
using UnityEngine;
public class StatsOutputScreen : MonoBehaviour
{
[SerializeField]
private TMP_Text healthText;
[SerializeField]
private TMP_Text staminaText;
[SerializeField]
private TMP_Text oxygenText;
[HideInInspector]
public float health = 0;
[HideInInspector]
public float stamina = 0;
[HideInInspector]
public float oxygen = 0;
[SerializeField] private TMP_Text healthText;
[SerializeField] private TMP_Text staminaText;
[SerializeField] private TMP_Text oxygenText;
[HideInInspector] public float health;
[HideInInspector] public float stamina;
[HideInInspector] public float oxygen;
private Color initColor;
// Start is called before the first frame update
void Start()
private void Start()
{
initColor = healthText.color;
InvokeRepeating("ToggleColor", 0.5f, 0.5f);
}
// Update is called once per frame
void Update()
private void Update()
{
healthText.text = "Health:" + health.ToString();
healthText.text = "Health:" + health;
if (health <= 1)
{
//Dark Red
healthText.color = new Color(50,0,0);
}
else if (health <=3)
{
healthText.color = new Color(50, 0, 0);
else if (health <= 3)
healthText.color = Color.red;
}
else
{
healthText.color = initColor;
}
staminaText.text = "Stamina:" + stamina.ToString();
oxygenText.text = "Oxygen:"+oxygen.ToString();
staminaText.text = "Stamina:" + stamina;
oxygenText.text = "Oxygen:" + oxygen;
}
private void ToggleColor()
{
if(health<=1)
if (health <= 1)
healthText.gameObject.SetActive(!healthText.gameObject.activeSelf);
}
}
}

View File

@ -1,5 +1,6 @@
fileFormatVersion: 2
guid: 2ad85b0f43f25f1499c27a4dca23ddd8
guid: 6e954a9a26b1f7447a8a8a8aeafa34bb
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:

View File

@ -0,0 +1,30 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Steamworks;
public class FriendObject : MonoBehaviour
{
public SteamId steamid;
public async void Invite()
{
if (SteamLobbyManager.UserInLobby)
{
SteamLobbyManager.CurrentLobby.InviteFriend(steamid);
Debug.Log("Invited " + steamid);
}
else
{
bool result = await SteamLobbyManager.CreateLobby();
if (result)
{
SteamLobbyManager.CurrentLobby.InviteFriend(steamid);
Debug.Log("Invited " + steamid + " Created a new lobby");
}
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 57db693cbe9a46345add801ae22e1e2a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,74 @@
using Steamworks;
using UnityEngine;
using UnityEngine.UI;
public class SteamFriendsManager : MonoBehaviour
{
public RawImage playerprofile;
public Text playername;
public Transform friendsContent;
public GameObject friendObj;
async void Start()
{
if (!SteamClient.IsValid) return;
playername.text = SteamClient.Name;
InitFriendsAsync();
var img = await SteamFriends.GetLargeAvatarAsync(SteamClient.SteamId);
playerprofile.texture = GetTextureFromImage(img.Value);
}
public static Texture2D GetTextureFromImage(Steamworks.Data.Image image)
{
Texture2D texture = new Texture2D((int)image.Width, (int)image.Height);
for (int x = 0; x < image.Width; x++)
{
for (int y = 0; y < image.Height; y++)
{
var p = image.GetPixel(x, y);
texture.SetPixel(x, (int)image.Height - y, new Color(p.r / 255.0f, p.g / 255.0f, p.b / 255.0f, p.a / 255.0f));
}
}
texture.Apply();
return texture;
}
public void InitFriendsAsync()
{
foreach (var friend in SteamFriends.GetFriends())
{
GameObject f = Instantiate(friendObj, friendsContent);
f.GetComponentInChildren<Text>().text = friend.Name;
f.GetComponent<FriendObject>().steamid = friend.Id;
AssingFriendImage(f, friend.Id);
}
}
public async void AssingFriendImage(GameObject f, SteamId id)
{
var img = await SteamFriends.GetLargeAvatarAsync(id);
f.GetComponentInChildren<RawImage>().texture = GetTextureFromImage(img.Value);
}
public static async System.Threading.Tasks.Task<Texture2D> GetTextureFromSteamIdAsync(SteamId id)
{
var img = await SteamFriends.GetLargeAvatarAsync(SteamClient.SteamId);
Steamworks.Data.Image image = img.Value;
Texture2D texture = new Texture2D((int)image.Width, (int)image.Height);
for (int x = 0; x < image.Width; x++)
{
for (int y = 0; y < image.Height; y++)
{
var p = image.GetPixel(x, y);
texture.SetPixel(x, (int)image.Height - y, new Color(p.r / 255.0f, p.g / 255.0f, p.b / 255.0f, p.a / 255.0f));
}
}
texture.Apply();
return texture;
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 3e1287d29b0590b4086746e0ea190f4e
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,176 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Steamworks;
using Steamworks.Data;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.UI;
public class SteamLobbyManager : MonoBehaviour
{
public static Lobby CurrentLobby;
public static bool UserInLobby;
public UnityEvent onLobbyCreated;
public UnityEvent onLobbyJoined;
public UnityEvent onLobbyLeave;
public GameObject inLobbyFriend;
public Transform content;
public Dictionary<SteamId, GameObject> inLobby = new();
private void Start()
{
DontDestroyOnLoad(this);
SteamMatchmaking.OnLobbyCreated += OnLobbyCreatedCallBack;
SteamMatchmaking.OnLobbyEntered += OnLobbyEntered;
SteamMatchmaking.OnLobbyMemberJoined += OnLobbyMemberJoined;
SteamMatchmaking.OnChatMessage += OnChatMessage;
SteamMatchmaking.OnLobbyMemberDisconnected += OnLobbyMemberDisconnected;
SteamMatchmaking.OnLobbyMemberLeave += OnLobbyMemberDisconnected;
SteamMatchmaking.OnLobbyGameCreated += OnLobbyGameCreated;
SteamFriends.OnGameLobbyJoinRequested += OnGameLobbyJoinRequest;
SteamMatchmaking.OnLobbyInvite += OnLobbyInvite;
}
private void OnLobbyInvite(Friend friend, Lobby lobby)
{
Debug.Log($"{friend.Name} invited you to his lobby.");
}
private void OnLobbyGameCreated(Lobby lobby, uint ip, ushort port, SteamId id)
{
}
private async void OnLobbyMemberJoined(Lobby lobby, Friend friend)
{
Debug.Log($"{friend.Name} joined the lobby");
var obj = Instantiate(inLobbyFriend, content);
obj.GetComponentInChildren<Text>().text = friend.Name;
obj.GetComponentInChildren<RawImage>().texture =
await SteamFriendsManager.GetTextureFromSteamIdAsync(friend.Id);
inLobby.Add(friend.Id, obj);
}
private void OnLobbyMemberDisconnected(Lobby lobby, Friend friend)
{
Debug.Log($"{friend.Name} left the lobby");
Debug.Log($"New lobby owner is {CurrentLobby.Owner}");
if (inLobby.ContainsKey(friend.Id))
{
Destroy(inLobby[friend.Id]);
inLobby.Remove(friend.Id);
}
}
private void OnChatMessage(Lobby lobby, Friend friend, string message)
{
Debug.Log($"incoming chat message from {friend.Name} : {message}");
}
private async void OnGameLobbyJoinRequest(Lobby joinedLobby, SteamId id)
{
var joinedLobbySuccess = await joinedLobby.Join();
if (joinedLobbySuccess != RoomEnter.Success)
Debug.Log("failed to join lobby : " + joinedLobbySuccess);
else
CurrentLobby = joinedLobby;
}
private void OnLobbyCreatedCallBack(Result result, Lobby lobby)
{
if (result != Result.OK)
{
Debug.Log("lobby creation result not ok : " + result);
}
else
{
onLobbyCreated.Invoke();
Debug.Log("lobby creation result ok");
}
}
private async void OnLobbyEntered(Lobby lobby)
{
Debug.Log("Client joined the lobby");
UserInLobby = true;
foreach (var user in inLobby.Values) Destroy(user);
inLobby.Clear();
var obj = Instantiate(inLobbyFriend, content);
obj.GetComponentInChildren<Text>().text = SteamClient.Name;
obj.GetComponentInChildren<RawImage>().texture =
await SteamFriendsManager.GetTextureFromSteamIdAsync(SteamClient.SteamId);
inLobby.Add(SteamClient.SteamId, obj);
foreach (var friend in CurrentLobby.Members)
if (friend.Id != SteamClient.SteamId)
{
var obj2 = Instantiate(inLobbyFriend, content);
obj2.GetComponentInChildren<Text>().text = friend.Name;
obj2.GetComponentInChildren<RawImage>().texture =
await SteamFriendsManager.GetTextureFromSteamIdAsync(friend.Id);
inLobby.Add(friend.Id, obj2);
}
onLobbyJoined.Invoke();
}
public async void CreateLobbyAsync()
{
var result = await CreateLobby();
if (!result)
{
//Invoke a error message.
}
}
public static async Task<bool> CreateLobby()
{
try
{
var createLobbyOutput = await SteamMatchmaking.CreateLobbyAsync();
if (!createLobbyOutput.HasValue)
{
Debug.Log("Lobby created but not correctly instantiated.");
return false;
}
CurrentLobby = createLobbyOutput.Value;
CurrentLobby.SetPublic();
//currentLobby.SetPrivate();
CurrentLobby.SetJoinable(true);
return true;
}
catch (Exception exception)
{
Debug.Log("Failed to create multiplayer lobby : " + exception);
return false;
}
}
public void LeaveLobby()
{
try
{
UserInLobby = false;
CurrentLobby.Leave();
onLobbyLeave.Invoke();
foreach (var user in inLobby.Values) Destroy(user);
inLobby.Clear();
}
catch
{
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: d4b922de688dc97428e1fcaec4244b9e
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,39 @@
using System;
using Steamworks;
using UnityEngine;
using UnityEngine.Events;
public class SteamManager : MonoBehaviour
{
public uint appId;
public UnityEvent onSteamFailed;
private void Awake()
{
DontDestroyOnLoad(this);
try
{
SteamClient.Init(appId);
Debug.Log("Steam is up and running!");
}
catch (Exception e)
{
Debug.Log(e.Message);
onSteamFailed.Invoke();
}
}
private void OnApplicationQuit()
{
try
{
Debug.Log("Steam is shutting down!");
SteamClient.Shutdown();
}
catch
{
Debug.Log("Steam is not running!");
}
}
}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 1b5f291225ca7c4459871c80128b5172
guid: c790abd20c22fc348ac5c95c419527bb
MonoImporter:
externalObjects: {}
serializedVersion: 2

View File

@ -1,60 +1,52 @@
using System.Collections;
using System;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using TMPro;
[ExecuteAlways]
public class ObjectiveText : MonoBehaviour
{
[SerializeField]
public List<VisualObjectiveItemGUI> visualObjects;
[SerializeField]
private Color inCompleteColor = Color.white;
[SerializeField]
private Color completeColor = Color.yellow;
[SerializeField]
private float speed;
[SerializeField]
private Animator animator;
[SerializeField] public List<VisualObjectiveItemGUI> visualObjects;
[SerializeField] private Color inCompleteColor = Color.white;
[SerializeField] private Color completeColor = Color.yellow;
[SerializeField] private float speed;
[SerializeField] private Animator animator;
// Start is called before the first frame update
void Start()
private void Start()
{
}
// Update is called once per frame
void Update()
private void Update()
{
foreach(VisualObjectiveItemGUI item in visualObjects)
{
if (item.isComplete){
item.icon.color = Color.Lerp(item.icon.color, completeColor, Time.deltaTime*speed);
}
foreach (var item in visualObjects)
if (item.isComplete)
item.icon.color = Color.Lerp(item.icon.color, completeColor, Time.deltaTime * speed);
else
{
item.icon.color = Color.Lerp(item.icon.color,inCompleteColor, Time.deltaTime*speed);
}
}
item.icon.color = Color.Lerp(item.icon.color, inCompleteColor, Time.deltaTime * speed);
}
public void FadeOut()
{
animator.Play("FadeOut");
}
public void FadeIn()
{
animator.Play("FadeIn");
}
}
[System.Serializable]
[Serializable]
public class VisualObjectiveItemGUI
{
public TMP_Text text;
public Image icon;
public bool isComplete = false;
public bool isComplete;
}

View File

@ -1,60 +1,49 @@
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using TMPro;
public class WaypointMarker : MonoBehaviour
{
public Image pointer;
public Transform target;
public TMP_Text distanceMarker;
private Vector2 offset;
// Start is called before the first frame update
void Start()
private void Start()
{
offset = distanceMarker.transform.position - pointer.transform.position;
}
// Update is called once per frame
void Update()
private void Update()
{
float minX = pointer.GetPixelAdjustedRect().width / 2;
float maxX = Screen.width - minX;
float minY = pointer.GetPixelAdjustedRect().height / 2;
float maxY = Screen.height - minY;
var minX = pointer.GetPixelAdjustedRect().width / 2;
var maxX = Screen.width - minX;
var minY = pointer.GetPixelAdjustedRect().height / 2;
var maxY = Screen.height - minY;
Vector2 pos = Camera.main.WorldToScreenPoint(target.position);
if (Vector3.Dot(target.position - Camera.main.transform.position, Camera.main.transform.forward) < 0)
{
//target is behind player
if(pos.x < Screen.width / 2)
{
if (pos.x < Screen.width / 2)
pos.x = maxX;
}
else
{
pos.x = minX;
}
}
pos.x = Mathf.Clamp(pos.x, minX, maxX);
pos.y = Mathf.Clamp(pos.y, minY, maxY);
pointer.transform.position = pos;
distanceMarker.text = Mathf.RoundToInt(Vector3.Distance(Camera.main.transform.position, target.transform.position)).ToString() + " meters";
distanceMarker.text =
Mathf.RoundToInt(Vector3.Distance(Camera.main.transform.position, target.transform.position)) + " meters";
if (pos.x < Screen.width / 2)
{
distanceMarker.transform.position = pos + offset;
}
else
{
distanceMarker.transform.position = pos - offset;
}
}
}
}

View File

@ -1,156 +1,416 @@
{"frames": [
{
"filename": "1f60a.png",
"frame": {"x":0,"y":0,"w":128,"h":128},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":128,"h":128},
"sourceSize": {"w":128,"h":128},
"pivot": {"x":0.5,"y":0.5}
},
{
"filename": "1f60b.png",
"frame": {"x":128,"y":0,"w":128,"h":128},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":128,"h":128},
"sourceSize": {"w":128,"h":128},
"pivot": {"x":0.5,"y":0.5}
},
{
"filename": "1f60d.png",
"frame": {"x":256,"y":0,"w":128,"h":128},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":128,"h":128},
"sourceSize": {"w":128,"h":128},
"pivot": {"x":0.5,"y":0.5}
},
{
"filename": "1f60e.png",
"frame": {"x":384,"y":0,"w":128,"h":128},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":128,"h":128},
"sourceSize": {"w":128,"h":128},
"pivot": {"x":0.5,"y":0.5}
},
{
"filename": "1f600.png",
"frame": {"x":0,"y":128,"w":128,"h":128},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":128,"h":128},
"sourceSize": {"w":128,"h":128},
"pivot": {"x":0.5,"y":0.5}
},
{
"filename": "1f601.png",
"frame": {"x":128,"y":128,"w":128,"h":128},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":128,"h":128},
"sourceSize": {"w":128,"h":128},
"pivot": {"x":0.5,"y":0.5}
},
{
"filename": "1f602.png",
"frame": {"x":256,"y":128,"w":128,"h":128},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":128,"h":128},
"sourceSize": {"w":128,"h":128},
"pivot": {"x":0.5,"y":0.5}
},
{
"filename": "1f603.png",
"frame": {"x":384,"y":128,"w":128,"h":128},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":128,"h":128},
"sourceSize": {"w":128,"h":128},
"pivot": {"x":0.5,"y":0.5}
},
{
"filename": "1f604.png",
"frame": {"x":0,"y":256,"w":128,"h":128},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":128,"h":128},
"sourceSize": {"w":128,"h":128},
"pivot": {"x":0.5,"y":0.5}
},
{
"filename": "1f605.png",
"frame": {"x":128,"y":256,"w":128,"h":128},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":128,"h":128},
"sourceSize": {"w":128,"h":128},
"pivot": {"x":0.5,"y":0.5}
},
{
"filename": "1f606.png",
"frame": {"x":256,"y":256,"w":128,"h":128},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":128,"h":128},
"sourceSize": {"w":128,"h":128},
"pivot": {"x":0.5,"y":0.5}
},
{
"filename": "1f609.png",
"frame": {"x":384,"y":256,"w":128,"h":128},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":128,"h":128},
"sourceSize": {"w":128,"h":128},
"pivot": {"x":0.5,"y":0.5}
},
{
"filename": "1f618.png",
"frame": {"x":0,"y":384,"w":128,"h":128},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":128,"h":128},
"sourceSize": {"w":128,"h":128},
"pivot": {"x":0.5,"y":0.5}
},
{
"filename": "1f923.png",
"frame": {"x":128,"y":384,"w":128,"h":128},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":128,"h":128},
"sourceSize": {"w":128,"h":128},
"pivot": {"x":0.5,"y":0.5}
},
{
"filename": "263a.png",
"frame": {"x":256,"y":384,"w":128,"h":128},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":128,"h":128},
"sourceSize": {"w":128,"h":128},
"pivot": {"x":0.5,"y":0.5}
},
{
"filename": "2639.png",
"frame": {"x":384,"y":384,"w":128,"h":128},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":128,"h":128},
"sourceSize": {"w":128,"h":128},
"pivot": {"x":0.5,"y":0.5}
}],
"meta": {
"app": "http://www.codeandweb.com/texturepacker",
"version": "1.0",
"image": "EmojiOne.png",
"format": "RGBA8888",
"size": {"w":512,"h":512},
"scale": "1",
"smartupdate": "$TexturePacker:SmartUpdate:196a26a2e149d875b91ffc8fa3581e76:fc928c7e275404b7e0649307410475cb:424723c3774975ddb2053fd5c4b85f6e$"
}
"frames": [
{
"filename": "1f60a.png",
"frame": {
"x": 0,
"y": 0,
"w": 128,
"h": 128
},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 128,
"h": 128
},
"sourceSize": {
"w": 128,
"h": 128
},
"pivot": {
"x": 0.5,
"y": 0.5
}
},
{
"filename": "1f60b.png",
"frame": {
"x": 128,
"y": 0,
"w": 128,
"h": 128
},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 128,
"h": 128
},
"sourceSize": {
"w": 128,
"h": 128
},
"pivot": {
"x": 0.5,
"y": 0.5
}
},
{
"filename": "1f60d.png",
"frame": {
"x": 256,
"y": 0,
"w": 128,
"h": 128
},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 128,
"h": 128
},
"sourceSize": {
"w": 128,
"h": 128
},
"pivot": {
"x": 0.5,
"y": 0.5
}
},
{
"filename": "1f60e.png",
"frame": {
"x": 384,
"y": 0,
"w": 128,
"h": 128
},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 128,
"h": 128
},
"sourceSize": {
"w": 128,
"h": 128
},
"pivot": {
"x": 0.5,
"y": 0.5
}
},
{
"filename": "1f600.png",
"frame": {
"x": 0,
"y": 128,
"w": 128,
"h": 128
},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 128,
"h": 128
},
"sourceSize": {
"w": 128,
"h": 128
},
"pivot": {
"x": 0.5,
"y": 0.5
}
},
{
"filename": "1f601.png",
"frame": {
"x": 128,
"y": 128,
"w": 128,
"h": 128
},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 128,
"h": 128
},
"sourceSize": {
"w": 128,
"h": 128
},
"pivot": {
"x": 0.5,
"y": 0.5
}
},
{
"filename": "1f602.png",
"frame": {
"x": 256,
"y": 128,
"w": 128,
"h": 128
},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 128,
"h": 128
},
"sourceSize": {
"w": 128,
"h": 128
},
"pivot": {
"x": 0.5,
"y": 0.5
}
},
{
"filename": "1f603.png",
"frame": {
"x": 384,
"y": 128,
"w": 128,
"h": 128
},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 128,
"h": 128
},
"sourceSize": {
"w": 128,
"h": 128
},
"pivot": {
"x": 0.5,
"y": 0.5
}
},
{
"filename": "1f604.png",
"frame": {
"x": 0,
"y": 256,
"w": 128,
"h": 128
},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 128,
"h": 128
},
"sourceSize": {
"w": 128,
"h": 128
},
"pivot": {
"x": 0.5,
"y": 0.5
}
},
{
"filename": "1f605.png",
"frame": {
"x": 128,
"y": 256,
"w": 128,
"h": 128
},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 128,
"h": 128
},
"sourceSize": {
"w": 128,
"h": 128
},
"pivot": {
"x": 0.5,
"y": 0.5
}
},
{
"filename": "1f606.png",
"frame": {
"x": 256,
"y": 256,
"w": 128,
"h": 128
},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 128,
"h": 128
},
"sourceSize": {
"w": 128,
"h": 128
},
"pivot": {
"x": 0.5,
"y": 0.5
}
},
{
"filename": "1f609.png",
"frame": {
"x": 384,
"y": 256,
"w": 128,
"h": 128
},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 128,
"h": 128
},
"sourceSize": {
"w": 128,
"h": 128
},
"pivot": {
"x": 0.5,
"y": 0.5
}
},
{
"filename": "1f618.png",
"frame": {
"x": 0,
"y": 384,
"w": 128,
"h": 128
},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 128,
"h": 128
},
"sourceSize": {
"w": 128,
"h": 128
},
"pivot": {
"x": 0.5,
"y": 0.5
}
},
{
"filename": "1f923.png",
"frame": {
"x": 128,
"y": 384,
"w": 128,
"h": 128
},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 128,
"h": 128
},
"sourceSize": {
"w": 128,
"h": 128
},
"pivot": {
"x": 0.5,
"y": 0.5
}
},
{
"filename": "263a.png",
"frame": {
"x": 256,
"y": 384,
"w": 128,
"h": 128
},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 128,
"h": 128
},
"sourceSize": {
"w": 128,
"h": 128
},
"pivot": {
"x": 0.5,
"y": 0.5
}
},
{
"filename": "2639.png",
"frame": {
"x": 384,
"y": 384,
"w": 128,
"h": 128
},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {
"x": 0,
"y": 0,
"w": 128,
"h": 128
},
"sourceSize": {
"w": 128,
"h": 128
},
"pivot": {
"x": 0.5,
"y": 0.5
}
}
],
"meta": {
"app": "http://www.codeandweb.com/texturepacker",
"version": "1.0",
"image": "EmojiOne.png",
"format": "RGBA8888",
"size": {
"w": 512,
"h": 512
},
"scale": "1",
"smartupdate": "$TexturePacker:SmartUpdate:196a26a2e149d875b91ffc8fa3581e76:fc928c7e275404b7e0649307410475cb:424723c3774975ddb2053fd5c4b85f6e$"
}
}

View File

@ -3,7 +3,7 @@
"com.unity.cinemachine": "2.8.9",
"com.unity.collab-proxy": "2.0.0",
"com.unity.feature.development": "1.0.1",
"com.unity.ide.rider": "3.0.18",
"com.unity.ide.rider": "3.0.22",
"com.unity.ide.visualstudio": "2.0.17",
"com.unity.ide.vscode": "1.2.5",
"com.unity.inputsystem": "1.4.4",
@ -12,6 +12,7 @@
"com.unity.textmeshpro": "3.0.6",
"com.unity.timeline": "1.6.4",
"com.unity.toolchain.linux-x86_64": "2.0.5",
"com.unity.toolchain.win-x86_64-linux-x86_64": "2.0.5",
"com.unity.ugui": "1.0.0",
"com.unity.visualscripting": "1.8.0",
"com.unity.modules.ai": "1.0.0",

View File

@ -54,7 +54,7 @@
}
},
"com.unity.ide.rider": {
"version": "3.0.18",
"version": "3.0.22",
"depth": 0,
"source": "registry",
"dependencies": {
@ -227,6 +227,16 @@
},
"url": "https://packages.unity.com"
},
"com.unity.toolchain.win-x86_64-linux-x86_64": {
"version": "2.0.5",
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.sysroot": "2.0.6",
"com.unity.sysroot.linux-x86_64": "2.0.5"
},
"url": "https://packages.unity.com"
},
"com.unity.ugui": {
"version": "1.0.0",
"depth": 0,

View File

@ -1,167 +1,167 @@
{
"templatePinStates": [],
"dependencyTypeInfos": [
{
"userAdded": false,
"type": "UnityEngine.AnimationClip",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEditor.Animations.AnimatorController",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.AnimatorOverrideController",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEditor.Audio.AudioMixerController",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.ComputeShader",
"ignore": true,
"defaultInstantiationMode": 1,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Cubemap",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.GameObject",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEditor.LightingDataAsset",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": false
},
{
"userAdded": false,
"type": "UnityEngine.LightingSettings",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Material",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEditor.MonoScript",
"ignore": true,
"defaultInstantiationMode": 1,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.PhysicMaterial",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.PhysicsMaterial2D",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Rendering.PostProcessing.PostProcessResources",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Rendering.VolumeProfile",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEditor.SceneAsset",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": false
},
{
"userAdded": false,
"type": "UnityEngine.Shader",
"ignore": true,
"defaultInstantiationMode": 1,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.ShaderVariantCollection",
"ignore": true,
"defaultInstantiationMode": 1,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Texture",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Texture2D",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Timeline.TimelineAsset",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
}
],
"defaultDependencyTypeInfo": {
"userAdded": false,
"type": "<default_scene_template_dependencies>",
"ignore": false,
"defaultInstantiationMode": 1,
"supportsModification": true
"templatePinStates": [],
"dependencyTypeInfos": [
{
"userAdded": false,
"type": "UnityEngine.AnimationClip",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
"newSceneOverride": 0
{
"userAdded": false,
"type": "UnityEditor.Animations.AnimatorController",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.AnimatorOverrideController",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEditor.Audio.AudioMixerController",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.ComputeShader",
"ignore": true,
"defaultInstantiationMode": 1,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Cubemap",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.GameObject",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEditor.LightingDataAsset",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": false
},
{
"userAdded": false,
"type": "UnityEngine.LightingSettings",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Material",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEditor.MonoScript",
"ignore": true,
"defaultInstantiationMode": 1,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.PhysicMaterial",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.PhysicsMaterial2D",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Rendering.PostProcessing.PostProcessResources",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Rendering.VolumeProfile",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEditor.SceneAsset",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": false
},
{
"userAdded": false,
"type": "UnityEngine.Shader",
"ignore": true,
"defaultInstantiationMode": 1,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.ShaderVariantCollection",
"ignore": true,
"defaultInstantiationMode": 1,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Texture",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Texture2D",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Timeline.TimelineAsset",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
}
],
"defaultDependencyTypeInfo": {
"userAdded": false,
"type": "<default_scene_template_dependencies>",
"ignore": false,
"defaultInstantiationMode": 1,
"supportsModification": true
},
"newSceneOverride": 0
}