From c7b6ddbf706149428c0ae1434dcbec8386e0995b Mon Sep 17 00:00:00 2001 From: CortexCore <2630229280@qq.com> Date: Sun, 29 Oct 2023 15:27:13 +0800 Subject: [PATCH] 1 --- .../Character/Rifle/Pixel@Rifle Fire.fbx | Bin 0 -> 234892 bytes .../Character/Rifle/Pixel@Rifle Reload.fbx | Bin 0 -> 264124 bytes .../Configs/Animator/Core/Entity.controller | 228 +++++++++++- .../Animator/EntityPistol.overrideController | 98 +++++ .../Animator/EntityRifle.overrideController | 6 + .../Artists/Configs/Animator/Pixel Upper.mask | 77 ++++ .../Configs/Items/Improvised_AmmoBox.asset | 9 +- .../Configs/Items/Improvised_DEV_Item.asset | 8 +- .../Configs/Items/Weapon_TacticalKnife.asset | 1 + Assets/Artists/Configs/Refences/Fire.asset | 15 + Assets/Artists/Configs/Refences/Reload.asset | 15 + Assets/Artists/Prefabs/EntityProxy.prefab | 296 ++++++++++++++- Assets/Artists/Prefabs/Loot/Apple.prefab | 5 + Assets/Artists/Prefabs/Player.prefab | 299 +++++++++++++-- .../Prefabs/Props/Prop Throwing Knife.prefab | 117 ++++++ .../Scenes/Core/Abstract_Physics_Door.prefab | 17 +- .../Artists/Prefabs/Services/Framework.prefab | 10 +- Assets/Artists/Prefabs/Zombie.prefab | 8 +- Assets/Artists/Scenes/DMZ.unity | 351 +++++++++--------- .../Scripts/BulletService/BulletService.cs | 18 +- .../BITFALL.Entities.Animation.asmdef | 21 ++ .../Animation/EntitiesAnimationController.cs | 52 ++- .../EquipSelector/PlayerEquipSelector.cs | 2 + .../BITFALL.Entities.Equipment.Runtime.asmdef | 4 +- .../Entities/Equipment/EntityEquipment.cs | 66 +++- .../Entities/Improvised/ImprovisedService.cs | 4 + .../Entities/Inventory/EntityInventory.cs | 2 +- .../Entities/Inventory/PlayerInventory.cs | 2 +- .../Entities/Skins/EntityPropsDisplay.cs | 94 +++-- .../Scripts/Equip/AIEquipController.cs | 58 +++ .../Artists/Scripts/Equip/AIGunController.cs | 59 +++ .../Scripts/Equip/AIMeleeController.cs | 42 +++ .../Scripts/Equip/BITFALL.Equip.asmdef | 3 +- Assets/Artists/Scripts/Equip/BITGun.cs | 8 +- Assets/Artists/Scripts/Equip/BITGunStates.cs | 3 +- .../Artists/Scripts/Equip/MeleeController.cs | 21 +- .../Equip/PlayerImprovisedController.cs | 4 +- .../Artists/Scripts/Equip/ThrowController.cs | 6 +- Assets/Artists/Scripts/Item/AssetableGun.cs | 4 +- Assets/Artists/Scripts/Item/AssetableItem.cs | 2 + Assets/Artists/Scripts/Item/AssetableThrow.cs | 1 + Assets/Artists/Scripts/Item/WorldItem.cs | 22 +- .../Scripts/Props/Prop_ReplaceOnSleep.cs | 10 +- Assets/Artists/Scripts/UX/UXEquipSelector.cs | 6 +- Assets/BITFALL/BITConstant.cs | 19 + Assets/BITFALL/Bullet/Bullet.cs | 1 + .../Entities/Equipment/IEntityEquipment.cs | 4 +- .../Improvised/ImprovisedServiceInterface.cs | 2 - Assets/BITKit/Core/Applation/BITApp.cs | 1 + .../BITKit/Core/ECS/EntityComponentSystem.cs | 1 + Assets/BITKit/Core/Group/ActivableGroup.cs | 20 +- .../Core/InputSystem/IPlayerInputSystem.cs | 7 + .../BITKit/Core/Interfaces/IStateMachine.cs | 19 + .../EmetyAnimations/Empty_Fire.anim | 53 +++ Assets/BITKit/Unity/Scripts/BITAppForUnity.cs | 1 + .../Components/Animator/EntityAnimator.cs | 18 +- .../Components/Health/AutoHealComponent.cs | 13 +- .../Components/Health/AutoRespawnComponent.cs | 1 + .../BITKit.Entities.InputSystem.asmdef | 4 + .../InputSystem/EntityInputSystem.cs | 68 ++++ .../Interactive/EntityInteractive.cs | 2 - .../Components/VFX/BITKit.Entities.VFX.asmdef | 20 + .../Entity/Components/VFX/EntityVFXPlayer.cs | 27 ++ .../Unity/Scripts/Entity/Core/Entity.cs | 26 +- .../Unity/Scripts/Entity/Core/IEntity.cs | 3 + .../Extensions/GameObjectExtensions.cs | 14 + .../Scripts/Physics/PhysicsBasedAnimation.cs | 6 +- .../Scripts/Utility/Editor/BITInspector.cs | 7 + Assets/BITKit/Unity/Scripts/Utility/Pool.cs | 31 +- .../Unity/Scripts/VFXManager/VFXService.cs | 8 - .../AssaultRifle/AssaultRifle4_02.prefab | 32 ++ .../Prefabs/Pistols/Pistol4_02.prefab | 143 +++---- README.md | 27 +- 73 files changed, 2158 insertions(+), 494 deletions(-) create mode 100644 Assets/Artists/Animtions/Character/Rifle/Pixel@Rifle Fire.fbx create mode 100644 Assets/Artists/Animtions/Character/Rifle/Pixel@Rifle Reload.fbx create mode 100644 Assets/Artists/Configs/Animator/EntityPistol.overrideController create mode 100644 Assets/Artists/Configs/Animator/Pixel Upper.mask create mode 100644 Assets/Artists/Configs/Refences/Fire.asset create mode 100644 Assets/Artists/Configs/Refences/Reload.asset create mode 100644 Assets/Artists/Scripts/Entities/Animation/BITFALL.Entities.Animation.asmdef create mode 100644 Assets/Artists/Scripts/Equip/AIEquipController.cs create mode 100644 Assets/Artists/Scripts/Equip/AIGunController.cs create mode 100644 Assets/Artists/Scripts/Equip/AIMeleeController.cs create mode 100644 Assets/BITKit/Core/InputSystem/IPlayerInputSystem.cs create mode 100644 Assets/BITKit/Unity/Animations/References/EmetyAnimations/Empty_Fire.anim create mode 100644 Assets/BITKit/Unity/Scripts/Entity/Components/InputSystem/BITKit.Entities.InputSystem.asmdef create mode 100644 Assets/BITKit/Unity/Scripts/Entity/Components/InputSystem/EntityInputSystem.cs create mode 100644 Assets/BITKit/Unity/Scripts/Entity/Components/VFX/BITKit.Entities.VFX.asmdef create mode 100644 Assets/BITKit/Unity/Scripts/Entity/Components/VFX/EntityVFXPlayer.cs create mode 100644 Assets/BITKit/Unity/Scripts/Extensions/GameObjectExtensions.cs diff --git a/Assets/Artists/Animtions/Character/Rifle/Pixel@Rifle Fire.fbx b/Assets/Artists/Animtions/Character/Rifle/Pixel@Rifle Fire.fbx new file mode 100644 index 0000000000000000000000000000000000000000..4f39485c6e82c51b8b9a9bf82749b92a8e19f4bc GIT binary patch literal 234892 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 z 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 literal 0 HcmV?d00001 diff --git a/Assets/Artists/Animtions/Character/Rifle/Pixel@Rifle Reload.fbx b/Assets/Artists/Animtions/Character/Rifle/Pixel@Rifle Reload.fbx new file mode 100644 index 0000000000000000000000000000000000000000..01fafd877977475e06468a6bc9a4038d5e23ddf5 GIT binary patch literal 264124 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 literal 0 HcmV?d00001 diff --git a/Assets/Artists/Configs/Animator/Core/Entity.controller b/Assets/Artists/Configs/Animator/Core/Entity.controller index 26556fb83..1d08e3cde 100644 --- a/Assets/Artists/Configs/Animator/Core/Entity.controller +++ b/Assets/Artists/Configs/Animator/Core/Entity.controller @@ -516,6 +516,28 @@ MonoBehaviour: type: {class: Reference, ns: BITKit, asm: BITKit} data: value: Run +--- !u!1101 &-2875870230168117586 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: [] + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 6359450267579216995} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 1 + m_TransitionOffset: 0 + m_ExitTime: 0 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 2 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 --- !u!1102 &-2145748106336018533 AnimatorState: serializedVersion: 6 @@ -640,6 +662,57 @@ MonoBehaviour: type: {class: Reference, ns: BITKit, asm: BITKit} data: value: ClimbLadder +--- !u!1107 &-1419080097273100811 +AnimatorStateMachine: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Additive Layer 1 + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: 6359450267579216995} + m_Position: {x: 30, y: 200, z: 0} + - serializedVersion: 1 + m_State: {fileID: 1063220354129424104} + m_Position: {x: 300, y: 140, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_EntryPosition: {x: 50, y: 120, z: 0} + m_ExitPosition: {x: 800, y: 120, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: 6359450267579216995} +--- !u!1102 &-1045047923388160873 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: New State + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 68182865c01bbae4fb3027ea32634e3f, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: --- !u!114 &-513838451122933232 MonoBehaviour: m_ObjectHideFlags: 1 @@ -783,7 +856,19 @@ AnimatorController: m_SyncedLayerAffectsTiming: 0 m_Controller: {fileID: 9100000} - serializedVersion: 5 - m_Name: Additive Layer + m_Name: Upper Layer + m_StateMachine: {fileID: 7690798265110638559} + m_Mask: {fileID: 31900000, guid: f05a3dd9e9ff0884bbcb0e022b4a7391, type: 2} + m_Motions: [] + m_Behaviours: [] + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_DefaultWeight: 1 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} + - serializedVersion: 5 + m_Name: Additive Layer 0 m_StateMachine: {fileID: 5013484340607404016} m_Mask: {fileID: 0} m_Motions: [] @@ -794,6 +879,18 @@ AnimatorController: m_IKPass: 0 m_SyncedLayerAffectsTiming: 0 m_Controller: {fileID: 9100000} + - serializedVersion: 5 + m_Name: Additive Layer 1 + m_StateMachine: {fileID: -1419080097273100811} + m_Mask: {fileID: 0} + m_Motions: [] + m_Behaviours: [] + m_BlendingMode: 1 + m_SyncedLayerIndex: -1 + m_DefaultWeight: 1 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} --- !u!206 &287532439629317325 BlendTree: m_ObjectHideFlags: 1 @@ -873,6 +970,33 @@ MonoBehaviour: type: {class: Reference, ns: BITKit, asm: BITKit} data: value: Action.Climb +--- !u!1102 &1063220354129424104 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Fire + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: -2875870230168117586} + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 4c9e9f549481a1e48bff1e9bbfa4eaa2, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: --- !u!1107 &1959945053478628370 AnimatorStateMachine: serializedVersion: 6 @@ -944,6 +1068,33 @@ AnimatorStateTransition: m_InterruptionSource: 0 m_OrderedInterruption: 1 m_CanTransitionToSelf: 1 +--- !u!1102 &2857387101801118781 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Reload + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 8795183253526235150} + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 15a76fda2edc7f546ba25b31b5ef83df, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: --- !u!1102 &3074540142990258821 AnimatorState: serializedVersion: 6 @@ -1103,7 +1254,7 @@ AnimatorStateMachine: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: Additive Layer + m_Name: Additive Layer 0 m_ChildStates: - serializedVersion: 1 m_State: {fileID: -8338434944279992279} @@ -1223,6 +1374,32 @@ AnimatorState: m_MirrorParameter: m_CycleOffsetParameter: m_TimeParameter: +--- !u!1102 &6359450267579216995 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: New State + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 0} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: --- !u!114 &7440592265021942964 MonoBehaviour: m_ObjectHideFlags: 1 @@ -1269,6 +1446,31 @@ AnimatorStateTransition: m_InterruptionSource: 0 m_OrderedInterruption: 1 m_CanTransitionToSelf: 1 +--- !u!1107 &7690798265110638559 +AnimatorStateMachine: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Upper Layer + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: -1045047923388160873} + m_Position: {x: 30, y: 180, z: 0} + - serializedVersion: 1 + m_State: {fileID: 2857387101801118781} + m_Position: {x: 310, y: 180, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_EntryPosition: {x: 50, y: 120, z: 0} + m_ExitPosition: {x: 800, y: 120, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: -1045047923388160873} --- !u!1101 &8378041146737502484 AnimatorStateTransition: m_ObjectHideFlags: 1 @@ -1346,6 +1548,28 @@ AnimatorState: m_MirrorParameter: m_CycleOffsetParameter: m_TimeParameter: +--- !u!1101 &8795183253526235150 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: [] + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: -1045047923388160873} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.1 + m_TransitionOffset: 0 + m_ExitTime: 0.9 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 2 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 --- !u!206 &8986927568288765542 BlendTree: m_ObjectHideFlags: 1 diff --git a/Assets/Artists/Configs/Animator/EntityPistol.overrideController b/Assets/Artists/Configs/Animator/EntityPistol.overrideController new file mode 100644 index 000000000..4b7daf2ab --- /dev/null +++ b/Assets/Artists/Configs/Animator/EntityPistol.overrideController @@ -0,0 +1,98 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!221 &22100000 +AnimatorOverrideController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: EntityPistol + m_Controller: {fileID: 9100000, guid: cb43cb1bf42184e45b920b0bb77554f9, type: 2} + m_Clips: + - m_OriginalClip: {fileID: 7400000, guid: ad24d1ce30ed48945a9b68be9827bc90, type: 2} + m_OverrideClip: {fileID: 8816525237524189043, guid: 8458c01c2fdae5447bf770e0341e9ccb, + type: 3} + - m_OriginalClip: {fileID: 7400000, guid: 01214145ea75a2d4b80363bba2f1a65e, type: 2} + m_OverrideClip: {fileID: -5858036045953447646, guid: 8458c01c2fdae5447bf770e0341e9ccb, + type: 3} + - m_OriginalClip: {fileID: 7400000, guid: 451f983af0dd44c419406ca1d1a0b591, type: 2} + m_OverrideClip: {fileID: 7433315730774535304, guid: 8458c01c2fdae5447bf770e0341e9ccb, + type: 3} + - m_OriginalClip: {fileID: 7400000, guid: 9bc28f4633c671a428bc05bc4b6e6a8c, type: 2} + m_OverrideClip: {fileID: 197974373799447605, guid: 8458c01c2fdae5447bf770e0341e9ccb, + type: 3} + - m_OriginalClip: {fileID: 7400000, guid: 68182865c01bbae4fb3027ea32634e3f, type: 2} + m_OverrideClip: {fileID: -5075752359623666121, guid: e8f9974eb768be4479413b261e3bc2c7, + type: 3} + - m_OriginalClip: {fileID: 7400000, guid: f88d8dea74ca02e43b56b5a42fd0da74, type: 2} + m_OverrideClip: {fileID: -1310521523949388987, guid: 74316b6025926e34285406181949885b, + type: 3} + - m_OriginalClip: {fileID: 7400000, guid: 020d1c1ecabec614d8b651753ffc9170, type: 2} + m_OverrideClip: {fileID: 7889747393601030778, guid: 74316b6025926e34285406181949885b, + type: 3} + - m_OriginalClip: {fileID: 7400000, guid: 61b264f0423eb574eb04052b00876d3b, type: 2} + m_OverrideClip: {fileID: -4610952415324987419, guid: 74316b6025926e34285406181949885b, + type: 3} + - m_OriginalClip: {fileID: 7400000, guid: 7931b0c3373dbee4cba771022d874587, type: 2} + m_OverrideClip: {fileID: -1310521523949388987, guid: 74316b6025926e34285406181949885b, + type: 3} + - m_OriginalClip: {fileID: 7400000, guid: 2a2012ea7f7e0e042ac7ede06063b02b, type: 2} + m_OverrideClip: {fileID: -1225430849258194476, guid: 75fec23d5aab28145865b0c66050c27d, + type: 3} + - m_OriginalClip: {fileID: 7400000, guid: 7343dade3869ad849987e58a41f83525, type: 2} + m_OverrideClip: {fileID: 8168699922495294216, guid: 2b2f07128b39cba4c92abb4345a32f06, + type: 3} + - m_OriginalClip: {fileID: 7400000, guid: b52cacd4e2a60ec46937f22be7836395, type: 2} + m_OverrideClip: {fileID: -1083544072533941823, guid: 60ce135d33b207a49b606aedcc0f1854, + type: 3} + - m_OriginalClip: {fileID: 7400000, guid: b8e76ef5af8510645b2c4dbc7bcaf794, type: 2} + m_OverrideClip: {fileID: -5052955053199334208, guid: fd05b77d716f77f469af10c0e806deba, + type: 3} + - m_OriginalClip: {fileID: 7400000, guid: f9e14dc9abbbd9c4189dd4a2098b8453, type: 2} + m_OverrideClip: {fileID: 5946662650953601361, guid: 83c4f2ad93f42a542a84bd742f0b972f, + type: 3} + - m_OriginalClip: {fileID: 7400000, guid: 917b946e43d9a4641b9fdd98f166054d, type: 2} + m_OverrideClip: {fileID: -6125803487475971785, guid: b5bad85324d27944daff4ad2f0a4bd08, + type: 3} + - m_OriginalClip: {fileID: 7400000, guid: 1d074b7dc9160cb48a7556138159b8d7, type: 2} + m_OverrideClip: {fileID: -1095421310871173937, guid: e8f9974eb768be4479413b261e3bc2c7, + type: 3} + - m_OriginalClip: {fileID: 7400000, guid: ccc3ebda65dcc1a41b5919701bbe7ec0, type: 2} + m_OverrideClip: {fileID: -1181532003767956096, guid: 9d2f7d233a913ac4cb9717696cc34bc1, + type: 3} + - m_OriginalClip: {fileID: 7400000, guid: e77502caa6a17c642ba09f586f3b45bb, type: 2} + m_OverrideClip: {fileID: 6975854333129897964, guid: 98f61866ec8b8204f921cc66f442e18a, + type: 3} + - m_OriginalClip: {fileID: 7400000, guid: 5e720394982277e4fa97be855ac63790, type: 2} + m_OverrideClip: {fileID: -6856922032139373723, guid: 52dc2e185dc11e24d8c1c5624af3c6b5, + type: 3} + - m_OriginalClip: {fileID: 7400000, guid: 77284660b64f8b747a959381bd306474, type: 2} + m_OverrideClip: {fileID: 6556334952719929740, guid: 9bf394777061cc54d81cde403a0403fb, + type: 3} + - m_OriginalClip: {fileID: 7400000, guid: 132af0a352a91b445b1c2b9421a33ad2, type: 2} + m_OverrideClip: {fileID: 3434409490235861809, guid: a2215ac2093908143ab90243e34a84ab, + type: 3} + - m_OriginalClip: {fileID: 7400000, guid: f2371e65832a2764583cb07093b1b8e3, type: 2} + m_OverrideClip: {fileID: 8816512968436616041, guid: 8d7811dbe55d38a4599645b01376ccf5, + type: 3} + - m_OriginalClip: {fileID: 7400000, guid: fc4545c9c30e352498b9fdae518c494c, type: 2} + m_OverrideClip: {fileID: 9098646296615732399, guid: c15f2617665cdea4a8d622562bb8fc4d, + type: 3} + - m_OriginalClip: {fileID: 7400000, guid: 48b588cdfb696b84fbc64a655f8679d4, type: 2} + m_OverrideClip: {fileID: -8893850683258528007, guid: 819faaa415671a44ab62b3571bea9747, + type: 3} + - m_OriginalClip: {fileID: 7400000, guid: a2cdf29fad5621549a03be55655631d6, type: 2} + m_OverrideClip: {fileID: -8213736612684763305, guid: 7a44dd35952925148891201602618577, + type: 3} + - m_OriginalClip: {fileID: 7400000, guid: 140792d575aadb045948fa56a2fbf317, type: 2} + m_OverrideClip: {fileID: 7216636553824065067, guid: 11e5366ded81d9346ab177adfdc5d12a, + type: 3} + - m_OriginalClip: {fileID: 7400000, guid: b14e3fdf274991c4796984ae1765eed1, type: 2} + m_OverrideClip: {fileID: 4251362255343452841, guid: 8ed75e08282001d4babe492f7dad3a07, + type: 3} + - m_OriginalClip: {fileID: 7400000, guid: c7cf8a24ccd38f14d9c90aff6869cedf, type: 2} + m_OverrideClip: {fileID: 5109977346001602528, guid: 70dcc12584f5ccf49bbbe45b091db804, + type: 3} + - m_OriginalClip: {fileID: 7400000, guid: d309aa534749433468272473d5b65010, type: 2} + m_OverrideClip: {fileID: 6993030432383370618, guid: f8999c71a27cafc4d80eec16f552b842, + type: 3} diff --git a/Assets/Artists/Configs/Animator/EntityRifle.overrideController b/Assets/Artists/Configs/Animator/EntityRifle.overrideController index 32489759c..666ef4a41 100644 --- a/Assets/Artists/Configs/Animator/EntityRifle.overrideController +++ b/Assets/Artists/Configs/Animator/EntityRifle.overrideController @@ -96,3 +96,9 @@ AnimatorOverrideController: - m_OriginalClip: {fileID: 7400000, guid: d309aa534749433468272473d5b65010, type: 2} m_OverrideClip: {fileID: 6993030432383370618, guid: f8999c71a27cafc4d80eec16f552b842, type: 3} + - m_OriginalClip: {fileID: 7400000, guid: 4c9e9f549481a1e48bff1e9bbfa4eaa2, type: 2} + m_OverrideClip: {fileID: 2532806716085130415, guid: e3fbe511af9ffc7448580c98f059e42d, + type: 3} + - m_OriginalClip: {fileID: 7400000, guid: 15a76fda2edc7f546ba25b31b5ef83df, type: 2} + m_OverrideClip: {fileID: -3507144807383977469, guid: 99688f58112ceff49a7d2347c39e0ce5, + type: 3} diff --git a/Assets/Artists/Configs/Animator/Pixel Upper.mask b/Assets/Artists/Configs/Animator/Pixel Upper.mask new file mode 100644 index 000000000..5a6ea0434 --- /dev/null +++ b/Assets/Artists/Configs/Animator/Pixel Upper.mask @@ -0,0 +1,77 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!319 &31900000 +AvatarMask: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Pixel Upper + m_Mask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + m_Elements: + - m_Path: + m_Weight: 1 + - m_Path: ArmaTure + m_Weight: 0 + - m_Path: ArmaTure/Hips + m_Weight: 0 + - m_Path: ArmaTure/Hips/Left_UpperLeg + m_Weight: 0 + - m_Path: ArmaTure/Hips/Left_UpperLeg/Left_LowerLeg + m_Weight: 0 + - m_Path: ArmaTure/Hips/Left_UpperLeg/Left_LowerLeg/Left_Foot + m_Weight: 0 + - m_Path: ArmaTure/Hips/Right_UpperLeg + m_Weight: 0 + - m_Path: ArmaTure/Hips/Right_UpperLeg/Right_LowerLeg + m_Weight: 0 + - m_Path: ArmaTure/Hips/Right_UpperLeg/Right_LowerLeg/Right_Foot + m_Weight: 0 + - m_Path: ArmaTure/Hips/Spine + m_Weight: 0 + - m_Path: ArmaTure/Hips/Spine/Chest + m_Weight: 0 + - m_Path: ArmaTure/Hips/Spine/Chest/UpperChest + m_Weight: 0 + - m_Path: ArmaTure/Hips/Spine/Chest/UpperChest/FPVScale + m_Weight: 0 + - m_Path: ArmaTure/Hips/Spine/Chest/UpperChest/Left_Shoulder + m_Weight: 1 + - m_Path: ArmaTure/Hips/Spine/Chest/UpperChest/Left_Shoulder/Left_UpperArm + m_Weight: 1 + - m_Path: ArmaTure/Hips/Spine/Chest/UpperChest/Left_Shoulder/Left_UpperArm/Left_LowerArm + m_Weight: 1 + - m_Path: ArmaTure/Hips/Spine/Chest/UpperChest/Left_Shoulder/Left_UpperArm/Left_LowerArm/Left_Hand + m_Weight: 1 + - m_Path: ArmaTure/Hips/Spine/Chest/UpperChest/Left_Shoulder/Left_UpperArm/Left_LowerArm/Left_Hand/Left_Root + m_Weight: 1 + - m_Path: ArmaTure/Hips/Spine/Chest/UpperChest/Neck + m_Weight: 1 + - m_Path: ArmaTure/Hips/Spine/Chest/UpperChest/Neck/Head + m_Weight: 1 + - m_Path: ArmaTure/Hips/Spine/Chest/UpperChest/Right_Shoulder + m_Weight: 1 + - m_Path: ArmaTure/Hips/Spine/Chest/UpperChest/Right_Shoulder/Right_UpperArm + m_Weight: 1 + - m_Path: ArmaTure/Hips/Spine/Chest/UpperChest/Right_Shoulder/Right_UpperArm/Right_LowerArm + m_Weight: 1 + - m_Path: ArmaTure/Hips/Spine/Chest/UpperChest/Right_Shoulder/Right_UpperArm/Right_LowerArm/Right_Hand + m_Weight: 1 + - m_Path: ArmaTure/Hips/Spine/Chest/UpperChest/Right_Shoulder/Right_UpperArm/Right_LowerArm/Right_Hand/Right_Root + m_Weight: 1 + - m_Path: Meshs + m_Weight: 0 + - m_Path: Meshs/Mesh_Arm + m_Weight: 0 + - m_Path: Meshs/Mesh_Arm_Slim + m_Weight: 0 + - m_Path: Meshs/Mesh_Body + m_Weight: 0 + - m_Path: Meshs/Mesh_Combine + m_Weight: 0 + - m_Path: Meshs/Mesh_Combine_Slim + m_Weight: 0 + - m_Path: Meshs/Mesh_Head + m_Weight: 0 + - m_Path: Meshs/Mesh_Leg + m_Weight: 0 diff --git a/Assets/Artists/Configs/Items/Improvised_AmmoBox.asset b/Assets/Artists/Configs/Items/Improvised_AmmoBox.asset index 37025fbb6..bad2c7441 100644 --- a/Assets/Artists/Configs/Items/Improvised_AmmoBox.asset +++ b/Assets/Artists/Configs/Items/Improvised_AmmoBox.asset @@ -19,11 +19,8 @@ MonoBehaviour: squareIcon: {fileID: 2800000, guid: cd23c6e3d5938814e920000f85cc585e, type: 3} rectangleIcon: {fileID: 2800000, guid: cd23c6e3d5938814e920000f85cc585e, type: 3} quality: 6 - factoryProperties: - - rid: 806583384995266563 + isImprovised: 1 + factoryProperties: [] references: version: 2 - RefIds: - - rid: 806583384995266563 - type: {class: Improvisable, ns: BITFALL.Entities.Improvised, asm: BITFALL.Entities.Improvised} - data: + RefIds: [] diff --git a/Assets/Artists/Configs/Items/Improvised_DEV_Item.asset b/Assets/Artists/Configs/Items/Improvised_DEV_Item.asset index 5d355c7af..7206cb001 100644 --- a/Assets/Artists/Configs/Items/Improvised_DEV_Item.asset +++ b/Assets/Artists/Configs/Items/Improvised_DEV_Item.asset @@ -19,10 +19,8 @@ MonoBehaviour: squareIcon: {fileID: 0} rectangleIcon: {fileID: 0} quality: 6 - factoryProperties: - - rid: -2 + isImprovised: 1 + factoryProperties: [] references: version: 2 - RefIds: - - rid: -2 - type: {class: , ns: , asm: } + RefIds: [] diff --git a/Assets/Artists/Configs/Items/Weapon_TacticalKnife.asset b/Assets/Artists/Configs/Items/Weapon_TacticalKnife.asset index 8857d7e9f..152a47169 100644 --- a/Assets/Artists/Configs/Items/Weapon_TacticalKnife.asset +++ b/Assets/Artists/Configs/Items/Weapon_TacticalKnife.asset @@ -19,6 +19,7 @@ MonoBehaviour: squareIcon: {fileID: 2800000, guid: c477ad9668c34e94c92ace1feb3c2303, type: 3} rectangleIcon: {fileID: 2800000, guid: 5c2d1966fb99bb84d94571987eb24278, type: 3} quality: 2 + isImprovised: 0 factoryProperties: - rid: 806583484692037632 - rid: 806583484692037633 diff --git a/Assets/Artists/Configs/Refences/Fire.asset b/Assets/Artists/Configs/Refences/Fire.asset new file mode 100644 index 000000000..3d797a090 --- /dev/null +++ b/Assets/Artists/Configs/Refences/Fire.asset @@ -0,0 +1,15 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 69820685192a7b140b6034ec1d0e585e, type: 3} + m_Name: Fire + m_EditorClassIdentifier: + value: Fire diff --git a/Assets/Artists/Configs/Refences/Reload.asset b/Assets/Artists/Configs/Refences/Reload.asset new file mode 100644 index 000000000..47ebb5790 --- /dev/null +++ b/Assets/Artists/Configs/Refences/Reload.asset @@ -0,0 +1,15 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 69820685192a7b140b6034ec1d0e585e, type: 3} + m_Name: Reload + m_EditorClassIdentifier: + value: Reload diff --git a/Assets/Artists/Prefabs/EntityProxy.prefab b/Assets/Artists/Prefabs/EntityProxy.prefab index dc823752b..3215537cd 100644 --- a/Assets/Artists/Prefabs/EntityProxy.prefab +++ b/Assets/Artists/Prefabs/EntityProxy.prefab @@ -60,6 +60,93 @@ ParentConstraint: m_Sources: - sourceTransform: {fileID: 8939301259950143839} weight: 1 +--- !u!1 &1439263772382777122 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3012280595721412550} + - component: {fileID: 7366056783613668925} + m_Layer: 6 + m_Name: M4A1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3012280595721412550 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1439263772382777122} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6917515382106340287} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &7366056783613668925 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1439263772382777122} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59dc86b0d5155c7498e7c0ee28de5cf6, type: 3} + m_Name: + m_EditorClassIdentifier: + assetableItem: {fileID: 11400000, guid: 5557f2edf7d8c4b43934c79878628d22, type: 2} + firePoint: {fileID: 2322454793245516490} + bulletService: + rid: 806583666069995709 + forceFire: 1 + references: + version: 2 + RefIds: + - rid: 806583666069995709 + type: {class: BulletServiceSingleton, ns: BITFALL, asm: BITFALL.Bullet.Runtime} + data: +--- !u!1 &3282564729361582311 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6917515382106340287} + m_Layer: 6 + m_Name: Controllers + m_TagString: Untagged + m_Icon: {fileID: 5132851093641282708, guid: 0000000000000000d000000000000000, type: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6917515382106340287 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3282564729361582311} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3012280595721412550} + m_Father: {fileID: 5088247503209915273} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &4066453597750257159 GameObject: m_ObjectHideFlags: 0 @@ -76,6 +163,9 @@ GameObject: - component: {fileID: 3488683244084915478} - component: {fileID: 2630237995018867325} - component: {fileID: 2652217143784426575} + - component: {fileID: 7328560627112153540} + - component: {fileID: 4900988971439423463} + - component: {fileID: 6439753104892075433} m_Layer: 6 m_Name: EntityProxy m_TagString: Untagged @@ -99,6 +189,7 @@ Transform: - {fileID: 6326084427786842871} - {fileID: 4901961216034443422} - {fileID: 5459769522642911290} + - {fileID: 6917515382106340287} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!95 &8190192540717976532 @@ -176,6 +267,7 @@ MonoBehaviour: - {fileID: 4307956604766933561} - {fileID: 1293448482971593281} - {fileID: 8998990799866537914} + joints: [] rigidbody: {fileID: 0} --- !u!114 &839526996089019602 MonoBehaviour: @@ -247,6 +339,10 @@ MonoBehaviour: aliveCollider: allow: 1 value: {fileID: 2630237995018867325} + allowAnimatorParameter: 0 + physicsBasedAnimation: + allow: 0 + value: {fileID: 0} references: version: 2 RefIds: @@ -254,6 +350,74 @@ MonoBehaviour: type: {class: ReferenceScriptableObject, ns: BITKit, asm: BITKit} data: so: {fileID: 11400000, guid: 0fc327c3267485645af8945d927e493e, type: 2} +--- !u!114 &7328560627112153540 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4066453597750257159} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d61f8d5d7b83b1941831e20da974aa54, type: 3} + m_Name: + m_EditorClassIdentifier: + InitialFov: 0 + virtualCamera: {fileID: 0} + overrideIndex: + allow: 0 + value: 0 +--- !u!114 &4900988971439423463 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4066453597750257159} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe518ca622404ab4e98b981449e4a789, type: 3} + m_Name: + m_EditorClassIdentifier: + equipped: + _serializedList: + - Key: Assets/Weapon_M4A1 + Value: {fileID: 6029696352193735620} + bodyEquips: + _serializedList: [] + holsteredEquips: + _serializedList: [] +--- !u!114 &6439753104892075433 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4066453597750257159} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0ac2d465b526bc94fa8ecba1c434c884, type: 3} + m_Name: + m_EditorClassIdentifier: + animators: + - {fileID: 839526996089019602} + animationKeyWords: + - rid: 806583666069995739 + _rootVelocity: + rid: 806583666069995737 + boolParameters: [] + floatParameters: [] + references: + version: 2 + RefIds: + - rid: 806583666069995737 + type: {class: ReferenceScriptableObject, ns: BITKit, asm: BITKit} + data: + so: {fileID: 11400000, guid: 16255d9c98b4db546ba0977b92d291e0, type: 2} + - rid: 806583666069995739 + type: {class: Reference, ns: BITKit, asm: BITKit} + data: + value: Fire --- !u!1 &4080309079167589688 GameObject: m_ObjectHideFlags: 0 @@ -318,6 +482,92 @@ Transform: - {fileID: 3628348256900614807} m_Father: {fileID: 5088247503209915273} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &3011392489163623404 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 2322454793245516490} + m_Modifications: + - target: {fileID: 585187907198464123, guid: 756293f34e21ad8449ada4514314de21, + type: 3} + propertyPath: m_Name + value: vfx_muzzleflash + objectReference: {fileID: 0} + - target: {fileID: 6334674383232214519, guid: 756293f34e21ad8449ada4514314de21, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6334674383232214519, guid: 756293f34e21ad8449ada4514314de21, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6334674383232214519, guid: 756293f34e21ad8449ada4514314de21, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6334674383232214519, guid: 756293f34e21ad8449ada4514314de21, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6334674383232214519, guid: 756293f34e21ad8449ada4514314de21, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6334674383232214519, guid: 756293f34e21ad8449ada4514314de21, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6334674383232214519, guid: 756293f34e21ad8449ada4514314de21, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6334674383232214519, guid: 756293f34e21ad8449ada4514314de21, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6334674383232214519, guid: 756293f34e21ad8449ada4514314de21, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6334674383232214519, guid: 756293f34e21ad8449ada4514314de21, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 756293f34e21ad8449ada4514314de21, type: 3} +--- !u!114 &2119626339006940746 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 3792296346815466918, guid: 756293f34e21ad8449ada4514314de21, + type: 3} + m_PrefabInstance: {fileID: 3011392489163623404} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4daf805c91d04d6409660f7675cbdb52, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &9089342988776255003 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 6334674383232214519, guid: 756293f34e21ad8449ada4514314de21, + type: 3} + m_PrefabInstance: {fileID: 3011392489163623404} + m_PrefabAsset: {fileID: 0} --- !u!1001 &5285591918902703221 PrefabInstance: m_ObjectHideFlags: 0 @@ -892,9 +1142,51 @@ PrefabInstance: objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] + m_AddedGameObjects: + - targetCorrespondingSourceObject: {fileID: 8098435069078192609, guid: d3acb7cee99e8614086c872341b08644, + type: 3} + insertIndex: -1 + addedObject: {fileID: 9089342988776255003} + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 285318316674533615, guid: d3acb7cee99e8614086c872341b08644, + type: 3} + insertIndex: -1 + addedObject: {fileID: 6120171066608020870} m_SourcePrefab: {fileID: 100100000, guid: d3acb7cee99e8614086c872341b08644, type: 3} +--- !u!4 &2322454793245516490 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8098435069078192609, guid: d3acb7cee99e8614086c872341b08644, + type: 3} + m_PrefabInstance: {fileID: 5789500044955984683} + m_PrefabAsset: {fileID: 0} +--- !u!1 &6029696352193735620 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 285318316674533615, guid: d3acb7cee99e8614086c872341b08644, + type: 3} + m_PrefabInstance: {fileID: 5789500044955984683} + m_PrefabAsset: {fileID: 0} +--- !u!114 &6120171066608020870 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6029696352193735620} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: eac859befd6ba3349b2cf8acb119d2de, type: 3} + m_Name: + m_EditorClassIdentifier: + vfxReferences: + - rid: 806583666069995754 + vfxPlayer: {fileID: 2119626339006940746} + references: + version: 2 + RefIds: + - rid: 806583666069995754 + type: {class: ReferenceScriptableObject, ns: BITKit, asm: BITKit} + data: + so: {fileID: 11400000, guid: b7664d3b6512cb042bd9716363153bc1, type: 2} --- !u!4 &6029696352194033636 stripped Transform: m_CorrespondingSourceObject: {fileID: 285318316674503887, guid: d3acb7cee99e8614086c872341b08644, diff --git a/Assets/Artists/Prefabs/Loot/Apple.prefab b/Assets/Artists/Prefabs/Loot/Apple.prefab index 8beccfd55..2bc0c443e 100644 --- a/Assets/Artists/Prefabs/Loot/Apple.prefab +++ b/Assets/Artists/Prefabs/Loot/Apple.prefab @@ -63,6 +63,11 @@ PrefabInstance: propertyPath: m_Name value: Apple_01 objectReference: {fileID: 0} + - target: {fileID: 1755865475335770947, guid: 6db7680dca4eb2748a7339cb3bc13d14, + type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} m_RemovedComponents: - {fileID: 2120823588654661318, guid: 6db7680dca4eb2748a7339cb3bc13d14, type: 3} m_RemovedGameObjects: [] diff --git a/Assets/Artists/Prefabs/Player.prefab b/Assets/Artists/Prefabs/Player.prefab index 92a072ed6..89617d860 100644 --- a/Assets/Artists/Prefabs/Player.prefab +++ b/Assets/Artists/Prefabs/Player.prefab @@ -575,6 +575,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 974388490910736766} + - {fileID: 6504162899667296546} - {fileID: 6778784877586059904} m_Father: {fileID: 5592345712141467330} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -1134,9 +1135,11 @@ GameObject: - component: {fileID: 6002452162850529175} - component: {fileID: 2495495580039550089} - component: {fileID: 6678778182358330342} + - component: {fileID: 6221928825442168580} - component: {fileID: 6438031452483613087} - component: {fileID: 7617151341549785245} - component: {fileID: 1315802043012238542} + - component: {fileID: 1267397851485989014} - component: {fileID: 5362342980643103828} - component: {fileID: 3865076157975442983} - component: {fileID: 300229368} @@ -1259,6 +1262,40 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 73333e0a8f0bc4a4b82c06db4c35a21f, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!114 &6221928825442168580 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4826102346843731729} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0ac2d465b526bc94fa8ecba1c434c884, type: 3} + m_Name: + m_EditorClassIdentifier: + animators: + - {fileID: 6002452162850529175} + animationKeyWords: + - rid: 806583666069995745 + - rid: 806583666069995746 + _rootVelocity: + rid: -2 + boolParameters: [] + floatParameters: [] + references: + version: 2 + RefIds: + - rid: -2 + type: {class: , ns: , asm: } + - rid: 806583666069995745 + type: {class: ReferenceScriptableObject, ns: BITKit, asm: BITKit} + data: + so: {fileID: 11400000, guid: b7664d3b6512cb042bd9716363153bc1, type: 2} + - rid: 806583666069995746 + type: {class: ReferenceScriptableObject, ns: BITKit, asm: BITKit} + data: + so: {fileID: 11400000, guid: f911910b02fa2ec4298285cde8a2faa2, type: 2} --- !u!114 &6438031452483613087 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1298,6 +1335,25 @@ MonoBehaviour: m_EditorClassIdentifier: healthPoint: 100 maxHealthPoint: 100 +--- !u!114 &1267397851485989014 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4826102346843731729} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 315608923f4594746a61782d9fb2d982, type: 3} + m_Name: + m_EditorClassIdentifier: + unityAnimator: {fileID: 6002452162850529175} + animatorControllers: + _serializedList: + - Key: Assets/Weapon_M4A1 + Value: {fileID: 22100000, guid: ac08606b82ce5894b912a062bc236fa3, type: 2} + - Key: Assets/Weapon_Glock + Value: {fileID: 22100000, guid: 0cddccb93dd87994eb401e57eef04596, type: 2} --- !u!114 &5362342980643103828 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1459,10 +1515,11 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d61f8d5d7b83b1941831e20da974aa54, type: 3} m_Name: m_EditorClassIdentifier: - equips: - index: -1 InitialFov: 60 virtualCamera: {fileID: 3926401271228594272} + overrideIndex: + allow: 0 + value: 0 --- !u!114 &7063041954768829124 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1525,22 +1582,22 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: fe518ca622404ab4e98b981449e4a789, type: 3} m_Name: m_EditorClassIdentifier: - equipments: + equipped: _serializedList: - - Key: Items/Dev_Backpack + - Key: Assets/TacticalKnife + Value: {fileID: 6778784877585698464} + - Key: Assets/Weapon_Glock + Value: {fileID: 6504162899667598594} + - Key: Assets/Weapon_M4A1 + Value: {fileID: 974388490910383454} + bodyEquips: + _serializedList: + - Key: Assets/Dev_Backpack Value: {fileID: 2532744476050021095} + holsteredEquips: + _serializedList: - Key: Assets/Weapon_M4A1 Value: {fileID: 3159909461315830858} - unEquipDictionary: - _serializedList: - - Key: Items/Dev_Backpack - Value: {fileID: 2532744476050021095} - - Key: Weapon_M4A1 - Value: {fileID: 3159909461315830858} - equipDictionary: - _serializedList: - - Key: Weapon_M4A1 - Value: {fileID: 974388490910383454} --- !u!114 &8629046459414148992 MonoBehaviour: m_ObjectHideFlags: 0 @@ -3984,6 +4041,8 @@ MonoBehaviour: transitionOnNextFrame: 0 item: {fileID: 11400000, guid: 9bba7152a5d65c049b17a8461ad4e844, type: 2} animator: {fileID: 4834117868670403678} + vfxPlayer: {fileID: 0} + entityAnimator: {fileID: 0} renderers: - {fileID: 1221488407187310397} - {fileID: 735532174701725946} @@ -4124,12 +4183,118 @@ PrefabInstance: m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: c6747b7c156afa84fab63fe8a9bb3939, type: 3} +--- !u!1 &6778784877585698464 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 5162172660552824136, guid: c6747b7c156afa84fab63fe8a9bb3939, + type: 3} + m_PrefabInstance: {fileID: 1851168842159684584} + m_PrefabAsset: {fileID: 0} --- !u!4 &6778784877586059904 stripped Transform: m_CorrespondingSourceObject: {fileID: 5162172660552853864, guid: c6747b7c156afa84fab63fe8a9bb3939, type: 3} m_PrefabInstance: {fileID: 1851168842159684584} m_PrefabAsset: {fileID: 0} +--- !u!1001 &1869663933923627438 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 2367504132869257504} + m_Modifications: + - target: {fileID: 2088938590675319443, guid: 0a34ffdf8870cb546aad8d55148b4fff, + type: 3} + propertyPath: m_CastShadows + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 4877693905175392396, guid: 0a34ffdf8870cb546aad8d55148b4fff, + type: 3} + propertyPath: m_LocalPosition.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4877693905175392396, guid: 0a34ffdf8870cb546aad8d55148b4fff, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4877693905175392396, guid: 0a34ffdf8870cb546aad8d55148b4fff, + type: 3} + propertyPath: m_LocalPosition.z + value: -0.046 + objectReference: {fileID: 0} + - target: {fileID: 4877693905175392396, guid: 0a34ffdf8870cb546aad8d55148b4fff, + type: 3} + propertyPath: m_LocalRotation.w + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4877693905175392396, guid: 0a34ffdf8870cb546aad8d55148b4fff, + type: 3} + propertyPath: m_LocalRotation.x + value: -0.5 + objectReference: {fileID: 0} + - target: {fileID: 4877693905175392396, guid: 0a34ffdf8870cb546aad8d55148b4fff, + type: 3} + propertyPath: m_LocalRotation.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4877693905175392396, guid: 0a34ffdf8870cb546aad8d55148b4fff, + type: 3} + propertyPath: m_LocalRotation.z + value: -0.5 + objectReference: {fileID: 0} + - target: {fileID: 4877693905175392396, guid: 0a34ffdf8870cb546aad8d55148b4fff, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 180 + objectReference: {fileID: 0} + - target: {fileID: 4877693905175392396, guid: 0a34ffdf8870cb546aad8d55148b4fff, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 270 + objectReference: {fileID: 0} + - target: {fileID: 4877693905175392396, guid: 0a34ffdf8870cb546aad8d55148b4fff, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 90 + objectReference: {fileID: 0} + - target: {fileID: 4877693905175751852, guid: 0a34ffdf8870cb546aad8d55148b4fff, + type: 3} + propertyPath: m_Name + value: Pistol4_02 + objectReference: {fileID: 0} + - target: {fileID: 4877693905177686636, guid: 0a34ffdf8870cb546aad8d55148b4fff, + type: 3} + propertyPath: m_CastShadows + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 8010641801067118335, guid: 0a34ffdf8870cb546aad8d55148b4fff, + type: 3} + propertyPath: m_CastShadows + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 8353621443289556429, guid: 0a34ffdf8870cb546aad8d55148b4fff, + type: 3} + propertyPath: m_CastShadows + value: 3 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0a34ffdf8870cb546aad8d55148b4fff, type: 3} +--- !u!4 &6504162899667296546 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4877693905175392396, guid: 0a34ffdf8870cb546aad8d55148b4fff, + type: 3} + m_PrefabInstance: {fileID: 1869663933923627438} + m_PrefabAsset: {fileID: 0} +--- !u!1 &6504162899667598594 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 4877693905175751852, guid: 0a34ffdf8870cb546aad8d55148b4fff, + type: 3} + m_PrefabInstance: {fileID: 1869663933923627438} + m_PrefabAsset: {fileID: 0} --- !u!1001 &2346797690253046104 PrefabInstance: m_ObjectHideFlags: 0 @@ -4404,6 +4569,8 @@ MonoBehaviour: transitionOnNextFrame: 0 item: {fileID: 11400000, guid: 220746f56523829498b8b83d62365cc7, type: 2} animator: {fileID: 2486523390929547415} + vfxPlayer: {fileID: 0} + entityAnimator: {fileID: 0} renderers: - {fileID: 4538978027255161566} - {fileID: 5158269637596109219} @@ -5009,11 +5176,11 @@ PrefabInstance: - targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: 644cb63bc5228d44e901a3251d09e8cd, type: 3} insertIndex: -1 - addedObject: {fileID: 6600209918710237285} + addedObject: {fileID: 8902445283215300242} - targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: 644cb63bc5228d44e901a3251d09e8cd, type: 3} insertIndex: -1 - addedObject: {fileID: 8902445283215300242} + addedObject: {fileID: 8065589936586356455} m_SourcePrefab: {fileID: 100100000, guid: 644cb63bc5228d44e901a3251d09e8cd, type: 3} --- !u!137 &279771559974666008 stripped SkinnedMeshRenderer: @@ -5046,11 +5213,13 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: animators: - - {fileID: 8907247608405424211} + - {fileID: 4676489320873285128} animationKeyWords: - rid: 750605193046130694 - rid: 750605214148460547 - rid: 749939664269606914 + - rid: 806583666069995741 + - rid: 806583666069995742 _rootVelocity: rid: 750605193046130692 boolParameters: @@ -5084,6 +5253,14 @@ MonoBehaviour: type: {class: ReferenceScriptableObject, ns: BITKit, asm: BITKit} data: so: {fileID: 11400000, guid: a4d5f0f375420144c888f6d9e0f2593c, type: 2} + - rid: 806583666069995741 + type: {class: ReferenceScriptableObject, ns: BITKit, asm: BITKit} + data: + so: {fileID: 11400000, guid: b7664d3b6512cb042bd9716363153bc1, type: 2} + - rid: 806583666069995742 + type: {class: ReferenceScriptableObject, ns: BITKit, asm: BITKit} + data: + so: {fileID: 11400000, guid: f911910b02fa2ec4298285cde8a2faa2, type: 2} --- !u!114 &4676489320873285128 MonoBehaviour: m_ObjectHideFlags: 0 @@ -5099,24 +5276,6 @@ MonoBehaviour: debug: 0 animator: {fileID: 8907247608405424211} layerInfos: [] ---- !u!114 &6600209918710237285 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2753699357243898003} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4daf805c91d04d6409660f7675cbdb52, type: 3} - m_Name: - m_EditorClassIdentifier: - allowParticles: - allow: 0 - value: [] - allowLight: - allow: 0 - value: {fileID: 0} --- !u!114 &8902445283215300242 MonoBehaviour: m_ObjectHideFlags: 0 @@ -5146,6 +5305,8 @@ MonoBehaviour: transitionOnNextFrame: 0 item: {fileID: 11400000, guid: 5557f2edf7d8c4b43934c79878628d22, type: 2} animator: {fileID: 4676489320873285128} + vfxPlayer: {fileID: 8065589936586356455} + entityAnimator: {fileID: 4515933970560943755} renderers: - {fileID: 279771559974666008} - {fileID: 3790416042972862020} @@ -5167,7 +5328,6 @@ MonoBehaviour: meleeAction: {fileID: 709374767176041235, guid: e0e9267cab824e8489fc27d83f1d07b7, type: 3} cameraView: {fileID: 8525020893898639929} - vfxPlayer: {fileID: 5006172060748096908} locationAdditive: {fileID: 4486952052422082421} assetable: {fileID: 11400000, guid: 5557f2edf7d8c4b43934c79878628d22, type: 2} expectFiring: @@ -5228,6 +5388,28 @@ MonoBehaviour: type: {class: Climb, ns: BITFALL.Guns.States, asm: BITFALL.Equip} data: root: {fileID: 8902445283215300242} +--- !u!114 &8065589936586356455 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2753699357243898003} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: eac859befd6ba3349b2cf8acb119d2de, type: 3} + m_Name: + m_EditorClassIdentifier: + vfxReferences: + - rid: 806583666069995748 + vfxPlayer: {fileID: 5006172060748096908} + references: + version: 2 + RefIds: + - rid: 806583666069995748 + type: {class: ReferenceScriptableObject, ns: BITKit, asm: BITKit} + data: + so: {fileID: 11400000, guid: b7664d3b6512cb042bd9716363153bc1, type: 2} --- !u!4 &3277717096784339497 stripped Transform: m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: 644cb63bc5228d44e901a3251d09e8cd, @@ -6569,6 +6751,8 @@ MonoBehaviour: transitionOnNextFrame: 0 item: {fileID: 11400000, guid: 5e50b5a1c5542da46b92f4cf7bbd5043, type: 2} animator: {fileID: 2269618926873949942} + vfxPlayer: {fileID: 0} + entityAnimator: {fileID: 0} renderers: - {fileID: 456800702483242086} - {fileID: 3539558469337834170} @@ -6907,6 +7091,8 @@ MonoBehaviour: transitionOnNextFrame: 0 item: {fileID: 11400000, guid: beaccfe60f8582e4895457499e18b12c, type: 2} animator: {fileID: 446310280712231859} + vfxPlayer: {fileID: 0} + entityAnimator: {fileID: 0} renderers: - {fileID: 230503227726884351} - {fileID: 6538094884673845581} @@ -7742,6 +7928,10 @@ PrefabInstance: type: 3} insertIndex: -1 addedObject: {fileID: 4874137276923287036} + - targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: 5bbc8731abf94f94a8849dd8106296fe, + type: 3} + insertIndex: -1 + addedObject: {fileID: 4925042838238742529} m_SourcePrefab: {fileID: 100100000, guid: 5bbc8731abf94f94a8849dd8106296fe, type: 3} --- !u!137 &727301493299199162 stripped SkinnedMeshRenderer: @@ -7792,11 +7982,13 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: animators: - - {fileID: 4357561961615010256} + - {fileID: 4874137276923287036} animationKeyWords: - rid: 750605193046130694 - rid: 750605214148460547 - rid: 749939664269606914 + - rid: 806583666069995743 + - rid: 806583666069995744 _rootVelocity: rid: 750605193046130692 boolParameters: @@ -7830,6 +8022,14 @@ MonoBehaviour: type: {class: ReferenceScriptableObject, ns: BITKit, asm: BITKit} data: so: {fileID: 11400000, guid: a4d5f0f375420144c888f6d9e0f2593c, type: 2} + - rid: 806583666069995743 + type: {class: ReferenceScriptableObject, ns: BITKit, asm: BITKit} + data: + so: {fileID: 11400000, guid: b7664d3b6512cb042bd9716363153bc1, type: 2} + - rid: 806583666069995744 + type: {class: ReferenceScriptableObject, ns: BITKit, asm: BITKit} + data: + so: {fileID: 11400000, guid: f911910b02fa2ec4298285cde8a2faa2, type: 2} --- !u!114 &4384885775763546391 MonoBehaviour: m_ObjectHideFlags: 0 @@ -7859,6 +8059,8 @@ MonoBehaviour: transitionOnNextFrame: 0 item: {fileID: 11400000, guid: 4cf1920e287c0234f9fa77937708ffe2, type: 2} animator: {fileID: 4874137276923287036} + vfxPlayer: {fileID: 4925042838238742529} + entityAnimator: {fileID: 936978454741360619} renderers: - {fileID: 8322527087331379143} - {fileID: 727301493299199162} @@ -7883,7 +8085,6 @@ MonoBehaviour: meleeAction: {fileID: 709374767176041235, guid: e0e9267cab824e8489fc27d83f1d07b7, type: 3} cameraView: {fileID: 3579016247041219514} - vfxPlayer: {fileID: 49539130056838808} locationAdditive: {fileID: 4486952052422082421} assetable: {fileID: 11400000, guid: 4cf1920e287c0234f9fa77937708ffe2, type: 2} expectFiring: @@ -7959,6 +8160,28 @@ MonoBehaviour: debug: 0 animator: {fileID: 4357561961615010256} layerInfos: [] +--- !u!114 &4925042838238742529 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7048933845581474064} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: eac859befd6ba3349b2cf8acb119d2de, type: 3} + m_Name: + m_EditorClassIdentifier: + vfxReferences: + - rid: 806583666069995752 + vfxPlayer: {fileID: 49539130056838808} + references: + version: 2 + RefIds: + - rid: 806583666069995752 + type: {class: ReferenceScriptableObject, ns: BITKit, asm: BITKit} + data: + so: {fileID: 11400000, guid: b7664d3b6512cb042bd9716363153bc1, type: 2} --- !u!4 &7681178683086533546 stripped Transform: m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: 5bbc8731abf94f94a8849dd8106296fe, diff --git a/Assets/Artists/Prefabs/Props/Prop Throwing Knife.prefab b/Assets/Artists/Prefabs/Props/Prop Throwing Knife.prefab index 759caabaa..2fda0cfa3 100644 --- a/Assets/Artists/Prefabs/Props/Prop Throwing Knife.prefab +++ b/Assets/Artists/Prefabs/Props/Prop Throwing Knife.prefab @@ -103,6 +103,10 @@ PrefabInstance: type: 3} insertIndex: -1 addedObject: {fileID: 626853534020189990} + - targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: a5afe13492c9acf478def44319cb3619, + type: 3} + insertIndex: -1 + addedObject: {fileID: 8823825610688837616} m_SourcePrefab: {fileID: 100100000, guid: a5afe13492c9acf478def44319cb3619, type: 3} --- !u!1 &3130178554240382059 stripped GameObject: @@ -190,3 +194,116 @@ MonoBehaviour: layerMask: serializedVersion: 2 m_Bits: 513 +--- !u!96 &8823825610688837616 +TrailRenderer: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3130178554240382059} + m_Enabled: 0 + m_CastShadows: 0 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 0 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: b9ee288987a7daf438ed100698f0cad8, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Time: 0.32 + m_PreviewTimeScale: 1 + m_Parameters: + serializedVersion: 3 + widthMultiplier: 0.01 + widthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 1 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.64 + value: 0.01 + inSlope: 0 + outSlope: 0 + tangentMode: 1 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + numCornerVertices: 0 + numCapVertices: 0 + alignment: 0 + textureMode: 0 + textureScale: {x: 1, y: 1} + shadowBias: 0.5 + generateLightingData: 0 + m_MinVertexDistance: 0.1 + m_MaskInteraction: 0 + m_Autodestruct: 0 + m_Emitting: 1 + m_ApplyActiveColorSpace: 1 diff --git a/Assets/Artists/Prefabs/Scenes/Core/Abstract_Physics_Door.prefab b/Assets/Artists/Prefabs/Scenes/Core/Abstract_Physics_Door.prefab index 4a44a6eb5..d2bcb18e0 100644 --- a/Assets/Artists/Prefabs/Scenes/Core/Abstract_Physics_Door.prefab +++ b/Assets/Artists/Prefabs/Scenes/Core/Abstract_Physics_Door.prefab @@ -44,7 +44,7 @@ Rigidbody: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1221729430557705066} serializedVersion: 4 - m_Mass: 1 + m_Mass: 16 m_Drag: 0 m_AngularDrag: 0.05 m_CenterOfMass: {x: 0, y: 0, z: 0} @@ -75,6 +75,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 2b1d23c488f41754ea714f972c248130, type: 3} m_Name: m_EditorClassIdentifier: + allowPhysics: 1 root: {fileID: 5555206979556305353} openEuler: {x: 0, y: -120, z: 0} closeEuler: {x: 0, y: 0, z: 0} @@ -368,7 +369,7 @@ MonoBehaviour: overlayTexture: {fileID: 0} overlayTextureScale: 1 outline: 1 - outlineColor: {r: 0, g: 0, b: 0, a: 1} + outlineColor: {r: 1, g: 0.26270828, b: 0.025157154, a: 1} outlineColorStyle: 0 outlineGradient: serializedVersion: 2 @@ -401,8 +402,8 @@ MonoBehaviour: m_NumColorKeys: 2 m_NumAlphaKeys: 2 outlineGradientInLocalSpace: 0 - outlineWidth: 0.45 - outlineQuality: 3 + outlineWidth: 0.64 + outlineQuality: 1 outlineDownsampling: 2 outlineVisibility: 0 glowBlendMode: 0 @@ -410,7 +411,7 @@ MonoBehaviour: outlineIndependent: 0 glow: 0 glowWidth: 0.4 - glowQuality: 3 + glowQuality: 1 glowDownsampling: 2 glowHQColor: {r: 0.64, g: 1, b: 0, a: 1} glowDithering: 1 @@ -445,10 +446,10 @@ MonoBehaviour: targetFXRotationSpeed: 50 targetFXInitialScale: 4 targetFXEndScale: 1.5 - targetFXScaleToRenderBounds: 1 + targetFXScaleToRenderBounds: 0 targetFXAlignToGround: 0 targetFXFadePower: 32 - targetFXGroundMaxDistance: 10 + targetFXGroundMaxDistance: 15 targetFXGroundLayerMask: serializedVersion: 2 m_Bits: 4294967295 @@ -459,7 +460,7 @@ MonoBehaviour: seeThroughOccluderMask: serializedVersion: 2 m_Bits: 4294967295 - seeThroughOccluderThreshold: 0.3 + seeThroughOccluderThreshold: 0.4 seeThroughOccluderMaskAccurate: 0 seeThroughOccluderCheckInterval: 1 seeThroughOccluderCheckIndividualObjects: 0 diff --git a/Assets/Artists/Prefabs/Services/Framework.prefab b/Assets/Artists/Prefabs/Services/Framework.prefab index e6d05afc6..a02ccbe8c 100644 --- a/Assets/Artists/Prefabs/Services/Framework.prefab +++ b/Assets/Artists/Prefabs/Services/Framework.prefab @@ -142,7 +142,6 @@ MonoBehaviour: prefab: {fileID: 2956281190107464547, guid: cd8502ee01a85944bbccb38128facc13, type: 3} root: {fileID: 1621845164855518716} - instances: [] references: version: 2 RefIds: @@ -194,7 +193,7 @@ MonoBehaviour: m_EditorClassIdentifier: m_host: 127.0.0.1 m_port: 27014 - connectOnStart: 1 + connectOnStart: 0 autoReconnect: 1 allowDebugHost: allow: 0 @@ -283,8 +282,8 @@ MonoBehaviour: steamService: rid: 806583144903606758 allowLoadOfflineMap: - allow: 0 - value: Maps/InitialScene + allow: 1 + value: Maps/DMZ references: version: 2 RefIds: @@ -813,9 +812,6 @@ MonoBehaviour: type: 3} inventoryAction: {fileID: 4731022410478041803, guid: e0e9267cab824e8489fc27d83f1d07b7, type: 3} - inputActionGroup: - allowGlobalActivation: 0 - isEnabled: 0 references: version: 2 RefIds: diff --git a/Assets/Artists/Prefabs/Zombie.prefab b/Assets/Artists/Prefabs/Zombie.prefab index 598d1ca76..e5556e91e 100644 --- a/Assets/Artists/Prefabs/Zombie.prefab +++ b/Assets/Artists/Prefabs/Zombie.prefab @@ -118,6 +118,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 8bf3c729cc99f0b47a6b0bd8f97fac73, type: 3} m_Name: m_EditorClassIdentifier: + isOvering: 0 --- !u!114 &7936474328313349173 MonoBehaviour: m_ObjectHideFlags: 0 @@ -361,6 +362,7 @@ MonoBehaviour: - {fileID: 932345816451815009} - {fileID: 2795597010085539353} - {fileID: 5465789218075534306} + joints: [] rigidbody: {fileID: 6212079510373085893} --- !u!114 &6426485772650260809 MonoBehaviour: @@ -380,6 +382,10 @@ MonoBehaviour: aliveCollider: allow: 1 value: {fileID: 8579368653672686413} + allowAnimatorParameter: 0 + physicsBasedAnimation: + allow: 0 + value: {fileID: 0} references: version: 2 RefIds: @@ -422,7 +428,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: animators: - - {fileID: 673930142905110667} + - {fileID: 7936474328313349173} animationKeyWords: [] _rootVelocity: rid: 806583346156273665 diff --git a/Assets/Artists/Scenes/DMZ.unity b/Assets/Artists/Scenes/DMZ.unity index 48fcb0c6c..ac155747d 100644 --- a/Assets/Artists/Scenes/DMZ.unity +++ b/Assets/Artists/Scenes/DMZ.unity @@ -1147,22 +1147,22 @@ PrefabInstance: - target: {fileID: 3772777254845134042, guid: f25aeccf4aba96b43a20d93ee9fa4e6e, type: 3} propertyPath: m_LocalPosition.x - value: 22.661001 + value: 53.821 objectReference: {fileID: 0} - target: {fileID: 3772777254845134042, guid: f25aeccf4aba96b43a20d93ee9fa4e6e, type: 3} propertyPath: m_LocalPosition.y - value: 2.1051528 + value: 1.4299991 objectReference: {fileID: 0} - target: {fileID: 3772777254845134042, guid: f25aeccf4aba96b43a20d93ee9fa4e6e, type: 3} propertyPath: m_LocalPosition.z - value: 21.766075 + value: -62.513924 objectReference: {fileID: 0} - target: {fileID: 3772777254845134042, guid: f25aeccf4aba96b43a20d93ee9fa4e6e, type: 3} propertyPath: m_LocalRotation.w - value: 0.7071068 + value: 1 objectReference: {fileID: 0} - target: {fileID: 3772777254845134042, guid: f25aeccf4aba96b43a20d93ee9fa4e6e, type: 3} @@ -1172,7 +1172,7 @@ PrefabInstance: - target: {fileID: 3772777254845134042, guid: f25aeccf4aba96b43a20d93ee9fa4e6e, type: 3} propertyPath: m_LocalRotation.y - value: 0.7071068 + value: 0 objectReference: {fileID: 0} - target: {fileID: 3772777254845134042, guid: f25aeccf4aba96b43a20d93ee9fa4e6e, type: 3} @@ -13822,7 +13822,7 @@ MeshFilter: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 310741521} - m_Mesh: {fileID: 499886243} + m_Mesh: {fileID: 1893400711} --- !u!23 &310741524 MeshRenderer: m_ObjectHideFlags: 0 @@ -14049,8 +14049,8 @@ MonoBehaviour: m_AreaError: 15 m_PreserveMeshAssetOnDestroy: 0 assetGuid: - m_Mesh: {fileID: 499886243} - m_VersionIndex: 599 + m_Mesh: {fileID: 1893400711} + m_VersionIndex: 605 m_IsSelectable: 1 m_SelectedFaces: m_SelectedEdges: [] @@ -24308,171 +24308,6 @@ MonoBehaviour: mr: {fileID: 497884692} mf: {fileID: 497884693} garbageCollectMesh: {fileID: 497884694} ---- !u!43 &499886243 -Mesh: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: pb_Mesh36434 - serializedVersion: 11 - m_SubMeshes: - - serializedVersion: 2 - firstByte: 0 - indexCount: 24 - topology: 0 - baseVertex: 0 - firstVertex: 0 - vertexCount: 9 - localAABB: - m_Center: {x: -97.7142, y: 1.6801468e-15, z: 75.66708} - m_Extent: {x: 128, y: 0, z: 128} - m_Shapes: - vertices: [] - shapes: [] - channels: [] - fullWeights: [] - m_BindPose: [] - m_BoneNameHashes: - m_RootBoneNameHash: 0 - m_BonesAABB: [] - m_VariableBoneCountWeights: - m_Data: - m_MeshCompression: 0 - m_IsReadable: 1 - m_KeepVertices: 1 - m_KeepIndices: 1 - m_IndexFormat: 0 - m_IndexBuffer: 000001000200010003000200010004000300040005000300020003000600030007000600030005000700050008000700 - m_VertexData: - serializedVersion: 3 - m_VertexCount: 9 - m_Channels: - - stream: 0 - offset: 0 - format: 0 - dimension: 3 - - stream: 0 - offset: 12 - format: 0 - dimension: 3 - - stream: 0 - offset: 24 - format: 0 - dimension: 4 - - stream: 0 - offset: 0 - format: 0 - dimension: 0 - - stream: 0 - offset: 40 - format: 0 - dimension: 2 - - stream: 0 - offset: 48 - format: 0 - dimension: 2 - - stream: 0 - offset: 0 - format: 0 - dimension: 0 - - stream: 0 - offset: 0 - format: 0 - dimension: 0 - - stream: 0 - offset: 0 - format: 0 - dimension: 0 - - stream: 0 - offset: 0 - format: 0 - dimension: 0 - - stream: 0 - offset: 0 - format: 0 - dimension: 0 - - stream: 0 - offset: 0 - format: 0 - dimension: 0 - - stream: 0 - offset: 0 - format: 0 - dimension: 0 - - stream: 0 - offset: 0 - format: 0 - dimension: 0 - m_DataSize: 504 - _typelessdata: d6b661c37a22f226e85451c2000000000000803f000000000000803f0000000000000000000080bfd6b661c3e85451c217d7a33c0bd7a33cd6b661c37a22f2268c559742000000000000803f000000000000803f0000000000000000000080bfd6b661c38c5597426f32003f0bd7a33cac6dc3c27a22f226e85451c2000000000000803f000000000000803f0000000000000000000080bfac6dc3c2e85451c211d7a33c6232003fac6dc3c27a22f2268c559742000000000000803f000000000000803f0000000000000000000080bfac6dc3c28c5597426d32003f6332003fd6b661c37a22f226c6aa4b43000000000000803f000000000000803f0000000000000000000080bfd6b661c3c6aa4b431b467b3f0bd7a33cac6dc3c27a22f226c6aa4b43000000000000803f000000000000803f0000000000000000000080bfac6dc3c2c6aa4b431b467b3f6532003f5049f2417a22f226e85451c2000000000000803f000000000000803f0000000000000000000080bf5049f241e85451c20bd7a33c07467b3f5049f2417a22f2268c559742000000000000803f000000000000803f0000000000000000000080bf5049f2418c5597426b32003f07467b3f5049f2417a22f226c6aa4b43000000000000803f000000000000803f0000000000000000000080bf5049f241c6aa4b431b467b3f07467b3f - m_CompressedMesh: - m_Vertices: - m_NumItems: 0 - m_Range: 0 - m_Start: 0 - m_Data: - m_BitSize: 0 - m_UV: - m_NumItems: 0 - m_Range: 0 - m_Start: 0 - m_Data: - m_BitSize: 0 - m_Normals: - m_NumItems: 0 - m_Range: 0 - m_Start: 0 - m_Data: - m_BitSize: 0 - m_Tangents: - m_NumItems: 0 - m_Range: 0 - m_Start: 0 - m_Data: - m_BitSize: 0 - m_Weights: - m_NumItems: 0 - m_Data: - m_BitSize: 0 - m_NormalSigns: - m_NumItems: 0 - m_Data: - m_BitSize: 0 - m_TangentSigns: - m_NumItems: 0 - m_Data: - m_BitSize: 0 - m_FloatColors: - m_NumItems: 0 - m_Range: 0 - m_Start: 0 - m_Data: - m_BitSize: 0 - m_BoneIndices: - m_NumItems: 0 - m_Data: - m_BitSize: 0 - m_Triangles: - m_NumItems: 0 - m_Data: - m_BitSize: 0 - m_UVInfo: 0 - m_LocalAABB: - m_Center: {x: -97.7142, y: 1.6801468e-15, z: 75.66708} - m_Extent: {x: 128, y: 0, z: 128} - m_MeshUsageFlags: 0 - m_CookingOptions: 30 - m_BakedConvexCollisionMesh: - m_BakedTriangleCollisionMesh: - m_MeshMetrics[0]: 1 - m_MeshMetrics[1]: 70883.87 - m_MeshOptimizationFlags: 1 - m_StreamData: - serializedVersion: 2 - offset: 0 - size: 0 - path: --- !u!4 &505303611 stripped Transform: m_CorrespondingSourceObject: {fileID: -3983025326440498736, guid: b805b0f643b3776478b9ea3e6701ebb8, @@ -38878,6 +38713,11 @@ PrefabInstance: propertyPath: m_LocalPosition.y value: 0.30000016 objectReference: {fileID: 0} + - target: {fileID: 7328560627112153540, guid: f18510934c4581d47819abfbf1bd3647, + type: 3} + propertyPath: overrideIndex.allow + value: 1 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] @@ -90414,6 +90254,171 @@ Transform: type: 3} m_PrefabInstance: {fileID: 1881821744} m_PrefabAsset: {fileID: 0} +--- !u!43 &1893400711 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: pb_Mesh36450 + serializedVersion: 11 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 24 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 9 + localAABB: + m_Center: {x: -97.7142, y: 1.6801468e-15, z: 75.66708} + m_Extent: {x: 128, y: 0, z: 128} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 000001000200010003000200010004000300040005000300020003000600030007000600030005000700050008000700 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 9 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 12 + format: 0 + dimension: 3 + - stream: 0 + offset: 24 + format: 0 + dimension: 4 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 40 + format: 0 + dimension: 2 + - stream: 0 + offset: 48 + format: 0 + dimension: 2 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 504 + _typelessdata: d6b661c37a22f226e85451c2000000000000803f000000000000803f0000000000000000000080bfd6b661c3e85451c217d7a33c0bd7a33cd6b661c37a22f2268c559742000000000000803f000000000000803f0000000000000000000080bfd6b661c38c5597426f32003f0bd7a33cac6dc3c27a22f226e85451c2000000000000803f000000000000803f0000000000000000000080bfac6dc3c2e85451c211d7a33c6232003fac6dc3c27a22f2268c559742000000000000803f000000000000803f0000000000000000000080bfac6dc3c28c5597426d32003f6332003fd6b661c37a22f226c6aa4b43000000000000803f000000000000803f0000000000000000000080bfd6b661c3c6aa4b431b467b3f0bd7a33cac6dc3c27a22f226c6aa4b43000000000000803f000000000000803f0000000000000000000080bfac6dc3c2c6aa4b431b467b3f6532003f5049f2417a22f226e85451c2000000000000803f000000000000803f0000000000000000000080bf5049f241e85451c20bd7a33c07467b3f5049f2417a22f2268c559742000000000000803f000000000000803f0000000000000000000080bf5049f2418c5597426b32003f07467b3f5049f2417a22f226c6aa4b43000000000000803f000000000000803f0000000000000000000080bf5049f241c6aa4b431b467b3f07467b3f + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: -97.7142, y: 1.6801468e-15, z: 75.66708} + m_Extent: {x: 128, y: 0, z: 128} + m_MeshUsageFlags: 0 + m_CookingOptions: 30 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 70883.87 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: --- !u!1001 &1893649403 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/Assets/Artists/Scripts/BulletService/BulletService.cs b/Assets/Artists/Scripts/BulletService/BulletService.cs index 47152ddeb..25392ec60 100644 --- a/Assets/Artists/Scripts/BulletService/BulletService.cs +++ b/Assets/Artists/Scripts/BulletService/BulletService.cs @@ -18,8 +18,8 @@ namespace BITFALL public record InstanceBullet : SpawnBullet { public Vector3 currentPos; - public float InitialForce; public float currentSpeed = 64; + public float ElapsedTime; public BITBullet model; } [Serializable] @@ -43,7 +43,7 @@ namespace BITFALL private IDamageService damageService; [Header(Constant.Header.Settings)] - public UnityPool pool = new(); + [SerializeField] private UnityPool pool = new(); [Header(Constant.Header.InternalVariables)] private readonly List instances = new(); @@ -77,9 +77,15 @@ namespace BITFALL } else { + // 计算子弹的下坠距离 + float distance = 0.5f * Physics.gravity.y * bullet.ElapsedTime * bullet.ElapsedTime; + bullet.currentSpeed -= bullet.startSpeed * Time.fixedDeltaTime; bullet.currentPos += (Vector3)bullet.forward * (bullet.currentSpeed * Time.fixedDeltaTime); + bullet.currentPos += Vector3.up * distance; bullet.model.transform.position = bullet.currentPos; + + bullet.ElapsedTime += Time.fixedDeltaTime; } } } @@ -131,7 +137,7 @@ namespace BITFALL (null, null) => null, (null, not null) => damagable?.Rigidbody, (not null, null) => raycastHit.rigidbody, - (not null, not null) => raycastHit.rigidbody, + (not null, not null) => damagable?.Rigidbody, }; if (_rigidbody is not null && _rigidbody.gameObject.layer is not 0) { @@ -154,8 +160,12 @@ namespace BITFALL forward = raycastHit.normal, }; var vfx = DI.Get().Spawn(location, tags.ToArray()); - var constraint = vfx.gameObject.AddComponent(); + var constraint = vfx.gameObject.GetOrAddComponent(); var sourceTransform = raycastHit.transform; + while (constraint.sourceCount>0) + { + constraint.RemoveSource(0); + } constraint.AddSource(new ConstraintSource() { sourceTransform = sourceTransform, diff --git a/Assets/Artists/Scripts/Entities/Animation/BITFALL.Entities.Animation.asmdef b/Assets/Artists/Scripts/Entities/Animation/BITFALL.Entities.Animation.asmdef new file mode 100644 index 000000000..8c98b0225 --- /dev/null +++ b/Assets/Artists/Scripts/Entities/Animation/BITFALL.Entities.Animation.asmdef @@ -0,0 +1,21 @@ +{ + "name": "BITFALL.Entities.Animation", + "rootNamespace": "", + "references": [ + "GUID:14fe60d984bf9f84eac55c6ea033a8f4", + "GUID:709caf8d7fb6ef24bbba0ab9962a3ad0", + "GUID:84d565da37ad40546a118cfb3c3509f3", + "GUID:d525ad6bd40672747bde77962f1c401e", + "GUID:49b49c76ee64f6b41bf28ef951cb0e50", + "GUID:677cd05ca06c46b4395470200b1acdad" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/Artists/Scripts/Entities/Animation/EntitiesAnimationController.cs b/Assets/Artists/Scripts/Entities/Animation/EntitiesAnimationController.cs index 0eec15bf4..a3a2d1b09 100644 --- a/Assets/Artists/Scripts/Entities/Animation/EntitiesAnimationController.cs +++ b/Assets/Artists/Scripts/Entities/Animation/EntitiesAnimationController.cs @@ -1,18 +1,48 @@ using System.Collections; using System.Collections.Generic; +using AYellowpaper.SerializedCollections; +using BITFALL.Entities.Equipment; +using BITKit.Animations; using UnityEngine; -public class EntitiesAnimationController : MonoBehaviour +namespace BITKit.Entities.Animation { - // Start is called before the first frame update - void Start() - { - - } + public sealed class EntitiesAnimationController : EntityComponent + { + [SerializeField] private UnityAnimator unityAnimator; + [SerializeField] private SerializedDictionary animatorControllers; + [Inject] + private IEntityEquipment _entityEquipment; + + private RuntimeAnimatorController _initialRuntimeAnimatorController; + + private readonly DoubleBuffer _runtimeAnimatorControllerBuffer = new(); + public override void OnAwake() + { + base.OnAwake(); + _entityEquipment.OnEquip += OnEquip; + _initialRuntimeAnimatorController = unityAnimator.animator.runtimeAnimatorController; + } + + public override void OnLateUpdate(float deltaTime) + { + if(_runtimeAnimatorControllerBuffer.TryGetRelease(out var controller)) + { + unityAnimator.animator.runtimeAnimatorController = controller; + } + } + + private void OnEquip(IBasicItem obj) + { + if(animatorControllers.TryGetValue(obj.AddressablePath, out var controller)) + { + _runtimeAnimatorControllerBuffer.Release(controller); + } + else + { + _runtimeAnimatorControllerBuffer.Release(_initialRuntimeAnimatorController); + } + } + } - // Update is called once per frame - void Update() - { - - } } diff --git a/Assets/Artists/Scripts/Entities/EquipSelector/PlayerEquipSelector.cs b/Assets/Artists/Scripts/Entities/EquipSelector/PlayerEquipSelector.cs index 16dc808dd..ebd30f300 100644 --- a/Assets/Artists/Scripts/Entities/EquipSelector/PlayerEquipSelector.cs +++ b/Assets/Artists/Scripts/Entities/EquipSelector/PlayerEquipSelector.cs @@ -278,6 +278,7 @@ namespace BITFALL.Entities.Equipment private void Equip(IBasicItem item) { + _equipment.EntryEquip(item); currentEquip = item; } @@ -296,6 +297,7 @@ namespace BITFALL.Entities.Equipment { if (!_equipmentContainer.Equipment.TryGetAny(x => x.Key is T, out var item)) return false; //if (!_inventory.TryUseItem(item.Value)) return false; + _improvisedService.TryUnEquipImprovised(out _); Equip(item.Value); return true; } diff --git a/Assets/Artists/Scripts/Entities/Equipment/BITFALL.Entities.Equipment.Runtime.asmdef b/Assets/Artists/Scripts/Entities/Equipment/BITFALL.Entities.Equipment.Runtime.asmdef index 0a0245e90..f4164eebe 100644 --- a/Assets/Artists/Scripts/Entities/Equipment/BITFALL.Entities.Equipment.Runtime.asmdef +++ b/Assets/Artists/Scripts/Entities/Equipment/BITFALL.Entities.Equipment.Runtime.asmdef @@ -16,7 +16,9 @@ "GUID:30cdc242b1ac6a944a460f4ab0b77b88", "GUID:7efac18f239530141802fb139776f333", "GUID:ef0bb553b58b90b488bdbe8672e3be0b", - "GUID:48ef04d98836e2640bf90b524bdff904" + "GUID:48ef04d98836e2640bf90b524bdff904", + "GUID:1eb13dc7c3cb5a444877a995967ed591", + "GUID:ea5474181b324dd49a5976cd68f44f18" ], "includePlatforms": [], "excludePlatforms": [], diff --git a/Assets/Artists/Scripts/Entities/Equipment/EntityEquipment.cs b/Assets/Artists/Scripts/Entities/Equipment/EntityEquipment.cs index 622c0614e..29c26035a 100644 --- a/Assets/Artists/Scripts/Entities/Equipment/EntityEquipment.cs +++ b/Assets/Artists/Scripts/Entities/Equipment/EntityEquipment.cs @@ -6,10 +6,12 @@ using BITKit; using BITKit.Animations; using BITKit.StateMachine; using System.Linq; +using System.Security.Permissions; using BITFALL; using BITFALL.Entities.Equipment; using BITFALL.Player.Equip; using BITKit.Entities.Melee; +using BITKit.Entities.VFX; using Cinemachine; using Cysharp.Threading.Tasks; @@ -22,7 +24,9 @@ namespace BITKit.Entities [SerializeField] protected AssetableItem item; [Header(Constant.Header.Components)] - public UnityAnimator animator; + [SerializeField] public UnityAnimator animator; + [SerializeField] protected EntityVFXPlayer vfxPlayer; + [SerializeField] protected EntityAnimator entityAnimator; [SerializeField] private Renderer[] renderers; [SerializeField] protected Transform cameraTransform; @@ -30,6 +34,7 @@ namespace BITKit.Entities [SerializeReference,SubclassSelector] protected IMeleeService meleeService; public Core.Entites.IEntity Entity { get; set; } + public Entity UnityEntity=>Entity as Entity; public IBasicItem Item { get; set; } public readonly InputActionGroup inputActionGroup = new() @@ -46,14 +51,29 @@ namespace BITKit.Entities { AllowRendering.AddElement(this); inputActionGroup.allowInput.AddElement(this); + + if (entityAnimator) + entityAnimator.enabled = true; + if (vfxPlayer) + vfxPlayer.enabled = true; + + var animName = animator.animator.GetCurrentAnimatorStateInfo(0).shortNameHash; + animator.animator.Play(animName, -1, 0); } + public virtual UniTask EntryAsync() { + return UniTask.CompletedTask; } public virtual void Exit() { + if (entityAnimator) + entityAnimator.enabled = false; + if (vfxPlayer) + vfxPlayer.enabled = false; + inputActionGroup.allowInput.RemoveElement(this); } public virtual UniTask ExitAsync() @@ -126,33 +146,54 @@ namespace BITKit.Entities [CustomType(typeof(IEntityEquipment))] public class EntityEquipment : EntityComponent,IEquipService,IEntityEquipment { - public EntryGroup equips = new(); public IOptional Zoom { get; } = new Optional(){Value = 1}; public float InitialFov; [SerializeField] private CinemachineVirtualCamera virtualCamera; + + [SerializeField] private Optional overrideIndex; public event Action OnEquip; - public event Action OnDeEquip; - + public event Action OnUnEquip; + public event Action OnEquipAddressable; + public event Action OnUnEquipAddressable; + + private readonly EntryGroup equips = new(); protected IEquipBase entryComplete; private PlayerConfig playerConfig; private IBasicItem _currentItem; - public override void OnStart() + + [Inject(true)] private IHealth _health; + public override void OnAwake() { - base.OnStart(); + base.OnAwake(); equips.list = GetComponentsInChildren(true).ToList(); equips.OnEntry += OnEntry; equips.OnExit += OnExit; - + + if (_health is not null) + { + _health.OnSetAlive += x => + { + if (x is false) + EntryEquip(-1); + }; + } + foreach (var x in equips.list) { x.Entity = entity; x.OnAwake(); } + + } + + public override void OnStart() + { + base.OnStart(); foreach (var x in equips.list) { x.OnStart(); @@ -161,14 +202,18 @@ namespace BITKit.Entities private void OnExit(IEquipBase obj) { + OnUnEquipAddressable?.Invoke(obj.AddressablePath); + OnUnEquip?.Invoke(obj.Item); + //Debug.Log($"已退出:{obj.Item.Name}"); obj.Item = null; - OnDeEquip?.Invoke(obj.Item); } private void OnEntry(IEquipBase obj) { + OnEquipAddressable?.Invoke(obj.AddressablePath); obj.Item = _currentItem; OnEquip?.Invoke(obj.Item); + //Debug.Log($"已进入:{obj.Item.Name}"); } public override void OnUpdate(float deltaTime) @@ -185,6 +230,11 @@ namespace BITKit.Entities current = Mathf.Clamp(current, 10, PlayerConfig.Singleton.Fov); virtualCamera.m_Lens.FieldOfView = current; } + + if (overrideIndex.Allow && (_health?.IsAlive ?? true)) + { + EntryEquip(overrideIndex.Value); + } } public bool IsSupportItem(IBasicItem item)=> equips.list.Any(x => x.IsSupportItem(item)); diff --git a/Assets/Artists/Scripts/Entities/Improvised/ImprovisedService.cs b/Assets/Artists/Scripts/Entities/Improvised/ImprovisedService.cs index a6023c38e..05a31d236 100644 --- a/Assets/Artists/Scripts/Entities/Improvised/ImprovisedService.cs +++ b/Assets/Artists/Scripts/Entities/Improvised/ImprovisedService.cs @@ -53,6 +53,10 @@ namespace BITFALL.Entities.Improvised { return false; } + if (TryGetImprovisedItem(out var current)) + { + TryUnEquipImprovised(out _); + } _improvisedItem = weapon; OnEquipImprovisedItem?.Invoke(weapon); return true; diff --git a/Assets/Artists/Scripts/Entities/Inventory/EntityInventory.cs b/Assets/Artists/Scripts/Entities/Inventory/EntityInventory.cs index a2278dbfa..781d18201 100644 --- a/Assets/Artists/Scripts/Entities/Inventory/EntityInventory.cs +++ b/Assets/Artists/Scripts/Entities/Inventory/EntityInventory.cs @@ -16,7 +16,7 @@ namespace BITFALL { [CustomType(typeof(IEntityInventory))] [CustomType(typeof(IBasicItemContainer))] - public abstract class EntityInventory : EntityComponent, IEntityInventory,IBasicItemContainer + public class EntityInventory : EntityComponent, IEntityInventory { /// /// 数据字典 diff --git a/Assets/Artists/Scripts/Entities/Inventory/PlayerInventory.cs b/Assets/Artists/Scripts/Entities/Inventory/PlayerInventory.cs index 5186766b3..da02ebd2b 100644 --- a/Assets/Artists/Scripts/Entities/Inventory/PlayerInventory.cs +++ b/Assets/Artists/Scripts/Entities/Inventory/PlayerInventory.cs @@ -41,7 +41,7 @@ namespace BITFALL { if (!obj.Transform.TryGetComponentAny(out var item)) return; var _item = item.Pick(); - if(item.GetAssetable().TryGetProperty(out _)) + if(item.GetAssetable().IsImprovised) { if (_knockdown is not null && _knockdown.IsKnockdown) { diff --git a/Assets/Artists/Scripts/Entities/Skins/EntityPropsDisplay.cs b/Assets/Artists/Scripts/Entities/Skins/EntityPropsDisplay.cs index 9b6e9f654..8184b88a8 100644 --- a/Assets/Artists/Scripts/Entities/Skins/EntityPropsDisplay.cs +++ b/Assets/Artists/Scripts/Entities/Skins/EntityPropsDisplay.cs @@ -9,72 +9,104 @@ namespace BITFALL { public class EntityPropsDisplay : EntityComponent { - [SerializeField] private SerializedDictionary equipments = new(); - [SerializeField] private SerializedDictionary unEquipDictionary = new(); - [SerializeField] private SerializedDictionary equipDictionary = new(); + [SerializeField] private SerializedDictionary equipped = new(); + [SerializeField] private SerializedDictionary bodyEquips = new(); + [SerializeField] private SerializedDictionary holsteredEquips = new(); - [Inject] private IEntityEquipment _entityEquipment; - [Inject] private IEntityEquipmentContainer _playerEquipContainer; - [Inject] private IPlayerEquipSelector _playerEquipSelector; + [Inject(true)] private IEntityEquipment _entityEquipment; + [Inject(true)] private IEntityEquipmentContainer _playerEquipContainer; + [Inject(true)] private IPlayerEquipSelector _playerEquipSelector; public override void OnStart() { - _playerEquipContainer.OnEquip += OnEquip; - _playerEquipContainer.OnDeEquip += OnDeEquip; + if (_entityEquipment is not null) + { + _entityEquipment.OnEquip += OnEquippedEquip; + _entityEquipment.OnUnEquip += OnEquippedUnEquip; + _entityEquipment.OnEquipAddressable+=OnEquippedEquipAddressable; + _entityEquipment.OnUnEquipAddressable+=OnUnEquippedEquipAddressable; + } + + if (_playerEquipSelector is not null) + { + _playerEquipSelector.OnUpdateEquip += OnUpdateHolsteredEquip; + } - _entityEquipment.OnEquip += OnEquip; - _entityEquipment.OnDeEquip += OnDeEquip; - _playerEquipSelector.OnUpdateEquip += OnUpdateEquip; + if (_playerEquipContainer is not null) + { + _playerEquipContainer.OnEquip += OnEquipBodyEquip; + _playerEquipContainer.OnDeEquip += OnUnEquipBodyEquip; + } - foreach (var x in equipments) + foreach (var x in equipped) { x.Value.SetActive(false); } - foreach (var x in unEquipDictionary) + foreach (var x in bodyEquips) { x.Value.SetActive(false); } - foreach (var x in equipDictionary) + foreach (var x in holsteredEquips) { x.Value.SetActive(false); } } - private void OnDeEquip(IEquipmentSlot slot, IBasicItem item) + + private void OnUnEquippedEquipAddressable(string obj) { - var asset = item.GetAssetable(); - if (equipments.TryGetValue(asset.AddressablePath, out GameObject prop)) + if (string.IsNullOrEmpty(obj) is false && equipped.TryGetValue(obj, out var go)) { - prop.SetActive(false); + go.SetActive(false); } } - private void OnEquip(IEquipmentSlot slot, IBasicItem item) + private void OnEquippedEquipAddressable(string obj) { - var asset = item.GetAssetable(); - if(equipments.TryGetValue(asset.AddressablePath, out GameObject prop)) { - prop.SetActive(true); + if (string.IsNullOrEmpty(obj) is false && equipped.TryGetValue(obj, out var go)) + { + go.SetActive(true); } } - private void OnEquip(IBasicItem item) + private void OnUnEquipBodyEquip(IEquipmentSlot arg1, IBasicItem arg2) { - if(item is null) return; - if (equipDictionary.TryGetValue(item.AddressablePath, out var model)) + if (bodyEquips.TryGetValue(arg2.AddressablePath, out var go)) { - model.SetActive(true); + go.SetActive(false); } } - private void OnDeEquip(IBasicItem item) + private void OnEquipBodyEquip(IEquipmentSlot arg1, IBasicItem arg2) { - foreach (var x in equipDictionary) + if (bodyEquips.TryGetValue(arg2.AddressablePath, out var go)) { - x.Value.gameObject.SetActive(false); + go.SetActive(true); } } - private void OnUpdateEquip(IDictionary maps) + + private void OnUpdateHolsteredEquip(IDictionary obj) { - + foreach (var x in holsteredEquips) + { + x.Value.SetActive(false); + } + foreach (var x in obj) + { + if (holsteredEquips.TryGetValue(x.Value.AddressablePath, out var go)) + { + go.SetActive(true); + } + } + } + + private void OnEquippedUnEquip(IBasicItem obj) + { + OnUnEquippedEquipAddressable(obj?.AddressablePath); + } + + private void OnEquippedEquip(IBasicItem obj) + { + OnEquippedEquipAddressable(obj?.AddressablePath); } } } \ No newline at end of file diff --git a/Assets/Artists/Scripts/Equip/AIEquipController.cs b/Assets/Artists/Scripts/Equip/AIEquipController.cs new file mode 100644 index 000000000..fb5ef58c8 --- /dev/null +++ b/Assets/Artists/Scripts/Equip/AIEquipController.cs @@ -0,0 +1,58 @@ +using System.Collections; +using System.Collections.Generic;using BITFALL.Entities.Equipment; +using BITKit; +using BITKit.Entities; +using Cysharp.Threading.Tasks; +using UnityEngine; +using IEntity = BITKit.Core.Entites.IEntity; + +namespace BITFALL.Entities.Equipment +{ + public class AIEquipController : MonoBehaviour,IEquipBase + { + [SerializeField] protected AssetableItem assetableItem; + public bool IsEntered { get; set; } + public virtual void Entry() + { + + } + + public virtual UniTask EntryAsync() + { + return UniTask.CompletedTask; + } + + public virtual void Exit() + { + } + + public virtual UniTask ExitAsync() + { + return UniTask.CompletedTask; + } + + public virtual void OnAwake() + { + } + + public virtual void OnStart() + { + } + + public virtual void OnUpdate(float deltaTime) + { + } + + public string AddressablePath => assetableItem.AddressablePath; + public IEntity Entity { get; set; } + public Entity UnityEntity=>Entity as Entity; + public IBasicItem Item { get; set; } + + public bool IsSupportItem(IBasicItem item) => item?.AddressablePath == AddressablePath; + + public void PlayAudio(string name) + { + } + } + +} diff --git a/Assets/Artists/Scripts/Equip/AIGunController.cs b/Assets/Artists/Scripts/Equip/AIGunController.cs new file mode 100644 index 000000000..3480fc263 --- /dev/null +++ b/Assets/Artists/Scripts/Equip/AIGunController.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.CompilerServices; +using BITFALL.Bullet; +using BITFALL.Entities.Equipment; +using BITKit; +using BITKit.Entities; +using BITKit.StateMachine; +using UnityEngine; + +namespace BITFALL.Guns +{ + public class AIGunController : AIEquipController + { + [SerializeField] private Transform firePoint; + [SerializeReference,SubclassSelector] private IBulletService bulletService; + [SerializeField] private bool forceFire; + private AssetableGun _gun=>assetableItem as AssetableGun; + + private readonly IntervalUpdate fireInterval = new(); + + public override void Entry() + { + base.Entry(); + fireInterval.Interval = _gun.FireMode.FireRate is 0 ? 1 : 1f/_gun.FireMode.FireRate; + UnityEntity.AddListener(OnAttack); + } + public override void Exit() + { + base.Exit(); + UnityEntity.RemoveListener(OnAttack); + } + + public override void OnUpdate(float deltaTime) + { + if (forceFire && fireInterval.AllowUpdate) + { + OnAttack(new BITConstant.Command.AttackCommand()); + } + } + + private void OnAttack(BITConstant.Command.AttackCommand obj) + { + bulletService.Spawn(new SpawnBullet() + { + forward = firePoint.forward, + initialDamage = _gun.InitialDamage, + initiator = Entity.Id, + pos = firePoint.position, + rot = firePoint.rotation, + startSpeed = _gun.InitialBulletSpeed, + InitialForce = _gun.InitialBulletForce, + }); + UnityEntity.Invoke(Constant.Animation.Play, BITConstant.Player.Fire); + } + } + +} diff --git a/Assets/Artists/Scripts/Equip/AIMeleeController.cs b/Assets/Artists/Scripts/Equip/AIMeleeController.cs new file mode 100644 index 000000000..4719f88e6 --- /dev/null +++ b/Assets/Artists/Scripts/Equip/AIMeleeController.cs @@ -0,0 +1,42 @@ +using System.Collections; +using System.Collections.Generic; +using BITFALL.Bullet; +using BITFALL.Guns; +using BITKit; +using BITKit.Entities.Melee; +using UnityEngine; + +namespace BITFALL.Entities.Equipment +{ + public class AIMeleeController : AIEquipController + { + [SerializeReference,SubclassSelector] private IMeleeService meleeService; + [SerializeField] private bool forceAttack; + + private readonly IntervalUpdate interval = new(1); + public override void Entry() + { + base.Entry(); + UnityEntity.AddListener(OnAttack); + } + public override void Exit() + { + base.Exit(); + UnityEntity.RemoveListener(OnAttack); + } + + public override void OnUpdate(float deltaTime) + { + if (forceAttack && interval.AllowUpdate) + { + OnAttack(new BITConstant.Command.AttackCommand()); + } + } + + private void OnAttack(BITConstant.Command.AttackCommand obj) + { + UnityEntity.Invoke(Constant.Animation.Play, BITConstant.Player.Melee); + } + } +} + diff --git a/Assets/Artists/Scripts/Equip/BITFALL.Equip.asmdef b/Assets/Artists/Scripts/Equip/BITFALL.Equip.asmdef index 84309350f..4064b91bf 100644 --- a/Assets/Artists/Scripts/Equip/BITFALL.Equip.asmdef +++ b/Assets/Artists/Scripts/Equip/BITFALL.Equip.asmdef @@ -26,7 +26,8 @@ "GUID:42a9827d94e00374aa52e51f0a1b035c", "GUID:87bea3a21c744b1478660b70494160ba", "GUID:ef0bb553b58b90b488bdbe8672e3be0b", - "GUID:48ef04d98836e2640bf90b524bdff904" + "GUID:48ef04d98836e2640bf90b524bdff904", + "GUID:1eb13dc7c3cb5a444877a995967ed591" ], "includePlatforms": [], "excludePlatforms": [], diff --git a/Assets/Artists/Scripts/Equip/BITGun.cs b/Assets/Artists/Scripts/Equip/BITGun.cs index 814edf1f5..b94d09ebe 100644 --- a/Assets/Artists/Scripts/Equip/BITGun.cs +++ b/Assets/Artists/Scripts/Equip/BITGun.cs @@ -74,7 +74,6 @@ namespace BITFALL.Guns [SerializeField] private Transform cameraView; // 引用组件 [Header(Constant.Header.Components)] - [SerializeField] private VFXPlayer vfxPlayer; [SerializeField] private LocationAdditive locationAdditive; // 引用预制体 @@ -163,8 +162,6 @@ namespace BITFALL.Guns base.EntryAsync(); isHolstered = false; - var animName = animator.animator.GetCurrentAnimatorStateInfo(0).shortNameHash; - animator.animator.Play(animName,-1,0); inputActionGroup.allowInput.AddElement(this); expectFiring.Reset(); Enabled = true; @@ -260,7 +257,7 @@ namespace BITFALL.Guns } //播放射击动画 - animator.Play(BITConstant.Player.Fire); + UnityEntity.Invoke(Constant.Animation.Play, BITConstant.Player.Fire); //调用BulletManager生成子弹 var _transform = transform; @@ -275,9 +272,6 @@ namespace BITFALL.Guns InitialForce = _gun.InitialBulletForce, }); - //播放枪口MuzzleFlash - vfxPlayer.Execute(); - //开火模式逻辑判断 switch (assetable.FireMode) { diff --git a/Assets/Artists/Scripts/Equip/BITGunStates.cs b/Assets/Artists/Scripts/Equip/BITGunStates.cs index d47b60cf3..7fe6c8714 100644 --- a/Assets/Artists/Scripts/Equip/BITGunStates.cs +++ b/Assets/Artists/Scripts/Equip/BITGunStates.cs @@ -260,7 +260,8 @@ namespace BITFALL.Guns.States base.OnStateEntry(old); _entityMovement.ExecuteCommand(); - root.animator.Play(BITConstant.Player.Reload); + + root.UnityEntity.Invoke(Constant.Animation.Play, BITConstant.Player.Reload); } public override void OnMovementStateChanged(IEntityMovementState old, IEntityMovementState newState) { diff --git a/Assets/Artists/Scripts/Equip/MeleeController.cs b/Assets/Artists/Scripts/Equip/MeleeController.cs index 7e1a77af3..67f52be3c 100644 --- a/Assets/Artists/Scripts/Equip/MeleeController.cs +++ b/Assets/Artists/Scripts/Equip/MeleeController.cs @@ -58,16 +58,27 @@ namespace BITFALL.Entities.Equipment.Melee [Inject] private IEntityMovement _movement; - [Inject] + [Inject(true)] private IPlayerMovement _playerMovement; [Inject] private IHealth _health; + public override void OnAwake() { base.OnAwake(); - inputActionGroup.RegisterCallback(attackAction, OnAttack); - inputActionGroup.RegisterCallback(blockAction, OnBlock); - _health.OnDamageFactory += OnDamageFactory; - + + if (attackAction is not null) + { + inputActionGroup.RegisterCallback(attackAction, OnAttack); + } + + if (blockAction is not null) + { + inputActionGroup.RegisterCallback(blockAction, OnBlock); + } + + if (_playerMovement is not null) + _health.OnDamageFactory += OnDamageFactory; + _movement.OnStateChanged += OnMovementStateChanged; } diff --git a/Assets/Artists/Scripts/Equip/PlayerImprovisedController.cs b/Assets/Artists/Scripts/Equip/PlayerImprovisedController.cs index 0b7c58ebf..9a2f95089 100644 --- a/Assets/Artists/Scripts/Equip/PlayerImprovisedController.cs +++ b/Assets/Artists/Scripts/Equip/PlayerImprovisedController.cs @@ -24,7 +24,7 @@ namespace BITFALL.Player.Equip public void OnAwake() { _entityEquipment.OnEquip += OnEquip; - _entityEquipment.OnDeEquip += OnDeEquip; + _entityEquipment.OnUnEquip += OnUnEquip; } public void OnStart() { @@ -58,7 +58,7 @@ namespace BITFALL.Player.Equip { return UniTask.CompletedTask; } - private void OnDeEquip(IBasicItem obj) + private void OnUnEquip(IBasicItem obj) { foreach (var x in modelDictionary.Values) { diff --git a/Assets/Artists/Scripts/Equip/ThrowController.cs b/Assets/Artists/Scripts/Equip/ThrowController.cs index ab1847c13..856e19351 100644 --- a/Assets/Artists/Scripts/Equip/ThrowController.cs +++ b/Assets/Artists/Scripts/Equip/ThrowController.cs @@ -80,10 +80,10 @@ namespace BITFALL.Throws if (IsEntered is false) return; if (eventName is not BITConstant.Player.Throw) return; if (!_equipmentContainer.TryUseEquip()) return; - var instance = _assetableThrow.GetInstance(); + var instance =Instantiate(_assetableThrow.Prefab, + throwPoint.position + throwPoint.forward * 0.016f, + throwPoint.rotation) ; if (!instance.TryGetComponent(out var _rigidbody)) return; - _rigidbody.rotation = throwPoint.rotation; - _rigidbody.position = throwPoint.position; _rigidbody.AddForce(throwPoint.forward * throwForce, ForceMode.VelocityChange); } } diff --git a/Assets/Artists/Scripts/Item/AssetableGun.cs b/Assets/Artists/Scripts/Item/AssetableGun.cs index f85b164c0..b9f88a7f0 100644 --- a/Assets/Artists/Scripts/Item/AssetableGun.cs +++ b/Assets/Artists/Scripts/Item/AssetableGun.cs @@ -77,12 +77,12 @@ namespace BITFALL.Guns { [Header(nameof(AssetableGun))] [SerializeReference, SubclassSelector] protected IFireMode fireMode; - [SerializeField] private int initialDamage; - [SerializeField] private int initialBulletForce; + [SerializeField] private int initialBulletSpeed = 128; public IFireMode FireMode => fireMode; public int InitialBulletForce => initialBulletForce; public int InitialDamage => initialDamage; + public int InitialBulletSpeed => initialBulletSpeed; } } \ No newline at end of file diff --git a/Assets/Artists/Scripts/Item/AssetableItem.cs b/Assets/Artists/Scripts/Item/AssetableItem.cs index 22ed3d4dd..c757cd725 100644 --- a/Assets/Artists/Scripts/Item/AssetableItem.cs +++ b/Assets/Artists/Scripts/Item/AssetableItem.cs @@ -39,12 +39,14 @@ namespace BITFALL [SerializeField] private Texture2D squareIcon; [SerializeField] private Texture2D rectangleIcon; [SerializeField] private ItemQuality quality; + [SerializeField] private bool isImprovised; [Header(Constant.Header.Property)] [SerializeReference, SubclassSelector] public IProperty[] factoryProperties; private Property property => new(factoryProperties); #endregion #region 接口实现 public int Id => -1; + public bool IsImprovised => isImprovised; public ItemQuality Quality => quality; public string Name => displayName; public string Description => description; diff --git a/Assets/Artists/Scripts/Item/AssetableThrow.cs b/Assets/Artists/Scripts/Item/AssetableThrow.cs index 4f7267233..3b34b65ac 100644 --- a/Assets/Artists/Scripts/Item/AssetableThrow.cs +++ b/Assets/Artists/Scripts/Item/AssetableThrow.cs @@ -8,6 +8,7 @@ namespace BITFALL.Items { [SerializeField] private Transform instance; + public Transform Prefab => instance; public Transform GetInstance() { return Instantiate(instance); diff --git a/Assets/Artists/Scripts/Item/WorldItem.cs b/Assets/Artists/Scripts/Item/WorldItem.cs index db4c1e36b..c31cc9c9d 100644 --- a/Assets/Artists/Scripts/Item/WorldItem.cs +++ b/Assets/Artists/Scripts/Item/WorldItem.cs @@ -15,8 +15,6 @@ namespace BITFALL #region 本地字段 [Header(Constant.Header.Settings)] [SerializeField]private AssetableItem asset; - - private new Rigidbody _rigidbody; #endregion #region 接口实现 public int Id => GetInstanceID(); @@ -61,30 +59,16 @@ namespace BITFALL #endregion #region 本地方法 public AssetableItem Assetable => asset; - private void Start() - { - _rigidbody = GetComponent(); - } - - private void FixedUpdate() - { - if (!_rigidbody.IsSleeping()) return; - _rigidbody.isKinematic = true; - enabled = false; - } public ManagedItem Pick() { - var newitem = new ManagedItem(); - newitem.CopyItemsFrom(this); - return newitem; + var managedItem = new ManagedItem(); + managedItem.CopyItemsFrom(this); + return managedItem; } public void Picked() { Destroy(gameObject); } - - - #endregion } #if UNITY_EDITOR diff --git a/Assets/Artists/Scripts/Props/Prop_ReplaceOnSleep.cs b/Assets/Artists/Scripts/Props/Prop_ReplaceOnSleep.cs index ad5bd4b06..3bb3cf52d 100644 --- a/Assets/Artists/Scripts/Props/Prop_ReplaceOnSleep.cs +++ b/Assets/Artists/Scripts/Props/Prop_ReplaceOnSleep.cs @@ -27,15 +27,21 @@ namespace BITFALL.Props var instance = Instantiate(prefab); instance.SetPositionAndRotation(_transform.position, _transform.rotation); - if (root is not null) + instance.TryGetComponent(out var _rigidbody); + if (root is not null && root.gameObject.isStatic is false) { instance.SetParentConstraint(root); - if (instance.TryGetComponent(out var _rigidbody)) + if (_rigidbody is not null) { //_rigidbody.isKinematic = true; _rigidbody.isKinematic = true; } } + else if(_rigidbody is not null) + { + _rigidbody.velocity = rigidbody.velocity; + _rigidbody.angularVelocity = rigidbody.angularVelocity; + } Destroy(gameObject); } diff --git a/Assets/Artists/Scripts/UX/UXEquipSelector.cs b/Assets/Artists/Scripts/UX/UXEquipSelector.cs index fafebf238..9f6ca2b44 100644 --- a/Assets/Artists/Scripts/UX/UXEquipSelector.cs +++ b/Assets/Artists/Scripts/UX/UXEquipSelector.cs @@ -32,7 +32,7 @@ namespace BITFALL var assets = item.GetAssetable(); currentUXEquip.SetTexture(assets.RectangleIcon); } - public void OnDeEquip(IBasicItem item) + public void OnUnEquip(IBasicItem item) { currentUXEquip.SetTexture(null); } @@ -56,7 +56,7 @@ namespace BITFALL private void Start() { playerService.OnPlayerInitialized += OnStartLocalPlayer; - OnDeEquip(null); + OnUnEquip(null); foreach (var x in dictionary) { x.Value.visualElement.RegisterCallback(evt => @@ -80,7 +80,7 @@ namespace BITFALL entity.Inject(this); _entityEquipment.OnEquip += OnEquip; - _entityEquipment.OnDeEquip += OnDeEquip; + _entityEquipment.OnUnEquip += OnUnEquip; _equipSelector.OnUpdateEquip += OnUpdateEquip; } } diff --git a/Assets/BITFALL/BITConstant.cs b/Assets/BITFALL/BITConstant.cs index cb9fd2a3d..2986367fd 100644 --- a/Assets/BITFALL/BITConstant.cs +++ b/Assets/BITFALL/BITConstant.cs @@ -1,5 +1,7 @@ +using System; using System.Collections; using System.Collections.Generic; +using System.ComponentModel; namespace BITFALL { @@ -46,6 +48,23 @@ namespace BITFALL public const string Horizontal = nameof(Horizontal); public const string SqrMagnitude = nameof(SqrMagnitude); } + public static class Command + { + public interface ICommand + { + + } + [Serializable] + public struct MoveCommand:ICommand + { + + } + [Serializable] + public struct AttackCommand:ICommand + { + + } + } } } diff --git a/Assets/BITFALL/Bullet/Bullet.cs b/Assets/BITFALL/Bullet/Bullet.cs index 41a5d2087..f18c9bf41 100644 --- a/Assets/BITFALL/Bullet/Bullet.cs +++ b/Assets/BITFALL/Bullet/Bullet.cs @@ -13,6 +13,7 @@ namespace BITFALL public float3 pos; public quaternion rot; public float3 forward; + public float CreateTime = BITApp.Time.DeltaTime; public int InitialForce; public int startSpeed; public int initialDamage; diff --git a/Assets/BITFALL/Entities/Equipment/IEntityEquipment.cs b/Assets/BITFALL/Entities/Equipment/IEntityEquipment.cs index 03b94a18d..005fec67a 100644 --- a/Assets/BITFALL/Entities/Equipment/IEntityEquipment.cs +++ b/Assets/BITFALL/Entities/Equipment/IEntityEquipment.cs @@ -9,7 +9,9 @@ namespace BITFALL.Entities.Equipment public interface IEntityEquipment { event Action OnEquip; - event Action OnDeEquip; + event Action OnUnEquip; + event Action OnEquipAddressable; + event Action OnUnEquipAddressable; bool IsSupportItem(IBasicItem item); void EntryEquip(int index); void EntryEquip(Func item); diff --git a/Assets/BITFALL/Entities/Improvised/ImprovisedServiceInterface.cs b/Assets/BITFALL/Entities/Improvised/ImprovisedServiceInterface.cs index ae127db46..1e316d73d 100644 --- a/Assets/BITFALL/Entities/Improvised/ImprovisedServiceInterface.cs +++ b/Assets/BITFALL/Entities/Improvised/ImprovisedServiceInterface.cs @@ -5,8 +5,6 @@ using BITKit; namespace BITFALL.Entities.Improvised { - [Serializable] - public sealed class Improvisable:IProperty{} public interface ImprovisedServiceInterface { public bool IsImprovised { get; } diff --git a/Assets/BITKit/Core/Applation/BITApp.cs b/Assets/BITKit/Core/Applation/BITApp.cs index d95e6f395..c33c0f875 100644 --- a/Assets/BITKit/Core/Applation/BITApp.cs +++ b/Assets/BITKit/Core/Applation/BITApp.cs @@ -26,6 +26,7 @@ namespace BITKit } public static class Time { + public static float ElapsedTime { get; internal set; } public static float DeltaTime { get; internal set; } public static double TimeAsDouble { get; internal set; } diff --git a/Assets/BITKit/Core/ECS/EntityComponentSystem.cs b/Assets/BITKit/Core/ECS/EntityComponentSystem.cs index 2c04a8672..858895127 100644 --- a/Assets/BITKit/Core/ECS/EntityComponentSystem.cs +++ b/Assets/BITKit/Core/ECS/EntityComponentSystem.cs @@ -18,6 +18,7 @@ namespace BITKit.Core.Entites bool RegisterComponent(T component); IServiceProvider ServiceProvider { get; } void Inject(object obj); + } /// /// 基本实体组件 diff --git a/Assets/BITKit/Core/Group/ActivableGroup.cs b/Assets/BITKit/Core/Group/ActivableGroup.cs index 529545c3c..8f1a16c71 100644 --- a/Assets/BITKit/Core/Group/ActivableGroup.cs +++ b/Assets/BITKit/Core/Group/ActivableGroup.cs @@ -87,30 +87,30 @@ namespace BITKit { var currentIndex = m_index; m_index = index; - if (currentIndex is not -1 && list.TryGetElementAt(currentIndex, out var element)) + if (currentIndex is not -1 && list.TryGetElementAt(currentIndex, out var currentElement)) { - element.Exit(); + currentElement.Exit(); try { - await element.ExitAsync(); + await currentElement.ExitAsync(); } catch (OperationCanceledException) { } - element.IsEntered = false; - OnExit?.Invoke(element); + currentElement.IsEntered = false; + OnExit?.Invoke(currentElement); } - if (index is not -1 && list.TryGetElementAt(index, out element)) + if (index is not -1 && list.TryGetElementAt(index, out var nextElement)) { - element.IsEntered = true; - element.Entry(); + nextElement.IsEntered = true; + nextElement.Entry(); try { - await element.EntryAsync(); + await nextElement.EntryAsync(); } catch (OperationCanceledException){} - OnEntry?.Invoke(element); + OnEntry?.Invoke(nextElement); } } completed = true; diff --git a/Assets/BITKit/Core/InputSystem/IPlayerInputSystem.cs b/Assets/BITKit/Core/InputSystem/IPlayerInputSystem.cs new file mode 100644 index 000000000..6f7b38c11 --- /dev/null +++ b/Assets/BITKit/Core/InputSystem/IPlayerInputSystem.cs @@ -0,0 +1,7 @@ +using System.Collections; +using System.Collections.Generic; + +namespace BITKit.UniversalInputSystem +{ + +} diff --git a/Assets/BITKit/Core/Interfaces/IStateMachine.cs b/Assets/BITKit/Core/Interfaces/IStateMachine.cs index 7f744855e..1146809e7 100644 --- a/Assets/BITKit/Core/Interfaces/IStateMachine.cs +++ b/Assets/BITKit/Core/Interfaces/IStateMachine.cs @@ -3,6 +3,25 @@ using System.Collections.Generic; namespace BITKit.StateMachine { + public struct EmptyState:IState + { + public bool Enabled { get; set; } + public void Initialize() + { + } + + public void OnStateEntry(IState old) + { + } + + public void OnStateUpdate(float deltaTime) + { + } + + public void OnStateExit(IState old, IState newState) + { + } + } public interface IState { bool Enabled { get; set; } diff --git a/Assets/BITKit/Unity/Animations/References/EmetyAnimations/Empty_Fire.anim b/Assets/BITKit/Unity/Animations/References/EmetyAnimations/Empty_Fire.anim new file mode 100644 index 000000000..60ff4cb88 --- /dev/null +++ b/Assets/BITKit/Unity/Animations/References/EmetyAnimations/Empty_Fire.anim @@ -0,0 +1,53 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Empty_Fire + serializedVersion: 7 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: [] + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 1 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 1 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: [] + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/BITKit/Unity/Scripts/BITAppForUnity.cs b/Assets/BITKit/Unity/Scripts/BITAppForUnity.cs index 73ebb99cd..b2f947f06 100644 --- a/Assets/BITKit/Unity/Scripts/BITAppForUnity.cs +++ b/Assets/BITKit/Unity/Scripts/BITAppForUnity.cs @@ -130,6 +130,7 @@ namespace BITKit private void Update() { + BITApp.Time.ElapsedTime = Time.time; BITApp.Time.DeltaTime = Time.deltaTime; BITApp.Time.TimeAsDouble = Time.timeAsDouble; } diff --git a/Assets/BITKit/Unity/Scripts/Entity/Components/Animator/EntityAnimator.cs b/Assets/BITKit/Unity/Scripts/Entity/Components/Animator/EntityAnimator.cs index 6246336fa..94fcb0bd5 100644 --- a/Assets/BITKit/Unity/Scripts/Entity/Components/Animator/EntityAnimator.cs +++ b/Assets/BITKit/Unity/Scripts/Entity/Components/Animator/EntityAnimator.cs @@ -1,12 +1,14 @@ using System.Collections.Generic; using UnityEngine; using System.Linq; +using BITKit.Animations; + namespace BITKit.Entities { public sealed class EntityAnimator : EntityComponent { - [SerializeField] private Animator[] animators; + [SerializeField] private UnityAnimator[] animators; [SerializeReference, SubclassSelector] private References[] animationKeyWords; [SerializeReference, SubclassSelector] private References _rootVelocity; [SerializeReference, SubclassSelector] private References[] boolParameters; @@ -23,13 +25,13 @@ namespace BITKit.Entities private void Play(string animationName) { + if (enabled is false) return; if (animationKeyWords.Length is 0 || keyWords.Contains(animationName)) { animators.ForEach(x => { if (!x.isActiveAndEnabled) return; - animationName = animationName.Replace(".", "_"); - x.SetTrigger(animationName); + x.Play(animationName); }); } } @@ -40,7 +42,7 @@ namespace BITKit.Entities animators.ForEach(x => { if (x.isActiveAndEnabled) - x.SetBool(boolPar, entity.Get(boolPar)); + x.animator.SetBool(boolPar, entity.Get(boolPar)); }); } foreach (var floatPar in floatParameters) @@ -48,14 +50,18 @@ namespace BITKit.Entities animators.ForEach(x => { if (x.isActiveAndEnabled) - x.SetFloat(floatPar, entity.Get(floatPar)); + x.animator.SetFloat(floatPar, entity.Get(floatPar)); }); } } + private void OnAnimatorMove() { - entity.Set(_rootVelocity, animators[0].velocity); + if (enabled is false) return; + if (_rootVelocity is not null && entity is not null) + entity.Set(_rootVelocity, animators[0].animator.velocity); } + // ReSharper disable once UnusedMember.Local private void AnimationEvent(string eventName) { diff --git a/Assets/BITKit/Unity/Scripts/Entity/Components/Health/AutoHealComponent.cs b/Assets/BITKit/Unity/Scripts/Entity/Components/Health/AutoHealComponent.cs index 456c108db..442421e53 100644 --- a/Assets/BITKit/Unity/Scripts/Entity/Components/Health/AutoHealComponent.cs +++ b/Assets/BITKit/Unity/Scripts/Entity/Components/Health/AutoHealComponent.cs @@ -14,17 +14,14 @@ namespace BITKit private readonly ValidHandle allowHeal = new(); [Inject] private IHealth _health; - public override void Initialize(IEntity _entity) - { - base.Initialize(_entity); - _health.OnSetAlive += OnSetAlive; - _health.OnSetHealthPoint += OnSetHP; - _entity.RegisterCallback(this); - } - public override void OnStart() { _health = entity.Get(); + + _health.OnSetAlive += OnSetAlive; + _health.OnSetHealthPoint += OnSetHP; + + entity.RegisterCallback(this); } private void Update() diff --git a/Assets/BITKit/Unity/Scripts/Entity/Components/Health/AutoRespawnComponent.cs b/Assets/BITKit/Unity/Scripts/Entity/Components/Health/AutoRespawnComponent.cs index c5ae31694..800b2de27 100644 --- a/Assets/BITKit/Unity/Scripts/Entity/Components/Health/AutoRespawnComponent.cs +++ b/Assets/BITKit/Unity/Scripts/Entity/Components/Health/AutoRespawnComponent.cs @@ -37,6 +37,7 @@ namespace BITKit destroyCancellationToken.ThrowIfCancellationRequested(); Execute(); } + catch(MissingReferenceException){} catch (OperationCanceledException){} } } diff --git a/Assets/BITKit/Unity/Scripts/Entity/Components/InputSystem/BITKit.Entities.InputSystem.asmdef b/Assets/BITKit/Unity/Scripts/Entity/Components/InputSystem/BITKit.Entities.InputSystem.asmdef new file mode 100644 index 000000000..2cd7cd698 --- /dev/null +++ b/Assets/BITKit/Unity/Scripts/Entity/Components/InputSystem/BITKit.Entities.InputSystem.asmdef @@ -0,0 +1,4 @@ +{ + "name": "BITKit.Entities.InputSystem", + "references":[ "GUID:14fe60d984bf9f84eac55c6ea033a8f4", "GUID:f6155d9ae143f3949ac54e8355593d6c", "GUID:7efac18f239530141802fb139776f333", "GUID:709caf8d7fb6ef24bbba0ab9962a3ad0" ] +} diff --git a/Assets/BITKit/Unity/Scripts/Entity/Components/InputSystem/EntityInputSystem.cs b/Assets/BITKit/Unity/Scripts/Entity/Components/InputSystem/EntityInputSystem.cs new file mode 100644 index 000000000..ba9d81c38 --- /dev/null +++ b/Assets/BITKit/Unity/Scripts/Entity/Components/InputSystem/EntityInputSystem.cs @@ -0,0 +1,68 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEditor; +using UnityEditor.UIElements; +using UnityEngine; +using UnityEngine.UIElements; + +namespace BITKit.Entities.InputSystem +{ + public class EntityInputSystem : EntityComponent + { + protected readonly InputActionGroup inputActionGroup = new() + { + allowGlobalActivation = true + }; + [Inject(true)] + private IHealth _health; + [Inject(true)] + private IEntityOverride _override; + + #if UNITY_EDITOR + [SerializeField,HideInInspector] internal bool Allow; + #endif + public override void Initialize(IEntity _entity) + { + base.Initialize(_entity); + _entity.AddService(inputActionGroup); + } + + public override void OnAwake() + { + base.OnAwake(); + inputActionGroup.allowInput.AddListener(x=>Allow=x); + if (_health is not null) + { + _health.OnSetAlive += x => + { + inputActionGroup.allowInput.SetElements(_health,x); + }; + } + if (_override is not null) + { + _override.OnOverride += x => + { + inputActionGroup.allowInput.SetDisableElements(_override,x); + }; + } + } + } + #if UNITY_EDITOR + [CustomEditor(typeof(EntityInputSystem))] + public sealed class EntityInputSystemInspector : BITInspector + { + public override VisualElement CreateInspectorGUI() + { + FillDefaultInspector(); + var checkBox = root.Create(); + checkBox.label = "Allow Input"; + checkBox.SetEnabled(false); + + checkBox.BindProperty(serializedObject.FindProperty(nameof(EntityInputSystem.Allow))); + + return root; + } + } + #endif +} + diff --git a/Assets/BITKit/Unity/Scripts/Entity/Components/Interactive/EntityInteractive.cs b/Assets/BITKit/Unity/Scripts/Entity/Components/Interactive/EntityInteractive.cs index 71466cd1c..aa52997a0 100644 --- a/Assets/BITKit/Unity/Scripts/Entity/Components/Interactive/EntityInteractive.cs +++ b/Assets/BITKit/Unity/Scripts/Entity/Components/Interactive/EntityInteractive.cs @@ -17,8 +17,6 @@ namespace BITKit.Entities.Player private IntervalUpdate cd = new(0.08f); [Inject] private IHealth _health; - [Inject] - private InputActionGroup _inputActionReference; public override void OnStart() { diff --git a/Assets/BITKit/Unity/Scripts/Entity/Components/VFX/BITKit.Entities.VFX.asmdef b/Assets/BITKit/Unity/Scripts/Entity/Components/VFX/BITKit.Entities.VFX.asmdef new file mode 100644 index 000000000..8424a3500 --- /dev/null +++ b/Assets/BITKit/Unity/Scripts/Entity/Components/VFX/BITKit.Entities.VFX.asmdef @@ -0,0 +1,20 @@ +{ + "name": "BITKit.Entities.VFX", + "rootNamespace": "", + "references": [ + "GUID:14fe60d984bf9f84eac55c6ea033a8f4", + "GUID:709caf8d7fb6ef24bbba0ab9962a3ad0", + "GUID:ea5474181b324dd49a5976cd68f44f18", + "GUID:d525ad6bd40672747bde77962f1c401e", + "GUID:49b49c76ee64f6b41bf28ef951cb0e50" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/BITKit/Unity/Scripts/Entity/Components/VFX/EntityVFXPlayer.cs b/Assets/BITKit/Unity/Scripts/Entity/Components/VFX/EntityVFXPlayer.cs new file mode 100644 index 000000000..3a367d0b3 --- /dev/null +++ b/Assets/BITKit/Unity/Scripts/Entity/Components/VFX/EntityVFXPlayer.cs @@ -0,0 +1,27 @@ +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; + +namespace BITKit.Entities.VFX +{ + public class EntityVFXPlayer : EntityComponent + { + [SerializeReference,SubclassSelector] private IReference[] vfxReferences; + [SerializeField] private VFXPlayer vfxPlayer; + private readonly List keyWords=new(); + public override void OnAwake() + { + base.OnAwake(); + keyWords.AddRange(vfxReferences.Select(x=>x.Value)); + entity.AddListener(Constant.Animation.Play, Play); + } + + private void Play(string animationName) + { + if (isActiveAndEnabled is false) return; + if (keyWords.Contains(animationName) is false) return; + vfxPlayer.Execute(); + } + } +} diff --git a/Assets/BITKit/Unity/Scripts/Entity/Core/Entity.cs b/Assets/BITKit/Unity/Scripts/Entity/Core/Entity.cs index f678d224a..27615a26a 100644 --- a/Assets/BITKit/Unity/Scripts/Entity/Core/Entity.cs +++ b/Assets/BITKit/Unity/Scripts/Entity/Core/Entity.cs @@ -62,11 +62,28 @@ namespace BITKit.Entities else if(attribute?.CanBeNull is false) { BIT4Log.Warning($"{name}未找到{obj.GetType().Name}需要的{type.FullName}"); - BIT4Log.Warning(genericEvent.GetDiagnostics()); + //BIT4Log.Warning(genericEvent.GetDiagnostics()); } } } + public void AddService(T service) + { + AddService(typeof(T),service); + } + + public void AddService(object service) + { + AddService(service.GetType(),service); + } + + public void AddService(Type type, object service) + { + genericEvent.Set(type,service); + genericEvent.Set(type.FullName, service); + genericEvent.SetDirect(type.FullName,service); + } + private CancellationToken _cancellationToken; private bool isInitialized; private Core.Entites.IEntityComponent[] _components => entityComponents.Cast().ToArray(); @@ -85,6 +102,7 @@ namespace BITKit.Entities try { var monoBehaviours = GetComponentsInChildren(true); + entityComponents.ForEach(x => x.Initialize(this)); foreach (var x in monoBehaviours) { foreach (var att in x @@ -95,9 +113,7 @@ namespace BITKit.Entities .OfType() ) { - genericEvent.Set(att.Type,x); - genericEvent.Set(att.Type.FullName, x); - genericEvent.SetDirect(att.Type.FullName,x); + AddService(att.Type, x); } genericEvent.Set(x.GetType(),x); } @@ -105,7 +121,7 @@ namespace BITKit.Entities { Inject(x); } - entityComponents.ForEach(x => x.Initialize(this)); + entityComponents.ForEach(x => x.OnAwake()); entityComponents.ForEach(x => x.OnStart()); diff --git a/Assets/BITKit/Unity/Scripts/Entity/Core/IEntity.cs b/Assets/BITKit/Unity/Scripts/Entity/Core/IEntity.cs index 4b3549c59..274545a26 100644 --- a/Assets/BITKit/Unity/Scripts/Entity/Core/IEntity.cs +++ b/Assets/BITKit/Unity/Scripts/Entity/Core/IEntity.cs @@ -11,6 +11,9 @@ namespace BITKit.Entities public interface IEntity :BITKit.Core.Entites.IEntity,IGenericEvent, IDatabase, IProcessor, ICallback { IEntityComponent[] entityComponents { get; set; } + void AddService(T service); + void AddService(object service); + void AddService(Type type, object service); } public class IEntityReader : NetMessageReader { diff --git a/Assets/BITKit/Unity/Scripts/Extensions/GameObjectExtensions.cs b/Assets/BITKit/Unity/Scripts/Extensions/GameObjectExtensions.cs new file mode 100644 index 000000000..26c0f0832 --- /dev/null +++ b/Assets/BITKit/Unity/Scripts/Extensions/GameObjectExtensions.cs @@ -0,0 +1,14 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace BITKit +{ + public static class GameObjectExtensions + { + public static T GetOrAddComponent(this GameObject gameObject) where T : Component + { + return gameObject.TryGetComponent(out var t) ? t : gameObject.AddComponent(); + } + } +} diff --git a/Assets/BITKit/Unity/Scripts/Physics/PhysicsBasedAnimation.cs b/Assets/BITKit/Unity/Scripts/Physics/PhysicsBasedAnimation.cs index 79ba474af..9377b7fb9 100644 --- a/Assets/BITKit/Unity/Scripts/Physics/PhysicsBasedAnimation.cs +++ b/Assets/BITKit/Unity/Scripts/Physics/PhysicsBasedAnimation.cs @@ -28,7 +28,11 @@ namespace BITKit.Physics { foreach (var x in jointConfigures) { - x.InitialRotation=x.animate.localRotation; + x.InitialRotation= x.animate.localRotation; + if (x.animate.localRotation != x.joint.transform.localRotation) + { + BIT4Log.Log($"{x.animate.name}初始旋转与关节旋转不一致,将会导致动画不正确"); + } } } private void FixedUpdate() diff --git a/Assets/BITKit/Unity/Scripts/Utility/Editor/BITInspector.cs b/Assets/BITKit/Unity/Scripts/Utility/Editor/BITInspector.cs index c88272e79..234811838 100644 --- a/Assets/BITKit/Unity/Scripts/Utility/Editor/BITInspector.cs +++ b/Assets/BITKit/Unity/Scripts/Utility/Editor/BITInspector.cs @@ -134,6 +134,13 @@ namespace BITKit protected static void FillDefaultInspector(VisualElement container, SerializedObject serializedObject, bool hideScript) { container.Clear(); + + if (serializedObject.targetObject is null) + { + var label = container.Create