Initial import
This commit is contained in:
32
.gitignore
vendored
Normal file
32
.gitignore
vendored
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
[Ll]ibrary/
|
||||||
|
[Tt]emp/
|
||||||
|
[Oo]bj/
|
||||||
|
[Bb]uild/
|
||||||
|
[Bb]uilds/
|
||||||
|
[Ll]ogs/
|
||||||
|
[Uu]ser[Ss]ettings/
|
||||||
|
|
||||||
|
# Memory captures
|
||||||
|
MemoryCaptures/
|
||||||
|
|
||||||
|
# Addressables
|
||||||
|
ServerData/
|
||||||
|
|
||||||
|
# Visual Studio and Rider
|
||||||
|
.vs/
|
||||||
|
.idea/
|
||||||
|
*.csproj
|
||||||
|
*.sln
|
||||||
|
*.slnx
|
||||||
|
*.user
|
||||||
|
*.rsuser
|
||||||
|
*.suo
|
||||||
|
*.tmp
|
||||||
|
|
||||||
|
# Unity generated files
|
||||||
|
Assets/AssetStoreTools*
|
||||||
|
Assets/Plugins/Editor/JetBrains*
|
||||||
|
|
||||||
|
# OS files
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
6
.vsconfig
Normal file
6
.vsconfig
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"version": "1.0",
|
||||||
|
"components": [
|
||||||
|
"Microsoft.VisualStudio.Workload.ManagedGame"
|
||||||
|
]
|
||||||
|
}
|
||||||
1057
Assets/InputSystem_Actions.inputactions
Normal file
1057
Assets/InputSystem_Actions.inputactions
Normal file
File diff suppressed because it is too large
Load Diff
14
Assets/InputSystem_Actions.inputactions.meta
Normal file
14
Assets/InputSystem_Actions.inputactions.meta
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 052faaac586de48259a63d0c4782560b
|
||||||
|
ScriptedImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
script: {fileID: 11500000, guid: 8404be70184654265930450def6a9037, type: 3}
|
||||||
|
generateWrapperCode: 0
|
||||||
|
wrapperCodePath:
|
||||||
|
wrapperClassName:
|
||||||
|
wrapperCodeNamespace:
|
||||||
34
Assets/Readme.asset
Normal file
34
Assets/Readme.asset
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
%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: fcf7219bab7fe46a1ad266029b2fee19, type: 3}
|
||||||
|
m_Name: Readme
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
icon: {fileID: 2800000, guid: 727a75301c3d24613a3ebcec4a24c2c8, type: 3}
|
||||||
|
title: URP Empty Template
|
||||||
|
sections:
|
||||||
|
- heading: Welcome to the Universal Render Pipeline
|
||||||
|
text: This template includes the settings and assets you need to start creating with the Universal Render Pipeline.
|
||||||
|
linkText:
|
||||||
|
url:
|
||||||
|
- heading: URP Documentation
|
||||||
|
text:
|
||||||
|
linkText: Read more about URP
|
||||||
|
url: https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@latest
|
||||||
|
- heading: Forums
|
||||||
|
text:
|
||||||
|
linkText: Get answers and support
|
||||||
|
url: https://forum.unity.com/forums/universal-render-pipeline.383/
|
||||||
|
- heading: Report bugs
|
||||||
|
text:
|
||||||
|
linkText: Submit a report
|
||||||
|
url: https://unity3d.com/unity/qa/bug-reporting
|
||||||
|
loadedLayout: 1
|
||||||
8
Assets/Readme.asset.meta
Normal file
8
Assets/Readme.asset.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8105016687592461f977c054a80ce2f2
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/Scenes.meta
Normal file
8
Assets/Scenes.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 21371b1ee9182084fab8c9c8ac8809bf
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
432
Assets/Scenes/SampleScene.unity
Normal file
432
Assets/Scenes/SampleScene.unity
Normal file
@@ -0,0 +1,432 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!29 &1
|
||||||
|
OcclusionCullingSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_OcclusionBakeSettings:
|
||||||
|
smallestOccluder: 5
|
||||||
|
smallestHole: 0.25
|
||||||
|
backfaceThreshold: 100
|
||||||
|
m_SceneGUID: 00000000000000000000000000000000
|
||||||
|
m_OcclusionCullingData: {fileID: 0}
|
||||||
|
--- !u!104 &2
|
||||||
|
RenderSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 10
|
||||||
|
m_Fog: 0
|
||||||
|
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
|
||||||
|
m_FogMode: 3
|
||||||
|
m_FogDensity: 0.01
|
||||||
|
m_LinearFogStart: 0
|
||||||
|
m_LinearFogEnd: 300
|
||||||
|
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
|
||||||
|
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
|
||||||
|
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
|
||||||
|
m_AmbientIntensity: 1
|
||||||
|
m_AmbientMode: 0
|
||||||
|
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
|
||||||
|
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_HaloStrength: 0.5
|
||||||
|
m_FlareStrength: 1
|
||||||
|
m_FlareFadeSpeed: 3
|
||||||
|
m_HaloTexture: {fileID: 0}
|
||||||
|
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_DefaultReflectionMode: 0
|
||||||
|
m_DefaultReflectionResolution: 128
|
||||||
|
m_ReflectionBounces: 1
|
||||||
|
m_ReflectionIntensity: 1
|
||||||
|
m_CustomReflection: {fileID: 0}
|
||||||
|
m_Sun: {fileID: 0}
|
||||||
|
m_IndirectSpecularColor: {r: 0.18028378, g: 0.22571412, b: 0.30692285, a: 1}
|
||||||
|
m_UseRadianceAmbientProbe: 0
|
||||||
|
--- !u!157 &3
|
||||||
|
LightmapSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 12
|
||||||
|
m_GISettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_BounceScale: 1
|
||||||
|
m_IndirectOutputScale: 1
|
||||||
|
m_AlbedoBoost: 1
|
||||||
|
m_EnvironmentLightingMode: 0
|
||||||
|
m_EnableBakedLightmaps: 1
|
||||||
|
m_EnableRealtimeLightmaps: 0
|
||||||
|
m_LightmapEditorSettings:
|
||||||
|
serializedVersion: 12
|
||||||
|
m_Resolution: 2
|
||||||
|
m_BakeResolution: 40
|
||||||
|
m_AtlasSize: 1024
|
||||||
|
m_AO: 0
|
||||||
|
m_AOMaxDistance: 1
|
||||||
|
m_CompAOExponent: 1
|
||||||
|
m_CompAOExponentDirect: 0
|
||||||
|
m_ExtractAmbientOcclusion: 0
|
||||||
|
m_Padding: 2
|
||||||
|
m_LightmapParameters: {fileID: 0}
|
||||||
|
m_LightmapsBakeMode: 1
|
||||||
|
m_TextureCompression: 1
|
||||||
|
m_ReflectionCompression: 2
|
||||||
|
m_MixedBakeMode: 2
|
||||||
|
m_BakeBackend: 1
|
||||||
|
m_PVRSampling: 1
|
||||||
|
m_PVRDirectSampleCount: 32
|
||||||
|
m_PVRSampleCount: 512
|
||||||
|
m_PVRBounces: 2
|
||||||
|
m_PVREnvironmentSampleCount: 256
|
||||||
|
m_PVREnvironmentReferencePointCount: 2048
|
||||||
|
m_PVRFilteringMode: 1
|
||||||
|
m_PVRDenoiserTypeDirect: 1
|
||||||
|
m_PVRDenoiserTypeIndirect: 1
|
||||||
|
m_PVRDenoiserTypeAO: 1
|
||||||
|
m_PVRFilterTypeDirect: 0
|
||||||
|
m_PVRFilterTypeIndirect: 0
|
||||||
|
m_PVRFilterTypeAO: 0
|
||||||
|
m_PVREnvironmentMIS: 1
|
||||||
|
m_PVRCulling: 1
|
||||||
|
m_PVRFilteringGaussRadiusDirect: 1
|
||||||
|
m_PVRFilteringGaussRadiusIndirect: 5
|
||||||
|
m_PVRFilteringGaussRadiusAO: 2
|
||||||
|
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
|
||||||
|
m_PVRFilteringAtrousPositionSigmaIndirect: 2
|
||||||
|
m_PVRFilteringAtrousPositionSigmaAO: 1
|
||||||
|
m_ExportTrainingData: 0
|
||||||
|
m_TrainingDataDestination: TrainingData
|
||||||
|
m_LightProbeSampleCountMultiplier: 4
|
||||||
|
m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_LightingSettings: {fileID: 0}
|
||||||
|
--- !u!196 &4
|
||||||
|
NavMeshSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_BuildSettings:
|
||||||
|
serializedVersion: 3
|
||||||
|
agentTypeID: 0
|
||||||
|
agentRadius: 0.5
|
||||||
|
agentHeight: 2
|
||||||
|
agentSlope: 45
|
||||||
|
agentClimb: 0.4
|
||||||
|
ledgeDropHeight: 0
|
||||||
|
maxJumpAcrossDistance: 0
|
||||||
|
minRegionArea: 2
|
||||||
|
manualCellSize: 0
|
||||||
|
cellSize: 0.16666667
|
||||||
|
manualTileSize: 0
|
||||||
|
tileSize: 256
|
||||||
|
buildHeightMesh: 0
|
||||||
|
maxJobWorkers: 0
|
||||||
|
preserveTilesOutsideBounds: 0
|
||||||
|
debug:
|
||||||
|
m_Flags: 0
|
||||||
|
m_NavMeshData: {fileID: 0}
|
||||||
|
--- !u!1 &330585543
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 330585546}
|
||||||
|
- component: {fileID: 330585545}
|
||||||
|
- component: {fileID: 330585544}
|
||||||
|
- component: {fileID: 330585547}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Main Camera
|
||||||
|
m_TagString: MainCamera
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!81 &330585544
|
||||||
|
AudioListener:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 330585543}
|
||||||
|
m_Enabled: 1
|
||||||
|
--- !u!20 &330585545
|
||||||
|
Camera:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 330585543}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 2
|
||||||
|
m_ClearFlags: 1
|
||||||
|
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
|
||||||
|
m_projectionMatrixMode: 1
|
||||||
|
m_GateFitMode: 2
|
||||||
|
m_FOVAxisMode: 0
|
||||||
|
m_Iso: 200
|
||||||
|
m_ShutterSpeed: 0.005
|
||||||
|
m_Aperture: 16
|
||||||
|
m_FocusDistance: 10
|
||||||
|
m_FocalLength: 50
|
||||||
|
m_BladeCount: 5
|
||||||
|
m_Curvature: {x: 2, y: 11}
|
||||||
|
m_BarrelClipping: 0.25
|
||||||
|
m_Anamorphism: 0
|
||||||
|
m_SensorSize: {x: 36, y: 24}
|
||||||
|
m_LensShift: {x: 0, y: 0}
|
||||||
|
m_NormalizedViewPortRect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 1
|
||||||
|
height: 1
|
||||||
|
near clip plane: 0.3
|
||||||
|
far clip plane: 1000
|
||||||
|
field of view: 60
|
||||||
|
orthographic: 0
|
||||||
|
orthographic size: 5
|
||||||
|
m_Depth: -1
|
||||||
|
m_CullingMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_RenderingPath: -1
|
||||||
|
m_TargetTexture: {fileID: 0}
|
||||||
|
m_TargetDisplay: 0
|
||||||
|
m_TargetEye: 3
|
||||||
|
m_HDR: 1
|
||||||
|
m_AllowMSAA: 1
|
||||||
|
m_AllowDynamicResolution: 0
|
||||||
|
m_ForceIntoRT: 0
|
||||||
|
m_OcclusionCulling: 1
|
||||||
|
m_StereoConvergence: 10
|
||||||
|
m_StereoSeparation: 0.022
|
||||||
|
--- !u!4 &330585546
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 330585543}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 1, z: -10}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &330585547
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 330585543}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_RenderShadows: 1
|
||||||
|
m_RequiresDepthTextureOption: 2
|
||||||
|
m_RequiresOpaqueTextureOption: 2
|
||||||
|
m_CameraType: 0
|
||||||
|
m_Cameras: []
|
||||||
|
m_RendererIndex: -1
|
||||||
|
m_VolumeLayerMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 1
|
||||||
|
m_VolumeTrigger: {fileID: 0}
|
||||||
|
m_VolumeFrameworkUpdateModeOption: 2
|
||||||
|
m_RenderPostProcessing: 1
|
||||||
|
m_Antialiasing: 0
|
||||||
|
m_AntialiasingQuality: 2
|
||||||
|
m_StopNaN: 0
|
||||||
|
m_Dithering: 0
|
||||||
|
m_ClearDepth: 1
|
||||||
|
m_AllowXRRendering: 1
|
||||||
|
m_AllowHDROutput: 1
|
||||||
|
m_UseScreenCoordOverride: 0
|
||||||
|
m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_RequiresDepthTexture: 0
|
||||||
|
m_RequiresColorTexture: 0
|
||||||
|
m_Version: 2
|
||||||
|
m_TaaSettings:
|
||||||
|
quality: 3
|
||||||
|
frameInfluence: 0.1
|
||||||
|
jitterScale: 1
|
||||||
|
mipBias: 0
|
||||||
|
varianceClampScale: 0.9
|
||||||
|
contrastAdaptiveSharpening: 0
|
||||||
|
--- !u!1 &410087039
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 410087041}
|
||||||
|
- component: {fileID: 410087040}
|
||||||
|
- component: {fileID: 410087042}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Directional Light
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!108 &410087040
|
||||||
|
Light:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 410087039}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 11
|
||||||
|
m_Type: 1
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_Intensity: 2
|
||||||
|
m_Range: 10
|
||||||
|
m_SpotAngle: 30
|
||||||
|
m_InnerSpotAngle: 21.80208
|
||||||
|
m_CookieSize: 10
|
||||||
|
m_Shadows:
|
||||||
|
m_Type: 2
|
||||||
|
m_Resolution: -1
|
||||||
|
m_CustomResolution: -1
|
||||||
|
m_Strength: 1
|
||||||
|
m_Bias: 0.05
|
||||||
|
m_NormalBias: 0.4
|
||||||
|
m_NearPlane: 0.2
|
||||||
|
m_CullingMatrixOverride:
|
||||||
|
e00: 1
|
||||||
|
e01: 0
|
||||||
|
e02: 0
|
||||||
|
e03: 0
|
||||||
|
e10: 0
|
||||||
|
e11: 1
|
||||||
|
e12: 0
|
||||||
|
e13: 0
|
||||||
|
e20: 0
|
||||||
|
e21: 0
|
||||||
|
e22: 1
|
||||||
|
e23: 0
|
||||||
|
e30: 0
|
||||||
|
e31: 0
|
||||||
|
e32: 0
|
||||||
|
e33: 1
|
||||||
|
m_UseCullingMatrixOverride: 0
|
||||||
|
m_Cookie: {fileID: 0}
|
||||||
|
m_DrawHalo: 0
|
||||||
|
m_Flare: {fileID: 0}
|
||||||
|
m_RenderMode: 0
|
||||||
|
m_CullingMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_RenderingLayerMask: 1
|
||||||
|
m_Lightmapping: 4
|
||||||
|
m_LightShadowCasterMode: 0
|
||||||
|
m_AreaSize: {x: 1, y: 1}
|
||||||
|
m_BounceIntensity: 1
|
||||||
|
m_ColorTemperature: 5000
|
||||||
|
m_UseColorTemperature: 1
|
||||||
|
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_UseBoundingSphereOverride: 0
|
||||||
|
m_UseViewFrustumForShadowCasterCull: 1
|
||||||
|
m_ForceVisible: 0
|
||||||
|
m_ShadowRadius: 0
|
||||||
|
m_ShadowAngle: 0
|
||||||
|
--- !u!4 &410087041
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 410087039}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
|
||||||
|
m_LocalPosition: {x: 0, y: 3, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
|
||||||
|
--- !u!114 &410087042
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 410087039}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Version: 3
|
||||||
|
m_UsePipelineSettings: 1
|
||||||
|
m_AdditionalLightsShadowResolutionTier: 2
|
||||||
|
m_LightLayerMask: 1
|
||||||
|
m_RenderingLayers: 1
|
||||||
|
m_CustomShadowLayers: 0
|
||||||
|
m_ShadowLayerMask: 1
|
||||||
|
m_ShadowRenderingLayers: 1
|
||||||
|
m_LightCookieSize: {x: 1, y: 1}
|
||||||
|
m_LightCookieOffset: {x: 0, y: 0}
|
||||||
|
m_SoftShadowQuality: 1
|
||||||
|
--- !u!1 &832575517
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 832575519}
|
||||||
|
- component: {fileID: 832575518}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Global Volume
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!114 &832575518
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 832575517}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_IsGlobal: 1
|
||||||
|
priority: 0
|
||||||
|
blendDistance: 0
|
||||||
|
weight: 1
|
||||||
|
sharedProfile: {fileID: 11400000, guid: 10fc4df2da32a41aaa32d77bc913491c, type: 2}
|
||||||
|
--- !u!4 &832575519
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 832575517}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!1660057539 &9223372036854775807
|
||||||
|
SceneRoots:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_Roots:
|
||||||
|
- {fileID: 330585546}
|
||||||
|
- {fileID: 410087041}
|
||||||
|
- {fileID: 832575519}
|
||||||
7
Assets/Scenes/SampleScene.unity.meta
Normal file
7
Assets/Scenes/SampleScene.unity.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 99c9720ab356a0642a771bea13969a05
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/Scripts.meta
Normal file
8
Assets/Scripts.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: adcba165aa9a1684e895f3baf95e44b0
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/Scripts/Authoring.meta
Normal file
8
Assets/Scripts/Authoring.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1a484a2375b573b4e9ed65298416f27e
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
67
Assets/Scripts/Authoring/BuildingAuthoring.cs
Normal file
67
Assets/Scripts/Authoring/BuildingAuthoring.cs
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
using Unity.Entities;
|
||||||
|
using UnityEngine;
|
||||||
|
using EE2Clone.Components;
|
||||||
|
using EE2Clone.Data;
|
||||||
|
|
||||||
|
namespace EE2Clone.Authoring
|
||||||
|
{
|
||||||
|
public class BuildingAuthoring : MonoBehaviour
|
||||||
|
{
|
||||||
|
public BuildingDataSO BuildingData;
|
||||||
|
public bool StartConstructed = false;
|
||||||
|
|
||||||
|
public class Baker : Baker<BuildingAuthoring>
|
||||||
|
{
|
||||||
|
public override void Bake(BuildingAuthoring authoring)
|
||||||
|
{
|
||||||
|
var data = authoring.BuildingData;
|
||||||
|
if (data == null) return;
|
||||||
|
|
||||||
|
var entity = GetEntity(TransformUsageFlags.Dynamic);
|
||||||
|
|
||||||
|
AddComponent(entity, new BuildingTag());
|
||||||
|
AddComponent(entity, new Health
|
||||||
|
{
|
||||||
|
Current = authoring.StartConstructed ? data.MaxHealth : 1,
|
||||||
|
Max = data.MaxHealth
|
||||||
|
});
|
||||||
|
AddComponent(entity, new OwnerPlayer { PlayerId = 0 });
|
||||||
|
AddComponent(entity, new BuildingTypeComponent { Value = data.BuildingType });
|
||||||
|
AddComponent(entity, new LineOfSight { Range = data.LineOfSightRange });
|
||||||
|
AddComponent(entity, new EpochLevel { Value = data.RequiredEpoch });
|
||||||
|
|
||||||
|
if (!authoring.StartConstructed)
|
||||||
|
{
|
||||||
|
AddComponent(entity, new UnderConstructionTag());
|
||||||
|
AddComponent(entity, new ConstructionProgress
|
||||||
|
{
|
||||||
|
Progress = 0f,
|
||||||
|
BuildTime = data.BuildTime
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (data.TerritoryRadius > 0)
|
||||||
|
{
|
||||||
|
AddComponent(entity, new TerritorySource { Radius = data.TerritoryRadius });
|
||||||
|
}
|
||||||
|
|
||||||
|
if (data.ProvidesPopulation > 0)
|
||||||
|
{
|
||||||
|
AddComponent(entity, new ProvidesPopulation { Amount = data.ProvidesPopulation });
|
||||||
|
}
|
||||||
|
|
||||||
|
AddComponent(entity, new RallyPoint { Position = default });
|
||||||
|
|
||||||
|
// Production queue
|
||||||
|
AddBuffer<ProductionQueueElement>(entity);
|
||||||
|
AddBuffer<ResearchQueueElement>(entity);
|
||||||
|
|
||||||
|
// Dropoff
|
||||||
|
if (data.IsDropoff && data.AcceptedResourceTypes != null && data.AcceptedResourceTypes.Length > 0)
|
||||||
|
{
|
||||||
|
AddComponent(entity, new DropoffBuilding { AcceptedType = data.AcceptedResourceTypes[0] });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Scripts/Authoring/BuildingAuthoring.cs.meta
Normal file
2
Assets/Scripts/Authoring/BuildingAuthoring.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 37310523fb4035f4b96ce9b3d32af1f3
|
||||||
44
Assets/Scripts/Authoring/PlayerStateAuthoring.cs
Normal file
44
Assets/Scripts/Authoring/PlayerStateAuthoring.cs
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
using Unity.Entities;
|
||||||
|
using UnityEngine;
|
||||||
|
using EE2Clone.Components;
|
||||||
|
using EE2Clone.Core;
|
||||||
|
|
||||||
|
namespace EE2Clone.Authoring
|
||||||
|
{
|
||||||
|
public class PlayerStateAuthoring : MonoBehaviour
|
||||||
|
{
|
||||||
|
public int StartingFood = 200;
|
||||||
|
public int StartingWood = 200;
|
||||||
|
public int StartingStone = 100;
|
||||||
|
public int StartingGold = 100;
|
||||||
|
|
||||||
|
public class Baker : Baker<PlayerStateAuthoring>
|
||||||
|
{
|
||||||
|
public override void Bake(PlayerStateAuthoring authoring)
|
||||||
|
{
|
||||||
|
var entity = GetEntity(TransformUsageFlags.None);
|
||||||
|
|
||||||
|
AddComponent(entity, new PlayerStateComponent
|
||||||
|
{
|
||||||
|
PlayerId = 0,
|
||||||
|
CurrentEpoch = Epoch.StoneAge,
|
||||||
|
PopulationCurrent = 0,
|
||||||
|
PopulationMax = GameConstants.StartingPopulationCap,
|
||||||
|
CivilizationId = 0,
|
||||||
|
IsAlive = true
|
||||||
|
});
|
||||||
|
|
||||||
|
AddComponent(entity, new PlayerResourcesComponent
|
||||||
|
{
|
||||||
|
Food = authoring.StartingFood,
|
||||||
|
Wood = authoring.StartingWood,
|
||||||
|
Stone = authoring.StartingStone,
|
||||||
|
Gold = authoring.StartingGold,
|
||||||
|
Tin = 0
|
||||||
|
});
|
||||||
|
|
||||||
|
AddBuffer<PlayerTechBufferElement>(entity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Scripts/Authoring/PlayerStateAuthoring.cs.meta
Normal file
2
Assets/Scripts/Authoring/PlayerStateAuthoring.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 78cb57b57a35e8e44951d464cc24dfab
|
||||||
28
Assets/Scripts/Authoring/ProjectileAuthoring.cs
Normal file
28
Assets/Scripts/Authoring/ProjectileAuthoring.cs
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
using Unity.Entities;
|
||||||
|
using UnityEngine;
|
||||||
|
using EE2Clone.Components;
|
||||||
|
|
||||||
|
namespace EE2Clone.Authoring
|
||||||
|
{
|
||||||
|
public class ProjectileAuthoring : MonoBehaviour
|
||||||
|
{
|
||||||
|
public float Speed = 20f;
|
||||||
|
|
||||||
|
public class Baker : Baker<ProjectileAuthoring>
|
||||||
|
{
|
||||||
|
public override void Bake(ProjectileAuthoring authoring)
|
||||||
|
{
|
||||||
|
var entity = GetEntity(TransformUsageFlags.Dynamic);
|
||||||
|
|
||||||
|
AddComponent(entity, new ProjectileTag());
|
||||||
|
AddComponent(entity, new ProjectileData
|
||||||
|
{
|
||||||
|
Target = Entity.Null,
|
||||||
|
Damage = 0,
|
||||||
|
Speed = authoring.Speed,
|
||||||
|
OwnerPlayerId = 0
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Scripts/Authoring/ProjectileAuthoring.cs.meta
Normal file
2
Assets/Scripts/Authoring/ProjectileAuthoring.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e6647a589e575c94788124df33f6dffd
|
||||||
28
Assets/Scripts/Authoring/ResourceNodeAuthoring.cs
Normal file
28
Assets/Scripts/Authoring/ResourceNodeAuthoring.cs
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
using Unity.Entities;
|
||||||
|
using UnityEngine;
|
||||||
|
using EE2Clone.Components;
|
||||||
|
using EE2Clone.Core;
|
||||||
|
|
||||||
|
namespace EE2Clone.Authoring
|
||||||
|
{
|
||||||
|
public class ResourceNodeAuthoring : MonoBehaviour
|
||||||
|
{
|
||||||
|
public ResourceType ResourceType = ResourceType.Food;
|
||||||
|
public int StartingAmount = 500;
|
||||||
|
|
||||||
|
public class Baker : Baker<ResourceNodeAuthoring>
|
||||||
|
{
|
||||||
|
public override void Bake(ResourceNodeAuthoring authoring)
|
||||||
|
{
|
||||||
|
var entity = GetEntity(TransformUsageFlags.Dynamic);
|
||||||
|
|
||||||
|
AddComponent(entity, new ResourceNodeTag());
|
||||||
|
AddComponent(entity, new ResourceNode
|
||||||
|
{
|
||||||
|
Type = authoring.ResourceType,
|
||||||
|
RemainingAmount = authoring.StartingAmount
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Scripts/Authoring/ResourceNodeAuthoring.cs.meta
Normal file
2
Assets/Scripts/Authoring/ResourceNodeAuthoring.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0c7d47019d3edcc44b3e904abfe37c5c
|
||||||
72
Assets/Scripts/Authoring/UnitAuthoring.cs
Normal file
72
Assets/Scripts/Authoring/UnitAuthoring.cs
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
using Unity.Entities;
|
||||||
|
using UnityEngine;
|
||||||
|
using EE2Clone.Components;
|
||||||
|
using EE2Clone.Core;
|
||||||
|
using EE2Clone.Data;
|
||||||
|
|
||||||
|
namespace EE2Clone.Authoring
|
||||||
|
{
|
||||||
|
public class UnitAuthoring : MonoBehaviour
|
||||||
|
{
|
||||||
|
public UnitDataSO UnitData;
|
||||||
|
|
||||||
|
public class Baker : Baker<UnitAuthoring>
|
||||||
|
{
|
||||||
|
public override void Bake(UnitAuthoring authoring)
|
||||||
|
{
|
||||||
|
var data = authoring.UnitData;
|
||||||
|
if (data == null) return;
|
||||||
|
|
||||||
|
var entity = GetEntity(TransformUsageFlags.Dynamic);
|
||||||
|
|
||||||
|
AddComponent(entity, new UnitTag());
|
||||||
|
AddComponent(entity, new Health { Current = data.MaxHealth, Max = data.MaxHealth });
|
||||||
|
AddComponent(entity, new OwnerPlayer { PlayerId = 0 });
|
||||||
|
AddComponent(entity, new MovementSpeed { Value = data.MoveSpeed });
|
||||||
|
AddComponent(entity, new MoveTarget { Position = default, IsActive = false });
|
||||||
|
AddComponent(entity, new AttackData
|
||||||
|
{
|
||||||
|
Damage = data.AttackDamage,
|
||||||
|
Range = data.AttackRange,
|
||||||
|
AttackCooldown = data.AttackCooldown,
|
||||||
|
CooldownRemaining = 0
|
||||||
|
});
|
||||||
|
AddComponent(entity, new ArmorData { Value = data.Armor });
|
||||||
|
AddComponent(entity, new UnitClassComponent { Value = data.UnitClass });
|
||||||
|
AddComponent(entity, new UnitStateComponent { Value = UnitState.Idle });
|
||||||
|
AddComponent(entity, new LineOfSight { Range = data.LineOfSightRange });
|
||||||
|
AddComponent(entity, new EpochLevel { Value = data.RequiredEpoch });
|
||||||
|
AddComponent(entity, new CombatTarget { Target = Entity.Null });
|
||||||
|
|
||||||
|
// Counter bonuses
|
||||||
|
var counterBuffer = AddBuffer<CounterBonusElement>(entity);
|
||||||
|
if (data.CounterBonuses != null)
|
||||||
|
{
|
||||||
|
foreach (var bonus in data.CounterBonuses)
|
||||||
|
{
|
||||||
|
counterBuffer.Add(new CounterBonusElement
|
||||||
|
{
|
||||||
|
TargetClass = bonus.TargetClass,
|
||||||
|
Multiplier = bonus.Multiplier
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Citizen-specific components
|
||||||
|
if (data.UnitClass == UnitClass.Citizen)
|
||||||
|
{
|
||||||
|
AddComponent(entity, new CitizenTag());
|
||||||
|
AddComponent(entity, new CitizenStateComponent { Value = CitizenState.Idle });
|
||||||
|
AddComponent(entity, new CarriedResource
|
||||||
|
{
|
||||||
|
Type = ResourceType.Food,
|
||||||
|
Amount = 0,
|
||||||
|
MaxCarryCapacity = data.MaxCarryCapacity
|
||||||
|
});
|
||||||
|
AddComponent(entity, new GatherTarget { Target = Entity.Null });
|
||||||
|
AddComponent(entity, new BuildTarget { Target = Entity.Null });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Scripts/Authoring/UnitAuthoring.cs.meta
Normal file
2
Assets/Scripts/Authoring/UnitAuthoring.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1bbeae99680553f46b1d3fd5c27d6342
|
||||||
8
Assets/Scripts/Components.meta
Normal file
8
Assets/Scripts/Components.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 255ecf90be61ec741848f7d763680759
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
45
Assets/Scripts/Components/Aspects.cs
Normal file
45
Assets/Scripts/Components/Aspects.cs
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
using Unity.Entities;
|
||||||
|
using Unity.Transforms;
|
||||||
|
|
||||||
|
namespace EE2Clone.Components
|
||||||
|
{
|
||||||
|
public readonly partial struct UnitAspect : IAspect
|
||||||
|
{
|
||||||
|
public readonly Entity Entity;
|
||||||
|
|
||||||
|
public readonly RefRW<LocalTransform> Transform;
|
||||||
|
public readonly RefRO<Health> Health;
|
||||||
|
public readonly RefRO<OwnerPlayer> Owner;
|
||||||
|
public readonly RefRO<MovementSpeed> Speed;
|
||||||
|
public readonly RefRW<MoveTarget> MoveTarget;
|
||||||
|
public readonly RefRO<AttackData> Attack;
|
||||||
|
public readonly RefRO<ArmorData> Armor;
|
||||||
|
public readonly RefRO<UnitClassComponent> UnitClass;
|
||||||
|
public readonly RefRW<UnitStateComponent> State;
|
||||||
|
public readonly RefRO<LineOfSight> LineOfSight;
|
||||||
|
}
|
||||||
|
|
||||||
|
public readonly partial struct BuildingAspect : IAspect
|
||||||
|
{
|
||||||
|
public readonly Entity Entity;
|
||||||
|
|
||||||
|
public readonly RefRO<LocalTransform> Transform;
|
||||||
|
public readonly RefRW<Health> Health;
|
||||||
|
public readonly RefRO<OwnerPlayer> Owner;
|
||||||
|
public readonly RefRO<BuildingTypeComponent> BuildingType;
|
||||||
|
public readonly RefRO<LineOfSight> LineOfSight;
|
||||||
|
}
|
||||||
|
|
||||||
|
public readonly partial struct GathererAspect : IAspect
|
||||||
|
{
|
||||||
|
public readonly Entity Entity;
|
||||||
|
|
||||||
|
public readonly RefRW<LocalTransform> Transform;
|
||||||
|
public readonly RefRO<OwnerPlayer> Owner;
|
||||||
|
public readonly RefRO<MovementSpeed> Speed;
|
||||||
|
public readonly RefRW<MoveTarget> MoveTarget;
|
||||||
|
public readonly RefRW<CitizenStateComponent> CitizenState;
|
||||||
|
public readonly RefRW<CarriedResource> CarriedResource;
|
||||||
|
public readonly RefRW<GatherTarget> GatherTarget;
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Scripts/Components/Aspects.cs.meta
Normal file
2
Assets/Scripts/Components/Aspects.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1d3da0d6cb90d294287efd6c1fa55c9f
|
||||||
39
Assets/Scripts/Components/BufferComponents.cs
Normal file
39
Assets/Scripts/Components/BufferComponents.cs
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
using Unity.Entities;
|
||||||
|
using Unity.NetCode;
|
||||||
|
using EE2Clone.Core;
|
||||||
|
|
||||||
|
namespace EE2Clone.Components
|
||||||
|
{
|
||||||
|
[GhostComponent]
|
||||||
|
[InternalBufferCapacity(4)]
|
||||||
|
public struct CounterBonusElement : IBufferElementData
|
||||||
|
{
|
||||||
|
[GhostField] public UnitClass TargetClass;
|
||||||
|
[GhostField] public float Multiplier;
|
||||||
|
}
|
||||||
|
|
||||||
|
[GhostComponent]
|
||||||
|
[InternalBufferCapacity(5)]
|
||||||
|
public struct ProductionQueueElement : IBufferElementData
|
||||||
|
{
|
||||||
|
[GhostField] public int UnitDataId;
|
||||||
|
[GhostField] public float TimeRemaining;
|
||||||
|
[GhostField] public float TotalTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
[GhostComponent]
|
||||||
|
[InternalBufferCapacity(2)]
|
||||||
|
public struct ResearchQueueElement : IBufferElementData
|
||||||
|
{
|
||||||
|
[GhostField] public int TechId;
|
||||||
|
[GhostField] public float TimeRemaining;
|
||||||
|
[GhostField] public float TotalTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
[GhostComponent]
|
||||||
|
[InternalBufferCapacity(32)]
|
||||||
|
public struct PlayerTechBufferElement : IBufferElementData
|
||||||
|
{
|
||||||
|
[GhostField] public int TechId;
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Scripts/Components/BufferComponents.cs.meta
Normal file
2
Assets/Scripts/Components/BufferComponents.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d3fc0cacffc268b4f966956f308fbc31
|
||||||
168
Assets/Scripts/Components/GameplayComponents.cs
Normal file
168
Assets/Scripts/Components/GameplayComponents.cs
Normal file
@@ -0,0 +1,168 @@
|
|||||||
|
using Unity.Entities;
|
||||||
|
using Unity.Mathematics;
|
||||||
|
using Unity.NetCode;
|
||||||
|
using EE2Clone.Core;
|
||||||
|
|
||||||
|
namespace EE2Clone.Components
|
||||||
|
{
|
||||||
|
[GhostComponent]
|
||||||
|
public struct Health : IComponentData
|
||||||
|
{
|
||||||
|
[GhostField] public float Current;
|
||||||
|
[GhostField] public float Max;
|
||||||
|
}
|
||||||
|
|
||||||
|
[GhostComponent]
|
||||||
|
public struct OwnerPlayer : IComponentData
|
||||||
|
{
|
||||||
|
[GhostField] public int PlayerId;
|
||||||
|
}
|
||||||
|
|
||||||
|
[GhostComponent]
|
||||||
|
public struct MovementSpeed : IComponentData
|
||||||
|
{
|
||||||
|
[GhostField] public float Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[GhostComponent]
|
||||||
|
public struct MoveTarget : IComponentData
|
||||||
|
{
|
||||||
|
[GhostField] public float3 Position;
|
||||||
|
[GhostField] public bool IsActive;
|
||||||
|
}
|
||||||
|
|
||||||
|
[GhostComponent]
|
||||||
|
public struct AttackData : IComponentData
|
||||||
|
{
|
||||||
|
[GhostField] public float Damage;
|
||||||
|
[GhostField] public float Range;
|
||||||
|
[GhostField] public float AttackCooldown;
|
||||||
|
public float CooldownRemaining;
|
||||||
|
}
|
||||||
|
|
||||||
|
[GhostComponent]
|
||||||
|
public struct ArmorData : IComponentData
|
||||||
|
{
|
||||||
|
[GhostField] public float Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[GhostComponent]
|
||||||
|
public struct UnitClassComponent : IComponentData
|
||||||
|
{
|
||||||
|
[GhostField] public UnitClass Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[GhostComponent]
|
||||||
|
public struct UnitStateComponent : IComponentData
|
||||||
|
{
|
||||||
|
[GhostField] public UnitState Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[GhostComponent]
|
||||||
|
public struct ResourceNode : IComponentData
|
||||||
|
{
|
||||||
|
[GhostField] public ResourceType Type;
|
||||||
|
[GhostField] public int RemainingAmount;
|
||||||
|
}
|
||||||
|
|
||||||
|
[GhostComponent]
|
||||||
|
public struct CarriedResource : IComponentData
|
||||||
|
{
|
||||||
|
[GhostField] public ResourceType Type;
|
||||||
|
[GhostField] public int Amount;
|
||||||
|
[GhostField] public int MaxCarryCapacity;
|
||||||
|
}
|
||||||
|
|
||||||
|
[GhostComponent]
|
||||||
|
public struct GatherTarget : IComponentData
|
||||||
|
{
|
||||||
|
[GhostField] public Entity Target;
|
||||||
|
}
|
||||||
|
|
||||||
|
[GhostComponent]
|
||||||
|
public struct BuildTarget : IComponentData
|
||||||
|
{
|
||||||
|
[GhostField] public Entity Target;
|
||||||
|
}
|
||||||
|
|
||||||
|
[GhostComponent]
|
||||||
|
public struct ConstructionProgress : IComponentData
|
||||||
|
{
|
||||||
|
[GhostField] public float Progress; // 0.0 to 1.0
|
||||||
|
[GhostField] public float BuildTime; // Total time required
|
||||||
|
}
|
||||||
|
|
||||||
|
[GhostComponent]
|
||||||
|
public struct ProductionTimer : IComponentData
|
||||||
|
{
|
||||||
|
[GhostField] public float TimeRemaining;
|
||||||
|
[GhostField] public float TotalTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
[GhostComponent]
|
||||||
|
public struct RallyPoint : IComponentData
|
||||||
|
{
|
||||||
|
[GhostField] public float3 Position;
|
||||||
|
}
|
||||||
|
|
||||||
|
[GhostComponent]
|
||||||
|
public struct TerritorySource : IComponentData
|
||||||
|
{
|
||||||
|
[GhostField] public float Radius;
|
||||||
|
}
|
||||||
|
|
||||||
|
[GhostComponent]
|
||||||
|
public struct LineOfSight : IComponentData
|
||||||
|
{
|
||||||
|
[GhostField] public float Range;
|
||||||
|
}
|
||||||
|
|
||||||
|
[GhostComponent]
|
||||||
|
public struct EpochLevel : IComponentData
|
||||||
|
{
|
||||||
|
[GhostField] public Epoch Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[GhostComponent]
|
||||||
|
public struct CitizenStateComponent : IComponentData
|
||||||
|
{
|
||||||
|
[GhostField] public CitizenState Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[GhostComponent]
|
||||||
|
public struct DropoffBuilding : IComponentData
|
||||||
|
{
|
||||||
|
[GhostField] public ResourceType AcceptedType;
|
||||||
|
}
|
||||||
|
|
||||||
|
[GhostComponent]
|
||||||
|
public struct CombatTarget : IComponentData
|
||||||
|
{
|
||||||
|
[GhostField] public Entity Target;
|
||||||
|
}
|
||||||
|
|
||||||
|
[GhostComponent]
|
||||||
|
public struct BuildingTypeComponent : IComponentData
|
||||||
|
{
|
||||||
|
[GhostField] public BuildingType Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[GhostComponent]
|
||||||
|
public struct ProvidesPopulation : IComponentData
|
||||||
|
{
|
||||||
|
[GhostField] public int Amount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public struct ProjectileData : IComponentData
|
||||||
|
{
|
||||||
|
[GhostField] public Entity Target;
|
||||||
|
[GhostField] public float Damage;
|
||||||
|
[GhostField] public float Speed;
|
||||||
|
[GhostField] public int OwnerPlayerId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public struct DeathTimer : IComponentData
|
||||||
|
{
|
||||||
|
public float TimeRemaining;
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Scripts/Components/GameplayComponents.cs.meta
Normal file
2
Assets/Scripts/Components/GameplayComponents.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 43034d84c3a5fa249b16c70c205c781d
|
||||||
61
Assets/Scripts/Components/PlayerComponents.cs
Normal file
61
Assets/Scripts/Components/PlayerComponents.cs
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
using Unity.Entities;
|
||||||
|
using Unity.NetCode;
|
||||||
|
using EE2Clone.Core;
|
||||||
|
|
||||||
|
namespace EE2Clone.Components
|
||||||
|
{
|
||||||
|
[GhostComponent(PrefabType = GhostPrefabType.All)]
|
||||||
|
public struct PlayerStateComponent : IComponentData
|
||||||
|
{
|
||||||
|
[GhostField] public int PlayerId;
|
||||||
|
[GhostField] public Epoch CurrentEpoch;
|
||||||
|
[GhostField] public int PopulationCurrent;
|
||||||
|
[GhostField] public int PopulationMax;
|
||||||
|
[GhostField] public int CivilizationId;
|
||||||
|
[GhostField] public bool IsAlive;
|
||||||
|
}
|
||||||
|
|
||||||
|
[GhostComponent(PrefabType = GhostPrefabType.All)]
|
||||||
|
public struct PlayerResourcesComponent : IComponentData
|
||||||
|
{
|
||||||
|
[GhostField] public int Food;
|
||||||
|
[GhostField] public int Wood;
|
||||||
|
[GhostField] public int Stone;
|
||||||
|
[GhostField] public int Gold;
|
||||||
|
[GhostField] public int Tin;
|
||||||
|
|
||||||
|
public int GetResource(ResourceType type)
|
||||||
|
{
|
||||||
|
return type switch
|
||||||
|
{
|
||||||
|
ResourceType.Food => Food,
|
||||||
|
ResourceType.Wood => Wood,
|
||||||
|
ResourceType.Stone => Stone,
|
||||||
|
ResourceType.Gold => Gold,
|
||||||
|
ResourceType.Tin => Tin,
|
||||||
|
_ => 0
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddResource(ResourceType type, int amount)
|
||||||
|
{
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case ResourceType.Food: Food += amount; break;
|
||||||
|
case ResourceType.Wood: Wood += amount; break;
|
||||||
|
case ResourceType.Stone: Stone += amount; break;
|
||||||
|
case ResourceType.Gold: Gold += amount; break;
|
||||||
|
case ResourceType.Tin: Tin += amount; break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool TrySpend(ResourceType type, int amount)
|
||||||
|
{
|
||||||
|
if (GetResource(type) < amount)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
AddResource(type, -amount);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Scripts/Components/PlayerComponents.cs.meta
Normal file
2
Assets/Scripts/Components/PlayerComponents.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f66e6e599792edc4594f96c856bd7ccd
|
||||||
22
Assets/Scripts/Components/Tags.cs
Normal file
22
Assets/Scripts/Components/Tags.cs
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
using Unity.Entities;
|
||||||
|
|
||||||
|
namespace EE2Clone.Components
|
||||||
|
{
|
||||||
|
public struct UnitTag : IComponentData { }
|
||||||
|
public struct BuildingTag : IComponentData { }
|
||||||
|
public struct CitizenTag : IComponentData { }
|
||||||
|
public struct ProjectileTag : IComponentData { }
|
||||||
|
public struct ResourceNodeTag : IComponentData { }
|
||||||
|
public struct SelectedTag : IComponentData { }
|
||||||
|
public struct DestroyEntityTag : IComponentData { }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Marks an entity as under construction (not yet functional).
|
||||||
|
/// </summary>
|
||||||
|
public struct UnderConstructionTag : IComponentData { }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Tag for entities that have just spawned and need initialization.
|
||||||
|
/// </summary>
|
||||||
|
public struct NewlySpawnedTag : IComponentData { }
|
||||||
|
}
|
||||||
2
Assets/Scripts/Components/Tags.cs.meta
Normal file
2
Assets/Scripts/Components/Tags.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 38e1791fd078c6a4c923d7fdb0d81da1
|
||||||
8
Assets/Scripts/Core.meta
Normal file
8
Assets/Scripts/Core.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 584693cd698b6434ea5da7d837864661
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
90
Assets/Scripts/Core/GameConstants.cs
Normal file
90
Assets/Scripts/Core/GameConstants.cs
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
namespace EE2Clone.Core
|
||||||
|
{
|
||||||
|
public enum UnitClass
|
||||||
|
{
|
||||||
|
Citizen,
|
||||||
|
Infantry,
|
||||||
|
Ranged,
|
||||||
|
Cavalry,
|
||||||
|
Siege,
|
||||||
|
Priest
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum ResourceType
|
||||||
|
{
|
||||||
|
Food,
|
||||||
|
Wood,
|
||||||
|
Stone,
|
||||||
|
Gold,
|
||||||
|
Tin
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum Epoch
|
||||||
|
{
|
||||||
|
StoneAge = 0,
|
||||||
|
BronzeAge = 1,
|
||||||
|
IronAge = 2
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum BuildingType
|
||||||
|
{
|
||||||
|
TownCenter,
|
||||||
|
House,
|
||||||
|
Barracks,
|
||||||
|
ArcheryRange,
|
||||||
|
Stable,
|
||||||
|
SiegeWorkshop,
|
||||||
|
Temple,
|
||||||
|
University,
|
||||||
|
Farm,
|
||||||
|
LumberCamp,
|
||||||
|
MiningCamp,
|
||||||
|
Quarry,
|
||||||
|
Wall,
|
||||||
|
Tower
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum CitizenState
|
||||||
|
{
|
||||||
|
Idle,
|
||||||
|
MovingToGather,
|
||||||
|
Gathering,
|
||||||
|
MovingToDropoff,
|
||||||
|
Depositing,
|
||||||
|
MovingToBuild,
|
||||||
|
Building,
|
||||||
|
Repairing,
|
||||||
|
Fighting
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum UnitState
|
||||||
|
{
|
||||||
|
Idle,
|
||||||
|
Moving,
|
||||||
|
Attacking,
|
||||||
|
Dying
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class GameConstants
|
||||||
|
{
|
||||||
|
public const int MaxPlayers = 8;
|
||||||
|
public const int MaxPopulationCap = 200;
|
||||||
|
public const int PopulationPerHouse = 5;
|
||||||
|
public const int StartingPopulationCap = 10;
|
||||||
|
|
||||||
|
public const float GatherTickInterval = 1.0f;
|
||||||
|
public const float ConstructionTickInterval = 0.5f;
|
||||||
|
|
||||||
|
public const int FlowFieldWidth = 256;
|
||||||
|
public const int FlowFieldHeight = 256;
|
||||||
|
public const float FlowFieldCellSize = 1.0f;
|
||||||
|
|
||||||
|
public const float MinDamage = 1f;
|
||||||
|
|
||||||
|
// Counter bonus multipliers (rock-paper-scissors)
|
||||||
|
public const float CounterBonusStrong = 1.5f;
|
||||||
|
public const float CounterBonusWeak = 0.75f;
|
||||||
|
public const float CounterBonusNeutral = 1.0f;
|
||||||
|
public const float SiegeBuildingBonus = 3.0f;
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Scripts/Core/GameConstants.cs.meta
Normal file
2
Assets/Scripts/Core/GameConstants.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 986c0d6aa51063547b8a637d1a4b4986
|
||||||
8
Assets/Scripts/Data.meta
Normal file
8
Assets/Scripts/Data.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7f00ac55dfbdf8748b594e18877c9c5b
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
47
Assets/Scripts/Data/BuildingDataSO.cs
Normal file
47
Assets/Scripts/Data/BuildingDataSO.cs
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
using EE2Clone.Core;
|
||||||
|
|
||||||
|
namespace EE2Clone.Data
|
||||||
|
{
|
||||||
|
[CreateAssetMenu(fileName = "NewBuildingData", menuName = "EE2Clone/Building Data")]
|
||||||
|
public class BuildingDataSO : ScriptableObject
|
||||||
|
{
|
||||||
|
[Header("Identity")]
|
||||||
|
public int Id;
|
||||||
|
public string BuildingName;
|
||||||
|
public BuildingType BuildingType;
|
||||||
|
public Epoch RequiredEpoch;
|
||||||
|
|
||||||
|
[Header("Stats")]
|
||||||
|
public float MaxHealth = 500;
|
||||||
|
public float LineOfSightRange = 8f;
|
||||||
|
public float BuildTime = 20f;
|
||||||
|
|
||||||
|
[Header("Territory")]
|
||||||
|
public float TerritoryRadius;
|
||||||
|
|
||||||
|
[Header("Population")]
|
||||||
|
public int ProvidesPopulation;
|
||||||
|
|
||||||
|
[Header("Resource Dropoff")]
|
||||||
|
public bool IsDropoff;
|
||||||
|
public ResourceType[] AcceptedResourceTypes;
|
||||||
|
|
||||||
|
[Header("Production")]
|
||||||
|
public int[] ProducibleUnitIds;
|
||||||
|
public int[] ResearchableTechIds;
|
||||||
|
|
||||||
|
[Header("Cost")]
|
||||||
|
public int FoodCost;
|
||||||
|
public int WoodCost;
|
||||||
|
public int StoneCost;
|
||||||
|
public int GoldCost;
|
||||||
|
public int TinCost;
|
||||||
|
|
||||||
|
[Header("Footprint")]
|
||||||
|
public Vector2Int FootprintSize = new(3, 3);
|
||||||
|
|
||||||
|
[Header("Visuals")]
|
||||||
|
public GameObject Prefab;
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Scripts/Data/BuildingDataSO.cs.meta
Normal file
2
Assets/Scripts/Data/BuildingDataSO.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ba7586487d870fb4dbfd31fee37961d4
|
||||||
27
Assets/Scripts/Data/CivilizationDataSO.cs
Normal file
27
Assets/Scripts/Data/CivilizationDataSO.cs
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace EE2Clone.Data
|
||||||
|
{
|
||||||
|
[CreateAssetMenu(fileName = "NewCivilizationData", menuName = "EE2Clone/Civilization Data")]
|
||||||
|
public class CivilizationDataSO : ScriptableObject
|
||||||
|
{
|
||||||
|
[Header("Identity")]
|
||||||
|
public int Id;
|
||||||
|
public string CivilizationName;
|
||||||
|
public string Description;
|
||||||
|
|
||||||
|
[Header("Starting Bonuses")]
|
||||||
|
public int BonusFood;
|
||||||
|
public int BonusWood;
|
||||||
|
public int BonusStone;
|
||||||
|
public int BonusGold;
|
||||||
|
|
||||||
|
[Header("Stat Modifiers")]
|
||||||
|
public float InfantryAttackModifier = 1f;
|
||||||
|
public float RangedAttackModifier = 1f;
|
||||||
|
public float CavalryAttackModifier = 1f;
|
||||||
|
public float GatherSpeedModifier = 1f;
|
||||||
|
public float BuildSpeedModifier = 1f;
|
||||||
|
public float ResearchSpeedModifier = 1f;
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Scripts/Data/CivilizationDataSO.cs.meta
Normal file
2
Assets/Scripts/Data/CivilizationDataSO.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d5e0e074c1ddf1743bdf4ea4688e7441
|
||||||
28
Assets/Scripts/Data/EpochDataSO.cs
Normal file
28
Assets/Scripts/Data/EpochDataSO.cs
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
using EE2Clone.Core;
|
||||||
|
|
||||||
|
namespace EE2Clone.Data
|
||||||
|
{
|
||||||
|
[CreateAssetMenu(fileName = "NewEpochData", menuName = "EE2Clone/Epoch Data")]
|
||||||
|
public class EpochDataSO : ScriptableObject
|
||||||
|
{
|
||||||
|
[Header("Identity")]
|
||||||
|
public Epoch Epoch;
|
||||||
|
public string EpochName;
|
||||||
|
public string Description;
|
||||||
|
|
||||||
|
[Header("Advance Requirements")]
|
||||||
|
public int FoodCost;
|
||||||
|
public int WoodCost;
|
||||||
|
public int StoneCost;
|
||||||
|
public int GoldCost;
|
||||||
|
public int TinCost;
|
||||||
|
public int[] RequiredTechIds;
|
||||||
|
public float AdvanceTime = 60f;
|
||||||
|
|
||||||
|
[Header("Unlocks")]
|
||||||
|
public int[] UnlockedBuildingIds;
|
||||||
|
public int[] UnlockedUnitIds;
|
||||||
|
public int[] UnlockedTechIds;
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Scripts/Data/EpochDataSO.cs.meta
Normal file
2
Assets/Scripts/Data/EpochDataSO.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1a02854ba574df84d84820e3f8feb651
|
||||||
48
Assets/Scripts/Data/TechDataSO.cs
Normal file
48
Assets/Scripts/Data/TechDataSO.cs
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
using EE2Clone.Core;
|
||||||
|
|
||||||
|
namespace EE2Clone.Data
|
||||||
|
{
|
||||||
|
[CreateAssetMenu(fileName = "NewTechData", menuName = "EE2Clone/Tech Data")]
|
||||||
|
public class TechDataSO : ScriptableObject
|
||||||
|
{
|
||||||
|
[Header("Identity")]
|
||||||
|
public int Id;
|
||||||
|
public string TechName;
|
||||||
|
public string Description;
|
||||||
|
public Epoch RequiredEpoch;
|
||||||
|
|
||||||
|
[Header("Prerequisites")]
|
||||||
|
public int[] PrerequisiteTechIds;
|
||||||
|
|
||||||
|
[Header("Research")]
|
||||||
|
public float ResearchTime = 30f;
|
||||||
|
public int FoodCost;
|
||||||
|
public int WoodCost;
|
||||||
|
public int StoneCost;
|
||||||
|
public int GoldCost;
|
||||||
|
public int TinCost;
|
||||||
|
|
||||||
|
[Header("Effects")]
|
||||||
|
public TechEffect[] Effects;
|
||||||
|
}
|
||||||
|
|
||||||
|
[System.Serializable]
|
||||||
|
public struct TechEffect
|
||||||
|
{
|
||||||
|
public TechEffectType EffectType;
|
||||||
|
public UnitClass AffectedUnitClass;
|
||||||
|
public float Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum TechEffectType
|
||||||
|
{
|
||||||
|
AttackBonus,
|
||||||
|
ArmorBonus,
|
||||||
|
SpeedBonus,
|
||||||
|
HealthBonus,
|
||||||
|
GatherSpeedBonus,
|
||||||
|
BuildSpeedBonus,
|
||||||
|
TrainSpeedBonus
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Scripts/Data/TechDataSO.cs.meta
Normal file
2
Assets/Scripts/Data/TechDataSO.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 93cdf2b99ef6a4340ab0635822ff6b95
|
||||||
51
Assets/Scripts/Data/UnitDataSO.cs
Normal file
51
Assets/Scripts/Data/UnitDataSO.cs
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
using EE2Clone.Core;
|
||||||
|
|
||||||
|
namespace EE2Clone.Data
|
||||||
|
{
|
||||||
|
[CreateAssetMenu(fileName = "NewUnitData", menuName = "EE2Clone/Unit Data")]
|
||||||
|
public class UnitDataSO : ScriptableObject
|
||||||
|
{
|
||||||
|
[Header("Identity")]
|
||||||
|
public int Id;
|
||||||
|
public string UnitName;
|
||||||
|
public UnitClass UnitClass;
|
||||||
|
public Epoch RequiredEpoch;
|
||||||
|
|
||||||
|
[Header("Stats")]
|
||||||
|
public float MaxHealth = 100;
|
||||||
|
public float MoveSpeed = 4f;
|
||||||
|
public float AttackDamage = 10f;
|
||||||
|
public float AttackRange = 1.5f;
|
||||||
|
public float AttackCooldown = 1f;
|
||||||
|
public float Armor = 1f;
|
||||||
|
public float LineOfSightRange = 10f;
|
||||||
|
|
||||||
|
[Header("Gathering (Citizens only)")]
|
||||||
|
public int MaxCarryCapacity = 10;
|
||||||
|
public float GatherSpeed = 1f;
|
||||||
|
public float BuildSpeed = 1f;
|
||||||
|
|
||||||
|
[Header("Cost")]
|
||||||
|
public int FoodCost;
|
||||||
|
public int WoodCost;
|
||||||
|
public int StoneCost;
|
||||||
|
public int GoldCost;
|
||||||
|
public int TinCost;
|
||||||
|
public float TrainTime = 10f;
|
||||||
|
public int PopulationCost = 1;
|
||||||
|
|
||||||
|
[Header("Counter Bonuses")]
|
||||||
|
public CounterBonus[] CounterBonuses;
|
||||||
|
|
||||||
|
[Header("Visuals")]
|
||||||
|
public GameObject Prefab;
|
||||||
|
}
|
||||||
|
|
||||||
|
[System.Serializable]
|
||||||
|
public struct CounterBonus
|
||||||
|
{
|
||||||
|
public UnitClass TargetClass;
|
||||||
|
public float Multiplier;
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Scripts/Data/UnitDataSO.cs.meta
Normal file
2
Assets/Scripts/Data/UnitDataSO.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c618988cd6fa6fe43a54b0e26bfd691d
|
||||||
24
Assets/Scripts/EE2Clone.asmdef
Normal file
24
Assets/Scripts/EE2Clone.asmdef
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"name": "EE2Clone",
|
||||||
|
"rootNamespace": "EE2Clone",
|
||||||
|
"references": [
|
||||||
|
"Unity.Entities",
|
||||||
|
"Unity.Entities.Hybrid",
|
||||||
|
"Unity.Transforms",
|
||||||
|
"Unity.Mathematics",
|
||||||
|
"Unity.Collections",
|
||||||
|
"Unity.Burst",
|
||||||
|
"Unity.Physics",
|
||||||
|
"Unity.NetCode",
|
||||||
|
"Unity.InputSystem"
|
||||||
|
],
|
||||||
|
"includePlatforms": [],
|
||||||
|
"excludePlatforms": [],
|
||||||
|
"allowUnsafeCode": true,
|
||||||
|
"overrideReferences": false,
|
||||||
|
"precompiledReferences": [],
|
||||||
|
"autoReferenced": true,
|
||||||
|
"defineConstraints": [],
|
||||||
|
"versionDefines": [],
|
||||||
|
"noEngineReferences": false
|
||||||
|
}
|
||||||
7
Assets/Scripts/EE2Clone.asmdef.meta
Normal file
7
Assets/Scripts/EE2Clone.asmdef.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1d4b91ddf61b827459f2f7d2db612f5b
|
||||||
|
AssemblyDefinitionImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/Scripts/Hybrid.meta
Normal file
8
Assets/Scripts/Hybrid.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: eeceb2808c5c7f04e9a5883989ed3bc2
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
219
Assets/Scripts/Hybrid/CommandDispatcher.cs
Normal file
219
Assets/Scripts/Hybrid/CommandDispatcher.cs
Normal file
@@ -0,0 +1,219 @@
|
|||||||
|
using Unity.Entities;
|
||||||
|
using Unity.Mathematics;
|
||||||
|
using Unity.Transforms;
|
||||||
|
using Unity.Collections;
|
||||||
|
using Unity.Physics;
|
||||||
|
using UnityEngine;
|
||||||
|
using EE2Clone.Components;
|
||||||
|
using EE2Clone.NetCode;
|
||||||
|
|
||||||
|
namespace EE2Clone.Hybrid
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Processes right-click context commands: move, attack, gather, build/repair.
|
||||||
|
/// Sends the appropriate RPC to the server based on what was right-clicked.
|
||||||
|
/// Client-side MonoBehaviour.
|
||||||
|
/// </summary>
|
||||||
|
public class CommandDispatcher : MonoBehaviour
|
||||||
|
{
|
||||||
|
private Camera _mainCamera;
|
||||||
|
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
_mainCamera = Camera.main;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
var input = RTSInputActions.Instance;
|
||||||
|
if (input == null || _mainCamera == null) return;
|
||||||
|
|
||||||
|
if (input.RightClickPressed)
|
||||||
|
HandleRightClick(input.MousePosition);
|
||||||
|
|
||||||
|
if (input.StopPressed)
|
||||||
|
HandleStop();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void HandleRightClick(Vector2 screenPos)
|
||||||
|
{
|
||||||
|
var selection = SelectionManager.Instance;
|
||||||
|
if (selection == null || selection.SelectedEntities.Count == 0) return;
|
||||||
|
|
||||||
|
var world = World.DefaultGameObjectInjectionWorld;
|
||||||
|
if (world == null || !world.IsCreated) return;
|
||||||
|
|
||||||
|
var em = world.EntityManager;
|
||||||
|
var ray = _mainCamera.ScreenPointToRay(new Vector3(screenPos.x, screenPos.y, 0));
|
||||||
|
|
||||||
|
// Raycast to find what was clicked
|
||||||
|
var physicsWorldQuery = em.CreateEntityQuery(typeof(PhysicsWorldSingleton));
|
||||||
|
if (physicsWorldQuery.IsEmpty) return;
|
||||||
|
|
||||||
|
var physicsWorld = physicsWorldQuery.GetSingleton<PhysicsWorldSingleton>();
|
||||||
|
var rayInput = new RaycastInput
|
||||||
|
{
|
||||||
|
Start = ray.origin,
|
||||||
|
End = ray.origin + ray.direction * 500f,
|
||||||
|
Filter = new CollisionFilter
|
||||||
|
{
|
||||||
|
BelongsTo = ~0u,
|
||||||
|
CollidesWith = ~0u,
|
||||||
|
GroupIndex = 0
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
Entity hitEntity = Entity.Null;
|
||||||
|
float3 hitPosition = float3.zero;
|
||||||
|
|
||||||
|
if (physicsWorld.CastRay(rayInput, out var hit))
|
||||||
|
{
|
||||||
|
hitEntity = physicsWorld.Bodies[hit.RigidBodyIndex].Entity;
|
||||||
|
hitPosition = hit.Position;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// No hit — use ground plane intersection
|
||||||
|
if (ray.direction.y != 0)
|
||||||
|
{
|
||||||
|
float t = -ray.origin.y / ray.direction.y;
|
||||||
|
if (t > 0)
|
||||||
|
hitPosition = new float3(ray.origin.x + ray.direction.x * t, 0, ray.origin.z + ray.direction.z * t);
|
||||||
|
}
|
||||||
|
return; // Only move command if no entity hit
|
||||||
|
}
|
||||||
|
|
||||||
|
// Determine command type based on what was clicked
|
||||||
|
if (hitEntity != Entity.Null && em.Exists(hitEntity))
|
||||||
|
{
|
||||||
|
if (em.HasComponent<ResourceNodeTag>(hitEntity))
|
||||||
|
{
|
||||||
|
// Gather command for citizens
|
||||||
|
SendGatherCommands(hitEntity);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (em.HasComponent<UnitTag>(hitEntity) || em.HasComponent<BuildingTag>(hitEntity))
|
||||||
|
{
|
||||||
|
if (em.HasComponent<OwnerPlayer>(hitEntity))
|
||||||
|
{
|
||||||
|
var owner = em.GetComponentData<OwnerPlayer>(hitEntity);
|
||||||
|
// TODO: compare with local player id
|
||||||
|
// For now, treat as enemy → attack
|
||||||
|
SendAttackCommands(hitEntity);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (em.HasComponent<BuildingTag>(hitEntity) && em.HasComponent<UnderConstructionTag>(hitEntity))
|
||||||
|
{
|
||||||
|
// Build/repair command for citizens
|
||||||
|
SendBuildRepairCommands(hitEntity);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Default: move command
|
||||||
|
SendMoveCommands(hitPosition);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SendMoveCommands(float3 position)
|
||||||
|
{
|
||||||
|
var world = World.DefaultGameObjectInjectionWorld;
|
||||||
|
if (world == null) return;
|
||||||
|
var em = world.EntityManager;
|
||||||
|
|
||||||
|
foreach (var unit in SelectionManager.Instance.SelectedEntities)
|
||||||
|
{
|
||||||
|
if (!em.Exists(unit) || !em.HasComponent<UnitTag>(unit)) continue;
|
||||||
|
|
||||||
|
var rpcEntity = em.CreateEntity();
|
||||||
|
em.AddComponentData(rpcEntity, new MoveCommandRpc
|
||||||
|
{
|
||||||
|
UnitEntity = unit,
|
||||||
|
TargetPosition = position
|
||||||
|
});
|
||||||
|
em.AddComponent<SendRpcCommandRequest>(rpcEntity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SendAttackCommands(Entity target)
|
||||||
|
{
|
||||||
|
var world = World.DefaultGameObjectInjectionWorld;
|
||||||
|
if (world == null) return;
|
||||||
|
var em = world.EntityManager;
|
||||||
|
|
||||||
|
foreach (var unit in SelectionManager.Instance.SelectedEntities)
|
||||||
|
{
|
||||||
|
if (!em.Exists(unit) || !em.HasComponent<UnitTag>(unit)) continue;
|
||||||
|
|
||||||
|
var rpcEntity = em.CreateEntity();
|
||||||
|
em.AddComponentData(rpcEntity, new AttackCommandRpc
|
||||||
|
{
|
||||||
|
AttackerEntity = unit,
|
||||||
|
TargetEntity = target
|
||||||
|
});
|
||||||
|
em.AddComponent<SendRpcCommandRequest>(rpcEntity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SendGatherCommands(Entity resourceNode)
|
||||||
|
{
|
||||||
|
var world = World.DefaultGameObjectInjectionWorld;
|
||||||
|
if (world == null) return;
|
||||||
|
var em = world.EntityManager;
|
||||||
|
|
||||||
|
foreach (var unit in SelectionManager.Instance.SelectedEntities)
|
||||||
|
{
|
||||||
|
if (!em.Exists(unit) || !em.HasComponent<CitizenTag>(unit)) continue;
|
||||||
|
|
||||||
|
var rpcEntity = em.CreateEntity();
|
||||||
|
em.AddComponentData(rpcEntity, new GatherCommandRpc
|
||||||
|
{
|
||||||
|
CitizenEntity = unit,
|
||||||
|
ResourceNodeEntity = resourceNode
|
||||||
|
});
|
||||||
|
em.AddComponent<SendRpcCommandRequest>(rpcEntity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SendBuildRepairCommands(Entity building)
|
||||||
|
{
|
||||||
|
var world = World.DefaultGameObjectInjectionWorld;
|
||||||
|
if (world == null) return;
|
||||||
|
var em = world.EntityManager;
|
||||||
|
|
||||||
|
foreach (var unit in SelectionManager.Instance.SelectedEntities)
|
||||||
|
{
|
||||||
|
if (!em.Exists(unit) || !em.HasComponent<CitizenTag>(unit)) continue;
|
||||||
|
|
||||||
|
var rpcEntity = em.CreateEntity();
|
||||||
|
em.AddComponentData(rpcEntity, new BuildRepairCommandRpc
|
||||||
|
{
|
||||||
|
CitizenEntity = unit,
|
||||||
|
BuildingEntity = building
|
||||||
|
});
|
||||||
|
em.AddComponent<SendRpcCommandRequest>(rpcEntity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void HandleStop()
|
||||||
|
{
|
||||||
|
var world = World.DefaultGameObjectInjectionWorld;
|
||||||
|
if (world == null) return;
|
||||||
|
var em = world.EntityManager;
|
||||||
|
|
||||||
|
foreach (var unit in SelectionManager.Instance.SelectedEntities)
|
||||||
|
{
|
||||||
|
if (!em.Exists(unit) || !em.HasComponent<UnitTag>(unit)) continue;
|
||||||
|
|
||||||
|
var rpcEntity = em.CreateEntity();
|
||||||
|
em.AddComponentData(rpcEntity, new StopCommandRpc
|
||||||
|
{
|
||||||
|
UnitEntity = unit
|
||||||
|
});
|
||||||
|
em.AddComponent<SendRpcCommandRequest>(rpcEntity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Scripts/Hybrid/CommandDispatcher.cs.meta
Normal file
2
Assets/Scripts/Hybrid/CommandDispatcher.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f074ad7027c0ccc409dcab5f7d5abbde
|
||||||
106
Assets/Scripts/Hybrid/RTSCameraController.cs
Normal file
106
Assets/Scripts/Hybrid/RTSCameraController.cs
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace EE2Clone.Hybrid
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// RTS-style camera controller. Supports WASD/arrow pan, edge-of-screen pan,
|
||||||
|
/// scroll zoom, and Q/E rotation. Client-side only (MonoBehaviour).
|
||||||
|
/// </summary>
|
||||||
|
public class RTSCameraController : MonoBehaviour
|
||||||
|
{
|
||||||
|
[Header("Movement")]
|
||||||
|
[SerializeField] private float panSpeed = 30f;
|
||||||
|
[SerializeField] private float edgePanThreshold = 15f;
|
||||||
|
[SerializeField] private bool enableEdgePan = true;
|
||||||
|
|
||||||
|
[Header("Zoom")]
|
||||||
|
[SerializeField] private float zoomSpeed = 10f;
|
||||||
|
[SerializeField] private float minZoomHeight = 10f;
|
||||||
|
[SerializeField] private float maxZoomHeight = 80f;
|
||||||
|
|
||||||
|
[Header("Rotation")]
|
||||||
|
[SerializeField] private float rotateSpeed = 100f;
|
||||||
|
|
||||||
|
[Header("Bounds")]
|
||||||
|
[SerializeField] private Vector2 mapMin = new(-128f, -128f);
|
||||||
|
[SerializeField] private Vector2 mapMax = new(128f, 128f);
|
||||||
|
|
||||||
|
private Transform _cameraTransform;
|
||||||
|
|
||||||
|
private void Awake()
|
||||||
|
{
|
||||||
|
_cameraTransform = transform;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void LateUpdate()
|
||||||
|
{
|
||||||
|
var input = RTSInputActions.Instance;
|
||||||
|
if (input == null) return;
|
||||||
|
|
||||||
|
HandlePan(input);
|
||||||
|
HandleZoom(input);
|
||||||
|
HandleRotation(input);
|
||||||
|
ClampPosition();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void HandlePan(RTSInputActions input)
|
||||||
|
{
|
||||||
|
var panInput = input.CameraPan;
|
||||||
|
var panDir = new Vector3(panInput.x, 0f, panInput.y);
|
||||||
|
|
||||||
|
// Edge-of-screen panning
|
||||||
|
if (enableEdgePan)
|
||||||
|
{
|
||||||
|
var mousePos = input.MousePosition;
|
||||||
|
if (mousePos.x <= edgePanThreshold) panDir.x -= 1f;
|
||||||
|
if (mousePos.x >= Screen.width - edgePanThreshold) panDir.x += 1f;
|
||||||
|
if (mousePos.y <= edgePanThreshold) panDir.z -= 1f;
|
||||||
|
if (mousePos.y >= Screen.height - edgePanThreshold) panDir.z += 1f;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (panDir.sqrMagnitude > 0.01f)
|
||||||
|
{
|
||||||
|
panDir.Normalize();
|
||||||
|
// Move relative to camera's forward (ignoring Y)
|
||||||
|
var forward = _cameraTransform.forward;
|
||||||
|
forward.y = 0f;
|
||||||
|
forward.Normalize();
|
||||||
|
var right = _cameraTransform.right;
|
||||||
|
right.y = 0f;
|
||||||
|
right.Normalize();
|
||||||
|
|
||||||
|
var move = (forward * panDir.z + right * panDir.x) * (panSpeed * Time.unscaledDeltaTime);
|
||||||
|
_cameraTransform.position += move;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void HandleZoom(RTSInputActions input)
|
||||||
|
{
|
||||||
|
var zoomInput = input.CameraZoom;
|
||||||
|
if (Mathf.Abs(zoomInput) > 0.01f)
|
||||||
|
{
|
||||||
|
var pos = _cameraTransform.position;
|
||||||
|
pos.y -= zoomInput * zoomSpeed * Time.unscaledDeltaTime;
|
||||||
|
pos.y = Mathf.Clamp(pos.y, minZoomHeight, maxZoomHeight);
|
||||||
|
_cameraTransform.position = pos;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void HandleRotation(RTSInputActions input)
|
||||||
|
{
|
||||||
|
var rotateInput = input.CameraRotate;
|
||||||
|
if (Mathf.Abs(rotateInput) > 0.01f)
|
||||||
|
{
|
||||||
|
_cameraTransform.Rotate(Vector3.up, rotateInput * rotateSpeed * Time.unscaledDeltaTime, Space.World);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ClampPosition()
|
||||||
|
{
|
||||||
|
var pos = _cameraTransform.position;
|
||||||
|
pos.x = Mathf.Clamp(pos.x, mapMin.x, mapMax.x);
|
||||||
|
pos.z = Mathf.Clamp(pos.z, mapMin.y, mapMax.y);
|
||||||
|
_cameraTransform.position = pos;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Scripts/Hybrid/RTSCameraController.cs.meta
Normal file
2
Assets/Scripts/Hybrid/RTSCameraController.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4a2d497f840a0f54d823f815babd595c
|
||||||
140
Assets/Scripts/Hybrid/RTSInputActions.cs
Normal file
140
Assets/Scripts/Hybrid/RTSInputActions.cs
Normal file
@@ -0,0 +1,140 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.InputSystem;
|
||||||
|
|
||||||
|
namespace EE2Clone.Hybrid
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// MonoBehaviour that reads from the Input System and exposes RTS-specific input state
|
||||||
|
/// for the hybrid camera, selection, and UI systems. This is the bridge between
|
||||||
|
/// Unity's Input System and our ECS command pipeline.
|
||||||
|
/// </summary>
|
||||||
|
public class RTSInputActions : MonoBehaviour
|
||||||
|
{
|
||||||
|
public static RTSInputActions Instance { get; private set; }
|
||||||
|
|
||||||
|
[Header("Input Action References")]
|
||||||
|
[SerializeField] private InputActionAsset inputActions;
|
||||||
|
|
||||||
|
// Camera
|
||||||
|
public Vector2 CameraPan { get; private set; }
|
||||||
|
public float CameraZoom { get; private set; }
|
||||||
|
public float CameraRotate { get; private set; }
|
||||||
|
|
||||||
|
// Selection
|
||||||
|
public bool LeftClickPressed { get; private set; }
|
||||||
|
public bool LeftClickReleased { get; private set; }
|
||||||
|
public bool LeftClickHeld { get; private set; }
|
||||||
|
public bool RightClickPressed { get; private set; }
|
||||||
|
public Vector2 MousePosition { get; private set; }
|
||||||
|
|
||||||
|
// Modifiers
|
||||||
|
public bool ShiftHeld { get; private set; }
|
||||||
|
public bool CtrlHeld { get; private set; }
|
||||||
|
|
||||||
|
// Actions
|
||||||
|
public bool AttackMovePressed { get; private set; }
|
||||||
|
public bool PatrolPressed { get; private set; }
|
||||||
|
public bool StopPressed { get; private set; }
|
||||||
|
public bool DeletePressed { get; private set; }
|
||||||
|
|
||||||
|
// Control groups (0-9)
|
||||||
|
public int ControlGroupPressed { get; private set; } = -1;
|
||||||
|
|
||||||
|
private InputAction _cameraPanAction;
|
||||||
|
private InputAction _cameraZoomAction;
|
||||||
|
private InputAction _cameraRotateAction;
|
||||||
|
private InputAction _leftClickAction;
|
||||||
|
private InputAction _rightClickAction;
|
||||||
|
private InputAction _mousePositionAction;
|
||||||
|
private InputAction _shiftAction;
|
||||||
|
private InputAction _ctrlAction;
|
||||||
|
private InputAction _attackMoveAction;
|
||||||
|
private InputAction _patrolAction;
|
||||||
|
private InputAction _stopAction;
|
||||||
|
private InputAction _deleteAction;
|
||||||
|
|
||||||
|
private void Awake()
|
||||||
|
{
|
||||||
|
if (Instance != null && Instance != this)
|
||||||
|
{
|
||||||
|
Destroy(gameObject);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Instance = this;
|
||||||
|
DontDestroyOnLoad(gameObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnEnable()
|
||||||
|
{
|
||||||
|
if (inputActions == null) return;
|
||||||
|
|
||||||
|
var rtsMap = inputActions.FindActionMap("RTS");
|
||||||
|
if (rtsMap == null)
|
||||||
|
{
|
||||||
|
Debug.LogError("RTS action map not found in Input Actions asset!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
_cameraPanAction = rtsMap.FindAction("CameraPan");
|
||||||
|
_cameraZoomAction = rtsMap.FindAction("CameraZoom");
|
||||||
|
_cameraRotateAction = rtsMap.FindAction("CameraRotate");
|
||||||
|
_leftClickAction = rtsMap.FindAction("LeftClick");
|
||||||
|
_rightClickAction = rtsMap.FindAction("RightClick");
|
||||||
|
_mousePositionAction = rtsMap.FindAction("MousePosition");
|
||||||
|
_shiftAction = rtsMap.FindAction("Shift");
|
||||||
|
_ctrlAction = rtsMap.FindAction("Ctrl");
|
||||||
|
_attackMoveAction = rtsMap.FindAction("AttackMove");
|
||||||
|
_patrolAction = rtsMap.FindAction("Patrol");
|
||||||
|
_stopAction = rtsMap.FindAction("Stop");
|
||||||
|
_deleteAction = rtsMap.FindAction("Delete");
|
||||||
|
|
||||||
|
rtsMap.Enable();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnDisable()
|
||||||
|
{
|
||||||
|
if (inputActions == null) return;
|
||||||
|
var rtsMap = inputActions.FindActionMap("RTS");
|
||||||
|
rtsMap?.Disable();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
CameraPan = _cameraPanAction?.ReadValue<Vector2>() ?? Vector2.zero;
|
||||||
|
CameraZoom = _cameraZoomAction?.ReadValue<float>() ?? 0f;
|
||||||
|
CameraRotate = _cameraRotateAction?.ReadValue<float>() ?? 0f;
|
||||||
|
|
||||||
|
LeftClickPressed = _leftClickAction?.WasPressedThisFrame() ?? false;
|
||||||
|
LeftClickReleased = _leftClickAction?.WasReleasedThisFrame() ?? false;
|
||||||
|
LeftClickHeld = _leftClickAction?.IsPressed() ?? false;
|
||||||
|
RightClickPressed = _rightClickAction?.WasPressedThisFrame() ?? false;
|
||||||
|
|
||||||
|
MousePosition = _mousePositionAction?.ReadValue<Vector2>() ?? Vector2.zero;
|
||||||
|
|
||||||
|
ShiftHeld = _shiftAction?.IsPressed() ?? false;
|
||||||
|
CtrlHeld = _ctrlAction?.IsPressed() ?? false;
|
||||||
|
|
||||||
|
AttackMovePressed = _attackMoveAction?.WasPressedThisFrame() ?? false;
|
||||||
|
PatrolPressed = _patrolAction?.WasPressedThisFrame() ?? false;
|
||||||
|
StopPressed = _stopAction?.WasPressedThisFrame() ?? false;
|
||||||
|
DeletePressed = _deleteAction?.WasPressedThisFrame() ?? false;
|
||||||
|
|
||||||
|
// Control groups (keyboard 0-9)
|
||||||
|
ControlGroupPressed = -1;
|
||||||
|
for (int i = 0; i <= 9; i++)
|
||||||
|
{
|
||||||
|
if (Keyboard.current != null && Keyboard.current[Key.Digit0 + i].wasPressedThisFrame)
|
||||||
|
{
|
||||||
|
ControlGroupPressed = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnDestroy()
|
||||||
|
{
|
||||||
|
if (Instance == this)
|
||||||
|
Instance = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Scripts/Hybrid/RTSInputActions.cs.meta
Normal file
2
Assets/Scripts/Hybrid/RTSInputActions.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ad9c0e075e79563498b1577211b6e351
|
||||||
67
Assets/Scripts/Hybrid/SelectionBoxUI.cs
Normal file
67
Assets/Scripts/Hybrid/SelectionBoxUI.cs
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace EE2Clone.Hybrid
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Draws the rubber-band selection box on screen when the player is drag-selecting.
|
||||||
|
/// </summary>
|
||||||
|
public class SelectionBoxUI : MonoBehaviour
|
||||||
|
{
|
||||||
|
[SerializeField] private Color boxColor = new(0.2f, 0.8f, 0.2f, 0.25f);
|
||||||
|
[SerializeField] private Color borderColor = new(0.2f, 0.8f, 0.2f, 0.8f);
|
||||||
|
|
||||||
|
private Texture2D _fillTexture;
|
||||||
|
private Texture2D _borderTexture;
|
||||||
|
|
||||||
|
private void Awake()
|
||||||
|
{
|
||||||
|
_fillTexture = new Texture2D(1, 1);
|
||||||
|
_fillTexture.SetPixel(0, 0, Color.white);
|
||||||
|
_fillTexture.Apply();
|
||||||
|
|
||||||
|
_borderTexture = new Texture2D(1, 1);
|
||||||
|
_borderTexture.SetPixel(0, 0, Color.white);
|
||||||
|
_borderTexture.Apply();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnGUI()
|
||||||
|
{
|
||||||
|
var sel = SelectionManager.Instance;
|
||||||
|
if (sel == null || !sel.IsDragging) return;
|
||||||
|
|
||||||
|
var start = sel.DragStart;
|
||||||
|
var end = sel.DragEnd;
|
||||||
|
|
||||||
|
// Convert to GUI coordinates (Y is flipped)
|
||||||
|
start.y = Screen.height - start.y;
|
||||||
|
end.y = Screen.height - end.y;
|
||||||
|
|
||||||
|
var rect = new Rect(
|
||||||
|
Mathf.Min(start.x, end.x),
|
||||||
|
Mathf.Min(start.y, end.y),
|
||||||
|
Mathf.Abs(end.x - start.x),
|
||||||
|
Mathf.Abs(end.y - start.y)
|
||||||
|
);
|
||||||
|
|
||||||
|
// Draw fill
|
||||||
|
GUI.color = boxColor;
|
||||||
|
GUI.DrawTexture(rect, _fillTexture);
|
||||||
|
|
||||||
|
// Draw border
|
||||||
|
GUI.color = borderColor;
|
||||||
|
float b = 2f;
|
||||||
|
GUI.DrawTexture(new Rect(rect.x, rect.y, rect.width, b), _borderTexture);
|
||||||
|
GUI.DrawTexture(new Rect(rect.x, rect.yMax - b, rect.width, b), _borderTexture);
|
||||||
|
GUI.DrawTexture(new Rect(rect.x, rect.y, b, rect.height), _borderTexture);
|
||||||
|
GUI.DrawTexture(new Rect(rect.xMax - b, rect.y, b, rect.height), _borderTexture);
|
||||||
|
|
||||||
|
GUI.color = Color.white;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnDestroy()
|
||||||
|
{
|
||||||
|
if (_fillTexture != null) Destroy(_fillTexture);
|
||||||
|
if (_borderTexture != null) Destroy(_borderTexture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Scripts/Hybrid/SelectionBoxUI.cs.meta
Normal file
2
Assets/Scripts/Hybrid/SelectionBoxUI.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b197ee7ddd817294f9cd10d38d44efb9
|
||||||
243
Assets/Scripts/Hybrid/SelectionManager.cs
Normal file
243
Assets/Scripts/Hybrid/SelectionManager.cs
Normal file
@@ -0,0 +1,243 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using Unity.Entities;
|
||||||
|
using Unity.Mathematics;
|
||||||
|
using Unity.Physics;
|
||||||
|
using Unity.Transforms;
|
||||||
|
using UnityEngine;
|
||||||
|
using EE2Clone.Components;
|
||||||
|
|
||||||
|
namespace EE2Clone.Hybrid
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Handles click-select, shift-add, and box-drag selection of entities.
|
||||||
|
/// Client-side only. Adds/removes SelectedTag on ECS entities.
|
||||||
|
/// </summary>
|
||||||
|
public class SelectionManager : MonoBehaviour
|
||||||
|
{
|
||||||
|
public static SelectionManager Instance { get; private set; }
|
||||||
|
|
||||||
|
[Header("Settings")]
|
||||||
|
[SerializeField] private LayerMask selectableLayers = ~0;
|
||||||
|
[SerializeField] private float dragThreshold = 5f;
|
||||||
|
|
||||||
|
public List<Entity> SelectedEntities { get; } = new();
|
||||||
|
|
||||||
|
// Control groups: index 0-9
|
||||||
|
private readonly List<Entity>[] _controlGroups = new List<Entity>[10];
|
||||||
|
|
||||||
|
// Box selection state
|
||||||
|
private bool _isDragging;
|
||||||
|
private Vector2 _dragStart;
|
||||||
|
|
||||||
|
// Exposed for SelectionBoxUI
|
||||||
|
public bool IsDragging => _isDragging;
|
||||||
|
public Vector2 DragStart => _dragStart;
|
||||||
|
public Vector2 DragEnd { get; private set; }
|
||||||
|
|
||||||
|
private Camera _mainCamera;
|
||||||
|
|
||||||
|
private void Awake()
|
||||||
|
{
|
||||||
|
if (Instance != null && Instance != this) { Destroy(gameObject); return; }
|
||||||
|
Instance = this;
|
||||||
|
|
||||||
|
for (int i = 0; i < 10; i++)
|
||||||
|
_controlGroups[i] = new List<Entity>();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
_mainCamera = Camera.main;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
var input = RTSInputActions.Instance;
|
||||||
|
if (input == null || _mainCamera == null) return;
|
||||||
|
|
||||||
|
HandleSelection(input);
|
||||||
|
HandleControlGroups(input);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void HandleSelection(RTSInputActions input)
|
||||||
|
{
|
||||||
|
if (input.LeftClickPressed)
|
||||||
|
{
|
||||||
|
_dragStart = input.MousePosition;
|
||||||
|
_isDragging = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (input.LeftClickHeld)
|
||||||
|
{
|
||||||
|
DragEnd = input.MousePosition;
|
||||||
|
if (Vector2.Distance(_dragStart, DragEnd) > dragThreshold)
|
||||||
|
_isDragging = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (input.LeftClickReleased)
|
||||||
|
{
|
||||||
|
DragEnd = input.MousePosition;
|
||||||
|
|
||||||
|
if (_isDragging)
|
||||||
|
BoxSelect(input.ShiftHeld);
|
||||||
|
else
|
||||||
|
ClickSelect(input.MousePosition, input.ShiftHeld);
|
||||||
|
|
||||||
|
_isDragging = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ClickSelect(Vector2 screenPos, bool additive)
|
||||||
|
{
|
||||||
|
if (!additive)
|
||||||
|
ClearSelection();
|
||||||
|
|
||||||
|
var ray = _mainCamera.ScreenPointToRay(new Vector3(screenPos.x, screenPos.y, 0));
|
||||||
|
|
||||||
|
// Raycast using Unity Physics (ECS)
|
||||||
|
var world = World.DefaultGameObjectInjectionWorld;
|
||||||
|
if (world == null || !world.IsCreated) return;
|
||||||
|
|
||||||
|
var physicsWorld = world.EntityManager
|
||||||
|
.CreateEntityQuery(typeof(PhysicsWorldSingleton))
|
||||||
|
.GetSingleton<PhysicsWorldSingleton>();
|
||||||
|
|
||||||
|
var rayInput = new RaycastInput
|
||||||
|
{
|
||||||
|
Start = ray.origin,
|
||||||
|
End = ray.origin + ray.direction * 500f,
|
||||||
|
Filter = new CollisionFilter
|
||||||
|
{
|
||||||
|
BelongsTo = ~0u,
|
||||||
|
CollidesWith = ~0u,
|
||||||
|
GroupIndex = 0
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
if (physicsWorld.CastRay(rayInput, out var hit))
|
||||||
|
{
|
||||||
|
var em = world.EntityManager;
|
||||||
|
var entity = physicsWorld.Bodies[hit.RigidBodyIndex].Entity;
|
||||||
|
|
||||||
|
if (em.HasComponent<UnitTag>(entity) || em.HasComponent<BuildingTag>(entity))
|
||||||
|
{
|
||||||
|
if (additive && SelectedEntities.Contains(entity))
|
||||||
|
{
|
||||||
|
SelectedEntities.Remove(entity);
|
||||||
|
em.RemoveComponent<SelectedTag>(entity);
|
||||||
|
}
|
||||||
|
else if (!SelectedEntities.Contains(entity))
|
||||||
|
{
|
||||||
|
SelectedEntities.Add(entity);
|
||||||
|
em.AddComponent<SelectedTag>(entity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void BoxSelect(bool additive)
|
||||||
|
{
|
||||||
|
if (!additive)
|
||||||
|
ClearSelection();
|
||||||
|
|
||||||
|
var world = World.DefaultGameObjectInjectionWorld;
|
||||||
|
if (world == null || !world.IsCreated) return;
|
||||||
|
|
||||||
|
var em = world.EntityManager;
|
||||||
|
|
||||||
|
var min = Vector2.Min(_dragStart, DragEnd);
|
||||||
|
var max = Vector2.Max(_dragStart, DragEnd);
|
||||||
|
|
||||||
|
// Query all unit entities and check if their screen position is within the box
|
||||||
|
var query = em.CreateEntityQuery(typeof(UnitTag), typeof(LocalTransform));
|
||||||
|
var entities = query.ToEntityArray(Unity.Collections.Allocator.Temp);
|
||||||
|
var transforms = query.ToComponentDataArray<LocalTransform>(Unity.Collections.Allocator.Temp);
|
||||||
|
|
||||||
|
for (int i = 0; i < entities.Length; i++)
|
||||||
|
{
|
||||||
|
var screenPos = _mainCamera.WorldToScreenPoint(transforms[i].Position);
|
||||||
|
if (screenPos.z > 0 &&
|
||||||
|
screenPos.x >= min.x && screenPos.x <= max.x &&
|
||||||
|
screenPos.y >= min.y && screenPos.y <= max.y)
|
||||||
|
{
|
||||||
|
var entity = entities[i];
|
||||||
|
if (!SelectedEntities.Contains(entity))
|
||||||
|
{
|
||||||
|
SelectedEntities.Add(entity);
|
||||||
|
if (!em.HasComponent<SelectedTag>(entity))
|
||||||
|
em.AddComponent<SelectedTag>(entity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
entities.Dispose();
|
||||||
|
transforms.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ClearSelection()
|
||||||
|
{
|
||||||
|
var world = World.DefaultGameObjectInjectionWorld;
|
||||||
|
if (world != null && world.IsCreated)
|
||||||
|
{
|
||||||
|
var em = world.EntityManager;
|
||||||
|
foreach (var entity in SelectedEntities)
|
||||||
|
{
|
||||||
|
if (em.Exists(entity) && em.HasComponent<SelectedTag>(entity))
|
||||||
|
em.RemoveComponent<SelectedTag>(entity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SelectedEntities.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void HandleControlGroups(RTSInputActions input)
|
||||||
|
{
|
||||||
|
int group = input.ControlGroupPressed;
|
||||||
|
if (group < 0) return;
|
||||||
|
|
||||||
|
if (input.CtrlHeld)
|
||||||
|
{
|
||||||
|
// Assign current selection to control group
|
||||||
|
_controlGroups[group].Clear();
|
||||||
|
_controlGroups[group].AddRange(SelectedEntities);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Recall control group
|
||||||
|
ClearSelection();
|
||||||
|
var world = World.DefaultGameObjectInjectionWorld;
|
||||||
|
if (world == null || !world.IsCreated) return;
|
||||||
|
var em = world.EntityManager;
|
||||||
|
|
||||||
|
foreach (var entity in _controlGroups[group])
|
||||||
|
{
|
||||||
|
if (em.Exists(entity))
|
||||||
|
{
|
||||||
|
SelectedEntities.Add(entity);
|
||||||
|
if (!em.HasComponent<SelectedTag>(entity))
|
||||||
|
em.AddComponent<SelectedTag>(entity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Entity[] GetSelectedEntitiesOfType<T>() where T : unmanaged, IComponentData
|
||||||
|
{
|
||||||
|
var world = World.DefaultGameObjectInjectionWorld;
|
||||||
|
if (world == null || !world.IsCreated) return System.Array.Empty<Entity>();
|
||||||
|
|
||||||
|
var em = world.EntityManager;
|
||||||
|
var result = new List<Entity>();
|
||||||
|
foreach (var entity in SelectedEntities)
|
||||||
|
{
|
||||||
|
if (em.Exists(entity) && em.HasComponent<T>(entity))
|
||||||
|
result.Add(entity);
|
||||||
|
}
|
||||||
|
return result.ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnDestroy()
|
||||||
|
{
|
||||||
|
if (Instance == this) Instance = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Scripts/Hybrid/SelectionManager.cs.meta
Normal file
2
Assets/Scripts/Hybrid/SelectionManager.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 666bdebfedde0ad42b1fcc77e0e27843
|
||||||
8
Assets/Scripts/NetCode.meta
Normal file
8
Assets/Scripts/NetCode.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 3e8c2c9ff1dcf374ca5d87a59403b894
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
32
Assets/Scripts/NetCode/ConnectionMonitorSystem.cs
Normal file
32
Assets/Scripts/NetCode/ConnectionMonitorSystem.cs
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
using Unity.Burst;
|
||||||
|
using Unity.Collections;
|
||||||
|
using Unity.Entities;
|
||||||
|
using Unity.NetCode;
|
||||||
|
|
||||||
|
namespace EE2Clone.NetCode
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Server-side system that monitors for disconnected players and logs events.
|
||||||
|
/// </summary>
|
||||||
|
[WorldSystemFilter(WorldSystemFilterFlags.ServerSimulation)]
|
||||||
|
public partial struct ConnectionMonitorSystem : ISystem
|
||||||
|
{
|
||||||
|
public void OnCreate(ref SystemState state)
|
||||||
|
{
|
||||||
|
state.RequireForUpdate<NetworkId>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnUpdate(ref SystemState state)
|
||||||
|
{
|
||||||
|
// Count active connections for logging/debugging
|
||||||
|
int connectionCount = 0;
|
||||||
|
foreach (var _ in SystemAPI.Query<RefRO<NetworkId>>()
|
||||||
|
.WithAll<NetworkStreamInGame>())
|
||||||
|
{
|
||||||
|
connectionCount++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Future: detect disconnections and handle AI takeover
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Scripts/NetCode/ConnectionMonitorSystem.cs.meta
Normal file
2
Assets/Scripts/NetCode/ConnectionMonitorSystem.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: fb810a5f20d826844a1063b2a900fa0a
|
||||||
23
Assets/Scripts/NetCode/GameBootstrap.cs
Normal file
23
Assets/Scripts/NetCode/GameBootstrap.cs
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using Unity.NetCode;
|
||||||
|
|
||||||
|
namespace EE2Clone.NetCode
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Custom bootstrap that prevents automatic world creation.
|
||||||
|
/// We manually create client/server worlds when the player chooses to host or connect.
|
||||||
|
/// </summary>
|
||||||
|
[UnityEngine.Scripting.Preserve]
|
||||||
|
public class GameBootstrap : ClientServerBootstrap
|
||||||
|
{
|
||||||
|
public override bool Initialize(string defaultWorldName)
|
||||||
|
{
|
||||||
|
// Create only the default (local) world on startup.
|
||||||
|
// Client and server worlds are created manually when the user
|
||||||
|
// starts hosting or joins a game.
|
||||||
|
AutoConnectPort = 0;
|
||||||
|
CreateDefaultClientServerWorlds();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Scripts/NetCode/GameBootstrap.cs.meta
Normal file
2
Assets/Scripts/NetCode/GameBootstrap.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 278d5b5c203631c42a5f1eb814815e6c
|
||||||
52
Assets/Scripts/NetCode/GoInGameClientSystem.cs
Normal file
52
Assets/Scripts/NetCode/GoInGameClientSystem.cs
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
using Unity.Burst;
|
||||||
|
using Unity.Collections;
|
||||||
|
using Unity.Entities;
|
||||||
|
using Unity.NetCode;
|
||||||
|
|
||||||
|
namespace EE2Clone.NetCode
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// RPC sent by the client to request going in-game.
|
||||||
|
/// </summary>
|
||||||
|
public struct GoInGameRequest : IRpcCommand
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Client-side system: when a connection is established and the streaming is done,
|
||||||
|
/// send a GoInGameRequest RPC to the server.
|
||||||
|
/// </summary>
|
||||||
|
[BurstCompile]
|
||||||
|
[WorldSystemFilter(WorldSystemFilterFlags.ClientSimulation | WorldSystemFilterFlags.ThinClientSimulation)]
|
||||||
|
public partial struct GoInGameClientSystem : ISystem
|
||||||
|
{
|
||||||
|
[BurstCompile]
|
||||||
|
public void OnCreate(ref SystemState state)
|
||||||
|
{
|
||||||
|
state.RequireForUpdate<NetworkId>();
|
||||||
|
}
|
||||||
|
|
||||||
|
[BurstCompile]
|
||||||
|
public void OnUpdate(ref SystemState state)
|
||||||
|
{
|
||||||
|
var ecb = new EntityCommandBuffer(Allocator.Temp);
|
||||||
|
|
||||||
|
foreach (var (networkId, entity) in
|
||||||
|
SystemAPI.Query<RefRO<NetworkId>>()
|
||||||
|
.WithNone<NetworkStreamInGame>()
|
||||||
|
.WithEntityAccess())
|
||||||
|
{
|
||||||
|
ecb.AddComponent<NetworkStreamInGame>(entity);
|
||||||
|
|
||||||
|
var requestEntity = ecb.CreateEntity();
|
||||||
|
ecb.AddComponent(requestEntity, new GoInGameRequest());
|
||||||
|
ecb.AddComponent(requestEntity, new SendRpcCommandRequest { TargetConnection = entity });
|
||||||
|
|
||||||
|
UnityEngine.Debug.Log($"[Client] Sending GoInGame request (NetworkId={networkId.ValueRO.Value})");
|
||||||
|
}
|
||||||
|
|
||||||
|
ecb.Playback(state.EntityManager);
|
||||||
|
ecb.Dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Scripts/NetCode/GoInGameClientSystem.cs.meta
Normal file
2
Assets/Scripts/NetCode/GoInGameClientSystem.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d2bae91c6664cbd4796e97de29d6b1a7
|
||||||
77
Assets/Scripts/NetCode/GoInGameServerSystem.cs
Normal file
77
Assets/Scripts/NetCode/GoInGameServerSystem.cs
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
using Unity.Burst;
|
||||||
|
using Unity.Collections;
|
||||||
|
using Unity.Entities;
|
||||||
|
using Unity.NetCode;
|
||||||
|
using EE2Clone.Components;
|
||||||
|
using EE2Clone.Core;
|
||||||
|
|
||||||
|
namespace EE2Clone.NetCode
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Server-side system: processes GoInGameRequest RPCs, marks connections as in-game,
|
||||||
|
/// and creates a PlayerState entity for each connecting player.
|
||||||
|
/// </summary>
|
||||||
|
[BurstCompile]
|
||||||
|
[WorldSystemFilter(WorldSystemFilterFlags.ServerSimulation)]
|
||||||
|
public partial struct GoInGameServerSystem : ISystem
|
||||||
|
{
|
||||||
|
private int _nextPlayerId;
|
||||||
|
|
||||||
|
[BurstCompile]
|
||||||
|
public void OnCreate(ref SystemState state)
|
||||||
|
{
|
||||||
|
state.RequireForUpdate<GoInGameRequest>();
|
||||||
|
_nextPlayerId = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
[BurstCompile]
|
||||||
|
public void OnUpdate(ref SystemState state)
|
||||||
|
{
|
||||||
|
var ecb = new EntityCommandBuffer(Allocator.Temp);
|
||||||
|
|
||||||
|
foreach (var (request, requestSource, requestEntity) in
|
||||||
|
SystemAPI.Query<RefRO<GoInGameRequest>, RefRO<ReceiveRpcCommandRequest>>()
|
||||||
|
.WithEntityAccess())
|
||||||
|
{
|
||||||
|
var connectionEntity = requestSource.ValueRO.SourceConnection;
|
||||||
|
|
||||||
|
// Mark the connection as in-game
|
||||||
|
ecb.AddComponent<NetworkStreamInGame>(connectionEntity);
|
||||||
|
|
||||||
|
// Get the NetworkId for this connection
|
||||||
|
var networkId = state.EntityManager.GetComponentData<NetworkId>(connectionEntity);
|
||||||
|
|
||||||
|
// Create a PlayerState entity for this player
|
||||||
|
var playerEntity = ecb.CreateEntity();
|
||||||
|
ecb.AddComponent(playerEntity, new PlayerStateComponent
|
||||||
|
{
|
||||||
|
PlayerId = _nextPlayerId,
|
||||||
|
CurrentEpoch = Epoch.StoneAge,
|
||||||
|
PopulationCurrent = 0,
|
||||||
|
PopulationMax = GameConstants.StartingPopulationCap,
|
||||||
|
CivilizationId = 0,
|
||||||
|
IsAlive = true
|
||||||
|
});
|
||||||
|
ecb.AddComponent(playerEntity, new PlayerResourcesComponent
|
||||||
|
{
|
||||||
|
Food = 200,
|
||||||
|
Wood = 200,
|
||||||
|
Stone = 100,
|
||||||
|
Gold = 100,
|
||||||
|
Tin = 0
|
||||||
|
});
|
||||||
|
ecb.AddComponent(playerEntity, new GhostOwner { NetworkId = networkId.Value });
|
||||||
|
|
||||||
|
UnityEngine.Debug.Log($"[Server] Player {_nextPlayerId} (NetworkId={networkId.Value}) entered game");
|
||||||
|
|
||||||
|
_nextPlayerId++;
|
||||||
|
|
||||||
|
// Destroy the request entity
|
||||||
|
ecb.DestroyEntity(requestEntity);
|
||||||
|
}
|
||||||
|
|
||||||
|
ecb.Playback(state.EntityManager);
|
||||||
|
ecb.Dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Scripts/NetCode/GoInGameServerSystem.cs.meta
Normal file
2
Assets/Scripts/NetCode/GoInGameServerSystem.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1c5c4cafaa538c64da4f890ef8658f40
|
||||||
95
Assets/Scripts/NetCode/RpcCommands.cs
Normal file
95
Assets/Scripts/NetCode/RpcCommands.cs
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
using Unity.Entities;
|
||||||
|
using Unity.Mathematics;
|
||||||
|
using Unity.NetCode;
|
||||||
|
using EE2Clone.Core;
|
||||||
|
|
||||||
|
namespace EE2Clone.NetCode
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Client requests to move selected units to a position.
|
||||||
|
/// </summary>
|
||||||
|
public struct MoveCommandRpc : IRpcCommand
|
||||||
|
{
|
||||||
|
public Entity UnitEntity;
|
||||||
|
public float3 TargetPosition;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Client requests to attack a target with selected units.
|
||||||
|
/// </summary>
|
||||||
|
public struct AttackCommandRpc : IRpcCommand
|
||||||
|
{
|
||||||
|
public Entity AttackerEntity;
|
||||||
|
public Entity TargetEntity;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Client requests to place a building.
|
||||||
|
/// </summary>
|
||||||
|
public struct PlaceBuildingRpc : IRpcCommand
|
||||||
|
{
|
||||||
|
public BuildingType Type;
|
||||||
|
public float3 Position;
|
||||||
|
public quaternion Rotation;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Client requests to set a rally point on a building.
|
||||||
|
/// </summary>
|
||||||
|
public struct SetRallyPointRpc : IRpcCommand
|
||||||
|
{
|
||||||
|
public Entity BuildingEntity;
|
||||||
|
public float3 Position;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Client requests to queue unit production in a building.
|
||||||
|
/// </summary>
|
||||||
|
public struct QueueUnitProductionRpc : IRpcCommand
|
||||||
|
{
|
||||||
|
public Entity BuildingEntity;
|
||||||
|
public int UnitDataId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Client requests to gather from a resource node.
|
||||||
|
/// </summary>
|
||||||
|
public struct GatherCommandRpc : IRpcCommand
|
||||||
|
{
|
||||||
|
public Entity CitizenEntity;
|
||||||
|
public Entity ResourceNodeEntity;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Client requests to assign citizens to build/repair a building.
|
||||||
|
/// </summary>
|
||||||
|
public struct BuildRepairCommandRpc : IRpcCommand
|
||||||
|
{
|
||||||
|
public Entity CitizenEntity;
|
||||||
|
public Entity BuildingEntity;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Client requests to research a technology.
|
||||||
|
/// </summary>
|
||||||
|
public struct ResearchTechRpc : IRpcCommand
|
||||||
|
{
|
||||||
|
public Entity BuildingEntity;
|
||||||
|
public int TechId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Client requests to advance to the next epoch.
|
||||||
|
/// </summary>
|
||||||
|
public struct EpochAdvanceRpc : IRpcCommand
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Client requests to stop selected units.
|
||||||
|
/// </summary>
|
||||||
|
public struct StopCommandRpc : IRpcCommand
|
||||||
|
{
|
||||||
|
public Entity UnitEntity;
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Scripts/NetCode/RpcCommands.cs.meta
Normal file
2
Assets/Scripts/NetCode/RpcCommands.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 62f6a545bb8db214a97318bcba211f01
|
||||||
8
Assets/Scripts/Systems.meta
Normal file
8
Assets/Scripts/Systems.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 53d2d11d9c714444cb6bc94d3154cb00
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
197
Assets/Scripts/Systems/BuildingSystems.cs
Normal file
197
Assets/Scripts/Systems/BuildingSystems.cs
Normal file
@@ -0,0 +1,197 @@
|
|||||||
|
using Unity.Burst;
|
||||||
|
using Unity.Collections;
|
||||||
|
using Unity.Entities;
|
||||||
|
using Unity.Mathematics;
|
||||||
|
using Unity.Transforms;
|
||||||
|
using Unity.NetCode;
|
||||||
|
using EE2Clone.Components;
|
||||||
|
using EE2Clone.Core;
|
||||||
|
|
||||||
|
namespace EE2Clone.Systems
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Server-side: processes PlaceBuildingRpc — validates and spawns building entities.
|
||||||
|
/// </summary>
|
||||||
|
[BurstCompile]
|
||||||
|
[WorldSystemFilter(WorldSystemFilterFlags.ServerSimulation)]
|
||||||
|
public partial struct PlaceBuildingCommandSystem : ISystem
|
||||||
|
{
|
||||||
|
[BurstCompile]
|
||||||
|
public void OnUpdate(ref SystemState state)
|
||||||
|
{
|
||||||
|
var ecb = new EntityCommandBuffer(Allocator.Temp);
|
||||||
|
|
||||||
|
foreach (var (cmd, source, entity) in
|
||||||
|
SystemAPI.Query<RefRO<PlaceBuildingRpc>, RefRO<ReceiveRpcCommandRequest>>()
|
||||||
|
.WithEntityAccess())
|
||||||
|
{
|
||||||
|
// TODO: Validate resources, territory, collision
|
||||||
|
// TODO: Lookup building prefab entity from BuildingType
|
||||||
|
// TODO: Instantiate the prefab and place it
|
||||||
|
|
||||||
|
// For now just log
|
||||||
|
UnityEngine.Debug.Log($"[Server] PlaceBuilding request: {cmd.ValueRO.Type} at {cmd.ValueRO.Position}");
|
||||||
|
|
||||||
|
ecb.DestroyEntity(entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
ecb.Playback(state.EntityManager);
|
||||||
|
ecb.Dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Server-side: processes BuildRepairCommandRpc — assigns citizens to build/repair buildings.
|
||||||
|
/// </summary>
|
||||||
|
[BurstCompile]
|
||||||
|
[WorldSystemFilter(WorldSystemFilterFlags.ServerSimulation)]
|
||||||
|
public partial struct BuildRepairCommandSystem : ISystem
|
||||||
|
{
|
||||||
|
[BurstCompile]
|
||||||
|
public void OnUpdate(ref SystemState state)
|
||||||
|
{
|
||||||
|
var ecb = new EntityCommandBuffer(Allocator.Temp);
|
||||||
|
|
||||||
|
foreach (var (cmd, source, entity) in
|
||||||
|
SystemAPI.Query<RefRO<BuildRepairCommandRpc>, RefRO<ReceiveRpcCommandRequest>>()
|
||||||
|
.WithEntityAccess())
|
||||||
|
{
|
||||||
|
var citizen = cmd.ValueRO.CitizenEntity;
|
||||||
|
var building = cmd.ValueRO.BuildingEntity;
|
||||||
|
|
||||||
|
if (state.EntityManager.Exists(citizen) && state.EntityManager.Exists(building) &&
|
||||||
|
state.EntityManager.HasComponent<CitizenStateComponent>(citizen))
|
||||||
|
{
|
||||||
|
state.EntityManager.SetComponentData(citizen, new BuildTarget { Target = building });
|
||||||
|
state.EntityManager.SetComponentData(citizen, new CitizenStateComponent { Value = CitizenState.MovingToBuild });
|
||||||
|
|
||||||
|
var buildingPos = state.EntityManager.GetComponentData<LocalTransform>(building).Position;
|
||||||
|
state.EntityManager.SetComponentData(citizen, new MoveTarget
|
||||||
|
{
|
||||||
|
Position = buildingPos,
|
||||||
|
IsActive = true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
ecb.DestroyEntity(entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
ecb.Playback(state.EntityManager);
|
||||||
|
ecb.Dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Server-side: ticks construction progress for buildings with assigned citizens.
|
||||||
|
/// </summary>
|
||||||
|
[BurstCompile]
|
||||||
|
[WorldSystemFilter(WorldSystemFilterFlags.ServerSimulation)]
|
||||||
|
[UpdateAfter(typeof(BuildRepairCommandSystem))]
|
||||||
|
public partial struct ConstructionSystem : ISystem
|
||||||
|
{
|
||||||
|
private float _timer;
|
||||||
|
|
||||||
|
public void OnCreate(ref SystemState state)
|
||||||
|
{
|
||||||
|
_timer = 0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
[BurstCompile]
|
||||||
|
public void OnUpdate(ref SystemState state)
|
||||||
|
{
|
||||||
|
float dt = SystemAPI.Time.DeltaTime;
|
||||||
|
_timer += dt;
|
||||||
|
if (_timer < GameConstants.ConstructionTickInterval) return;
|
||||||
|
_timer -= GameConstants.ConstructionTickInterval;
|
||||||
|
|
||||||
|
var ecb = new EntityCommandBuffer(Allocator.Temp);
|
||||||
|
|
||||||
|
// Count builders per building
|
||||||
|
// Simple approach: iterate citizens in Building state
|
||||||
|
foreach (var (citizenState, buildTarget, transform, moveTarget) in
|
||||||
|
SystemAPI.Query<RefRW<CitizenStateComponent>, RefRO<BuildTarget>,
|
||||||
|
RefRO<LocalTransform>, RefRO<MoveTarget>>()
|
||||||
|
.WithAll<CitizenTag>())
|
||||||
|
{
|
||||||
|
if (citizenState.ValueRO.Value == CitizenState.MovingToBuild && !moveTarget.ValueRO.IsActive)
|
||||||
|
{
|
||||||
|
citizenState.ValueRW.Value = CitizenState.Building;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (citizenState.ValueRO.Value != CitizenState.Building) continue;
|
||||||
|
|
||||||
|
var buildingEntity = buildTarget.ValueRO.Target;
|
||||||
|
if (buildingEntity == Entity.Null || !state.EntityManager.Exists(buildingEntity)) continue;
|
||||||
|
|
||||||
|
if (!state.EntityManager.HasComponent<ConstructionProgress>(buildingEntity)) continue;
|
||||||
|
|
||||||
|
var progress = state.EntityManager.GetComponentData<ConstructionProgress>(buildingEntity);
|
||||||
|
float increment = GameConstants.ConstructionTickInterval / progress.BuildTime;
|
||||||
|
progress.Progress = math.min(progress.Progress + increment, 1f);
|
||||||
|
state.EntityManager.SetComponentData(buildingEntity, progress);
|
||||||
|
|
||||||
|
// Complete construction
|
||||||
|
if (progress.Progress >= 1f)
|
||||||
|
{
|
||||||
|
ecb.RemoveComponent<UnderConstructionTag>(buildingEntity);
|
||||||
|
ecb.RemoveComponent<ConstructionProgress>(buildingEntity);
|
||||||
|
|
||||||
|
// Set health to max
|
||||||
|
var health = state.EntityManager.GetComponentData<Health>(buildingEntity);
|
||||||
|
health.Current = health.Max;
|
||||||
|
ecb.SetComponent(buildingEntity, health);
|
||||||
|
|
||||||
|
// Citizen becomes idle
|
||||||
|
citizenState.ValueRW.Value = CitizenState.Idle;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ecb.Playback(state.EntityManager);
|
||||||
|
ecb.Dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Server-side: processes production queues on buildings and spawns units.
|
||||||
|
/// </summary>
|
||||||
|
[BurstCompile]
|
||||||
|
[WorldSystemFilter(WorldSystemFilterFlags.ServerSimulation)]
|
||||||
|
public partial struct ProductionSystem : ISystem
|
||||||
|
{
|
||||||
|
[BurstCompile]
|
||||||
|
public void OnUpdate(ref SystemState state)
|
||||||
|
{
|
||||||
|
float dt = SystemAPI.Time.DeltaTime;
|
||||||
|
var ecb = new EntityCommandBuffer(Allocator.Temp);
|
||||||
|
|
||||||
|
foreach (var (productionQueue, rallyPoint, owner, transform, entity) in
|
||||||
|
SystemAPI.Query<DynamicBuffer<ProductionQueueElement>, RefRO<RallyPoint>,
|
||||||
|
RefRO<OwnerPlayer>, RefRO<LocalTransform>>()
|
||||||
|
.WithAll<BuildingTag>()
|
||||||
|
.WithNone<UnderConstructionTag>()
|
||||||
|
.WithEntityAccess())
|
||||||
|
{
|
||||||
|
if (productionQueue.Length == 0) continue;
|
||||||
|
|
||||||
|
var front = productionQueue[0];
|
||||||
|
front.TimeRemaining -= dt;
|
||||||
|
|
||||||
|
if (front.TimeRemaining <= 0)
|
||||||
|
{
|
||||||
|
// TODO: Instantiate unit prefab based on front.UnitDataId
|
||||||
|
// For now just log
|
||||||
|
UnityEngine.Debug.Log($"[Server] Unit produced: DataId={front.UnitDataId} at {rallyPoint.ValueRO.Position}");
|
||||||
|
|
||||||
|
productionQueue.RemoveAt(0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
productionQueue[0] = front;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ecb.Playback(state.EntityManager);
|
||||||
|
ecb.Dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Scripts/Systems/BuildingSystems.cs.meta
Normal file
2
Assets/Scripts/Systems/BuildingSystems.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e4a7a8d853e94f941b762acafa1de53d
|
||||||
207
Assets/Scripts/Systems/CombatSystems.cs
Normal file
207
Assets/Scripts/Systems/CombatSystems.cs
Normal file
@@ -0,0 +1,207 @@
|
|||||||
|
using Unity.Burst;
|
||||||
|
using Unity.Collections;
|
||||||
|
using Unity.Entities;
|
||||||
|
using Unity.Mathematics;
|
||||||
|
using Unity.Transforms;
|
||||||
|
using Unity.NetCode;
|
||||||
|
using EE2Clone.Components;
|
||||||
|
using EE2Clone.Core;
|
||||||
|
|
||||||
|
namespace EE2Clone.Systems
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Server-side: processes AttackCommandRpc — sets combat target on units.
|
||||||
|
/// </summary>
|
||||||
|
[BurstCompile]
|
||||||
|
[WorldSystemFilter(WorldSystemFilterFlags.ServerSimulation)]
|
||||||
|
public partial struct AttackCommandSystem : ISystem
|
||||||
|
{
|
||||||
|
[BurstCompile]
|
||||||
|
public void OnUpdate(ref SystemState state)
|
||||||
|
{
|
||||||
|
var ecb = new EntityCommandBuffer(Allocator.Temp);
|
||||||
|
|
||||||
|
foreach (var (cmd, source, entity) in
|
||||||
|
SystemAPI.Query<RefRO<AttackCommandRpc>, RefRO<ReceiveRpcCommandRequest>>()
|
||||||
|
.WithEntityAccess())
|
||||||
|
{
|
||||||
|
var attacker = cmd.ValueRO.AttackerEntity;
|
||||||
|
var target = cmd.ValueRO.TargetEntity;
|
||||||
|
|
||||||
|
if (state.EntityManager.Exists(attacker) && state.EntityManager.Exists(target) &&
|
||||||
|
state.EntityManager.HasComponent<CombatTarget>(attacker))
|
||||||
|
{
|
||||||
|
state.EntityManager.SetComponentData(attacker, new CombatTarget { Target = target });
|
||||||
|
state.EntityManager.SetComponentData(attacker, new UnitStateComponent { Value = UnitState.Attacking });
|
||||||
|
}
|
||||||
|
|
||||||
|
ecb.DestroyEntity(entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
ecb.Playback(state.EntityManager);
|
||||||
|
ecb.Dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Server-side: units with a CombatTarget move toward target, then deal damage when in range.
|
||||||
|
/// </summary>
|
||||||
|
[BurstCompile]
|
||||||
|
[WorldSystemFilter(WorldSystemFilterFlags.ServerSimulation)]
|
||||||
|
[UpdateAfter(typeof(AttackCommandSystem))]
|
||||||
|
public partial struct CombatSystem : ISystem
|
||||||
|
{
|
||||||
|
[BurstCompile]
|
||||||
|
public void OnUpdate(ref SystemState state)
|
||||||
|
{
|
||||||
|
float dt = SystemAPI.Time.DeltaTime;
|
||||||
|
|
||||||
|
foreach (var (transform, attack, combatTarget, speed, unitState, unitClass, entity) in
|
||||||
|
SystemAPI.Query<RefRW<LocalTransform>, RefRW<AttackData>, RefRW<CombatTarget>,
|
||||||
|
RefRO<MovementSpeed>, RefRW<UnitStateComponent>, RefRO<UnitClassComponent>>()
|
||||||
|
.WithAll<UnitTag>()
|
||||||
|
.WithEntityAccess())
|
||||||
|
{
|
||||||
|
// Tick cooldown
|
||||||
|
if (attack.ValueRO.CooldownRemaining > 0)
|
||||||
|
attack.ValueRW.CooldownRemaining -= dt;
|
||||||
|
|
||||||
|
var target = combatTarget.ValueRO.Target;
|
||||||
|
if (target == Entity.Null || !state.EntityManager.Exists(target))
|
||||||
|
{
|
||||||
|
// Clear invalid target
|
||||||
|
if (target != Entity.Null)
|
||||||
|
{
|
||||||
|
combatTarget.ValueRW.Target = Entity.Null;
|
||||||
|
if (unitState.ValueRO.Value == UnitState.Attacking)
|
||||||
|
unitState.ValueRW.Value = UnitState.Idle;
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!state.EntityManager.HasComponent<Health>(target))
|
||||||
|
{
|
||||||
|
combatTarget.ValueRW.Target = Entity.Null;
|
||||||
|
unitState.ValueRW.Value = UnitState.Idle;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
var targetTransform = state.EntityManager.GetComponentData<LocalTransform>(target);
|
||||||
|
float3 toTarget = targetTransform.Position - transform.ValueRO.Position;
|
||||||
|
toTarget.y = 0;
|
||||||
|
float distance = math.length(toTarget);
|
||||||
|
|
||||||
|
if (distance > attack.ValueRO.Range)
|
||||||
|
{
|
||||||
|
// Move toward target
|
||||||
|
float3 moveDir = math.normalize(toTarget);
|
||||||
|
float moveAmount = math.min(speed.ValueRO.Value * dt, distance - attack.ValueRO.Range * 0.9f);
|
||||||
|
transform.ValueRW.Position += moveDir * moveAmount;
|
||||||
|
transform.ValueRW.Rotation = quaternion.LookRotationSafe(moveDir, math.up());
|
||||||
|
}
|
||||||
|
else if (attack.ValueRO.CooldownRemaining <= 0)
|
||||||
|
{
|
||||||
|
// Attack
|
||||||
|
float damage = attack.ValueRO.Damage;
|
||||||
|
|
||||||
|
// Apply counter bonus
|
||||||
|
if (state.EntityManager.HasComponent<UnitClassComponent>(target))
|
||||||
|
{
|
||||||
|
var targetClass = state.EntityManager.GetComponentData<UnitClassComponent>(target).Value;
|
||||||
|
float counterMult = GetCounterMultiplier(unitClass.ValueRO.Value, targetClass);
|
||||||
|
damage *= counterMult;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Apply armor
|
||||||
|
if (state.EntityManager.HasComponent<ArmorData>(target))
|
||||||
|
{
|
||||||
|
float armor = state.EntityManager.GetComponentData<ArmorData>(target).Value;
|
||||||
|
damage = math.max(damage - armor, GameConstants.MinDamage);
|
||||||
|
}
|
||||||
|
|
||||||
|
var targetHealth = state.EntityManager.GetComponentData<Health>(target);
|
||||||
|
targetHealth.Current -= damage;
|
||||||
|
state.EntityManager.SetComponentData(target, targetHealth);
|
||||||
|
|
||||||
|
attack.ValueRW.CooldownRemaining = attack.ValueRO.AttackCooldown;
|
||||||
|
|
||||||
|
// Face target
|
||||||
|
if (distance > 0.01f)
|
||||||
|
transform.ValueRW.Rotation = quaternion.LookRotationSafe(math.normalize(toTarget), math.up());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static float GetCounterMultiplier(UnitClass attacker, UnitClass target)
|
||||||
|
{
|
||||||
|
// Rock-paper-scissors: Infantry > Ranged > Cavalry > Infantry
|
||||||
|
if (attacker == UnitClass.Infantry && target == UnitClass.Ranged) return GameConstants.CounterBonusStrong;
|
||||||
|
if (attacker == UnitClass.Ranged && target == UnitClass.Cavalry) return GameConstants.CounterBonusStrong;
|
||||||
|
if (attacker == UnitClass.Cavalry && target == UnitClass.Infantry) return GameConstants.CounterBonusStrong;
|
||||||
|
|
||||||
|
if (attacker == UnitClass.Infantry && target == UnitClass.Cavalry) return GameConstants.CounterBonusWeak;
|
||||||
|
if (attacker == UnitClass.Ranged && target == UnitClass.Infantry) return GameConstants.CounterBonusWeak;
|
||||||
|
if (attacker == UnitClass.Cavalry && target == UnitClass.Ranged) return GameConstants.CounterBonusWeak;
|
||||||
|
|
||||||
|
// Siege bonus vs buildings (handled via BuildingTag check in caller if needed)
|
||||||
|
return GameConstants.CounterBonusNeutral;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Server-side: destroys entities that have 0 or less HP after a brief delay.
|
||||||
|
/// </summary>
|
||||||
|
[BurstCompile]
|
||||||
|
[WorldSystemFilter(WorldSystemFilterFlags.ServerSimulation)]
|
||||||
|
[UpdateAfter(typeof(CombatSystem))]
|
||||||
|
public partial struct DeathSystem : ISystem
|
||||||
|
{
|
||||||
|
[BurstCompile]
|
||||||
|
public void OnUpdate(ref SystemState state)
|
||||||
|
{
|
||||||
|
var ecb = new EntityCommandBuffer(Allocator.Temp);
|
||||||
|
float dt = SystemAPI.Time.DeltaTime;
|
||||||
|
|
||||||
|
// Tag entities with <=0 HP for destruction
|
||||||
|
foreach (var (health, entity) in
|
||||||
|
SystemAPI.Query<RefRO<Health>>()
|
||||||
|
.WithNone<DeathTimer, DestroyEntityTag>()
|
||||||
|
.WithEntityAccess())
|
||||||
|
{
|
||||||
|
if (health.ValueRO.Current <= 0)
|
||||||
|
{
|
||||||
|
ecb.AddComponent(entity, new DeathTimer { TimeRemaining = 1.0f });
|
||||||
|
|
||||||
|
if (state.EntityManager.HasComponent<UnitStateComponent>(entity))
|
||||||
|
{
|
||||||
|
ecb.SetComponent(entity, new UnitStateComponent { Value = UnitState.Dying });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tick death timers
|
||||||
|
foreach (var (deathTimer, entity) in
|
||||||
|
SystemAPI.Query<RefRW<DeathTimer>>()
|
||||||
|
.WithNone<DestroyEntityTag>()
|
||||||
|
.WithEntityAccess())
|
||||||
|
{
|
||||||
|
deathTimer.ValueRW.TimeRemaining -= dt;
|
||||||
|
if (deathTimer.ValueRO.TimeRemaining <= 0)
|
||||||
|
{
|
||||||
|
ecb.AddComponent<DestroyEntityTag>(entity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Destroy tagged entities
|
||||||
|
foreach (var (tag, entity) in
|
||||||
|
SystemAPI.Query<RefRO<DestroyEntityTag>>()
|
||||||
|
.WithEntityAccess())
|
||||||
|
{
|
||||||
|
ecb.DestroyEntity(entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
ecb.Playback(state.EntityManager);
|
||||||
|
ecb.Dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Scripts/Systems/CombatSystems.cs.meta
Normal file
2
Assets/Scripts/Systems/CombatSystems.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1163cc3a2970481429c3bd67549beb78
|
||||||
172
Assets/Scripts/Systems/GatheringSystems.cs
Normal file
172
Assets/Scripts/Systems/GatheringSystems.cs
Normal file
@@ -0,0 +1,172 @@
|
|||||||
|
using Unity.Burst;
|
||||||
|
using Unity.Collections;
|
||||||
|
using Unity.Entities;
|
||||||
|
using Unity.Mathematics;
|
||||||
|
using Unity.Transforms;
|
||||||
|
using Unity.NetCode;
|
||||||
|
using EE2Clone.Components;
|
||||||
|
using EE2Clone.Core;
|
||||||
|
|
||||||
|
namespace EE2Clone.Systems
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Server-side: processes GatherCommandRpc — assigns a gather target to citizens.
|
||||||
|
/// </summary>
|
||||||
|
[BurstCompile]
|
||||||
|
[WorldSystemFilter(WorldSystemFilterFlags.ServerSimulation)]
|
||||||
|
public partial struct GatherCommandSystem : ISystem
|
||||||
|
{
|
||||||
|
[BurstCompile]
|
||||||
|
public void OnUpdate(ref SystemState state)
|
||||||
|
{
|
||||||
|
var ecb = new EntityCommandBuffer(Allocator.Temp);
|
||||||
|
|
||||||
|
foreach (var (cmd, source, entity) in
|
||||||
|
SystemAPI.Query<RefRO<GatherCommandRpc>, RefRO<ReceiveRpcCommandRequest>>()
|
||||||
|
.WithEntityAccess())
|
||||||
|
{
|
||||||
|
var citizen = cmd.ValueRO.CitizenEntity;
|
||||||
|
var node = cmd.ValueRO.ResourceNodeEntity;
|
||||||
|
|
||||||
|
if (state.EntityManager.Exists(citizen) && state.EntityManager.Exists(node) &&
|
||||||
|
state.EntityManager.HasComponent<CitizenStateComponent>(citizen) &&
|
||||||
|
state.EntityManager.HasComponent<ResourceNode>(node))
|
||||||
|
{
|
||||||
|
state.EntityManager.SetComponentData(citizen, new GatherTarget { Target = node });
|
||||||
|
state.EntityManager.SetComponentData(citizen, new CitizenStateComponent { Value = CitizenState.MovingToGather });
|
||||||
|
|
||||||
|
// Set move target to the resource node's position
|
||||||
|
var nodePos = state.EntityManager.GetComponentData<LocalTransform>(node).Position;
|
||||||
|
state.EntityManager.SetComponentData(citizen, new MoveTarget
|
||||||
|
{
|
||||||
|
Position = nodePos,
|
||||||
|
IsActive = true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
ecb.DestroyEntity(entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
ecb.Playback(state.EntityManager);
|
||||||
|
ecb.Dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Server-side: citizen gathering state machine.
|
||||||
|
/// Handles: MovingToGather → Gathering → MovingToDropoff → Depositing → repeat.
|
||||||
|
/// </summary>
|
||||||
|
[BurstCompile]
|
||||||
|
[WorldSystemFilter(WorldSystemFilterFlags.ServerSimulation)]
|
||||||
|
[UpdateAfter(typeof(GatherCommandSystem))]
|
||||||
|
public partial struct GatheringSystem : ISystem
|
||||||
|
{
|
||||||
|
private float _gatherTimer;
|
||||||
|
|
||||||
|
public void OnCreate(ref SystemState state)
|
||||||
|
{
|
||||||
|
_gatherTimer = 0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
[BurstCompile]
|
||||||
|
public void OnUpdate(ref SystemState state)
|
||||||
|
{
|
||||||
|
float dt = SystemAPI.Time.DeltaTime;
|
||||||
|
_gatherTimer += dt;
|
||||||
|
bool gatherTick = _gatherTimer >= GameConstants.GatherTickInterval;
|
||||||
|
if (gatherTick) _gatherTimer -= GameConstants.GatherTickInterval;
|
||||||
|
|
||||||
|
foreach (var (citizenState, gatherTarget, carried, transform, moveTarget, owner) in
|
||||||
|
SystemAPI.Query<RefRW<CitizenStateComponent>, RefRW<GatherTarget>,
|
||||||
|
RefRW<CarriedResource>, RefRO<LocalTransform>, RefRW<MoveTarget>, RefRO<OwnerPlayer>>()
|
||||||
|
.WithAll<CitizenTag>())
|
||||||
|
{
|
||||||
|
switch (citizenState.ValueRO.Value)
|
||||||
|
{
|
||||||
|
case CitizenState.MovingToGather:
|
||||||
|
// Check if arrived (MoveTarget will be deactivated by movement system)
|
||||||
|
if (!moveTarget.ValueRO.IsActive)
|
||||||
|
{
|
||||||
|
citizenState.ValueRW.Value = CitizenState.Gathering;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CitizenState.Gathering:
|
||||||
|
if (!gatherTick) break;
|
||||||
|
|
||||||
|
var targetEntity = gatherTarget.ValueRO.Target;
|
||||||
|
if (targetEntity == Entity.Null || !state.EntityManager.Exists(targetEntity))
|
||||||
|
{
|
||||||
|
citizenState.ValueRW.Value = CitizenState.Idle;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
var node = state.EntityManager.GetComponentData<ResourceNode>(targetEntity);
|
||||||
|
if (node.RemainingAmount <= 0)
|
||||||
|
{
|
||||||
|
citizenState.ValueRW.Value = CitizenState.Idle;
|
||||||
|
gatherTarget.ValueRW.Target = Entity.Null;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Gather one unit
|
||||||
|
int gatherAmount = math.min(1, node.RemainingAmount);
|
||||||
|
gatherAmount = math.min(gatherAmount, carried.ValueRO.MaxCarryCapacity - carried.ValueRO.Amount);
|
||||||
|
|
||||||
|
if (gatherAmount > 0)
|
||||||
|
{
|
||||||
|
node.RemainingAmount -= gatherAmount;
|
||||||
|
state.EntityManager.SetComponentData(targetEntity, node);
|
||||||
|
|
||||||
|
carried.ValueRW.Amount += gatherAmount;
|
||||||
|
carried.ValueRW.Type = node.Type;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If carrying capacity full, go to dropoff
|
||||||
|
if (carried.ValueRO.Amount >= carried.ValueRO.MaxCarryCapacity)
|
||||||
|
{
|
||||||
|
citizenState.ValueRW.Value = CitizenState.MovingToDropoff;
|
||||||
|
// TODO: Find nearest dropoff building and set as move target
|
||||||
|
// For now, move back toward origin as placeholder
|
||||||
|
moveTarget.ValueRW = new MoveTarget
|
||||||
|
{
|
||||||
|
Position = float3.zero,
|
||||||
|
IsActive = true
|
||||||
|
};
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CitizenState.MovingToDropoff:
|
||||||
|
if (!moveTarget.ValueRO.IsActive)
|
||||||
|
{
|
||||||
|
citizenState.ValueRW.Value = CitizenState.Depositing;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CitizenState.Depositing:
|
||||||
|
// Deposit resources into player economy
|
||||||
|
// TODO: Find PlayerResourcesComponent for this owner and add resources
|
||||||
|
carried.ValueRW.Amount = 0;
|
||||||
|
|
||||||
|
// Go back to gather if the node still exists
|
||||||
|
if (gatherTarget.ValueRO.Target != Entity.Null &&
|
||||||
|
state.EntityManager.Exists(gatherTarget.ValueRO.Target))
|
||||||
|
{
|
||||||
|
var nodePos = state.EntityManager.GetComponentData<LocalTransform>(gatherTarget.ValueRO.Target).Position;
|
||||||
|
moveTarget.ValueRW = new MoveTarget
|
||||||
|
{
|
||||||
|
Position = nodePos,
|
||||||
|
IsActive = true
|
||||||
|
};
|
||||||
|
citizenState.ValueRW.Value = CitizenState.MovingToGather;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
citizenState.ValueRW.Value = CitizenState.Idle;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Scripts/Systems/GatheringSystems.cs.meta
Normal file
2
Assets/Scripts/Systems/GatheringSystems.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 35e43773511035f4bb29174417932b52
|
||||||
151
Assets/Scripts/Systems/MovementSystems.cs
Normal file
151
Assets/Scripts/Systems/MovementSystems.cs
Normal file
@@ -0,0 +1,151 @@
|
|||||||
|
using Unity.Burst;
|
||||||
|
using Unity.Collections;
|
||||||
|
using Unity.Entities;
|
||||||
|
using Unity.Mathematics;
|
||||||
|
using Unity.Transforms;
|
||||||
|
using Unity.NetCode;
|
||||||
|
using EE2Clone.Components;
|
||||||
|
using EE2Clone.Core;
|
||||||
|
|
||||||
|
namespace EE2Clone.Systems
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Server-side system that processes MoveCommandRpc and sets MoveTarget on units.
|
||||||
|
/// </summary>
|
||||||
|
[BurstCompile]
|
||||||
|
[WorldSystemFilter(WorldSystemFilterFlags.ServerSimulation)]
|
||||||
|
public partial struct MoveCommandSystem : ISystem
|
||||||
|
{
|
||||||
|
[BurstCompile]
|
||||||
|
public void OnUpdate(ref SystemState state)
|
||||||
|
{
|
||||||
|
var ecb = new EntityCommandBuffer(Allocator.Temp);
|
||||||
|
|
||||||
|
foreach (var (cmd, source, entity) in
|
||||||
|
SystemAPI.Query<RefRO<MoveCommandRpc>, RefRO<ReceiveRpcCommandRequest>>()
|
||||||
|
.WithEntityAccess())
|
||||||
|
{
|
||||||
|
var unitEntity = cmd.ValueRO.UnitEntity;
|
||||||
|
if (state.EntityManager.Exists(unitEntity) &&
|
||||||
|
state.EntityManager.HasComponent<MoveTarget>(unitEntity))
|
||||||
|
{
|
||||||
|
state.EntityManager.SetComponentData(unitEntity, new MoveTarget
|
||||||
|
{
|
||||||
|
Position = cmd.ValueRO.TargetPosition,
|
||||||
|
IsActive = true
|
||||||
|
});
|
||||||
|
|
||||||
|
// Clear combat target when moving
|
||||||
|
if (state.EntityManager.HasComponent<CombatTarget>(unitEntity))
|
||||||
|
{
|
||||||
|
state.EntityManager.SetComponentData(unitEntity, new CombatTarget
|
||||||
|
{
|
||||||
|
Target = Entity.Null
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set state to Moving
|
||||||
|
if (state.EntityManager.HasComponent<UnitStateComponent>(unitEntity))
|
||||||
|
{
|
||||||
|
state.EntityManager.SetComponentData(unitEntity, new UnitStateComponent
|
||||||
|
{
|
||||||
|
Value = UnitState.Moving
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ecb.DestroyEntity(entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
ecb.Playback(state.EntityManager);
|
||||||
|
ecb.Dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Server-side system that moves units toward their MoveTarget.
|
||||||
|
/// Placeholder for flow-field pathfinding — currently uses direct steering.
|
||||||
|
/// </summary>
|
||||||
|
[BurstCompile]
|
||||||
|
[WorldSystemFilter(WorldSystemFilterFlags.ServerSimulation)]
|
||||||
|
[UpdateAfter(typeof(MoveCommandSystem))]
|
||||||
|
public partial struct UnitMovementSystem : ISystem
|
||||||
|
{
|
||||||
|
[BurstCompile]
|
||||||
|
public void OnUpdate(ref SystemState state)
|
||||||
|
{
|
||||||
|
float dt = SystemAPI.Time.DeltaTime;
|
||||||
|
|
||||||
|
foreach (var (transform, moveTarget, speed, unitState) in
|
||||||
|
SystemAPI.Query<RefRW<LocalTransform>, RefRW<MoveTarget>, RefRO<MovementSpeed>, RefRW<UnitStateComponent>>()
|
||||||
|
.WithAll<UnitTag>())
|
||||||
|
{
|
||||||
|
if (!moveTarget.ValueRO.IsActive) continue;
|
||||||
|
|
||||||
|
float3 pos = transform.ValueRO.Position;
|
||||||
|
float3 target = moveTarget.ValueRO.Position;
|
||||||
|
float3 direction = target - pos;
|
||||||
|
direction.y = 0; // Keep on ground plane
|
||||||
|
|
||||||
|
float distance = math.length(direction);
|
||||||
|
|
||||||
|
if (distance < 0.5f)
|
||||||
|
{
|
||||||
|
// Arrived
|
||||||
|
moveTarget.ValueRW.IsActive = false;
|
||||||
|
if (unitState.ValueRO.Value == UnitState.Moving)
|
||||||
|
unitState.ValueRW.Value = UnitState.Idle;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
float3 moveDir = math.normalize(direction);
|
||||||
|
float moveAmount = speed.ValueRO.Value * dt;
|
||||||
|
moveAmount = math.min(moveAmount, distance);
|
||||||
|
|
||||||
|
var newPos = pos + moveDir * moveAmount;
|
||||||
|
transform.ValueRW.Position = newPos;
|
||||||
|
|
||||||
|
// Face movement direction
|
||||||
|
transform.ValueRW.Rotation = quaternion.LookRotationSafe(moveDir, math.up());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Server-side: processes StopCommandRpc — halts unit movement and clears targets.
|
||||||
|
/// </summary>
|
||||||
|
[BurstCompile]
|
||||||
|
[WorldSystemFilter(WorldSystemFilterFlags.ServerSimulation)]
|
||||||
|
public partial struct StopCommandSystem : ISystem
|
||||||
|
{
|
||||||
|
[BurstCompile]
|
||||||
|
public void OnUpdate(ref SystemState state)
|
||||||
|
{
|
||||||
|
var ecb = new EntityCommandBuffer(Allocator.Temp);
|
||||||
|
|
||||||
|
foreach (var (cmd, source, entity) in
|
||||||
|
SystemAPI.Query<RefRO<StopCommandRpc>, RefRO<ReceiveRpcCommandRequest>>()
|
||||||
|
.WithEntityAccess())
|
||||||
|
{
|
||||||
|
var unitEntity = cmd.ValueRO.UnitEntity;
|
||||||
|
if (state.EntityManager.Exists(unitEntity))
|
||||||
|
{
|
||||||
|
if (state.EntityManager.HasComponent<MoveTarget>(unitEntity))
|
||||||
|
state.EntityManager.SetComponentData(unitEntity, new MoveTarget { IsActive = false });
|
||||||
|
|
||||||
|
if (state.EntityManager.HasComponent<CombatTarget>(unitEntity))
|
||||||
|
state.EntityManager.SetComponentData(unitEntity, new CombatTarget { Target = Entity.Null });
|
||||||
|
|
||||||
|
if (state.EntityManager.HasComponent<UnitStateComponent>(unitEntity))
|
||||||
|
state.EntityManager.SetComponentData(unitEntity, new UnitStateComponent { Value = UnitState.Idle });
|
||||||
|
}
|
||||||
|
|
||||||
|
ecb.DestroyEntity(entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
ecb.Playback(state.EntityManager);
|
||||||
|
ecb.Dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Scripts/Systems/MovementSystems.cs.meta
Normal file
2
Assets/Scripts/Systems/MovementSystems.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ae6e692d140e8c24a9dd56224e814d43
|
||||||
67
Assets/Scripts/Systems/PopulationSystem.cs
Normal file
67
Assets/Scripts/Systems/PopulationSystem.cs
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
using Unity.Burst;
|
||||||
|
using Unity.Collections;
|
||||||
|
using Unity.Entities;
|
||||||
|
using Unity.NetCode;
|
||||||
|
using EE2Clone.Components;
|
||||||
|
using EE2Clone.Core;
|
||||||
|
|
||||||
|
namespace EE2Clone.Systems
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Server-side: sums population-providing buildings per player and updates PopulationMax.
|
||||||
|
/// </summary>
|
||||||
|
[BurstCompile]
|
||||||
|
[WorldSystemFilter(WorldSystemFilterFlags.ServerSimulation)]
|
||||||
|
public partial struct PopulationSystem : ISystem
|
||||||
|
{
|
||||||
|
[BurstCompile]
|
||||||
|
public void OnUpdate(ref SystemState state)
|
||||||
|
{
|
||||||
|
// Build a map of playerId → total pop capacity from buildings
|
||||||
|
var popCapMap = new NativeHashMap<int, int>(GameConstants.MaxPlayers, Allocator.Temp);
|
||||||
|
|
||||||
|
foreach (var (pop, owner) in
|
||||||
|
SystemAPI.Query<RefRO<ProvidesPopulation>, RefRO<OwnerPlayer>>()
|
||||||
|
.WithAll<BuildingTag>()
|
||||||
|
.WithNone<UnderConstructionTag>())
|
||||||
|
{
|
||||||
|
int playerId = owner.ValueRO.PlayerId;
|
||||||
|
if (popCapMap.TryGetValue(playerId, out int current))
|
||||||
|
popCapMap[playerId] = current + pop.ValueRO.Amount;
|
||||||
|
else
|
||||||
|
popCapMap[playerId] = GameConstants.StartingPopulationCap + pop.ValueRO.Amount;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Count current population per player (units)
|
||||||
|
var popCurrentMap = new NativeHashMap<int, int>(GameConstants.MaxPlayers, Allocator.Temp);
|
||||||
|
|
||||||
|
foreach (var owner in SystemAPI.Query<RefRO<OwnerPlayer>>().WithAll<UnitTag>())
|
||||||
|
{
|
||||||
|
int playerId = owner.ValueRO.PlayerId;
|
||||||
|
if (popCurrentMap.TryGetValue(playerId, out int current))
|
||||||
|
popCurrentMap[playerId] = current + 1;
|
||||||
|
else
|
||||||
|
popCurrentMap[playerId] = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update PlayerStateComponent
|
||||||
|
foreach (var playerState in SystemAPI.Query<RefRW<PlayerStateComponent>>())
|
||||||
|
{
|
||||||
|
int pid = playerState.ValueRO.PlayerId;
|
||||||
|
|
||||||
|
if (popCapMap.TryGetValue(pid, out int cap))
|
||||||
|
playerState.ValueRW.PopulationMax = System.Math.Min(cap, GameConstants.MaxPopulationCap);
|
||||||
|
else
|
||||||
|
playerState.ValueRW.PopulationMax = GameConstants.StartingPopulationCap;
|
||||||
|
|
||||||
|
if (popCurrentMap.TryGetValue(pid, out int current))
|
||||||
|
playerState.ValueRW.PopulationCurrent = current;
|
||||||
|
else
|
||||||
|
playerState.ValueRW.PopulationCurrent = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
popCapMap.Dispose();
|
||||||
|
popCurrentMap.Dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Scripts/Systems/PopulationSystem.cs.meta
Normal file
2
Assets/Scripts/Systems/PopulationSystem.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e2ca22d7e5c3be04fb7f4d58ea50c36b
|
||||||
8
Assets/Settings.meta
Normal file
8
Assets/Settings.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 709f11a7f3c4041caa4ef136ea32d874
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
982
Assets/Settings/DefaultVolumeProfile.asset
Normal file
982
Assets/Settings/DefaultVolumeProfile.asset
Normal file
@@ -0,0 +1,982 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &-9167874883656233139
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
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: 5485954d14dfb9a4c8ead8edb0ded5b1, type: 3}
|
||||||
|
m_Name: LiftGammaGain
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
lift:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {x: 1, y: 1, z: 1, w: 0}
|
||||||
|
gamma:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {x: 1, y: 1, z: 1, w: 0}
|
||||||
|
gain:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {x: 1, y: 1, z: 1, w: 0}
|
||||||
|
--- !u!114 &-8270506406425502121
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
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: 70afe9e12c7a7ed47911bb608a23a8ff, type: 3}
|
||||||
|
m_Name: SplitToning
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
shadows:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {r: 0.5, g: 0.5, b: 0.5, a: 1}
|
||||||
|
highlights:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {r: 0.5, g: 0.5, b: 0.5, a: 1}
|
||||||
|
balance:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
--- !u!114 &-8104416584915340131
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
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: 0}
|
||||||
|
m_Name: CopyPasteTestComponent2
|
||||||
|
m_EditorClassIdentifier: Unity.RenderPipelines.Core.Editor.Tests:UnityEditor.Rendering.Tests:VolumeComponentCopyPasteTests/CopyPasteTestComponent2
|
||||||
|
active: 1
|
||||||
|
p1:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
p2:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
p21:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
--- !u!114 &-7750755424749557576
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
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: 60f3b30c03e6ba64d9a27dc9dba8f28d, type: 3}
|
||||||
|
m_Name: OutlineVolumeComponent
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
Enabled:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
--- !u!114 &-7743500325797982168
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
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: ccf1aba9553839d41ae37dd52e9ebcce, type: 3}
|
||||||
|
m_Name: MotionBlur
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
mode:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
quality:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
intensity:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
clamp:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.05
|
||||||
|
--- !u!114 &-7274224791359825572
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
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: 0fd9ee276a1023e439cf7a9c393195fa, type: 3}
|
||||||
|
m_Name: TestAnimationCurveVolumeComponent
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
testParameter:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0.5
|
||||||
|
value: 10
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 10
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 1
|
||||||
|
value: 15
|
||||||
|
inSlope: 10
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
--- !u!114 &-6335409530604852063
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
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: 66f335fb1ffd8684294ad653bf1c7564, type: 3}
|
||||||
|
m_Name: ColorAdjustments
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
postExposure:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
contrast:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
colorFilter:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
hueShift:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
saturation:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
--- !u!114 &-6288072647309666549
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
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: 29fa0085f50d5e54f8144f766051a691, type: 3}
|
||||||
|
m_Name: FilmGrain
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
type:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
intensity:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
response:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.8
|
||||||
|
texture:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {fileID: 0}
|
||||||
|
--- !u!114 &-5520245016509672950
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
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: 97c23e3b12dc18c42a140437e53d3951, type: 3}
|
||||||
|
m_Name: Tonemapping
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
mode:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
neutralHDRRangeReductionMode:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 2
|
||||||
|
acesPreset:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 3
|
||||||
|
hueShiftAmount:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
detectPaperWhite:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
paperWhite:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 300
|
||||||
|
detectBrightnessLimits:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
minNits:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.005
|
||||||
|
maxNits:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1000
|
||||||
|
--- !u!114 &-5360449096862653589
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
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: 0}
|
||||||
|
m_Name: VolumeComponentSupportedEverywhere
|
||||||
|
m_EditorClassIdentifier: Unity.RenderPipelines.Core.Editor.Tests:UnityEngine.Rendering.Tests:VolumeComponentEditorSupportedOnTests/VolumeComponentSupportedEverywhere
|
||||||
|
active: 1
|
||||||
|
--- !u!114 &-5139089513906902183
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
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: 5a00a63fdd6bd2a45ab1f2d869305ffd, type: 3}
|
||||||
|
m_Name: OasisFogVolumeComponent
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
Density:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
StartDistance:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
HeightRange:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {x: 0, y: 50}
|
||||||
|
Tint:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
SunScatteringIntensity:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 2
|
||||||
|
--- !u!114 &-4463884970436517307
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
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: fb60a22f311433c4c962b888d1393f88, type: 3}
|
||||||
|
m_Name: PaniniProjection
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
distance:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
cropToFit:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
--- !u!114 &-1410297666881709256
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
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: 6bd486065ce11414fa40e631affc4900, type: 3}
|
||||||
|
m_Name: ProbeVolumesOptions
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
normalBias:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.33
|
||||||
|
viewBias:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
scaleBiasWithMinProbeDistance:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
samplingNoise:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.1
|
||||||
|
animateSamplingNoise:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
leakReductionMode:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
minValidDotProductValue:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.1
|
||||||
|
occlusionOnlyReflectionNormalization:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
intensityMultiplier:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
skyOcclusionIntensityMultiplier:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
--- !u!114 &-1216621516061285780
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
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: 0b2db86121404754db890f4c8dfe81b2, type: 3}
|
||||||
|
m_Name: Bloom
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
skipIterations:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
threshold:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.9
|
||||||
|
intensity:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
scatter:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.7
|
||||||
|
clamp:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 65472
|
||||||
|
tint:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
highQualityFiltering:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
downscale:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
maxIterations:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 6
|
||||||
|
dirtTexture:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {fileID: 0}
|
||||||
|
dimension: 1
|
||||||
|
dirtIntensity:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
--- !u!114 &-1170528603972255243
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
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: 221518ef91623a7438a71fef23660601, type: 3}
|
||||||
|
m_Name: WhiteBalance
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
temperature:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
tint:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
--- !u!114 &-581120513425526550
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
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: 0}
|
||||||
|
m_Name: CopyPasteTestComponent3
|
||||||
|
m_EditorClassIdentifier: Unity.RenderPipelines.Core.Editor.Tests:UnityEditor.Rendering.Tests:VolumeComponentCopyPasteTests/CopyPasteTestComponent3
|
||||||
|
active: 1
|
||||||
|
p1:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
p2:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
p31:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {r: 0, g: 0, b: 0, a: 1}
|
||||||
|
--- !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: d7fd9488000d3734a9e00ee676215985, type: 3}
|
||||||
|
m_Name: DefaultVolumeProfile
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
components:
|
||||||
|
- {fileID: -9167874883656233139}
|
||||||
|
- {fileID: 1918650496244738858}
|
||||||
|
- {fileID: 853819529557874667}
|
||||||
|
- {fileID: 1052315754049611418}
|
||||||
|
- {fileID: -1170528603972255243}
|
||||||
|
- {fileID: -8270506406425502121}
|
||||||
|
- {fileID: -5520245016509672950}
|
||||||
|
- {fileID: 7173750748008157695}
|
||||||
|
- {fileID: 1666464333004379222}
|
||||||
|
- {fileID: 9001657382290151224}
|
||||||
|
- {fileID: -6335409530604852063}
|
||||||
|
- {fileID: -1216621516061285780}
|
||||||
|
- {fileID: 3959858460715838825}
|
||||||
|
- {fileID: -7743500325797982168}
|
||||||
|
- {fileID: 4644742534064026673}
|
||||||
|
- {fileID: -4463884970436517307}
|
||||||
|
- {fileID: -6288072647309666549}
|
||||||
|
- {fileID: 7518938298396184218}
|
||||||
|
- {fileID: -1410297666881709256}
|
||||||
|
- {fileID: -7750755424749557576}
|
||||||
|
- {fileID: -5139089513906902183}
|
||||||
|
--- !u!114 &853819529557874667
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
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: 06437c1ff663d574d9447842ba0a72e4, type: 3}
|
||||||
|
m_Name: ScreenSpaceLensFlare
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
intensity:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
tintColor:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
bloomMip:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
firstFlareIntensity:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
secondaryFlareIntensity:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
warpedFlareIntensity:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
warpedFlareScale:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {x: 1, y: 1}
|
||||||
|
samples:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
sampleDimmer:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.5
|
||||||
|
vignetteEffect:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
startingPosition:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1.25
|
||||||
|
scale:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1.5
|
||||||
|
streaksIntensity:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
streaksLength:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.5
|
||||||
|
streaksOrientation:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
streaksThreshold:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.25
|
||||||
|
resolution:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 4
|
||||||
|
chromaticAbberationIntensity:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.5
|
||||||
|
--- !u!114 &1052315754049611418
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
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: 558a8e2b6826cf840aae193990ba9f2e, type: 3}
|
||||||
|
m_Name: ShadowsMidtonesHighlights
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
shadows:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {x: 1, y: 1, z: 1, w: 0}
|
||||||
|
midtones:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {x: 1, y: 1, z: 1, w: 0}
|
||||||
|
highlights:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {x: 1, y: 1, z: 1, w: 0}
|
||||||
|
shadowsStart:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
shadowsEnd:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.3
|
||||||
|
highlightsStart:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.55
|
||||||
|
highlightsEnd:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
--- !u!114 &1666464333004379222
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
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: 3eb4b772797da9440885e8bd939e9560, type: 3}
|
||||||
|
m_Name: ColorCurves
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
master:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value:
|
||||||
|
<length>k__BackingField: 2
|
||||||
|
m_Loop: 0
|
||||||
|
m_ZeroValue: 0
|
||||||
|
m_Range: 1
|
||||||
|
m_Curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0
|
||||||
|
inSlope: 1
|
||||||
|
outSlope: 1
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 1
|
||||||
|
value: 1
|
||||||
|
inSlope: 1
|
||||||
|
outSlope: 1
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
red:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value:
|
||||||
|
<length>k__BackingField: 2
|
||||||
|
m_Loop: 0
|
||||||
|
m_ZeroValue: 0
|
||||||
|
m_Range: 1
|
||||||
|
m_Curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0
|
||||||
|
inSlope: 1
|
||||||
|
outSlope: 1
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 1
|
||||||
|
value: 1
|
||||||
|
inSlope: 1
|
||||||
|
outSlope: 1
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
green:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value:
|
||||||
|
<length>k__BackingField: 2
|
||||||
|
m_Loop: 0
|
||||||
|
m_ZeroValue: 0
|
||||||
|
m_Range: 1
|
||||||
|
m_Curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0
|
||||||
|
inSlope: 1
|
||||||
|
outSlope: 1
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 1
|
||||||
|
value: 1
|
||||||
|
inSlope: 1
|
||||||
|
outSlope: 1
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
blue:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value:
|
||||||
|
<length>k__BackingField: 2
|
||||||
|
m_Loop: 0
|
||||||
|
m_ZeroValue: 0
|
||||||
|
m_Range: 1
|
||||||
|
m_Curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0
|
||||||
|
inSlope: 1
|
||||||
|
outSlope: 1
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 1
|
||||||
|
value: 1
|
||||||
|
inSlope: 1
|
||||||
|
outSlope: 1
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
hueVsHue:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value:
|
||||||
|
<length>k__BackingField: 0
|
||||||
|
m_Loop: 1
|
||||||
|
m_ZeroValue: 0.5
|
||||||
|
m_Range: 1
|
||||||
|
m_Curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve: []
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
hueVsSat:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value:
|
||||||
|
<length>k__BackingField: 0
|
||||||
|
m_Loop: 1
|
||||||
|
m_ZeroValue: 0.5
|
||||||
|
m_Range: 1
|
||||||
|
m_Curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve: []
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
satVsSat:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value:
|
||||||
|
<length>k__BackingField: 0
|
||||||
|
m_Loop: 0
|
||||||
|
m_ZeroValue: 0.5
|
||||||
|
m_Range: 1
|
||||||
|
m_Curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve: []
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
lumVsSat:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value:
|
||||||
|
<length>k__BackingField: 0
|
||||||
|
m_Loop: 0
|
||||||
|
m_ZeroValue: 0.5
|
||||||
|
m_Range: 1
|
||||||
|
m_Curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve: []
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
--- !u!114 &1918650496244738858
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
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: e021b4c809a781e468c2988c016ebbea, type: 3}
|
||||||
|
m_Name: ColorLookup
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
texture:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {fileID: 0}
|
||||||
|
dimension: 1
|
||||||
|
contribution:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
--- !u!114 &3959858460715838825
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
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: c01700fd266d6914ababb731e09af2eb, type: 3}
|
||||||
|
m_Name: DepthOfField
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
mode:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
gaussianStart:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 10
|
||||||
|
gaussianEnd:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 30
|
||||||
|
gaussianMaxRadius:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
highQualitySampling:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
focusDistance:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 10
|
||||||
|
aperture:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 5.6
|
||||||
|
focalLength:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 50
|
||||||
|
bladeCount:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 5
|
||||||
|
bladeCurvature:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
bladeRotation:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
--- !u!114 &4251301726029935498
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
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: 74955a4b0b4243bc87231e8b59ed9140, type: 3}
|
||||||
|
m_Name: TestVolume
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
param:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 123
|
||||||
|
--- !u!114 &4644742534064026673
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
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: 81180773991d8724ab7f2d216912b564, type: 3}
|
||||||
|
m_Name: ChromaticAberration
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
intensity:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
--- !u!114 &6940869943325143175
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
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: 0}
|
||||||
|
m_Name: VolumeComponentSupportedOnAnySRP
|
||||||
|
m_EditorClassIdentifier: Unity.RenderPipelines.Core.Editor.Tests:UnityEngine.Rendering.Tests:VolumeComponentEditorSupportedOnTests/VolumeComponentSupportedOnAnySRP
|
||||||
|
active: 1
|
||||||
|
--- !u!114 &7173750748008157695
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
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: 899c54efeace73346a0a16faa3afe726, type: 3}
|
||||||
|
m_Name: Vignette
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
color:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {r: 0, g: 0, b: 0, a: 1}
|
||||||
|
center:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {x: 0.5, y: 0.5}
|
||||||
|
intensity:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
smoothness:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.2
|
||||||
|
rounded:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
--- !u!114 &7518938298396184218
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
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: c5e1dc532bcb41949b58bc4f2abfbb7e, type: 3}
|
||||||
|
m_Name: LensDistortion
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
intensity:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
xMultiplier:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
yMultiplier:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
center:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {x: 0.5, y: 0.5}
|
||||||
|
scale:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
--- !u!114 &9001657382290151224
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
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: cdfbdbb87d3286943a057f7791b43141, type: 3}
|
||||||
|
m_Name: ChannelMixer
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
redOutRedIn:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 100
|
||||||
|
redOutGreenIn:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
redOutBlueIn:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
greenOutRedIn:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
greenOutGreenIn:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 100
|
||||||
|
greenOutBlueIn:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
blueOutRedIn:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
blueOutGreenIn:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
blueOutBlueIn:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 100
|
||||||
|
--- !u!114 &9122958982931076880
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
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: 0}
|
||||||
|
m_Name: CopyPasteTestComponent1
|
||||||
|
m_EditorClassIdentifier: Unity.RenderPipelines.Core.Editor.Tests:UnityEditor.Rendering.Tests:VolumeComponentCopyPasteTests/CopyPasteTestComponent1
|
||||||
|
active: 1
|
||||||
|
p1:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
p2:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
8
Assets/Settings/DefaultVolumeProfile.asset.meta
Normal file
8
Assets/Settings/DefaultVolumeProfile.asset.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ab09877e2e707104187f6f83e2f62510
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
143
Assets/Settings/Mobile_RPAsset.asset
Normal file
143
Assets/Settings/Mobile_RPAsset.asset
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
%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: bf2edee5c58d82540a51f03df9d42094, type: 3}
|
||||||
|
m_Name: Mobile_RPAsset
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
k_AssetVersion: 13
|
||||||
|
k_AssetPreviousVersion: 13
|
||||||
|
m_RendererType: 1
|
||||||
|
m_RendererData: {fileID: 0}
|
||||||
|
m_RendererDataList:
|
||||||
|
- {fileID: 11400000, guid: 65bc7dbf4170f435aa868c779acfb082, type: 2}
|
||||||
|
m_DefaultRendererIndex: 0
|
||||||
|
m_RequireDepthTexture: 0
|
||||||
|
m_RequireOpaqueTexture: 0
|
||||||
|
m_OpaqueDownsampling: 0
|
||||||
|
m_SupportsTerrainHoles: 1
|
||||||
|
m_SupportsHDR: 1
|
||||||
|
m_HDRColorBufferPrecision: 0
|
||||||
|
m_MSAA: 1
|
||||||
|
m_RenderScale: 0.8
|
||||||
|
m_UpscalingFilter: 0
|
||||||
|
m_FsrOverrideSharpness: 0
|
||||||
|
m_FsrSharpness: 0.92
|
||||||
|
m_EnableLODCrossFade: 1
|
||||||
|
m_LODCrossFadeDitheringType: 1
|
||||||
|
m_ShEvalMode: 0
|
||||||
|
m_LightProbeSystem: 0
|
||||||
|
m_ProbeVolumeMemoryBudget: 1024
|
||||||
|
m_ProbeVolumeBlendingMemoryBudget: 256
|
||||||
|
m_SupportProbeVolumeGPUStreaming: 0
|
||||||
|
m_SupportProbeVolumeDiskStreaming: 0
|
||||||
|
m_SupportProbeVolumeScenarios: 0
|
||||||
|
m_SupportProbeVolumeScenarioBlending: 0
|
||||||
|
m_ProbeVolumeSHBands: 1
|
||||||
|
m_MainLightRenderingMode: 1
|
||||||
|
m_MainLightShadowsSupported: 1
|
||||||
|
m_MainLightShadowmapResolution: 1024
|
||||||
|
m_AdditionalLightsRenderingMode: 1
|
||||||
|
m_AdditionalLightsPerObjectLimit: 4
|
||||||
|
m_AdditionalLightShadowsSupported: 0
|
||||||
|
m_AdditionalLightsShadowmapResolution: 2048
|
||||||
|
m_AdditionalLightsShadowResolutionTierLow: 256
|
||||||
|
m_AdditionalLightsShadowResolutionTierMedium: 512
|
||||||
|
m_AdditionalLightsShadowResolutionTierHigh: 1024
|
||||||
|
m_ReflectionProbeBlending: 1
|
||||||
|
m_ReflectionProbeBoxProjection: 1
|
||||||
|
m_ReflectionProbeAtlas: 1
|
||||||
|
m_ShadowDistance: 50
|
||||||
|
m_ShadowCascadeCount: 1
|
||||||
|
m_Cascade2Split: 0.25
|
||||||
|
m_Cascade3Split: {x: 0.1, y: 0.3}
|
||||||
|
m_Cascade4Split: {x: 0.067, y: 0.2, z: 0.467}
|
||||||
|
m_CascadeBorder: 0.2
|
||||||
|
m_ShadowDepthBias: 1
|
||||||
|
m_ShadowNormalBias: 1
|
||||||
|
m_AnyShadowsSupported: 1
|
||||||
|
m_SoftShadowsSupported: 0
|
||||||
|
m_ConservativeEnclosingSphere: 1
|
||||||
|
m_NumIterationsEnclosingSphere: 64
|
||||||
|
m_SoftShadowQuality: 2
|
||||||
|
m_AdditionalLightsCookieResolution: 1024
|
||||||
|
m_AdditionalLightsCookieFormat: 1
|
||||||
|
m_UseSRPBatcher: 1
|
||||||
|
m_SupportsDynamicBatching: 0
|
||||||
|
m_MixedLightingSupported: 1
|
||||||
|
m_SupportsLightCookies: 1
|
||||||
|
m_SupportsLightLayers: 1
|
||||||
|
m_DebugLevel: 0
|
||||||
|
m_StoreActionsOptimization: 0
|
||||||
|
m_UseAdaptivePerformance: 1
|
||||||
|
m_ColorGradingMode: 0
|
||||||
|
m_ColorGradingLutSize: 32
|
||||||
|
m_AllowPostProcessAlphaOutput: 0
|
||||||
|
m_UseFastSRGBLinearConversion: 1
|
||||||
|
m_SupportDataDrivenLensFlare: 1
|
||||||
|
m_SupportScreenSpaceLensFlare: 1
|
||||||
|
m_GPUResidentDrawerMode: 0
|
||||||
|
m_SmallMeshScreenPercentage: 0
|
||||||
|
m_GPUResidentDrawerEnableOcclusionCullingInCameras: 0
|
||||||
|
m_ShadowType: 1
|
||||||
|
m_LocalShadowsSupported: 0
|
||||||
|
m_LocalShadowsAtlasResolution: 256
|
||||||
|
m_MaxPixelLights: 0
|
||||||
|
m_ShadowAtlasResolution: 256
|
||||||
|
m_VolumeFrameworkUpdateMode: 0
|
||||||
|
m_VolumeProfile: {fileID: 11400000, guid: 10fc4df2da32a41aaa32d77bc913491c, type: 2}
|
||||||
|
apvScenesData:
|
||||||
|
obsoleteSceneBounds:
|
||||||
|
m_Keys: []
|
||||||
|
m_Values: []
|
||||||
|
obsoleteHasProbeVolumes:
|
||||||
|
m_Keys: []
|
||||||
|
m_Values:
|
||||||
|
m_PrefilteringModeMainLightShadows: 3
|
||||||
|
m_PrefilteringModeAdditionalLight: 4
|
||||||
|
m_PrefilteringModeAdditionalLightShadows: 0
|
||||||
|
m_PrefilterXRKeywords: 1
|
||||||
|
m_PrefilteringModeForwardPlus: 1
|
||||||
|
m_PrefilteringModeDeferredRendering: 0
|
||||||
|
m_PrefilteringModeScreenSpaceOcclusion: 0
|
||||||
|
m_PrefilterDebugKeywords: 1
|
||||||
|
m_PrefilterWriteRenderingLayers: 1
|
||||||
|
m_PrefilterHDROutput: 1
|
||||||
|
m_PrefilterAlphaOutput: 0
|
||||||
|
m_PrefilterSSAODepthNormals: 1
|
||||||
|
m_PrefilterSSAOSourceDepthLow: 1
|
||||||
|
m_PrefilterSSAOSourceDepthMedium: 0
|
||||||
|
m_PrefilterSSAOSourceDepthHigh: 1
|
||||||
|
m_PrefilterSSAOInterleaved: 0
|
||||||
|
m_PrefilterSSAOBlueNoise: 1
|
||||||
|
m_PrefilterSSAOSampleCountLow: 1
|
||||||
|
m_PrefilterSSAOSampleCountMedium: 0
|
||||||
|
m_PrefilterSSAOSampleCountHigh: 1
|
||||||
|
m_PrefilterDBufferMRT1: 1
|
||||||
|
m_PrefilterDBufferMRT2: 1
|
||||||
|
m_PrefilterDBufferMRT3: 1
|
||||||
|
m_PrefilterSoftShadowsQualityLow: 1
|
||||||
|
m_PrefilterSoftShadowsQualityMedium: 1
|
||||||
|
m_PrefilterSoftShadowsQualityHigh: 1
|
||||||
|
m_PrefilterSoftShadows: 0
|
||||||
|
m_PrefilterScreenCoord: 1
|
||||||
|
m_PrefilterScreenSpaceIrradiance: 0
|
||||||
|
m_PrefilterNativeRenderPass: 1
|
||||||
|
m_PrefilterUseLegacyLightmaps: 0
|
||||||
|
m_PrefilterBicubicLightmapSampling: 0
|
||||||
|
m_PrefilterReflectionProbeRotation: 0
|
||||||
|
m_PrefilterReflectionProbeBlending: 0
|
||||||
|
m_PrefilterReflectionProbeBoxProjection: 0
|
||||||
|
m_PrefilterReflectionProbeAtlas: 0
|
||||||
|
m_ShaderVariantLogLevel: 0
|
||||||
|
m_ShadowCascades: 0
|
||||||
|
m_Textures:
|
||||||
|
blueNoise64LTex: {fileID: 2800000, guid: e3d24661c1e055f45a7560c033dbb837, type: 3}
|
||||||
|
bayerMatrixTex: {fileID: 2800000, guid: f9ee4ed84c1d10c49aabb9b210b0fc44, type: 3}
|
||||||
8
Assets/Settings/Mobile_RPAsset.asset.meta
Normal file
8
Assets/Settings/Mobile_RPAsset.asset.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 5e6cbd92db86f4b18aec3ed561671858
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
52
Assets/Settings/Mobile_Renderer.asset
Normal file
52
Assets/Settings/Mobile_Renderer.asset
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
%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: de640fe3d0db1804a85f9fc8f5cadab6, type: 3}
|
||||||
|
m_Name: Mobile_Renderer
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
debugShaders:
|
||||||
|
debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7,
|
||||||
|
type: 3}
|
||||||
|
hdrDebugViewPS: {fileID: 4800000, guid: 573620ae32aec764abd4d728906d2587, type: 3}
|
||||||
|
probeVolumeSamplingDebugComputeShader: {fileID: 7200000, guid: 53626a513ea68ce47b59dc1299fe3959,
|
||||||
|
type: 3}
|
||||||
|
probeVolumeResources:
|
||||||
|
probeVolumeDebugShader: {fileID: 0}
|
||||||
|
probeVolumeFragmentationDebugShader: {fileID: 0}
|
||||||
|
probeVolumeOffsetDebugShader: {fileID: 0}
|
||||||
|
probeVolumeSamplingDebugShader: {fileID: 0}
|
||||||
|
probeSamplingDebugMesh: {fileID: 0}
|
||||||
|
probeSamplingDebugTexture: {fileID: 0}
|
||||||
|
probeVolumeBlendStatesCS: {fileID: 0}
|
||||||
|
m_RendererFeatures: []
|
||||||
|
m_RendererFeatureMap:
|
||||||
|
m_UseNativeRenderPass: 1
|
||||||
|
postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2}
|
||||||
|
m_AssetVersion: 2
|
||||||
|
m_OpaqueLayerMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_TransparentLayerMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_DefaultStencilState:
|
||||||
|
overrideStencilState: 0
|
||||||
|
stencilReference: 0
|
||||||
|
stencilCompareFunction: 8
|
||||||
|
passOperation: 2
|
||||||
|
failOperation: 0
|
||||||
|
zFailOperation: 0
|
||||||
|
m_ShadowTransparentReceive: 0
|
||||||
|
m_RenderingMode: 0
|
||||||
|
m_DepthPrimingMode: 0
|
||||||
|
m_CopyDepthMode: 0
|
||||||
|
m_AccurateGbufferNormals: 0
|
||||||
|
m_IntermediateTextureMode: 0
|
||||||
8
Assets/Settings/Mobile_Renderer.asset.meta
Normal file
8
Assets/Settings/Mobile_Renderer.asset.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 65bc7dbf4170f435aa868c779acfb082
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
143
Assets/Settings/PC_RPAsset.asset
Normal file
143
Assets/Settings/PC_RPAsset.asset
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
%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: bf2edee5c58d82540a51f03df9d42094, type: 3}
|
||||||
|
m_Name: PC_RPAsset
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
k_AssetVersion: 13
|
||||||
|
k_AssetPreviousVersion: 13
|
||||||
|
m_RendererType: 1
|
||||||
|
m_RendererData: {fileID: 0}
|
||||||
|
m_RendererDataList:
|
||||||
|
- {fileID: 11400000, guid: f288ae1f4751b564a96ac7587541f7a2, type: 2}
|
||||||
|
m_DefaultRendererIndex: 0
|
||||||
|
m_RequireDepthTexture: 1
|
||||||
|
m_RequireOpaqueTexture: 1
|
||||||
|
m_OpaqueDownsampling: 1
|
||||||
|
m_SupportsTerrainHoles: 1
|
||||||
|
m_SupportsHDR: 1
|
||||||
|
m_HDRColorBufferPrecision: 0
|
||||||
|
m_MSAA: 1
|
||||||
|
m_RenderScale: 1
|
||||||
|
m_UpscalingFilter: 0
|
||||||
|
m_FsrOverrideSharpness: 0
|
||||||
|
m_FsrSharpness: 0.92
|
||||||
|
m_EnableLODCrossFade: 1
|
||||||
|
m_LODCrossFadeDitheringType: 1
|
||||||
|
m_ShEvalMode: 0
|
||||||
|
m_LightProbeSystem: 0
|
||||||
|
m_ProbeVolumeMemoryBudget: 1024
|
||||||
|
m_ProbeVolumeBlendingMemoryBudget: 256
|
||||||
|
m_SupportProbeVolumeGPUStreaming: 0
|
||||||
|
m_SupportProbeVolumeDiskStreaming: 0
|
||||||
|
m_SupportProbeVolumeScenarios: 0
|
||||||
|
m_SupportProbeVolumeScenarioBlending: 0
|
||||||
|
m_ProbeVolumeSHBands: 1
|
||||||
|
m_MainLightRenderingMode: 1
|
||||||
|
m_MainLightShadowsSupported: 1
|
||||||
|
m_MainLightShadowmapResolution: 2048
|
||||||
|
m_AdditionalLightsRenderingMode: 1
|
||||||
|
m_AdditionalLightsPerObjectLimit: 4
|
||||||
|
m_AdditionalLightShadowsSupported: 1
|
||||||
|
m_AdditionalLightsShadowmapResolution: 2048
|
||||||
|
m_AdditionalLightsShadowResolutionTierLow: 256
|
||||||
|
m_AdditionalLightsShadowResolutionTierMedium: 512
|
||||||
|
m_AdditionalLightsShadowResolutionTierHigh: 1024
|
||||||
|
m_ReflectionProbeBlending: 1
|
||||||
|
m_ReflectionProbeBoxProjection: 1
|
||||||
|
m_ReflectionProbeAtlas: 1
|
||||||
|
m_ShadowDistance: 50
|
||||||
|
m_ShadowCascadeCount: 4
|
||||||
|
m_Cascade2Split: 0.25
|
||||||
|
m_Cascade3Split: {x: 0.1, y: 0.3}
|
||||||
|
m_Cascade4Split: {x: 0.12299999, y: 0.2926, z: 0.53599995}
|
||||||
|
m_CascadeBorder: 0.107758604
|
||||||
|
m_ShadowDepthBias: 0.1
|
||||||
|
m_ShadowNormalBias: 0.5
|
||||||
|
m_AnyShadowsSupported: 1
|
||||||
|
m_SoftShadowsSupported: 1
|
||||||
|
m_ConservativeEnclosingSphere: 1
|
||||||
|
m_NumIterationsEnclosingSphere: 64
|
||||||
|
m_SoftShadowQuality: 3
|
||||||
|
m_AdditionalLightsCookieResolution: 2048
|
||||||
|
m_AdditionalLightsCookieFormat: 3
|
||||||
|
m_UseSRPBatcher: 1
|
||||||
|
m_SupportsDynamicBatching: 0
|
||||||
|
m_MixedLightingSupported: 1
|
||||||
|
m_SupportsLightCookies: 1
|
||||||
|
m_SupportsLightLayers: 1
|
||||||
|
m_DebugLevel: 0
|
||||||
|
m_StoreActionsOptimization: 0
|
||||||
|
m_UseAdaptivePerformance: 1
|
||||||
|
m_ColorGradingMode: 0
|
||||||
|
m_ColorGradingLutSize: 32
|
||||||
|
m_AllowPostProcessAlphaOutput: 0
|
||||||
|
m_UseFastSRGBLinearConversion: 0
|
||||||
|
m_SupportDataDrivenLensFlare: 1
|
||||||
|
m_SupportScreenSpaceLensFlare: 1
|
||||||
|
m_GPUResidentDrawerMode: 0
|
||||||
|
m_SmallMeshScreenPercentage: 0
|
||||||
|
m_GPUResidentDrawerEnableOcclusionCullingInCameras: 0
|
||||||
|
m_ShadowType: 1
|
||||||
|
m_LocalShadowsSupported: 0
|
||||||
|
m_LocalShadowsAtlasResolution: 256
|
||||||
|
m_MaxPixelLights: 0
|
||||||
|
m_ShadowAtlasResolution: 256
|
||||||
|
m_VolumeFrameworkUpdateMode: 0
|
||||||
|
m_VolumeProfile: {fileID: 11400000, guid: 10fc4df2da32a41aaa32d77bc913491c, type: 2}
|
||||||
|
apvScenesData:
|
||||||
|
obsoleteSceneBounds:
|
||||||
|
m_Keys: []
|
||||||
|
m_Values: []
|
||||||
|
obsoleteHasProbeVolumes:
|
||||||
|
m_Keys: []
|
||||||
|
m_Values:
|
||||||
|
m_PrefilteringModeMainLightShadows: 3
|
||||||
|
m_PrefilteringModeAdditionalLight: 4
|
||||||
|
m_PrefilteringModeAdditionalLightShadows: 0
|
||||||
|
m_PrefilterXRKeywords: 1
|
||||||
|
m_PrefilteringModeForwardPlus: 1
|
||||||
|
m_PrefilteringModeDeferredRendering: 0
|
||||||
|
m_PrefilteringModeScreenSpaceOcclusion: 1
|
||||||
|
m_PrefilterDebugKeywords: 1
|
||||||
|
m_PrefilterWriteRenderingLayers: 0
|
||||||
|
m_PrefilterHDROutput: 1
|
||||||
|
m_PrefilterAlphaOutput: 0
|
||||||
|
m_PrefilterSSAODepthNormals: 0
|
||||||
|
m_PrefilterSSAOSourceDepthLow: 1
|
||||||
|
m_PrefilterSSAOSourceDepthMedium: 1
|
||||||
|
m_PrefilterSSAOSourceDepthHigh: 1
|
||||||
|
m_PrefilterSSAOInterleaved: 1
|
||||||
|
m_PrefilterSSAOBlueNoise: 0
|
||||||
|
m_PrefilterSSAOSampleCountLow: 1
|
||||||
|
m_PrefilterSSAOSampleCountMedium: 0
|
||||||
|
m_PrefilterSSAOSampleCountHigh: 1
|
||||||
|
m_PrefilterDBufferMRT1: 1
|
||||||
|
m_PrefilterDBufferMRT2: 1
|
||||||
|
m_PrefilterDBufferMRT3: 0
|
||||||
|
m_PrefilterSoftShadowsQualityLow: 0
|
||||||
|
m_PrefilterSoftShadowsQualityMedium: 0
|
||||||
|
m_PrefilterSoftShadowsQualityHigh: 0
|
||||||
|
m_PrefilterSoftShadows: 0
|
||||||
|
m_PrefilterScreenCoord: 1
|
||||||
|
m_PrefilterScreenSpaceIrradiance: 0
|
||||||
|
m_PrefilterNativeRenderPass: 1
|
||||||
|
m_PrefilterUseLegacyLightmaps: 0
|
||||||
|
m_PrefilterBicubicLightmapSampling: 0
|
||||||
|
m_PrefilterReflectionProbeRotation: 0
|
||||||
|
m_PrefilterReflectionProbeBlending: 0
|
||||||
|
m_PrefilterReflectionProbeBoxProjection: 0
|
||||||
|
m_PrefilterReflectionProbeAtlas: 0
|
||||||
|
m_ShaderVariantLogLevel: 0
|
||||||
|
m_ShadowCascades: 0
|
||||||
|
m_Textures:
|
||||||
|
blueNoise64LTex: {fileID: 2800000, guid: e3d24661c1e055f45a7560c033dbb837, type: 3}
|
||||||
|
bayerMatrixTex: {fileID: 2800000, guid: f9ee4ed84c1d10c49aabb9b210b0fc44, type: 3}
|
||||||
8
Assets/Settings/PC_RPAsset.asset.meta
Normal file
8
Assets/Settings/PC_RPAsset.asset.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4b83569d67af61e458304325a23e5dfd
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
95
Assets/Settings/PC_Renderer.asset
Normal file
95
Assets/Settings/PC_Renderer.asset
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
%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: de640fe3d0db1804a85f9fc8f5cadab6, type: 3}
|
||||||
|
m_Name: PC_Renderer
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
debugShaders:
|
||||||
|
debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7,
|
||||||
|
type: 3}
|
||||||
|
hdrDebugViewPS: {fileID: 4800000, guid: 573620ae32aec764abd4d728906d2587, type: 3}
|
||||||
|
probeVolumeSamplingDebugComputeShader: {fileID: 7200000, guid: 53626a513ea68ce47b59dc1299fe3959,
|
||||||
|
type: 3}
|
||||||
|
probeVolumeResources:
|
||||||
|
probeVolumeDebugShader: {fileID: 4800000, guid: e5c6678ed2aaa91408dd3df699057aae,
|
||||||
|
type: 3}
|
||||||
|
probeVolumeFragmentationDebugShader: {fileID: 4800000, guid: 03cfc4915c15d504a9ed85ecc404e607,
|
||||||
|
type: 3}
|
||||||
|
probeVolumeOffsetDebugShader: {fileID: 4800000, guid: 53a11f4ebaebf4049b3638ef78dc9664,
|
||||||
|
type: 3}
|
||||||
|
probeVolumeSamplingDebugShader: {fileID: 4800000, guid: 8f96cd657dc40064aa21efcc7e50a2e7,
|
||||||
|
type: 3}
|
||||||
|
probeSamplingDebugMesh: {fileID: -3555484719484374845, guid: 57d7c4c16e2765b47a4d2069b311bffe,
|
||||||
|
type: 3}
|
||||||
|
probeSamplingDebugTexture: {fileID: 2800000, guid: 24ec0e140fb444a44ab96ee80844e18e,
|
||||||
|
type: 3}
|
||||||
|
probeVolumeBlendStatesCS: {fileID: 7200000, guid: b9a23f869c4fd45f19c5ada54dd82176,
|
||||||
|
type: 3}
|
||||||
|
m_RendererFeatures:
|
||||||
|
- {fileID: 7833122117494664109}
|
||||||
|
m_RendererFeatureMap: ad6b866f10d7b46c
|
||||||
|
m_UseNativeRenderPass: 1
|
||||||
|
postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2}
|
||||||
|
m_AssetVersion: 2
|
||||||
|
m_OpaqueLayerMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_TransparentLayerMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_DefaultStencilState:
|
||||||
|
overrideStencilState: 0
|
||||||
|
stencilReference: 1
|
||||||
|
stencilCompareFunction: 3
|
||||||
|
passOperation: 2
|
||||||
|
failOperation: 0
|
||||||
|
zFailOperation: 0
|
||||||
|
m_ShadowTransparentReceive: 1
|
||||||
|
m_RenderingMode: 2
|
||||||
|
m_DepthPrimingMode: 0
|
||||||
|
m_CopyDepthMode: 0
|
||||||
|
m_AccurateGbufferNormals: 0
|
||||||
|
m_IntermediateTextureMode: 0
|
||||||
|
--- !u!114 &7833122117494664109
|
||||||
|
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: f62c9c65cf3354c93be831c8bc075510, type: 3}
|
||||||
|
m_Name: ScreenSpaceAmbientOcclusion
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Active: 1
|
||||||
|
m_Settings:
|
||||||
|
AOMethod: 0
|
||||||
|
Downsample: 0
|
||||||
|
AfterOpaque: 0
|
||||||
|
Source: 1
|
||||||
|
NormalSamples: 1
|
||||||
|
Intensity: 0.4
|
||||||
|
DirectLightingStrength: 0.25
|
||||||
|
Radius: 0.3
|
||||||
|
Samples: 1
|
||||||
|
BlurQuality: 0
|
||||||
|
Falloff: 100
|
||||||
|
SampleCount: -1
|
||||||
|
m_BlueNoise256Textures:
|
||||||
|
- {fileID: 2800000, guid: 36f118343fc974119bee3d09e2111500, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 4b7b083e6b6734e8bb2838b0b50a0bc8, type: 3}
|
||||||
|
- {fileID: 2800000, guid: c06cc21c692f94f5fb5206247191eeee, type: 3}
|
||||||
|
- {fileID: 2800000, guid: cb76dd40fa7654f9587f6a344f125c9a, type: 3}
|
||||||
|
- {fileID: 2800000, guid: e32226222ff144b24bf3a5a451de54bc, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 3302065f671a8450b82c9ddf07426f3a, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 56a77a3e8d64f47b6afe9e3c95cb57d5, type: 3}
|
||||||
|
m_Shader: {fileID: 4800000, guid: 0849e84e3d62649e8882e9d6f056a017, type: 3}
|
||||||
8
Assets/Settings/PC_Renderer.asset.meta
Normal file
8
Assets/Settings/PC_Renderer.asset.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f288ae1f4751b564a96ac7587541f7a2
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
414
Assets/Settings/RTSInputActions.inputactions
Normal file
414
Assets/Settings/RTSInputActions.inputactions
Normal file
@@ -0,0 +1,414 @@
|
|||||||
|
{
|
||||||
|
"name": "RTSInputActions",
|
||||||
|
"maps": [
|
||||||
|
{
|
||||||
|
"name": "RTS",
|
||||||
|
"id": "a1b2c3d4-1234-5678-9abc-def012345678",
|
||||||
|
"actions": [
|
||||||
|
{
|
||||||
|
"name": "CameraPan",
|
||||||
|
"type": "Value",
|
||||||
|
"id": "10000001-0000-0000-0000-000000000001",
|
||||||
|
"expectedControlType": "Vector2",
|
||||||
|
"processors": "",
|
||||||
|
"interactions": "",
|
||||||
|
"initialStateCheck": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "CameraZoom",
|
||||||
|
"type": "Value",
|
||||||
|
"id": "10000001-0000-0000-0000-000000000002",
|
||||||
|
"expectedControlType": "Axis",
|
||||||
|
"processors": "",
|
||||||
|
"interactions": "",
|
||||||
|
"initialStateCheck": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "CameraRotate",
|
||||||
|
"type": "Value",
|
||||||
|
"id": "10000001-0000-0000-0000-000000000003",
|
||||||
|
"expectedControlType": "Axis",
|
||||||
|
"processors": "",
|
||||||
|
"interactions": "",
|
||||||
|
"initialStateCheck": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "LeftClick",
|
||||||
|
"type": "Button",
|
||||||
|
"id": "10000001-0000-0000-0000-000000000004",
|
||||||
|
"expectedControlType": "Button",
|
||||||
|
"processors": "",
|
||||||
|
"interactions": "",
|
||||||
|
"initialStateCheck": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "RightClick",
|
||||||
|
"type": "Button",
|
||||||
|
"id": "10000001-0000-0000-0000-000000000005",
|
||||||
|
"expectedControlType": "Button",
|
||||||
|
"processors": "",
|
||||||
|
"interactions": "",
|
||||||
|
"initialStateCheck": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "MousePosition",
|
||||||
|
"type": "Value",
|
||||||
|
"id": "10000001-0000-0000-0000-000000000006",
|
||||||
|
"expectedControlType": "Vector2",
|
||||||
|
"processors": "",
|
||||||
|
"interactions": "",
|
||||||
|
"initialStateCheck": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Shift",
|
||||||
|
"type": "Button",
|
||||||
|
"id": "10000001-0000-0000-0000-000000000007",
|
||||||
|
"expectedControlType": "Button",
|
||||||
|
"processors": "",
|
||||||
|
"interactions": "",
|
||||||
|
"initialStateCheck": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Ctrl",
|
||||||
|
"type": "Button",
|
||||||
|
"id": "10000001-0000-0000-0000-000000000008",
|
||||||
|
"expectedControlType": "Button",
|
||||||
|
"processors": "",
|
||||||
|
"interactions": "",
|
||||||
|
"initialStateCheck": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "AttackMove",
|
||||||
|
"type": "Button",
|
||||||
|
"id": "10000001-0000-0000-0000-000000000009",
|
||||||
|
"expectedControlType": "Button",
|
||||||
|
"processors": "",
|
||||||
|
"interactions": "",
|
||||||
|
"initialStateCheck": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Patrol",
|
||||||
|
"type": "Button",
|
||||||
|
"id": "10000001-0000-0000-0000-00000000000a",
|
||||||
|
"expectedControlType": "Button",
|
||||||
|
"processors": "",
|
||||||
|
"interactions": "",
|
||||||
|
"initialStateCheck": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Stop",
|
||||||
|
"type": "Button",
|
||||||
|
"id": "10000001-0000-0000-0000-00000000000b",
|
||||||
|
"expectedControlType": "Button",
|
||||||
|
"processors": "",
|
||||||
|
"interactions": "",
|
||||||
|
"initialStateCheck": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Delete",
|
||||||
|
"type": "Button",
|
||||||
|
"id": "10000001-0000-0000-0000-00000000000c",
|
||||||
|
"expectedControlType": "Button",
|
||||||
|
"processors": "",
|
||||||
|
"interactions": "",
|
||||||
|
"initialStateCheck": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"bindings": [
|
||||||
|
{
|
||||||
|
"name": "WASD",
|
||||||
|
"id": "20000001-0000-0000-0000-000000000001",
|
||||||
|
"path": "",
|
||||||
|
"interactions": "",
|
||||||
|
"processors": "",
|
||||||
|
"groups": "",
|
||||||
|
"action": "CameraPan",
|
||||||
|
"isComposite": true,
|
||||||
|
"isPartOfComposite": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "up",
|
||||||
|
"id": "20000001-0000-0000-0000-000000000002",
|
||||||
|
"path": "<Keyboard>/w",
|
||||||
|
"interactions": "",
|
||||||
|
"processors": "",
|
||||||
|
"groups": "Keyboard&Mouse",
|
||||||
|
"action": "CameraPan",
|
||||||
|
"isComposite": false,
|
||||||
|
"isPartOfComposite": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "down",
|
||||||
|
"id": "20000001-0000-0000-0000-000000000003",
|
||||||
|
"path": "<Keyboard>/s",
|
||||||
|
"interactions": "",
|
||||||
|
"processors": "",
|
||||||
|
"groups": "Keyboard&Mouse",
|
||||||
|
"action": "CameraPan",
|
||||||
|
"isComposite": false,
|
||||||
|
"isPartOfComposite": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "left",
|
||||||
|
"id": "20000001-0000-0000-0000-000000000004",
|
||||||
|
"path": "<Keyboard>/a",
|
||||||
|
"interactions": "",
|
||||||
|
"processors": "",
|
||||||
|
"groups": "Keyboard&Mouse",
|
||||||
|
"action": "CameraPan",
|
||||||
|
"isComposite": false,
|
||||||
|
"isPartOfComposite": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "right",
|
||||||
|
"id": "20000001-0000-0000-0000-000000000005",
|
||||||
|
"path": "<Keyboard>/d",
|
||||||
|
"interactions": "",
|
||||||
|
"processors": "",
|
||||||
|
"groups": "Keyboard&Mouse",
|
||||||
|
"action": "CameraPan",
|
||||||
|
"isComposite": false,
|
||||||
|
"isPartOfComposite": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ArrowKeys",
|
||||||
|
"id": "20000001-0000-0000-0000-000000000006",
|
||||||
|
"path": "",
|
||||||
|
"interactions": "",
|
||||||
|
"processors": "",
|
||||||
|
"groups": "",
|
||||||
|
"action": "CameraPan",
|
||||||
|
"isComposite": true,
|
||||||
|
"isPartOfComposite": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "up",
|
||||||
|
"id": "20000001-0000-0000-0000-000000000007",
|
||||||
|
"path": "<Keyboard>/upArrow",
|
||||||
|
"interactions": "",
|
||||||
|
"processors": "",
|
||||||
|
"groups": "Keyboard&Mouse",
|
||||||
|
"action": "CameraPan",
|
||||||
|
"isComposite": false,
|
||||||
|
"isPartOfComposite": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "down",
|
||||||
|
"id": "20000001-0000-0000-0000-000000000008",
|
||||||
|
"path": "<Keyboard>/downArrow",
|
||||||
|
"interactions": "",
|
||||||
|
"processors": "",
|
||||||
|
"groups": "Keyboard&Mouse",
|
||||||
|
"action": "CameraPan",
|
||||||
|
"isComposite": false,
|
||||||
|
"isPartOfComposite": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "left",
|
||||||
|
"id": "20000001-0000-0000-0000-000000000009",
|
||||||
|
"path": "<Keyboard>/leftArrow",
|
||||||
|
"interactions": "",
|
||||||
|
"processors": "",
|
||||||
|
"groups": "Keyboard&Mouse",
|
||||||
|
"action": "CameraPan",
|
||||||
|
"isComposite": false,
|
||||||
|
"isPartOfComposite": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "right",
|
||||||
|
"id": "20000001-0000-0000-0000-00000000000a",
|
||||||
|
"path": "<Keyboard>/rightArrow",
|
||||||
|
"interactions": "",
|
||||||
|
"processors": "",
|
||||||
|
"groups": "Keyboard&Mouse",
|
||||||
|
"action": "CameraPan",
|
||||||
|
"isComposite": false,
|
||||||
|
"isPartOfComposite": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "",
|
||||||
|
"id": "20000001-0000-0000-0000-00000000000b",
|
||||||
|
"path": "<Mouse>/scroll/y",
|
||||||
|
"interactions": "",
|
||||||
|
"processors": "",
|
||||||
|
"groups": "Keyboard&Mouse",
|
||||||
|
"action": "CameraZoom",
|
||||||
|
"isComposite": false,
|
||||||
|
"isPartOfComposite": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "QE",
|
||||||
|
"id": "20000001-0000-0000-0000-00000000000c",
|
||||||
|
"path": "",
|
||||||
|
"interactions": "",
|
||||||
|
"processors": "",
|
||||||
|
"groups": "",
|
||||||
|
"action": "CameraRotate",
|
||||||
|
"isComposite": true,
|
||||||
|
"isPartOfComposite": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "negative",
|
||||||
|
"id": "20000001-0000-0000-0000-00000000000d",
|
||||||
|
"path": "<Keyboard>/q",
|
||||||
|
"interactions": "",
|
||||||
|
"processors": "",
|
||||||
|
"groups": "Keyboard&Mouse",
|
||||||
|
"action": "CameraRotate",
|
||||||
|
"isComposite": false,
|
||||||
|
"isPartOfComposite": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "positive",
|
||||||
|
"id": "20000001-0000-0000-0000-00000000000e",
|
||||||
|
"path": "<Keyboard>/e",
|
||||||
|
"interactions": "",
|
||||||
|
"processors": "",
|
||||||
|
"groups": "Keyboard&Mouse",
|
||||||
|
"action": "CameraRotate",
|
||||||
|
"isComposite": false,
|
||||||
|
"isPartOfComposite": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "",
|
||||||
|
"id": "20000001-0000-0000-0000-00000000000f",
|
||||||
|
"path": "<Mouse>/leftButton",
|
||||||
|
"interactions": "",
|
||||||
|
"processors": "",
|
||||||
|
"groups": "Keyboard&Mouse",
|
||||||
|
"action": "LeftClick",
|
||||||
|
"isComposite": false,
|
||||||
|
"isPartOfComposite": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "",
|
||||||
|
"id": "20000001-0000-0000-0000-000000000010",
|
||||||
|
"path": "<Mouse>/rightButton",
|
||||||
|
"interactions": "",
|
||||||
|
"processors": "",
|
||||||
|
"groups": "Keyboard&Mouse",
|
||||||
|
"action": "RightClick",
|
||||||
|
"isComposite": false,
|
||||||
|
"isPartOfComposite": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "",
|
||||||
|
"id": "20000001-0000-0000-0000-000000000011",
|
||||||
|
"path": "<Mouse>/position",
|
||||||
|
"interactions": "",
|
||||||
|
"processors": "",
|
||||||
|
"groups": "Keyboard&Mouse",
|
||||||
|
"action": "MousePosition",
|
||||||
|
"isComposite": false,
|
||||||
|
"isPartOfComposite": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "",
|
||||||
|
"id": "20000001-0000-0000-0000-000000000012",
|
||||||
|
"path": "<Keyboard>/leftShift",
|
||||||
|
"interactions": "",
|
||||||
|
"processors": "",
|
||||||
|
"groups": "Keyboard&Mouse",
|
||||||
|
"action": "Shift",
|
||||||
|
"isComposite": false,
|
||||||
|
"isPartOfComposite": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "",
|
||||||
|
"id": "20000001-0000-0000-0000-000000000013",
|
||||||
|
"path": "<Keyboard>/rightShift",
|
||||||
|
"interactions": "",
|
||||||
|
"processors": "",
|
||||||
|
"groups": "Keyboard&Mouse",
|
||||||
|
"action": "Shift",
|
||||||
|
"isComposite": false,
|
||||||
|
"isPartOfComposite": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "",
|
||||||
|
"id": "20000001-0000-0000-0000-000000000014",
|
||||||
|
"path": "<Keyboard>/leftCtrl",
|
||||||
|
"interactions": "",
|
||||||
|
"processors": "",
|
||||||
|
"groups": "Keyboard&Mouse",
|
||||||
|
"action": "Ctrl",
|
||||||
|
"isComposite": false,
|
||||||
|
"isPartOfComposite": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "",
|
||||||
|
"id": "20000001-0000-0000-0000-000000000015",
|
||||||
|
"path": "<Keyboard>/rightCtrl",
|
||||||
|
"interactions": "",
|
||||||
|
"processors": "",
|
||||||
|
"groups": "Keyboard&Mouse",
|
||||||
|
"action": "Ctrl",
|
||||||
|
"isComposite": false,
|
||||||
|
"isPartOfComposite": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "",
|
||||||
|
"id": "20000001-0000-0000-0000-000000000016",
|
||||||
|
"path": "<Keyboard>/a",
|
||||||
|
"interactions": "",
|
||||||
|
"processors": "",
|
||||||
|
"groups": "Keyboard&Mouse",
|
||||||
|
"action": "AttackMove",
|
||||||
|
"isComposite": false,
|
||||||
|
"isPartOfComposite": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "",
|
||||||
|
"id": "20000001-0000-0000-0000-000000000017",
|
||||||
|
"path": "<Keyboard>/p",
|
||||||
|
"interactions": "",
|
||||||
|
"processors": "",
|
||||||
|
"groups": "Keyboard&Mouse",
|
||||||
|
"action": "Patrol",
|
||||||
|
"isComposite": false,
|
||||||
|
"isPartOfComposite": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "",
|
||||||
|
"id": "20000001-0000-0000-0000-000000000018",
|
||||||
|
"path": "<Keyboard>/h",
|
||||||
|
"interactions": "",
|
||||||
|
"processors": "",
|
||||||
|
"groups": "Keyboard&Mouse",
|
||||||
|
"action": "Stop",
|
||||||
|
"isComposite": false,
|
||||||
|
"isPartOfComposite": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "",
|
||||||
|
"id": "20000001-0000-0000-0000-000000000019",
|
||||||
|
"path": "<Keyboard>/delete",
|
||||||
|
"interactions": "",
|
||||||
|
"processors": "",
|
||||||
|
"groups": "Keyboard&Mouse",
|
||||||
|
"action": "Delete",
|
||||||
|
"isComposite": false,
|
||||||
|
"isPartOfComposite": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"controlSchemes": [
|
||||||
|
{
|
||||||
|
"name": "Keyboard&Mouse",
|
||||||
|
"bindingGroup": "Keyboard&Mouse",
|
||||||
|
"devices": [
|
||||||
|
{
|
||||||
|
"devicePath": "<Keyboard>",
|
||||||
|
"isOptional": false,
|
||||||
|
"isOR": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"devicePath": "<Mouse>",
|
||||||
|
"isOptional": false,
|
||||||
|
"isOR": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
14
Assets/Settings/RTSInputActions.inputactions.meta
Normal file
14
Assets/Settings/RTSInputActions.inputactions.meta
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9d588751af40a6c41b500b72d46cb85c
|
||||||
|
ScriptedImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
script: {fileID: 11500000, guid: 8404be70184654265930450def6a9037, type: 3}
|
||||||
|
generateWrapperCode: 0
|
||||||
|
wrapperCodePath:
|
||||||
|
wrapperClassName:
|
||||||
|
wrapperCodeNamespace:
|
||||||
159
Assets/Settings/SampleSceneProfile.asset
Normal file
159
Assets/Settings/SampleSceneProfile.asset
Normal file
@@ -0,0 +1,159 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &-7893295128165547882
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
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: 0b2db86121404754db890f4c8dfe81b2, type: 3}
|
||||||
|
m_Name: Bloom
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
skipIterations:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
threshold:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
intensity:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.25
|
||||||
|
scatter:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.5
|
||||||
|
clamp:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 65472
|
||||||
|
tint:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
highQualityFiltering:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
downscale:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0
|
||||||
|
maxIterations:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 6
|
||||||
|
dirtTexture:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: {fileID: 0}
|
||||||
|
dimension: 1
|
||||||
|
dirtIntensity:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0
|
||||||
|
--- !u!114 &-3357603926938260329
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
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: 899c54efeace73346a0a16faa3afe726, type: 3}
|
||||||
|
m_Name: Vignette
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
color:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: {r: 0, g: 0, b: 0, a: 1}
|
||||||
|
center:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: {x: 0.5, y: 0.5}
|
||||||
|
intensity:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.2
|
||||||
|
smoothness:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0.2
|
||||||
|
rounded:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0
|
||||||
|
--- !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: d7fd9488000d3734a9e00ee676215985, type: 3}
|
||||||
|
m_Name: SampleSceneProfile
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
components:
|
||||||
|
- {fileID: 849379129802519247}
|
||||||
|
- {fileID: -7893295128165547882}
|
||||||
|
- {fileID: 7391319092446245454}
|
||||||
|
- {fileID: -3357603926938260329}
|
||||||
|
--- !u!114 &849379129802519247
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
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: 97c23e3b12dc18c42a140437e53d3951, type: 3}
|
||||||
|
m_Name: Tonemapping
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
mode:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
neutralHDRRangeReductionMode:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 2
|
||||||
|
acesPreset:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 3
|
||||||
|
hueShiftAmount:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0
|
||||||
|
detectPaperWhite:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
paperWhite:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 234
|
||||||
|
detectBrightnessLimits:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
minNits:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.005
|
||||||
|
maxNits:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 647
|
||||||
|
--- !u!114 &7391319092446245454
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
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: ccf1aba9553839d41ae37dd52e9ebcce, type: 3}
|
||||||
|
m_Name: MotionBlur
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 0
|
||||||
|
mode:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0
|
||||||
|
quality:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 2
|
||||||
|
intensity:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.6
|
||||||
|
clamp:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0.05
|
||||||
8
Assets/Settings/SampleSceneProfile.asset.meta
Normal file
8
Assets/Settings/SampleSceneProfile.asset.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 10fc4df2da32a41aaa32d77bc913491c
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
443
Assets/Settings/UniversalRenderPipelineGlobalSettings.asset
Normal file
443
Assets/Settings/UniversalRenderPipelineGlobalSettings.asset
Normal file
@@ -0,0 +1,443 @@
|
|||||||
|
%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: 2ec995e51a6e251468d2a3fd8a686257, type: 3}
|
||||||
|
m_Name: UniversalRenderPipelineGlobalSettings
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_ShaderStrippingSetting:
|
||||||
|
m_Version: 0
|
||||||
|
m_ExportShaderVariants: 1
|
||||||
|
m_ShaderVariantLogLevel: 0
|
||||||
|
m_StripRuntimeDebugShaders: 1
|
||||||
|
m_URPShaderStrippingSetting:
|
||||||
|
m_Version: 0
|
||||||
|
m_StripUnusedPostProcessingVariants: 1
|
||||||
|
m_StripUnusedVariants: 1
|
||||||
|
m_StripScreenCoordOverrideVariants: 1
|
||||||
|
m_ShaderVariantLogLevel: 0
|
||||||
|
m_ExportShaderVariants: 1
|
||||||
|
m_StripDebugVariants: 1
|
||||||
|
m_StripUnusedPostProcessingVariants: 1
|
||||||
|
m_StripUnusedVariants: 1
|
||||||
|
m_StripScreenCoordOverrideVariants: 1
|
||||||
|
supportRuntimeDebugDisplay: 0
|
||||||
|
m_Settings:
|
||||||
|
m_SettingsList:
|
||||||
|
m_List:
|
||||||
|
- rid: 6852985685364965376
|
||||||
|
- rid: 6852985685364965377
|
||||||
|
- rid: 6852985685364965378
|
||||||
|
- rid: 6852985685364965379
|
||||||
|
- rid: 6852985685364965380
|
||||||
|
- rid: 6852985685364965381
|
||||||
|
- rid: 6852985685364965382
|
||||||
|
- rid: 6852985685364965383
|
||||||
|
- rid: 6852985685364965384
|
||||||
|
- rid: 6852985685364965385
|
||||||
|
- rid: 6852985685364965386
|
||||||
|
- rid: 6852985685364965387
|
||||||
|
- rid: 6852985685364965388
|
||||||
|
- rid: 6852985685364965389
|
||||||
|
- rid: 6852985685364965390
|
||||||
|
- rid: 6852985685364965391
|
||||||
|
- rid: 6852985685364965392
|
||||||
|
- rid: 6852985685364965393
|
||||||
|
- rid: 6852985685364965394
|
||||||
|
- rid: 8712630790384254976
|
||||||
|
- rid: 3879611001403080704
|
||||||
|
- rid: 3879611001403080705
|
||||||
|
- rid: 3879611001403080706
|
||||||
|
- rid: 3879611001403080707
|
||||||
|
- rid: 3879611001403080708
|
||||||
|
- rid: 3879611001403080709
|
||||||
|
- rid: 3879611001403080710
|
||||||
|
- rid: 3879611001403080711
|
||||||
|
- rid: 3879611001403080712
|
||||||
|
- rid: 3879611001403080713
|
||||||
|
- rid: 3879611001403080714
|
||||||
|
- rid: 3879611001403080715
|
||||||
|
- rid: 3879611001403080716
|
||||||
|
- rid: 3879611001403080717
|
||||||
|
- rid: 3879611001403080718
|
||||||
|
m_RuntimeSettings:
|
||||||
|
m_List: []
|
||||||
|
m_AssetVersion: 10
|
||||||
|
m_ObsoleteDefaultVolumeProfile: {fileID: 0}
|
||||||
|
m_RenderingLayerNames:
|
||||||
|
- Light Layer default
|
||||||
|
- Light Layer 1
|
||||||
|
- Light Layer 2
|
||||||
|
- Light Layer 3
|
||||||
|
- Light Layer 4
|
||||||
|
- Light Layer 5
|
||||||
|
- Light Layer 6
|
||||||
|
- Light Layer 7
|
||||||
|
m_ValidRenderingLayers: 0
|
||||||
|
lightLayerName0: Light Layer default
|
||||||
|
lightLayerName1: Light Layer 1
|
||||||
|
lightLayerName2: Light Layer 2
|
||||||
|
lightLayerName3: Light Layer 3
|
||||||
|
lightLayerName4: Light Layer 4
|
||||||
|
lightLayerName5: Light Layer 5
|
||||||
|
lightLayerName6: Light Layer 6
|
||||||
|
lightLayerName7: Light Layer 7
|
||||||
|
apvScenesData:
|
||||||
|
obsoleteSceneBounds:
|
||||||
|
m_Keys: []
|
||||||
|
m_Values: []
|
||||||
|
obsoleteHasProbeVolumes:
|
||||||
|
m_Keys: []
|
||||||
|
m_Values:
|
||||||
|
references:
|
||||||
|
version: 2
|
||||||
|
RefIds:
|
||||||
|
- rid: 3879611001403080704
|
||||||
|
type: {class: RayTracingRenderPipelineResources, ns: UnityEngine.Rendering.UnifiedRayTracing, asm: Unity.UnifiedRayTracing.Runtime}
|
||||||
|
data:
|
||||||
|
m_Version: 1
|
||||||
|
m_GeometryPoolKernels: {fileID: 7200000, guid: 98e3d58cae7210c4786f67f504c9e899, type: 3}
|
||||||
|
m_CopyBuffer: {fileID: 7200000, guid: 1b95b5dcf48d1914c9e1e7405c7660e3, type: 3}
|
||||||
|
m_CopyPositions: {fileID: 7200000, guid: 1ad53a96b58d3c3488dde4f14db1aaeb, type: 3}
|
||||||
|
m_BitHistogram: {fileID: 7200000, guid: 8670f7ce4b60cef43bed36148aa1b0a2, type: 3}
|
||||||
|
m_BlockReducePart: {fileID: 7200000, guid: 4e034cc8ea2635c4e9f063e5ddc7ea7a, type: 3}
|
||||||
|
m_BlockScan: {fileID: 7200000, guid: 4d6d5de35fa45ef4a92119397a045cc9, type: 3}
|
||||||
|
m_BuildHlbvh: {fileID: 7200000, guid: 2d70cd6be91bd7843a39a54b51c15b13, type: 3}
|
||||||
|
m_RestructureBvh: {fileID: 7200000, guid: 56641cb88dcb31a4398a4997ef7a7a8c, type: 3}
|
||||||
|
m_Scatter: {fileID: 7200000, guid: a2eaeefdac4637a44b734e85b7be9186, type: 3}
|
||||||
|
- rid: 3879611001403080705
|
||||||
|
type: {class: PostProcessData/ShaderResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
stopNanPS: {fileID: 4800000, guid: 1121bb4e615ca3c48b214e79e841e823, type: 3}
|
||||||
|
subpixelMorphologicalAntialiasingPS: {fileID: 4800000, guid: 63eaba0ebfb82cc43bde059b4a8c65f6, type: 3}
|
||||||
|
gaussianDepthOfFieldPS: {fileID: 4800000, guid: 5e7134d6e63e0bc47a1dd2669cedb379, type: 3}
|
||||||
|
bokehDepthOfFieldPS: {fileID: 4800000, guid: 2aed67ad60045d54ba3a00c91e2d2631, type: 3}
|
||||||
|
cameraMotionBlurPS: {fileID: 4800000, guid: 1edcd131364091c46a17cbff0b1de97a, type: 3}
|
||||||
|
paniniProjectionPS: {fileID: 4800000, guid: a15b78cf8ca26ca4fb2090293153c62c, type: 3}
|
||||||
|
lutBuilderLdrPS: {fileID: 4800000, guid: 65df88701913c224d95fc554db28381a, type: 3}
|
||||||
|
lutBuilderHdrPS: {fileID: 4800000, guid: ec9fec698a3456d4fb18cf8bacb7a2bc, type: 3}
|
||||||
|
bloomPS: {fileID: 4800000, guid: 5f1864addb451f54bae8c86d230f736e, type: 3}
|
||||||
|
temporalAntialiasingPS: {fileID: 4800000, guid: 9c70c1a35ff15f340b38ea84842358bf, type: 3}
|
||||||
|
LensFlareDataDrivenPS: {fileID: 4800000, guid: 6cda457ac28612740adb23da5d39ea92, type: 3}
|
||||||
|
LensFlareScreenSpacePS: {fileID: 4800000, guid: 701880fecb344ea4c9cd0db3407ab287, type: 3}
|
||||||
|
scalingSetupPS: {fileID: 4800000, guid: e8ee25143a34b8c4388709ea947055d1, type: 3}
|
||||||
|
easuPS: {fileID: 4800000, guid: 562b7ae4f629f144aa97780546fce7c6, type: 3}
|
||||||
|
uberPostPS: {fileID: 4800000, guid: e7857e9d0c934dc4f83f270f8447b006, type: 3}
|
||||||
|
finalPostPassPS: {fileID: 4800000, guid: c49e63ed1bbcb334780a3bd19dfed403, type: 3}
|
||||||
|
m_ShaderResourcesVersion: 0
|
||||||
|
- rid: 3879611001403080706
|
||||||
|
type: {class: PostProcessData/TextureResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
blueNoise16LTex:
|
||||||
|
- {fileID: 2800000, guid: 81200413a40918d4d8702e94db29911c, type: 3}
|
||||||
|
- {fileID: 2800000, guid: d50c5e07c9911a74982bddf7f3075e7b, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 1134690bf9216164dbc75050e35b7900, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 7ce2118f74614a94aa8a0cdf2e6062c3, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 2ca97df9d1801e84a8a8f2c53cb744f0, type: 3}
|
||||||
|
- {fileID: 2800000, guid: e63eef8f54aa9dc4da9a5ac094b503b5, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 39451254daebd6d40b52899c1f1c0c1b, type: 3}
|
||||||
|
- {fileID: 2800000, guid: c94ad916058dff743b0f1c969ddbe660, type: 3}
|
||||||
|
- {fileID: 2800000, guid: ed5ea7ce59ca8ec4f9f14bf470a30f35, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 071e954febf155243a6c81e48f452644, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 96aaab9cc247d0b4c98132159688c1af, type: 3}
|
||||||
|
- {fileID: 2800000, guid: fc3fa8f108657e14486697c9a84ccfc5, type: 3}
|
||||||
|
- {fileID: 2800000, guid: bfed3e498947fcb4890b7f40f54d85b9, type: 3}
|
||||||
|
- {fileID: 2800000, guid: d512512f4af60a442ab3458489412954, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 47a45908f6db0cb44a0d5e961143afec, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 4dcc0502f8586f941b5c4a66717205e8, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 9d92991794bb5864c8085468b97aa067, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 14381521ff11cb74abe3fe65401c23be, type: 3}
|
||||||
|
- {fileID: 2800000, guid: d36f0fe53425e08499a2333cf423634c, type: 3}
|
||||||
|
- {fileID: 2800000, guid: d4044ea2490d63b43aa1765f8efbf8a9, type: 3}
|
||||||
|
- {fileID: 2800000, guid: c9bd74624d8070f429e3f46d161f9204, type: 3}
|
||||||
|
- {fileID: 2800000, guid: d5c9b274310e5524ebe32a4e4da3df1f, type: 3}
|
||||||
|
- {fileID: 2800000, guid: f69770e54f2823f43badf77916acad83, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 10b6c6d22e73dea46a8ab36b6eebd629, type: 3}
|
||||||
|
- {fileID: 2800000, guid: a2ec5cbf5a9b64345ad3fab0912ddf7b, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 1c3c6d69a645b804fa232004b96b7ad3, type: 3}
|
||||||
|
- {fileID: 2800000, guid: d18a24d7b4ed50f4387993566d9d3ae2, type: 3}
|
||||||
|
- {fileID: 2800000, guid: c989e1ed85cf7154caa922fec53e6af6, type: 3}
|
||||||
|
- {fileID: 2800000, guid: ff47e5a0f105eb34883b973e51f4db62, type: 3}
|
||||||
|
- {fileID: 2800000, guid: fa042edbfc40fbd4bad0ab9d505b1223, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 896d9004736809c4fb5973b7c12eb8b9, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 179f794063d2a66478e6e726f84a65bc, type: 3}
|
||||||
|
filmGrainTex:
|
||||||
|
- {fileID: 2800000, guid: 654c582f7f8a5a14dbd7d119cbde215d, type: 3}
|
||||||
|
- {fileID: 2800000, guid: dd77ffd079630404e879388999033049, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 1097e90e1306e26439701489f391a6c0, type: 3}
|
||||||
|
- {fileID: 2800000, guid: f0b67500f7fad3b4c9f2b13e8f41ba6e, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 9930fb4528622b34687b00bbe6883de7, type: 3}
|
||||||
|
- {fileID: 2800000, guid: bd9e8c758250ef449a4b4bfaad7a2133, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 510a2f57334933e4a8dbabe4c30204e4, type: 3}
|
||||||
|
- {fileID: 2800000, guid: b4db8180660810945bf8d55ab44352ad, type: 3}
|
||||||
|
- {fileID: 2800000, guid: fd2fd78b392986e42a12df2177d3b89c, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 5cdee82a77d13994f83b8fdabed7c301, type: 3}
|
||||||
|
smaaAreaTex: {fileID: 2800000, guid: d1f1048909d55cd4fa1126ab998f617e, type: 3}
|
||||||
|
smaaSearchTex: {fileID: 2800000, guid: 51eee22c2a633ef4aada830eed57c3fd, type: 3}
|
||||||
|
m_TexturesResourcesVersion: 0
|
||||||
|
- rid: 3879611001403080707
|
||||||
|
type: {class: OnTilePostProcessResource, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
m_Version: 0
|
||||||
|
m_UberPostShader: {fileID: 4800000, guid: fe4f13c1004a07d4ea1e30bfd0326d9e, type: 3}
|
||||||
|
- rid: 3879611001403080708
|
||||||
|
type: {class: UniversalRenderPipelineEditorAssets, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
m_DefaultSettingsVolumeProfile: {fileID: 11400000, guid: eda47df5b85f4f249abf7abd73db2cb2, type: 2}
|
||||||
|
- rid: 3879611001403080709
|
||||||
|
type: {class: UniversalRenderPipelineRuntimeTerrainShaders, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
m_Version: 0
|
||||||
|
m_TerrainDetailLit: {fileID: 4800000, guid: f6783ab646d374f94b199774402a5144, type: 3}
|
||||||
|
m_TerrainDetailGrassBillboard: {fileID: 4800000, guid: 29868e73b638e48ca99a19ea58c48d90, type: 3}
|
||||||
|
m_TerrainDetailGrass: {fileID: 4800000, guid: e507fdfead5ca47e8b9a768b51c291a1, type: 3}
|
||||||
|
- rid: 3879611001403080710
|
||||||
|
type: {class: UniversalRenderPipelineRuntimeXRResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
m_xrOcclusionMeshPS: {fileID: 4800000, guid: 4431b1f1f743fbf4eb310a967890cbea, type: 3}
|
||||||
|
m_xrMirrorViewPS: {fileID: 4800000, guid: d5a307c014552314b9f560906d708772, type: 3}
|
||||||
|
m_xrMotionVector: {fileID: 4800000, guid: f89aac1e4f84468418fe30e611dff395, type: 3}
|
||||||
|
- rid: 3879611001403080711
|
||||||
|
type: {class: URPReflectionProbeSettings, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
version: 1
|
||||||
|
useReflectionProbeRotation: 0
|
||||||
|
- rid: 3879611001403080712
|
||||||
|
type: {class: ScreenSpaceAmbientOcclusionDynamicResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
m_BlueNoise256Textures:
|
||||||
|
- {fileID: 2800000, guid: 36f118343fc974119bee3d09e2111500, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 4b7b083e6b6734e8bb2838b0b50a0bc8, type: 3}
|
||||||
|
- {fileID: 2800000, guid: c06cc21c692f94f5fb5206247191eeee, type: 3}
|
||||||
|
- {fileID: 2800000, guid: cb76dd40fa7654f9587f6a344f125c9a, type: 3}
|
||||||
|
- {fileID: 2800000, guid: e32226222ff144b24bf3a5a451de54bc, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 3302065f671a8450b82c9ddf07426f3a, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 56a77a3e8d64f47b6afe9e3c95cb57d5, type: 3}
|
||||||
|
m_Version: 0
|
||||||
|
- rid: 3879611001403080713
|
||||||
|
type: {class: ScreenSpaceAmbientOcclusionPersistentResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
m_Shader: {fileID: 4800000, guid: 0849e84e3d62649e8882e9d6f056a017, type: 3}
|
||||||
|
m_Version: 0
|
||||||
|
- rid: 3879611001403080714
|
||||||
|
type: {class: URPTerrainShaderSetting, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
m_Version: 0
|
||||||
|
m_IncludeTerrainShaders: 1
|
||||||
|
- rid: 3879611001403080715
|
||||||
|
type: {class: VrsRenderPipelineRuntimeResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime}
|
||||||
|
data:
|
||||||
|
m_TextureComputeShader: {fileID: 7200000, guid: cacb30de6c40c7444bbc78cb0a81fd2a, type: 3}
|
||||||
|
m_VisualizationShader: {fileID: 4800000, guid: 620b55b8040a88d468e94abe55bed5ba, type: 3}
|
||||||
|
m_VisualizationLookupTable:
|
||||||
|
m_Data:
|
||||||
|
- {r: 0.785, g: 0.23, b: 0.2, a: 1}
|
||||||
|
- {r: 1, g: 0.8, b: 0.8, a: 1}
|
||||||
|
- {r: 0.4, g: 0.2, b: 0.2, a: 1}
|
||||||
|
- {r: 0.51, g: 0.8, b: 0.6, a: 1}
|
||||||
|
- {r: 0.6, g: 0.8, b: 1, a: 1}
|
||||||
|
- {r: 0.2, g: 0.4, b: 0.6, a: 1}
|
||||||
|
- {r: 0.8, g: 1, b: 0.8, a: 1}
|
||||||
|
- {r: 0.2, g: 0.4, b: 0.2, a: 1}
|
||||||
|
- {r: 0.125, g: 0.22, b: 0.36, a: 1}
|
||||||
|
m_ConversionLookupTable:
|
||||||
|
m_Data:
|
||||||
|
- {r: 0.785, g: 0.23, b: 0.2, a: 1}
|
||||||
|
- {r: 1, g: 0.8, b: 0.8, a: 1}
|
||||||
|
- {r: 0.4, g: 0.2, b: 0.2, a: 1}
|
||||||
|
- {r: 0.51, g: 0.8, b: 0.6, a: 1}
|
||||||
|
- {r: 0.6, g: 0.8, b: 1, a: 1}
|
||||||
|
- {r: 0.2, g: 0.4, b: 0.6, a: 1}
|
||||||
|
- {r: 0.8, g: 1, b: 0.8, a: 1}
|
||||||
|
- {r: 0.2, g: 0.4, b: 0.2, a: 1}
|
||||||
|
- {r: 0.125, g: 0.22, b: 0.36, a: 1}
|
||||||
|
- rid: 3879611001403080716
|
||||||
|
type: {class: RenderingDebuggerRuntimeResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime}
|
||||||
|
data:
|
||||||
|
m_version: 0
|
||||||
|
- rid: 3879611001403080717
|
||||||
|
type: {class: LightmapSamplingSettings, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime}
|
||||||
|
data:
|
||||||
|
m_Version: 1
|
||||||
|
m_UseBicubicLightmapSampling: 0
|
||||||
|
- rid: 3879611001403080718
|
||||||
|
type: {class: WorldRenderPipelineResources, ns: UnityEngine.PathTracing.Core, asm: Unity.PathTracing.Runtime}
|
||||||
|
data:
|
||||||
|
_version: 3
|
||||||
|
_blitCubemap: {fileID: 7200000, guid: 5a992812cb320d146a66cc600200cce7, type: 3}
|
||||||
|
_blitGrayScaleCookie: {fileID: 7200000, guid: 557fa399e33bf7647bda5697c5c158df, type: 3}
|
||||||
|
_setAlphaChannelShader: {fileID: 7200000, guid: 5efaea0e81c66334aa9d062d6573e6fd, type: 3}
|
||||||
|
_environmentImportanceSamplingBuild: {fileID: 7200000, guid: 5bb2534d2411d344cbc54f880232640f, type: 3}
|
||||||
|
_skyBoxMesh: {fileID: 4300000, guid: 0529e6c5f6dea8c4a8c2835ed7de57cb, type: 2}
|
||||||
|
_sixFaceSkyBoxMesh: {fileID: 4300000, guid: a80925ceebd011741b42509226cefc74, type: 2}
|
||||||
|
_buildLightGridShader: {fileID: 7200000, guid: 16e47c1641bd0104e92b624601457bb0, type: 3}
|
||||||
|
- rid: 6852985685364965376
|
||||||
|
type: {class: URPShaderStrippingSetting, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
m_Version: 0
|
||||||
|
m_StripUnusedPostProcessingVariants: 1
|
||||||
|
m_StripUnusedVariants: 1
|
||||||
|
m_StripScreenCoordOverrideVariants: 1
|
||||||
|
- rid: 6852985685364965377
|
||||||
|
type: {class: UniversalRenderPipelineEditorShaders, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
m_AutodeskInteractive: {fileID: 4800000, guid: 0e9d5a909a1f7e84882a534d0d11e49f, type: 3}
|
||||||
|
m_AutodeskInteractiveTransparent: {fileID: 4800000, guid: 5c81372d981403744adbdda4433c9c11, type: 3}
|
||||||
|
m_AutodeskInteractiveMasked: {fileID: 4800000, guid: 80aa867ac363ac043847b06ad71604cd, type: 3}
|
||||||
|
m_DefaultSpeedTree7Shader: {fileID: 4800000, guid: 0f4122b9a743b744abe2fb6a0a88868b, type: 3}
|
||||||
|
m_DefaultSpeedTree8Shader: {fileID: -6465566751694194690, guid: 9920c1f1781549a46ba081a2a15a16ec, type: 3}
|
||||||
|
m_DefaultSpeedTree9Shader: {fileID: -6465566751694194690, guid: cbd3e1cc4ae141c42a30e33b4d666a61, type: 3}
|
||||||
|
- rid: 6852985685364965378
|
||||||
|
type: {class: UniversalRendererResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
m_Version: 0
|
||||||
|
m_CopyDepthPS: {fileID: 4800000, guid: d6dae50ee9e1bfa4db75f19f99355220, type: 3}
|
||||||
|
m_CameraMotionVector: {fileID: 4800000, guid: c56b7e0d4c7cb484e959caeeedae9bbf, type: 3}
|
||||||
|
m_StencilDeferredPS: {fileID: 4800000, guid: e9155b26e1bc55942a41e518703fe304, type: 3}
|
||||||
|
m_ClusterDeferred: {fileID: 4800000, guid: 222cce62363a44a380c36bf03b392608, type: 3}
|
||||||
|
m_StencilDitherMaskSeedPS: {fileID: 4800000, guid: 8c3ee818f2efa514c889881ccb2e95a2, type: 3}
|
||||||
|
m_DBufferClear: {fileID: 4800000, guid: f056d8bd2a1c7e44e9729144b4c70395, type: 3}
|
||||||
|
- rid: 6852985685364965379
|
||||||
|
type: {class: UniversalRenderPipelineDebugShaders, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
m_DebugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7, type: 3}
|
||||||
|
m_HdrDebugViewPS: {fileID: 4800000, guid: 573620ae32aec764abd4d728906d2587, type: 3}
|
||||||
|
m_ProbeVolumeSamplingDebugComputeShader: {fileID: 7200000, guid: 53626a513ea68ce47b59dc1299fe3959, type: 3}
|
||||||
|
- rid: 6852985685364965380
|
||||||
|
type: {class: UniversalRenderPipelineRuntimeShaders, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
m_Version: 0
|
||||||
|
m_FallbackErrorShader: {fileID: 4800000, guid: e6e9a19c3678ded42a3bc431ebef7dbd, type: 3}
|
||||||
|
m_BlitHDROverlay: {fileID: 4800000, guid: a89bee29cffa951418fc1e2da94d1959, type: 3}
|
||||||
|
m_CoreBlitPS: {fileID: 4800000, guid: 93446b5c5339d4f00b85c159e1159b7c, type: 3}
|
||||||
|
m_CoreBlitColorAndDepthPS: {fileID: 4800000, guid: d104b2fc1ca6445babb8e90b0758136b, type: 3}
|
||||||
|
m_SamplingPS: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3}
|
||||||
|
m_TerrainDetailLit: {fileID: 0}
|
||||||
|
m_TerrainDetailGrassBillboard: {fileID: 0}
|
||||||
|
m_TerrainDetailGrass: {fileID: 0}
|
||||||
|
- rid: 6852985685364965381
|
||||||
|
type: {class: UniversalRenderPipelineRuntimeTextures, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
m_Version: 1
|
||||||
|
m_BlueNoise64LTex: {fileID: 2800000, guid: e3d24661c1e055f45a7560c033dbb837, type: 3}
|
||||||
|
m_BayerMatrixTex: {fileID: 2800000, guid: f9ee4ed84c1d10c49aabb9b210b0fc44, type: 3}
|
||||||
|
m_DebugFontTex: {fileID: 2800000, guid: 26a413214480ef144b2915d6ff4d0beb, type: 3}
|
||||||
|
- rid: 6852985685364965382
|
||||||
|
type: {class: Renderer2DResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
m_Version: 0
|
||||||
|
m_LightShader: {fileID: 4800000, guid: 3f6c848ca3d7bca4bbe846546ac701a1, type: 3}
|
||||||
|
m_ProjectedShadowShader: {fileID: 4800000, guid: ce09d4a80b88c5a4eb9768fab4f1ee00, type: 3}
|
||||||
|
m_SpriteShadowShader: {fileID: 4800000, guid: 44fc62292b65ab04eabcf310e799ccf6, type: 3}
|
||||||
|
m_SpriteUnshadowShader: {fileID: 4800000, guid: de02b375720b5c445afe83cd483bedf3, type: 3}
|
||||||
|
m_GeometryShadowShader: {fileID: 4800000, guid: 19349a0f9a7ed4c48a27445bcf92e5e1, type: 3}
|
||||||
|
m_GeometryUnshadowShader: {fileID: 4800000, guid: 77774d9009bb81447b048c907d4c6273, type: 3}
|
||||||
|
m_CopyDepthPS: {fileID: 4800000, guid: d6dae50ee9e1bfa4db75f19f99355220, type: 3}
|
||||||
|
m_DefaultLitMaterial: {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
|
||||||
|
m_DefaultUnlitMaterial: {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, type: 2}
|
||||||
|
m_DefaultMaskMaterial: {fileID: 2100000, guid: 15d0c3709176029428a0da2f8cecf0b5, type: 2}
|
||||||
|
m_DefaultMesh2DLitMaterial: {fileID: 2100000, guid: 9452ae1262a74094f8a68013fbcd1834, type: 2}
|
||||||
|
- rid: 6852985685364965383
|
||||||
|
type: {class: UniversalRenderPipelineEditorMaterials, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
m_DefaultMaterial: {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2}
|
||||||
|
m_DefaultParticleMaterial: {fileID: 2100000, guid: e823cd5b5d27c0f4b8256e7c12ee3e6d, type: 2}
|
||||||
|
m_DefaultLineMaterial: {fileID: 2100000, guid: e823cd5b5d27c0f4b8256e7c12ee3e6d, type: 2}
|
||||||
|
m_DefaultTerrainMaterial: {fileID: 2100000, guid: 594ea882c5a793440b60ff72d896021e, type: 2}
|
||||||
|
m_DefaultDecalMaterial: {fileID: 2100000, guid: 31d0dcc6f2dd4e4408d18036a2c93862, type: 2}
|
||||||
|
m_DefaultSpriteMaterial: {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, type: 2}
|
||||||
|
- rid: 6852985685364965384
|
||||||
|
type: {class: URPDefaultVolumeProfileSettings, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
m_Version: 0
|
||||||
|
m_VolumeProfile: {fileID: 11400000, guid: ab09877e2e707104187f6f83e2f62510, type: 2}
|
||||||
|
- rid: 6852985685364965385
|
||||||
|
type: {class: RenderGraphSettings, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
m_Version: 0
|
||||||
|
- rid: 6852985685364965386
|
||||||
|
type: {class: GPUResidentDrawerResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.GPUDriven.Runtime}
|
||||||
|
data:
|
||||||
|
m_Version: 0
|
||||||
|
m_InstanceDataBufferCopyKernels: {fileID: 7200000, guid: f984aeb540ded8b4fbb8a2047ab5b2e2, type: 3}
|
||||||
|
m_InstanceDataBufferUploadKernels: {fileID: 7200000, guid: 53864816eb00f2343b60e1a2c5a262ef, type: 3}
|
||||||
|
m_TransformUpdaterKernels: {fileID: 7200000, guid: 2a567b9b2733f8d47a700c3c85bed75b, type: 3}
|
||||||
|
m_WindDataUpdaterKernels: {fileID: 7200000, guid: fde76746e4fd0ed418c224f6b4084114, type: 3}
|
||||||
|
m_OccluderDepthPyramidKernels: {fileID: 7200000, guid: 08b2b5fb307b0d249860612774a987da, type: 3}
|
||||||
|
m_InstanceOcclusionCullingKernels: {fileID: 7200000, guid: f6d223acabc2f974795a5a7864b50e6c, type: 3}
|
||||||
|
m_OcclusionCullingDebugKernels: {fileID: 7200000, guid: b23e766bcf50ca4438ef186b174557df, type: 3}
|
||||||
|
m_DebugOcclusionTestPS: {fileID: 4800000, guid: d3f0849180c2d0944bc71060693df100, type: 3}
|
||||||
|
m_DebugOccluderPS: {fileID: 4800000, guid: b3c92426a88625841ab15ca6a7917248, type: 3}
|
||||||
|
- rid: 6852985685364965387
|
||||||
|
type: {class: STP/RuntimeResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime}
|
||||||
|
data:
|
||||||
|
m_setupCS: {fileID: 7200000, guid: 33be2e9a5506b2843bdb2bdff9cad5e1, type: 3}
|
||||||
|
m_preTaaCS: {fileID: 7200000, guid: a679dba8ec4d9ce45884a270b0e22dda, type: 3}
|
||||||
|
m_taaCS: {fileID: 7200000, guid: 3923900e2b41b5e47bc25bfdcbcdc9e6, type: 3}
|
||||||
|
- rid: 6852985685364965388
|
||||||
|
type: {class: ProbeVolumeBakingResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime}
|
||||||
|
data:
|
||||||
|
m_Version: 1
|
||||||
|
dilationShader: {fileID: 7200000, guid: 6bb382f7de370af41b775f54182e491d, type: 3}
|
||||||
|
subdivideSceneCS: {fileID: 7200000, guid: bb86f1f0af829fd45b2ebddda1245c22, type: 3}
|
||||||
|
voxelizeSceneShader: {fileID: 4800000, guid: c8b6a681c7b4e2e4785ffab093907f9e, type: 3}
|
||||||
|
traceVirtualOffsetCS: {fileID: -6772857160820960102, guid: ff2cbab5da58bf04d82c5f34037ed123, type: 3}
|
||||||
|
traceVirtualOffsetRT: {fileID: -5126288278712620388, guid: ff2cbab5da58bf04d82c5f34037ed123, type: 3}
|
||||||
|
skyOcclusionCS: {fileID: -6772857160820960102, guid: 5a2a534753fbdb44e96c3c78b5a6999d, type: 3}
|
||||||
|
skyOcclusionRT: {fileID: -5126288278712620388, guid: 5a2a534753fbdb44e96c3c78b5a6999d, type: 3}
|
||||||
|
renderingLayerCS: {fileID: -6772857160820960102, guid: 94a070d33e408384bafc1dea4a565df9, type: 3}
|
||||||
|
renderingLayerRT: {fileID: -5126288278712620388, guid: 94a070d33e408384bafc1dea4a565df9, type: 3}
|
||||||
|
- rid: 6852985685364965389
|
||||||
|
type: {class: ProbeVolumeGlobalSettings, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime}
|
||||||
|
data:
|
||||||
|
m_Version: 1
|
||||||
|
m_ProbeVolumeDisableStreamingAssets: 0
|
||||||
|
- rid: 6852985685364965390
|
||||||
|
type: {class: ProbeVolumeDebugResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime}
|
||||||
|
data:
|
||||||
|
m_Version: 1
|
||||||
|
probeVolumeDebugShader: {fileID: 4800000, guid: 3b21275fd12d65f49babb5286f040f2d, type: 3}
|
||||||
|
probeVolumeFragmentationDebugShader: {fileID: 4800000, guid: 3a80877c579b9144ebdcc6d923bca303, type: 3}
|
||||||
|
probeVolumeSamplingDebugShader: {fileID: 4800000, guid: bf54e6528c79a224e96346799064c393, type: 3}
|
||||||
|
probeVolumeOffsetDebugShader: {fileID: 4800000, guid: db8bd7436dc2c5f4c92655307d198381, type: 3}
|
||||||
|
probeSamplingDebugMesh: {fileID: -3555484719484374845, guid: 20be25aac4e22ee49a7db76fb3df6de2, type: 3}
|
||||||
|
numbersDisplayTex: {fileID: 2800000, guid: 73fe53b428c5b3440b7e87ee830b608a, type: 3}
|
||||||
|
- rid: 6852985685364965391
|
||||||
|
type: {class: IncludeAdditionalRPAssets, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime}
|
||||||
|
data:
|
||||||
|
m_version: 0
|
||||||
|
m_IncludeReferencedInScenes: 0
|
||||||
|
m_IncludeAssetsByLabel: 0
|
||||||
|
m_LabelToInclude:
|
||||||
|
- rid: 6852985685364965392
|
||||||
|
type: {class: ShaderStrippingSetting, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime}
|
||||||
|
data:
|
||||||
|
m_Version: 0
|
||||||
|
m_ExportShaderVariants: 1
|
||||||
|
m_ShaderVariantLogLevel: 0
|
||||||
|
m_StripRuntimeDebugShaders: 1
|
||||||
|
- rid: 6852985685364965393
|
||||||
|
type: {class: ProbeVolumeRuntimeResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime}
|
||||||
|
data:
|
||||||
|
m_Version: 1
|
||||||
|
probeVolumeBlendStatesCS: {fileID: 7200000, guid: a3f7b8c99de28a94684cb1daebeccf5d, type: 3}
|
||||||
|
probeVolumeUploadDataCS: {fileID: 7200000, guid: 0951de5992461754fa73650732c4954c, type: 3}
|
||||||
|
probeVolumeUploadDataL2CS: {fileID: 7200000, guid: 6196f34ed825db14b81fb3eb0ea8d931, type: 3}
|
||||||
|
- rid: 6852985685364965394
|
||||||
|
type: {class: RenderGraphGlobalSettings, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime}
|
||||||
|
data:
|
||||||
|
m_version: 0
|
||||||
|
m_EnableCompilationCaching: 1
|
||||||
|
m_EnableValidityChecks: 1
|
||||||
|
- rid: 8712630790384254976
|
||||||
|
type: {class: RenderGraphUtilsResources, ns: UnityEngine.Rendering.RenderGraphModule.Util, asm: Unity.RenderPipelines.Core.Runtime}
|
||||||
|
data:
|
||||||
|
m_Version: 0
|
||||||
|
m_CoreCopyPS: {fileID: 4800000, guid: 12dc59547ea167a4ab435097dd0f9add, type: 3}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 18dc0cd2c080841dea60987a38ce93fa
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/TutorialInfo.meta
Normal file
8
Assets/TutorialInfo.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ba062aa6c92b140379dbc06b43dd3b9b
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
9
Assets/TutorialInfo/Icons.meta
Normal file
9
Assets/TutorialInfo/Icons.meta
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8a0c9218a650547d98138cd835033977
|
||||||
|
folderAsset: yes
|
||||||
|
timeCreated: 1484670163
|
||||||
|
licenseType: Store
|
||||||
|
DefaultImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user