Steam lobby implemented
This commit is contained in:
parent
c7647c8097
commit
49efee80e2
8
.idea/.idea.station_obscurum_temp/.idea/indexLayout.xml
generated
Normal file
8
.idea/.idea.station_obscurum_temp/.idea/indexLayout.xml
generated
Normal file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="UserContentModel">
|
||||
<attachedFolders />
|
||||
<explicitIncludes />
|
||||
<explicitExcludes />
|
||||
</component>
|
||||
</project>
|
6
.idea/.idea.station_obscurum_temp/.idea/projectSettingsUpdater.xml
generated
Normal file
6
.idea/.idea.station_obscurum_temp/.idea/projectSettingsUpdater.xml
generated
Normal 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>
|
6
.idea/.idea.station_obscurum_temp/.idea/vcs.xml
generated
Normal file
6
.idea/.idea.station_obscurum_temp/.idea/vcs.xml
generated
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
195
.idea/.idea.station_obscurum_temp/.idea/workspace.xml
generated
Normal file
195
.idea/.idea.station_obscurum_temp/.idea/workspace.xml
generated
Normal 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">{
|
||||
"keyToString": {
|
||||
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||
"WebServerToolWindowFactoryState": "false",
|
||||
"ignore.virus.scanning.warn.message": "true",
|
||||
"node.js.detected.package.eslint": "true",
|
||||
"node.js.detected.package.tslint": "true",
|
||||
"node.js.selected.package.eslint": "(autodetect)",
|
||||
"node.js.selected.package.tslint": "(autodetect)",
|
||||
"settings.editor.selected.configurable": "preferences.pluginManager",
|
||||
"vue.rearranger.settings.migration": "true"
|
||||
},
|
||||
"keyToStringList": {
|
||||
"rider.external.source.directories": [
|
||||
"C:\\Users\\madha\\AppData\\Roaming\\JetBrains\\Rider2023.1\\resharper-host\\DecompilerCache",
|
||||
"C:\\Users\\madha\\AppData\\Roaming\\JetBrains\\Rider2023.1\\resharper-host\\SourcesCache",
|
||||
"C:\\Users\\madha\\AppData\\Local\\Symbols\\src"
|
||||
]
|
||||
}
|
||||
}</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 & 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
55
.vscode/settings.json
vendored
Normal 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
|
||||
}
|
||||
}
|
@ -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
|
||||
}
|
@ -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
|
||||
}
|
@ -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
|
||||
}
|
@ -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
|
||||
}
|
@ -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
|
||||
}
|
@ -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
|
||||
}
|
@ -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
|
||||
}
|
@ -1348,7 +1348,7 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
_steamAppID: 480
|
||||
_serverBindAddress:
|
||||
_serverBindAddress: 76561198308605766
|
||||
_port: 27015
|
||||
_maximumClients: 16
|
||||
_clientAddress: 76561198308605766
|
||||
|
@ -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
|
||||
}
|
@ -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");
|
||||
}
|
||||
}
|
@ -1 +1,3 @@
|
||||
{"StripReleaseBuilds":true}
|
||||
{
|
||||
"StripReleaseBuilds": true
|
||||
}
|
@ -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
|
||||
}
|
@ -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
@ -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:
|
||||
|
@ -1,5 +1,6 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0957b521a08374f4aa508231735153bc
|
||||
guid: 8c8cec636f7034e4386a66967a4068ba
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
461
Assets/Prefabs/Lobby/Friend.prefab
Normal file
461
Assets/Prefabs/Lobby/Friend.prefab
Normal 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
|
@ -1,6 +1,6 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 96a44475794fb6445a6f3c4b9ee13966
|
||||
DefaultImporter:
|
||||
guid: 2fe0c7c1393a9ac4e9322c657de9c116
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
227
Assets/Prefabs/Lobby/LobbyFriend.prefab
Normal file
227
Assets/Prefabs/Lobby/LobbyFriend.prefab
Normal 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
|
7
Assets/Prefabs/Lobby/LobbyFriend.prefab.meta
Normal file
7
Assets/Prefabs/Lobby/LobbyFriend.prefab.meta
Normal file
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0568386c4d673bc4b86e9c4fb6d78b8d
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
2817
Assets/Scenes/Experimentation/MultiplayerScenes/LobbyTesting.unity
Normal file
2817
Assets/Scenes/Experimentation/MultiplayerScenes/LobbyTesting.unity
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 246f31a0e00fea74a93125fec6d80da8
|
||||
guid: 02c544c4276ebff45aa3b14a7f9a24be
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
@ -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
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bf4cb08b84523014ba7d58b84641dafa
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 4890085278179872738
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@ -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()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
@ -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()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
@ -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");
|
||||
}
|
||||
}
|
||||
}
|
@ -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()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
@ -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);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
@ -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()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
@ -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++;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
@ -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()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@ -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()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
@ -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()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
@ -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()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
@ -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()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
@ -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();
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
@ -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; } }
|
||||
|
||||
}
|
||||
}
|
@ -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()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@ -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]);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
@ -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
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
@ -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);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2ad85b0f43f25f1499c27a4dca23ddd8
|
||||
guid: 6e954a9a26b1f7447a8a8a8aeafa34bb
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
30
Assets/Scripts/Steam/FriendObject.cs
Normal file
30
Assets/Scripts/Steam/FriendObject.cs
Normal 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");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
11
Assets/Scripts/Steam/FriendObject.cs.meta
Normal file
11
Assets/Scripts/Steam/FriendObject.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 57db693cbe9a46345add801ae22e1e2a
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
74
Assets/Scripts/Steam/SteamFriendsManager.cs
Normal file
74
Assets/Scripts/Steam/SteamFriendsManager.cs
Normal 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;
|
||||
}
|
||||
}
|
11
Assets/Scripts/Steam/SteamFriendsManager.cs.meta
Normal file
11
Assets/Scripts/Steam/SteamFriendsManager.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3e1287d29b0590b4086746e0ea190f4e
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
176
Assets/Scripts/Steam/SteamLobbyManager.cs
Normal file
176
Assets/Scripts/Steam/SteamLobbyManager.cs
Normal 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
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
11
Assets/Scripts/Steam/SteamLobbyManager.cs.meta
Normal file
11
Assets/Scripts/Steam/SteamLobbyManager.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d4b922de688dc97428e1fcaec4244b9e
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
39
Assets/Scripts/Steam/SteamManager.cs
Normal file
39
Assets/Scripts/Steam/SteamManager.cs
Normal 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!");
|
||||
}
|
||||
}
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1b5f291225ca7c4459871c80128b5172
|
||||
guid: c790abd20c22fc348ac5c95c419527bb
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
@ -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;
|
||||
}
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
@ -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$"
|
||||
}
|
||||
}
|
||||
|
@ -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",
|
||||
|
@ -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,
|
||||
|
@ -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
|
||||
}
|
Reference in New Issue
Block a user