Compare commits
122 Commits
3e874fb863
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 7fc457a384 | |||
| 8093cca251 | |||
| c34b9df4f7 | |||
|
|
3aa43bfd20 | ||
|
|
5284ffc153 | ||
| 20167a8a52 | |||
| 9951aa98b2 | |||
| 600f35ae8f | |||
| a4eae438de | |||
| 72fe5e5b04 | |||
| 93d326e692 | |||
|
|
863e98a53f | ||
|
|
a979013b73 | ||
| 9c6a9910cb | |||
| b3a9823f49 | |||
| 0a2119a548 | |||
| 23429ec096 | |||
| 2f7eac05ce | |||
| 9a010524f2 | |||
| 34ab12a093 | |||
|
|
1c77c5d9cd | ||
| d066290607 | |||
| a27a59d176 | |||
| 6ecf799d18 | |||
| e93ef2111c | |||
| 3d2a9071bc | |||
|
|
a99a7c192d | ||
|
|
d79f6c6218 | ||
| 0828bb214f | |||
| 84f4020d47 | |||
| 979f2402c7 | |||
| 9fd45ec5e9 | |||
|
|
8fd6ab652b | ||
|
|
8ff1ba1a22 | ||
| 0d06c6a2d3 | |||
| 9b40721b84 | |||
| 75d2ef8dd0 | |||
| 4804e78951 | |||
| 17b3cf6746 | |||
| f3923079a4 | |||
|
|
3dabf9f9a4 | ||
|
|
e4865c725a | ||
|
|
c75e2c7f3c | ||
| 98d071480c | |||
|
|
907e2e24c8 | ||
|
|
0db8bbf9a7 | ||
|
|
194bde37ec | ||
|
|
363bdcf992 | ||
|
|
96d901a869 | ||
|
|
8f55cb212a | ||
|
|
51b0be2ee3 | ||
| 9e2a950281 | |||
| e841438997 | |||
|
|
840ddc1c2c | ||
|
|
84d4eee6a1 | ||
|
|
78f063988b | ||
|
|
ea6098b723 | ||
| 38a6fe104c | |||
| cc475bce3e | |||
|
|
ac1d265291 | ||
|
|
3ea5925d78 | ||
|
|
b34254137f | ||
|
|
ec1ff83814 | ||
| 48fff594f0 | |||
| b2e3fb1ecf | |||
| 2ac9331504 | |||
|
|
770512fb72 | ||
|
|
911ee24b31 | ||
|
|
b86e087d03 | ||
| 88d81202bf | |||
| d87a23ae4d | |||
| 4beb2fb0bb | |||
| 72c2ec2884 | |||
| 3ed564eaa5 | |||
| 411913520b | |||
| 01e7291bed | |||
| dfb41b0d57 | |||
|
|
d0b74bfbf1 | ||
| 702c0b4f9e | |||
| 4ffbbb0aff | |||
| da8c87d082 | |||
| 63a742d5d4 | |||
| cc2487e7e4 | |||
| f73c660579 | |||
| 2f624f621c | |||
| 7175edc1d1 | |||
| 2e612f21ca | |||
| 95db5ce4f3 | |||
| 3e026d3319 | |||
| a3b1b83c8d | |||
| 225b076b62 | |||
| 5bb8cd533e | |||
| 047c115f95 | |||
| 17457b2e7e | |||
| e451d95e0e | |||
|
|
25f5db2e16 | ||
|
|
fb555577a2 | ||
|
|
3e1754eb3c | ||
| 6d0365c0db | |||
| bd17a2e7eb | |||
|
|
a31ed42f65 | ||
|
|
11d3dfc101 | ||
| 6473db37eb | |||
| a65ead915b | |||
| 925d74aa57 | |||
|
|
fd7905561b | ||
| e2c40827bf | |||
| a85f4d8fed | |||
| 1aa65ce615 | |||
|
|
31e8adcb06 | ||
| e2381d6f5a | |||
| b32cc925e3 | |||
|
|
1fab3251b4 | ||
| 2bb4797ec5 | |||
| 4bd46b2a0a | |||
|
|
ea80402fc1 | ||
| 8175814de9 | |||
| 47cd76aebc | |||
| c74d6d2ebd | |||
| 965a4a25aa | |||
| 02f5aa869a | |||
| 775e1cffac |
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"permissions": {
|
||||
"allow": [
|
||||
"Bash(tree:*)"
|
||||
]
|
||||
}
|
||||
}
|
||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -14,3 +14,6 @@ Assets/_Recovery
|
||||
Assets/_Recovery.meta
|
||||
GameData/Backups
|
||||
.claude/settings.local.json
|
||||
AGENTS.md
|
||||
CLAUDE.md
|
||||
.claude
|
||||
|
||||
@@ -49,12 +49,10 @@
|
||||
<Analyzer Include="C:\Program Files\Unity\Hub\Editor\6000.3.5f2\Editor\Data\Tools\BuildPipeline\Unity.SourceGenerators\Unity.UIToolkit.SourceGenerator.dll" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Assets\Scripts\Editor\NetworkUIBuilder.cs" />
|
||||
<Compile Include="Assets\Scripts\Editor\MonsterPrefabSetup.cs" />
|
||||
<Compile Include="Assets\FlatKit\[Render Pipeline] URP\Water\Editor\Tooltips.cs" />
|
||||
<Compile Include="Assets\Scripts\Editor\EnemyPortalEditor.cs" />
|
||||
<Compile Include="Assets\Scripts\Editor\ObstacleSpawnerEditor.cs" />
|
||||
<Compile Include="Assets\Scripts\Editor\QuickNetworkSetupEditor.cs" />
|
||||
<Compile Include="Assets\Scripts\Editor\IPrefabSetup.cs" />
|
||||
<Compile Include="Assets\FlatKit\[Render Pipeline] URP\Water\Editor\WaterEditor.cs" />
|
||||
<Compile Include="Assets\Scripts\Editor\TowerPopulator.cs" />
|
||||
@@ -72,6 +70,7 @@
|
||||
<Compile Include="Assets\Scripts\Editor\NetworkConnectionHelperEditor.cs" />
|
||||
<Compile Include="Assets\Scripts\Editor\FogOfWarVisibilitySetup.cs" />
|
||||
<Compile Include="Assets\FlatKit\Shaders\Editor\MaterialPropertyExtensions.cs" />
|
||||
<Compile Include="Assets\Scripts\Editor\UpgradePrefabSetup.cs" />
|
||||
<Compile Include="Assets\FlatKit\Shaders\Editor\TerrainEditor.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
@@ -1371,14 +1370,14 @@
|
||||
<HintPath>Library\ScriptAssemblies\Unity.2D.Tilemap.Editor.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="Unity.InputSystem.ForUI">
|
||||
<HintPath>Library\ScriptAssemblies\Unity.InputSystem.ForUI.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="Unity.Profiling.Core">
|
||||
<HintPath>Library\ScriptAssemblies\Unity.Profiling.Core.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="Unity.InputSystem.ForUI">
|
||||
<HintPath>Library\ScriptAssemblies\Unity.InputSystem.ForUI.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="Unity.RenderPipelines.GPUDriven.Runtime">
|
||||
<HintPath>Library\ScriptAssemblies\Unity.RenderPipelines.GPUDriven.Runtime.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
@@ -1690,9 +1689,15 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="Assembly-CSharp.csproj" />
|
||||
<ProjectReference Include="CFXR.WelcomeScreen.csproj" />
|
||||
<ProjectReference Include="CFXRRuntime.csproj" />
|
||||
<ProjectReference Include="Unity.RenderPipelines.Universal.Runtime.csproj" />
|
||||
<ProjectReference Include="FlatKit.Utils.Editor.csproj" />
|
||||
<ProjectReference Include="CFXREditor.csproj" />
|
||||
<ProjectReference Include="KinoBloom.Runtime.csproj" />
|
||||
<ProjectReference Include="ExternAttributes.Editor.csproj" />
|
||||
<ProjectReference Include="ToonyColorsPro.Demo.Editor.csproj" />
|
||||
<ProjectReference Include="CFXRDemo.csproj" />
|
||||
</ItemGroup>
|
||||
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
|
||||
<ItemGroup>
|
||||
|
||||
@@ -53,9 +53,11 @@
|
||||
<Compile Include="Assets\FlatKit\Demos\[Demo] Desert\Scripts\FloatingMotion.cs" />
|
||||
<Compile Include="Assets\Scripts\PlayerResourceInventory.cs" />
|
||||
<Compile Include="Assets\Scripts\ITeamMember.cs" />
|
||||
<Compile Include="Assets\Scripts\UI\UpgradeListItem.cs" />
|
||||
<Compile Include="Assets\Scripts\EnemyUnit.cs" />
|
||||
<Compile Include="Assets\Scripts\PlayerActionSystem.cs" />
|
||||
<Compile Include="Assets\Scripts\BuildingQuickslotUI.cs" />
|
||||
<Compile Include="Assets\Scripts\UI\UpgradeListPopup.cs" />
|
||||
<Compile Include="Assets\Scripts\TeamType.cs" />
|
||||
<Compile Include="Assets\Scripts\CoreResourceManager.cs" />
|
||||
<Compile Include="Assets\Scripts\MapGenerator.cs" />
|
||||
@@ -65,47 +67,52 @@
|
||||
<Compile Include="Assets\Scripts\FogOfWarRenderer.cs" />
|
||||
<Compile Include="Assets\Scripts\ResourcePickup.cs" />
|
||||
<Compile Include="Assets\Scripts\PlayerVisionProvider.cs" />
|
||||
<Compile Include="Assets\Scripts\PlayerController.cs" />
|
||||
<Compile Include="Assets\FlatKit\Demos\Common\Scripts\Motion\OrbitMotion.cs" />
|
||||
<Compile Include="Assets\Scripts\CreepCamp.cs" />
|
||||
<Compile Include="Assets\Scripts\EnemyAIController.cs" />
|
||||
<Compile Include="Assets\Scripts\EquipmentSocket.cs" />
|
||||
<Compile Include="Assets\Scripts\DebugLogUI.cs" />
|
||||
<Compile Include="Assets\Scripts\ContinuousPortMonitor.cs" />
|
||||
<Compile Include="Assets\Data\Scripts\DataClasses\PlayerData.cs" />
|
||||
<Compile Include="Assets\Scripts\TeamManager.cs" />
|
||||
<Compile Include="Assets\Scripts\TeamGate.cs" />
|
||||
<Compile Include="Assets\Scripts\Worker.cs" />
|
||||
<Compile Include="Assets\Scripts\IHealthProvider.cs" />
|
||||
<Compile Include="Assets\Scripts\WorkerSpawner.cs" />
|
||||
<Compile Include="Assets\Scripts\Resource.cs" />
|
||||
<Compile Include="Assets\Data\Scripts\DataClasses\UpgradeData.cs" />
|
||||
<Compile Include="Assets\Scripts\UpgradeDatabase.cs" />
|
||||
<Compile Include="Assets\Scripts\UI\TeamHealthUI.cs" />
|
||||
<Compile Include="Assets\Scripts\AutoTargetSystem.cs" />
|
||||
<Compile Include="Assets\Scripts\CreepDataComponent.cs" />
|
||||
<Compile Include="Assets\Scripts\BuildingSlotButton.cs" />
|
||||
<Compile Include="Assets\Scripts\PlayerStats.cs" />
|
||||
<Compile Include="Assets\FlatKit\[Render Pipeline] URP\Water\Scripts\Buoyancy.cs" />
|
||||
<Compile Include="Assets\Scripts\ObstacleSpawner.cs" />
|
||||
<Compile Include="Assets\Scripts\UnitHealthBar.cs" />
|
||||
<Compile Include="Assets\Scripts\BuildingFoundation.cs" />
|
||||
<Compile Include="Assets\Scripts\AttackAction.cs" />
|
||||
<Compile Include="Assets\Scripts\IInteractable.cs" />
|
||||
<Compile Include="Assets\Scripts\ServerResourceManager.cs" />
|
||||
<Compile Include="Assets\Scripts\QuickNetworkSetup.cs" />
|
||||
<Compile Include="Assets\FlatKit\Demos\Common\Scripts\UvScroller.cs" />
|
||||
<Compile Include="Assets\Data\Scripts\DataClasses\TowerDataExtensions.cs" />
|
||||
<Compile Include="Assets\Scripts\GlobalTimer.cs" />
|
||||
<Compile Include="Assets\InputSystem_Actions.cs" />
|
||||
<Compile Include="Assets\FlatKit\Demos\[Demo] Desert\Scripts\BillboardLineRendererCircle.cs" />
|
||||
<Compile Include="Assets\Scripts\BuildingHealthBar.cs" />
|
||||
<Compile Include="Assets\Scripts\RespawnCountdownUI.cs" />
|
||||
<Compile Include="Assets\Data\Scripts\DataClasses\CreepData.cs" />
|
||||
<Compile Include="Assets\Scripts\PlayerSpawnPoint.cs" />
|
||||
<Compile Include="Assets\Scripts\NetworkJoinUI.cs" />
|
||||
<Compile Include="Assets\FlatKit\Demos\Common\Scripts\AutoLoadPipelineAsset.cs" />
|
||||
<Compile Include="Assets\Scripts\AutoHost.cs" />
|
||||
<Compile Include="Assets\Scripts\MonsterAnimationController.cs" />
|
||||
<Compile Include="Assets\Scripts\IVisionProvider.cs" />
|
||||
<Compile Include="Assets\Scripts\BuildingManager.cs" />
|
||||
<Compile Include="Assets\Scripts\GhostMaterialTest.cs" />
|
||||
<Compile Include="Assets\Scripts\BuildingPlacement.cs" />
|
||||
<Compile Include="Assets\Scripts\InteractableModalManager.cs" />
|
||||
<Compile Include="Assets\Scripts\MonsterDataComponent.cs" />
|
||||
<Compile Include="Assets\Scripts\Core.cs" />
|
||||
<Compile Include="Assets\Scripts\NetworkDebugger.cs" />
|
||||
<Compile Include="Assets\Scripts\GamePortConfig.cs" />
|
||||
<Compile Include="Assets\Scripts\EnemyPortal.cs" />
|
||||
<Compile Include="Assets\FlatKit\Demos\Common\Scripts\Motion\LinearMotion.cs" />
|
||||
<Compile Include="Assets\Scripts\IDamageable.cs" />
|
||||
@@ -113,16 +120,20 @@
|
||||
<Compile Include="Assets\Scripts\FogOfWarSystem.cs" />
|
||||
<Compile Include="Assets\Data\Scripts\DataClasses\MonsterData.cs" />
|
||||
<Compile Include="Assets\Scripts\NetworkEquipmentSocket.cs" />
|
||||
<Compile Include="Assets\Scripts\NetworkConfigDebugger.cs" />
|
||||
<Compile Include="Assets\Data\Scripts\DataClasses\TowerData.cs" />
|
||||
<Compile Include="Assets\Scripts\IAction.cs" />
|
||||
<Compile Include="Assets\Scripts\Buildings\Blacksmith.cs" />
|
||||
<Compile Include="Assets\Scripts\NetworkPlayerController.cs" />
|
||||
<Compile Include="Assets\Scripts\PlayerInteraction.cs" />
|
||||
<Compile Include="Assets\Scripts\FogOfWarVisibility.cs" />
|
||||
<Compile Include="Assets\Scripts\InteractableModal.cs" />
|
||||
<Compile Include="Assets\Scripts\NetworkDebug.cs" />
|
||||
<Compile Include="Assets\Data\Scripts\DataClasses\DefaultSettingsData.cs" />
|
||||
<Compile Include="Assets\Scripts\EnemyAIState.cs" />
|
||||
<Compile Include="Assets\Scripts\ShortcutNetworkStarter.cs" />
|
||||
<Compile Include="Assets\Scripts\EquipmentData.cs" />
|
||||
<Compile Include="Assets\Scripts\PlayerUpgradeManager.cs" />
|
||||
<Compile Include="Assets\Scripts\NetworkConnectionHelper.cs" />
|
||||
<Compile Include="Assets\Scripts\NetworkConnectionHandler.cs" />
|
||||
</ItemGroup>
|
||||
@@ -131,10 +142,12 @@
|
||||
<None Include="Assets\TextMesh Pro\Shaders\TMP_SDF-Mobile Overlay.shader" />
|
||||
<None Include="Assets\TextMesh Pro\Shaders\TMP_SDF-Mobile-2-Pass.shader" />
|
||||
<None Include="Assets\FlatKit\Shaders\StylizedSurface\LibraryUrp\LitForwardPass_DR.hlsl" />
|
||||
<None Include="Assets\External\JMO Assets\Cartoon FX Remaster\CFXR Assets\Shaders\CFXR_SETTINGS.cginc" />
|
||||
<None Include="Assets\TextMesh Pro\Shaders\TMP_Bitmap.shader" />
|
||||
<None Include="Assets\FlatKit\Shaders\StylizedSurface\LibraryUrp\TerrainLitPasses_DR.hlsl" />
|
||||
<None Include="Assets\FlatKit\Demos\[Demo] Desert\Shaders\CircleDecal.shader" />
|
||||
<None Include="Assets\FlatKit\Demos\[Demo] Desert\Shaders\Noise\ClassicNoise3D.hlsl" />
|
||||
<None Include="Assets\External\JMO Assets\Cartoon FX Remaster\CFXR Assets\Shaders\CFXR.cginc" />
|
||||
<None Include="Assets\TextMesh Pro\Shaders\TMPro_Mobile.cginc" />
|
||||
<None Include="Assets\FlatKit\Shaders\StylizedSurface\LibraryUrp\StylizedInput.hlsl" />
|
||||
<None Include="Assets\FlatKit\Shaders\GradientSkybox\GradientSkybox.shader" />
|
||||
@@ -156,6 +169,8 @@
|
||||
<None Include="Assets\FlatKit\Demos\[Demo] Desert\Shaders\DesertPillar.hlsl" />
|
||||
<None Include="Assets\TextMesh Pro\Shaders\TMPro_Properties.cginc" />
|
||||
<None Include="Assets\TextMesh Pro\Shaders\TMPro_Surface.cginc" />
|
||||
<None Include="Assets\External\JMO Assets\Cartoon FX Remaster\CFXR Prefabs\Texts\_Make your own text effect.txt" />
|
||||
<None Include="Assets\External\JMO Assets\Cartoon FX Remaster\CFXR Assets\Shaders\CFXR_PASSES.cginc" />
|
||||
<None Include="Assets\Shaders\FogOfWar.shader" />
|
||||
<None Include="Assets\TextMesh Pro\Resources\LineBreaking Following Characters.txt" />
|
||||
<None Include="Assets\External\Kaykit Adventurers Character\Characters\Animations\Animations\Rig_Large\Special\EXPERIMENTAL\Read_me.txt" />
|
||||
@@ -165,6 +180,7 @@
|
||||
<None Include="Assets\FlatKit\Shaders\StylizedSurface\TerrainLitAdd_DR.shader" />
|
||||
<None Include="Assets\TextMesh Pro\Shaders\TMP_SDF Overlay.shader" />
|
||||
<None Include="Assets\TextMesh Pro\Shaders\TMP_Bitmap-Mobile.shader" />
|
||||
<None Include="Assets\External\JMO Assets\Cartoon FX Remaster\CFXR Assets\Shaders\CFXR_URP.cginc" />
|
||||
<None Include="Assets\TextMesh Pro\Fonts\LiberationSans - OFL.txt" />
|
||||
<None Include="Assets\FlatKit\Shaders\StylizedSurface\StylizedSurface.shader" />
|
||||
<None Include="Assets\FlatKit\Shaders\LightPlane.shader" />
|
||||
@@ -1402,14 +1418,14 @@
|
||||
<HintPath>Library\ScriptAssemblies\Unity.2D.Tilemap.Editor.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="Unity.InputSystem.ForUI">
|
||||
<HintPath>Library\ScriptAssemblies\Unity.InputSystem.ForUI.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="Unity.Profiling.Core">
|
||||
<HintPath>Library\ScriptAssemblies\Unity.Profiling.Core.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="Unity.InputSystem.ForUI">
|
||||
<HintPath>Library\ScriptAssemblies\Unity.InputSystem.ForUI.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="Unity.RenderPipelines.GPUDriven.Runtime">
|
||||
<HintPath>Library\ScriptAssemblies\Unity.RenderPipelines.GPUDriven.Runtime.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
@@ -1720,9 +1736,15 @@
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="CFXR.WelcomeScreen.csproj" />
|
||||
<ProjectReference Include="CFXRRuntime.csproj" />
|
||||
<ProjectReference Include="Unity.RenderPipelines.Universal.Runtime.csproj" />
|
||||
<ProjectReference Include="FlatKit.Utils.Editor.csproj" />
|
||||
<ProjectReference Include="CFXREditor.csproj" />
|
||||
<ProjectReference Include="KinoBloom.Runtime.csproj" />
|
||||
<ProjectReference Include="ExternAttributes.Editor.csproj" />
|
||||
<ProjectReference Include="ToonyColorsPro.Demo.Editor.csproj" />
|
||||
<ProjectReference Include="CFXRDemo.csproj" />
|
||||
</ItemGroup>
|
||||
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
|
||||
<ItemGroup>
|
||||
|
||||
27643
Assets/Animations/Monster Attack 1.anim
Normal file
27643
Assets/Animations/Monster Attack 1.anim
Normal file
File diff suppressed because it is too large
Load Diff
8
Assets/Animations/Monster Attack 1.anim.meta
Normal file
8
Assets/Animations/Monster Attack 1.anim.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5c4b0e294c51551499712a4aa2161713
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 7400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -80,6 +80,12 @@ AnimatorController:
|
||||
m_DefaultInt: 0
|
||||
m_DefaultBool: 0
|
||||
m_Controller: {fileID: 9100000}
|
||||
- m_Name: Die
|
||||
m_Type: 9
|
||||
m_DefaultFloat: 0
|
||||
m_DefaultInt: 0
|
||||
m_DefaultBool: 0
|
||||
m_Controller: {fileID: 9100000}
|
||||
m_AnimatorLayers:
|
||||
- serializedVersion: 5
|
||||
m_Name: Base Layer
|
||||
@@ -114,7 +120,7 @@ AnimatorState:
|
||||
m_MirrorParameterActive: 0
|
||||
m_CycleOffsetParameterActive: 0
|
||||
m_TimeParameterActive: 0
|
||||
m_Motion: {fileID: 5005478036900451222, guid: bbfa9cc7ae2f16448b3adb4300f439e9, type: 3}
|
||||
m_Motion: {fileID: 7400000, guid: 5c4b0e294c51551499712a4aa2161713, type: 2}
|
||||
m_Tag:
|
||||
m_SpeedParameter:
|
||||
m_MirrorParameter:
|
||||
@@ -171,6 +177,32 @@ AnimatorState:
|
||||
m_MirrorParameter:
|
||||
m_CycleOffsetParameter:
|
||||
m_TimeParameter:
|
||||
--- !u!1102 &3895323774234557799
|
||||
AnimatorState:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Death
|
||||
m_Speed: 1
|
||||
m_CycleOffset: 0
|
||||
m_Transitions: []
|
||||
m_StateMachineBehaviours: []
|
||||
m_Position: {x: 50, y: 50, z: 0}
|
||||
m_IKOnFeet: 0
|
||||
m_WriteDefaultValues: 1
|
||||
m_Mirror: 0
|
||||
m_SpeedParameterActive: 0
|
||||
m_MirrorParameterActive: 0
|
||||
m_CycleOffsetParameterActive: 0
|
||||
m_TimeParameterActive: 0
|
||||
m_Motion: {fileID: -1923750366902163184, guid: 2632f2cc035d62d41bca411a318fbe36, type: 3}
|
||||
m_Tag:
|
||||
m_SpeedParameter:
|
||||
m_MirrorParameter:
|
||||
m_CycleOffsetParameter:
|
||||
m_TimeParameter:
|
||||
--- !u!1107 &7310025410107308077
|
||||
AnimatorStateMachine:
|
||||
serializedVersion: 6
|
||||
@@ -186,9 +218,13 @@ AnimatorStateMachine:
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: 2543178704363584614}
|
||||
m_Position: {x: 390, y: 120, z: 0}
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: 3895323774234557799}
|
||||
m_Position: {x: 390, y: 220, z: 0}
|
||||
m_ChildStateMachines: []
|
||||
m_AnyStateTransitions:
|
||||
- {fileID: 1407797717177975804}
|
||||
- {fileID: 8516396118002013951}
|
||||
m_EntryTransitions: []
|
||||
m_StateMachineTransitions: {}
|
||||
m_StateMachineBehaviours: []
|
||||
@@ -197,3 +233,28 @@ AnimatorStateMachine:
|
||||
m_ExitPosition: {x: 710, y: 120, z: 0}
|
||||
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
|
||||
m_DefaultState: {fileID: 2543178704363584614}
|
||||
--- !u!1101 &8516396118002013951
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name:
|
||||
m_Conditions:
|
||||
- m_ConditionMode: 1
|
||||
m_ConditionEvent: Die
|
||||
m_EventTreshold: 0
|
||||
m_DstStateMachine: {fileID: 0}
|
||||
m_DstState: {fileID: 3895323774234557799}
|
||||
m_Solo: 0
|
||||
m_Mute: 0
|
||||
m_IsExit: 0
|
||||
serializedVersion: 3
|
||||
m_TransitionDuration: 0.1
|
||||
m_TransitionOffset: 0
|
||||
m_ExitTime: 0.75
|
||||
m_HasExitTime: 0
|
||||
m_HasFixedDuration: 1
|
||||
m_InterruptionSource: 0
|
||||
m_OrderedInterruption: 1
|
||||
m_CanTransitionToSelf: 1
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!221 &22100000
|
||||
AnimatorOverrideController:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: MonsterAnimationController_large
|
||||
m_Controller: {fileID: 9100000, guid: 0a6254dd97e2e8a47ab5cd5c1a629717, type: 2}
|
||||
m_Clips:
|
||||
- m_OriginalClip: {fileID: -1923750366902163184, guid: 2632f2cc035d62d41bca411a318fbe36, type: 3}
|
||||
m_OverrideClip: {fileID: 7400000, guid: df1a5739c2bbeb740bbbd5c3a4e28906, type: 2}
|
||||
- m_OriginalClip: {fileID: 345275505875579249, guid: 2632f2cc035d62d41bca411a318fbe36, type: 3}
|
||||
m_OverrideClip: {fileID: 7400000, guid: dd2f43caa654fa34683e02c96c7067f3, type: 2}
|
||||
- m_OriginalClip: {fileID: 5005478036900451222, guid: bbfa9cc7ae2f16448b3adb4300f439e9, type: 3}
|
||||
m_OverrideClip: {fileID: 7400000, guid: 69019833c251e144bbba158d4613e312, type: 2}
|
||||
- m_OriginalClip: {fileID: -1640158340307531623, guid: e9bbf9eb253a2004aabc86fe90014c06, type: 3}
|
||||
m_OverrideClip: {fileID: 7400000, guid: dce562c25d5792349a8702307d4ea9e3, type: 2}
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c43a01f9e8c8fc246b0c2d6b1515853a
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 22100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,5 +1,30 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1101 &-8793749239544201940
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name:
|
||||
m_Conditions:
|
||||
- m_ConditionMode: 1
|
||||
m_ConditionEvent: Revive
|
||||
m_EventTreshold: 1
|
||||
m_DstStateMachine: {fileID: 0}
|
||||
m_DstState: {fileID: -8582474753685269919}
|
||||
m_Solo: 0
|
||||
m_Mute: 0
|
||||
m_IsExit: 0
|
||||
serializedVersion: 3
|
||||
m_TransitionDuration: 0.25
|
||||
m_TransitionOffset: 0
|
||||
m_ExitTime: 0.6875
|
||||
m_HasExitTime: 1
|
||||
m_HasFixedDuration: 1
|
||||
m_InterruptionSource: 0
|
||||
m_OrderedInterruption: 1
|
||||
m_CanTransitionToSelf: 1
|
||||
--- !u!1102 &-8582474753685269919
|
||||
AnimatorState:
|
||||
serializedVersion: 6
|
||||
@@ -70,6 +95,58 @@ AnimatorStateTransition:
|
||||
m_InterruptionSource: 0
|
||||
m_OrderedInterruption: 1
|
||||
m_CanTransitionToSelf: 1
|
||||
--- !u!1102 &-6405359010994864473
|
||||
AnimatorState:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Death
|
||||
m_Speed: 1
|
||||
m_CycleOffset: 0
|
||||
m_Transitions:
|
||||
- {fileID: -8793749239544201940}
|
||||
m_StateMachineBehaviours: []
|
||||
m_Position: {x: 50, y: 50, z: 0}
|
||||
m_IKOnFeet: 0
|
||||
m_WriteDefaultValues: 1
|
||||
m_Mirror: 0
|
||||
m_SpeedParameterActive: 0
|
||||
m_MirrorParameterActive: 0
|
||||
m_CycleOffsetParameterActive: 0
|
||||
m_TimeParameterActive: 0
|
||||
m_Motion: {fileID: -1923750366902163184, guid: 2632f2cc035d62d41bca411a318fbe36, type: 3}
|
||||
m_Tag:
|
||||
m_SpeedParameter:
|
||||
m_MirrorParameter:
|
||||
m_CycleOffsetParameter:
|
||||
m_TimeParameter:
|
||||
--- !u!1101 &-6260076695452185276
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name:
|
||||
m_Conditions:
|
||||
- m_ConditionMode: 1
|
||||
m_ConditionEvent: Die
|
||||
m_EventTreshold: 0
|
||||
m_DstStateMachine: {fileID: 0}
|
||||
m_DstState: {fileID: -6405359010994864473}
|
||||
m_Solo: 0
|
||||
m_Mute: 0
|
||||
m_IsExit: 0
|
||||
serializedVersion: 3
|
||||
m_TransitionDuration: 0.1
|
||||
m_TransitionOffset: 0
|
||||
m_ExitTime: 0.75
|
||||
m_HasExitTime: 0
|
||||
m_HasFixedDuration: 1
|
||||
m_InterruptionSource: 0
|
||||
m_OrderedInterruption: 1
|
||||
m_CanTransitionToSelf: 1
|
||||
--- !u!1101 &-6201445603492837203
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 1
|
||||
@@ -138,10 +215,14 @@ AnimatorStateMachine:
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: 6580572526695193822}
|
||||
m_Position: {x: 70, y: -130, z: 0}
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: -6405359010994864473}
|
||||
m_Position: {x: 530, y: -130, z: 0}
|
||||
m_ChildStateMachines: []
|
||||
m_AnyStateTransitions:
|
||||
- {fileID: -6201445603492837203}
|
||||
- {fileID: -5251586739186328965}
|
||||
- {fileID: -6260076695452185276}
|
||||
m_EntryTransitions: []
|
||||
m_StateMachineTransitions: {}
|
||||
m_StateMachineBehaviours: []
|
||||
@@ -177,6 +258,18 @@ AnimatorController:
|
||||
m_DefaultInt: 0
|
||||
m_DefaultBool: 0
|
||||
m_Controller: {fileID: 9100000}
|
||||
- m_Name: Die
|
||||
m_Type: 9
|
||||
m_DefaultFloat: 0
|
||||
m_DefaultInt: 0
|
||||
m_DefaultBool: 0
|
||||
m_Controller: {fileID: 9100000}
|
||||
- m_Name: Revive
|
||||
m_Type: 9
|
||||
m_DefaultFloat: 0
|
||||
m_DefaultInt: 0
|
||||
m_DefaultBool: 0
|
||||
m_Controller: {fileID: 9100000}
|
||||
m_AnimatorLayers:
|
||||
- serializedVersion: 5
|
||||
m_Name: Base Layer
|
||||
|
||||
@@ -14,12 +14,13 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.CreepData
|
||||
id: 1
|
||||
memo: "\uAE30\uBCF81"
|
||||
moveSpeed: 5
|
||||
maxHp: 100
|
||||
atkRange: 3
|
||||
atkDamage: 20
|
||||
atkIntervalSec: 1.5
|
||||
cost: 1
|
||||
moveSpeed: 4
|
||||
maxHp: 75
|
||||
sight: 6
|
||||
atkRange: 1
|
||||
atkDamage: 10
|
||||
atkIntervalSec: 2
|
||||
cost: 2
|
||||
weight: 1
|
||||
modelPath: Assets/Models/PlantWarrior.fbx
|
||||
modelPath: Assets/Models/PlantWarrior_With_Spear.fbx
|
||||
animationControllerPath: Assets/Animations/MonsterAnimationController.controller
|
||||
|
||||
26
Assets/Data/ScriptableObjects/Creep/Creep2.asset
Normal file
26
Assets/Data/ScriptableObjects/Creep/Creep2.asset
Normal file
@@ -0,0 +1,26 @@
|
||||
%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: f7bb664a82feb0e43b3c5f459ca775f7, type: 3}
|
||||
m_Name: Creep2
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.CreepData
|
||||
id: 2
|
||||
memo: "\uAE30\uBCF82"
|
||||
moveSpeed: 3.5
|
||||
maxHp: 50
|
||||
sight: 6
|
||||
atkRange: 4
|
||||
atkDamage: 15
|
||||
atkIntervalSec: 4
|
||||
cost: 5
|
||||
weight: 0.5
|
||||
modelPath: Assets/Models/Rogue.fbx
|
||||
animationControllerPath: Assets/Animations/MonsterAnimationController.controller
|
||||
8
Assets/Data/ScriptableObjects/Creep/Creep2.asset.meta
Normal file
8
Assets/Data/ScriptableObjects/Creep/Creep2.asset.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e3dc093d12ac8e94eac148cbdad689b4
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -14,12 +14,15 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.MonsterData
|
||||
id: 101
|
||||
memo: "Grunt(\uAE30\uBCF8)"
|
||||
moveSpeed: 10
|
||||
maxHp: 50
|
||||
moveSpeed: 4.5
|
||||
maxHp: 75
|
||||
sight: 6
|
||||
atkRange: 1
|
||||
atkDamage: 3
|
||||
atkIntervalSec: 1.2
|
||||
cost: 1
|
||||
cost: 3
|
||||
weight: 1
|
||||
modelPath: Assets/Models/Skeleton_Minion.fbx
|
||||
modelPath: Assets/Models/Skeleton_Minion_With_Sword.fbx
|
||||
animationControllerPath: Assets/Animations/MonsterAnimationController.controller
|
||||
waveMin: 1
|
||||
waveMax: 10
|
||||
|
||||
@@ -13,13 +13,16 @@ MonoBehaviour:
|
||||
m_Name: Monster102
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.MonsterData
|
||||
id: 102
|
||||
memo: "Fast(\uBE60\uB984/\uC57D\uD568)"
|
||||
moveSpeed: 13
|
||||
maxHp: 30
|
||||
memo: "Tank(\uB290\uB9BC/\uB2E8\uB2E8)"
|
||||
moveSpeed: 2.5
|
||||
maxHp: 125
|
||||
sight: 6
|
||||
atkRange: 1
|
||||
atkDamage: 2
|
||||
atkIntervalSec: 1
|
||||
cost: 2
|
||||
atkDamage: 4
|
||||
atkIntervalSec: 1.5
|
||||
cost: 5
|
||||
weight: 0.5
|
||||
modelPath: Assets/Models/Druid.fbx
|
||||
animationControllerPath: Assets/Animations/MonsterAnimationController.controller
|
||||
waveMin: 3
|
||||
waveMax: 15
|
||||
|
||||
@@ -13,13 +13,16 @@ MonoBehaviour:
|
||||
m_Name: Monster103
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.MonsterData
|
||||
id: 103
|
||||
memo: "Tank(\uB290\uB9BC/\uB2E8\uB2E8)"
|
||||
moveSpeed: 5
|
||||
maxHp: 150
|
||||
atkRange: 1
|
||||
atkDamage: 4
|
||||
atkIntervalSec: 1.5
|
||||
cost: 5
|
||||
memo: "Ranged(\uC6D0\uAC70\uB9AC/\uC57D\uD568)"
|
||||
moveSpeed: 3.5
|
||||
maxHp: 65
|
||||
sight: 6
|
||||
atkRange: 5
|
||||
atkDamage: 2
|
||||
atkIntervalSec: 1.4
|
||||
cost: 3
|
||||
weight: 0.2
|
||||
modelPath: Assets/Models/Skeleton_Warrior.fbx
|
||||
animationControllerPath: Assets/Animations/MonsterAnimationController.controller
|
||||
waveMin: 3
|
||||
waveMax: 20
|
||||
|
||||
@@ -13,13 +13,16 @@ MonoBehaviour:
|
||||
m_Name: Monster104
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.MonsterData
|
||||
id: 104
|
||||
memo: "Ranged(\uC6D0\uAC70\uB9AC/\uC57D\uD568)"
|
||||
moveSpeed: 8
|
||||
maxHp: 40
|
||||
atkRange: 5
|
||||
memo: "Fast(\uBE60\uB984/\uC57D\uD568)"
|
||||
moveSpeed: 6
|
||||
maxHp: 45
|
||||
sight: 6
|
||||
atkRange: 1
|
||||
atkDamage: 2
|
||||
atkIntervalSec: 1.4
|
||||
atkIntervalSec: 1
|
||||
cost: 3
|
||||
weight: 0.333
|
||||
modelPath: Assets/Models/Skeleton_Rogue.fbx
|
||||
animationControllerPath: Assets/Animations/MonsterAnimationController.controller
|
||||
waveMin: 3
|
||||
waveMax: 20
|
||||
|
||||
@@ -14,12 +14,15 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.MonsterData
|
||||
id: 105
|
||||
memo: "Elite(\uC18C\uC218 \uC815\uC608)"
|
||||
moveSpeed: 10
|
||||
maxHp: 130
|
||||
moveSpeed: 4.5
|
||||
maxHp: 100
|
||||
sight: 6
|
||||
atkRange: 1
|
||||
atkDamage: 7
|
||||
atkIntervalSec: 1.3
|
||||
cost: 10
|
||||
cost: 6
|
||||
weight: 0.1
|
||||
modelPath: Assets/Models/Barbarian_Large.fbx
|
||||
animationControllerPath: Assets/Animations/MonsterAnimationController.controller
|
||||
waveMin: 5
|
||||
waveMax: 20
|
||||
|
||||
@@ -14,15 +14,19 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.TowerData
|
||||
id: 1
|
||||
memo: "\uD0C0\uC6CC"
|
||||
buildingName:
|
||||
mana: 100
|
||||
manpower: 10
|
||||
buildingName: Arrow Tower Lv.1
|
||||
level: 1
|
||||
upgradeTo: 2
|
||||
towerType: attack
|
||||
mana: 150
|
||||
manpower: 50
|
||||
sizeX: 4
|
||||
sizeY: 10
|
||||
sizeZ: 4
|
||||
maxHp: 50
|
||||
maxHp: 100
|
||||
sight: 15
|
||||
atkRange: 10
|
||||
atkDamage: 3
|
||||
atkDamage: 15
|
||||
atkIntervalSec: 2
|
||||
modelPath: Assets/Models/building_tower_B_blue.fbx
|
||||
prefab: {fileID: 8512676738329978770, guid: 3f7838db2c2fc424d9bd9a0d243b43be, type: 3}
|
||||
|
||||
47
Assets/Data/ScriptableObjects/Tower/Tower10.asset
Normal file
47
Assets/Data/ScriptableObjects/Tower/Tower10.asset
Normal file
@@ -0,0 +1,47 @@
|
||||
%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: 8c40fef5ebc37b743a3f225c1ca57c32, type: 3}
|
||||
m_Name: Tower10
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.TowerData
|
||||
id: 10
|
||||
memo: "\uBCBD"
|
||||
buildingName: Wall Lv.5
|
||||
level: 5
|
||||
upgradeTo: 0
|
||||
towerType: defense
|
||||
mana: 150
|
||||
manpower: 50
|
||||
sizeX: 8
|
||||
sizeY: 4
|
||||
sizeZ: 3
|
||||
maxHp: 110
|
||||
sight: 1
|
||||
atkRange: 0
|
||||
atkDamage: 0
|
||||
atkIntervalSec: 0
|
||||
modelPath: Assets/Models/wall_straight.fbx
|
||||
prefab: {fileID: 5817331480696920731, guid: c680d37f654a3624f918970c8e7cee7a, type: 3}
|
||||
icon: {fileID: 0}
|
||||
placementOffset: {x: 0, y: 0, z: 0}
|
||||
allowRotation: 1
|
||||
isIndestructible: 0
|
||||
autoRegenerate: 0
|
||||
regenPerSecond: 1
|
||||
providesVision: 1
|
||||
constructionEquipment:
|
||||
socketName: RightHand
|
||||
equipmentPrefab: {fileID: 0}
|
||||
attachOnStart: 1
|
||||
detachOnEnd: 1
|
||||
keepEquipped: 0
|
||||
attachDelay: 0
|
||||
detachDelay: 0
|
||||
8
Assets/Data/ScriptableObjects/Tower/Tower10.asset.meta
Normal file
8
Assets/Data/ScriptableObjects/Tower/Tower10.asset.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 06213f59024aa9f46b74b23e61a03ba8
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
47
Assets/Data/ScriptableObjects/Tower/Tower11.asset
Normal file
47
Assets/Data/ScriptableObjects/Tower/Tower11.asset
Normal file
@@ -0,0 +1,47 @@
|
||||
%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: 8c40fef5ebc37b743a3f225c1ca57c32, type: 3}
|
||||
m_Name: Tower11
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.TowerData
|
||||
id: 11
|
||||
memo: "\uC640\uB4DC"
|
||||
buildingName: Ward Lv.1
|
||||
level: 1
|
||||
upgradeTo: 0
|
||||
towerType: sight
|
||||
mana: 10
|
||||
manpower: 10
|
||||
sizeX: 1
|
||||
sizeY: 1
|
||||
sizeZ: 1
|
||||
maxHp: 10
|
||||
sight: 5
|
||||
atkRange: 0
|
||||
atkDamage: 0
|
||||
atkIntervalSec: 0
|
||||
modelPath: Assets/Models/torch.fbx
|
||||
prefab: {fileID: 4836465544871382218, guid: 444d5b6b074d6db4dbe8fcb699ca6203, type: 3}
|
||||
icon: {fileID: 0}
|
||||
placementOffset: {x: 0, y: 0, z: 0}
|
||||
allowRotation: 1
|
||||
isIndestructible: 0
|
||||
autoRegenerate: 0
|
||||
regenPerSecond: 1
|
||||
providesVision: 1
|
||||
constructionEquipment:
|
||||
socketName: RightHand
|
||||
equipmentPrefab: {fileID: 0}
|
||||
attachOnStart: 1
|
||||
detachOnEnd: 1
|
||||
keepEquipped: 0
|
||||
attachDelay: 0
|
||||
detachDelay: 0
|
||||
8
Assets/Data/ScriptableObjects/Tower/Tower11.asset.meta
Normal file
8
Assets/Data/ScriptableObjects/Tower/Tower11.asset.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 591be145c85809342bb41e15f86bbe5d
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -13,18 +13,22 @@ MonoBehaviour:
|
||||
m_Name: Tower2
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.TowerData
|
||||
id: 2
|
||||
memo: "\uBCBD"
|
||||
buildingName:
|
||||
mana: 50
|
||||
manpower: 5
|
||||
sizeX: 8
|
||||
sizeY: 4
|
||||
sizeZ: 3
|
||||
maxHp: 30
|
||||
atkRange: 0
|
||||
atkDamage: 0
|
||||
atkIntervalSec: 0
|
||||
modelPath: Assets/Models/wall_straight.fbx
|
||||
memo: "\uD0C0\uC6CC"
|
||||
buildingName: Arrow Tower Lv.2
|
||||
level: 2
|
||||
upgradeTo: 3
|
||||
towerType: attack
|
||||
mana: 300
|
||||
manpower: 60
|
||||
sizeX: 4
|
||||
sizeY: 10
|
||||
sizeZ: 4
|
||||
maxHp: 150
|
||||
sight: 15
|
||||
atkRange: 15
|
||||
atkDamage: 20
|
||||
atkIntervalSec: 2
|
||||
modelPath: Assets/Models/building_tower_B_blue.fbx
|
||||
prefab: {fileID: 3671057791414486316, guid: ae9a9b515e1792a45887f0d967b943d6, type: 3}
|
||||
icon: {fileID: 0}
|
||||
placementOffset: {x: 0, y: 0, z: 0}
|
||||
|
||||
47
Assets/Data/ScriptableObjects/Tower/Tower3.asset
Normal file
47
Assets/Data/ScriptableObjects/Tower/Tower3.asset
Normal file
@@ -0,0 +1,47 @@
|
||||
%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: 8c40fef5ebc37b743a3f225c1ca57c32, type: 3}
|
||||
m_Name: Tower3
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.TowerData
|
||||
id: 3
|
||||
memo: "\uD0C0\uC6CC"
|
||||
buildingName: Arrow Tower Lv.3
|
||||
level: 3
|
||||
upgradeTo: 4
|
||||
towerType: attack
|
||||
mana: 450
|
||||
manpower: 70
|
||||
sizeX: 4
|
||||
sizeY: 10
|
||||
sizeZ: 4
|
||||
maxHp: 200
|
||||
sight: 20
|
||||
atkRange: 15
|
||||
atkDamage: 30
|
||||
atkIntervalSec: 2
|
||||
modelPath: Assets/Models/building_tower_B_blue.fbx
|
||||
prefab: {fileID: 5178364993341969979, guid: a8163f1921c918b4db0ca25636eef8f9, type: 3}
|
||||
icon: {fileID: 0}
|
||||
placementOffset: {x: 0, y: 0, z: 0}
|
||||
allowRotation: 1
|
||||
isIndestructible: 0
|
||||
autoRegenerate: 0
|
||||
regenPerSecond: 1
|
||||
providesVision: 1
|
||||
constructionEquipment:
|
||||
socketName: RightHand
|
||||
equipmentPrefab: {fileID: 0}
|
||||
attachOnStart: 1
|
||||
detachOnEnd: 1
|
||||
keepEquipped: 0
|
||||
attachDelay: 0
|
||||
detachDelay: 0
|
||||
8
Assets/Data/ScriptableObjects/Tower/Tower3.asset.meta
Normal file
8
Assets/Data/ScriptableObjects/Tower/Tower3.asset.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d4f93d45d6697c245b583cff180c602b
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
47
Assets/Data/ScriptableObjects/Tower/Tower4.asset
Normal file
47
Assets/Data/ScriptableObjects/Tower/Tower4.asset
Normal file
@@ -0,0 +1,47 @@
|
||||
%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: 8c40fef5ebc37b743a3f225c1ca57c32, type: 3}
|
||||
m_Name: Tower4
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.TowerData
|
||||
id: 4
|
||||
memo: "\uD0C0\uC6CC"
|
||||
buildingName: Arrow Tower Lv.4
|
||||
level: 4
|
||||
upgradeTo: 5
|
||||
towerType: attack
|
||||
mana: 600
|
||||
manpower: 80
|
||||
sizeX: 4
|
||||
sizeY: 10
|
||||
sizeZ: 4
|
||||
maxHp: 250
|
||||
sight: 25
|
||||
atkRange: 20
|
||||
atkDamage: 40
|
||||
atkIntervalSec: 2
|
||||
modelPath: Assets/Models/building_tower_B_blue.fbx
|
||||
prefab: {fileID: 4171458273137159353, guid: 8430b50192177b8478a235db6987ae31, type: 3}
|
||||
icon: {fileID: 0}
|
||||
placementOffset: {x: 0, y: 0, z: 0}
|
||||
allowRotation: 1
|
||||
isIndestructible: 0
|
||||
autoRegenerate: 0
|
||||
regenPerSecond: 1
|
||||
providesVision: 1
|
||||
constructionEquipment:
|
||||
socketName: RightHand
|
||||
equipmentPrefab: {fileID: 0}
|
||||
attachOnStart: 1
|
||||
detachOnEnd: 1
|
||||
keepEquipped: 0
|
||||
attachDelay: 0
|
||||
detachDelay: 0
|
||||
8
Assets/Data/ScriptableObjects/Tower/Tower4.asset.meta
Normal file
8
Assets/Data/ScriptableObjects/Tower/Tower4.asset.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8df4365a2a8ec4041a840a674c9fcdb2
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
47
Assets/Data/ScriptableObjects/Tower/Tower5.asset
Normal file
47
Assets/Data/ScriptableObjects/Tower/Tower5.asset
Normal file
@@ -0,0 +1,47 @@
|
||||
%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: 8c40fef5ebc37b743a3f225c1ca57c32, type: 3}
|
||||
m_Name: Tower5
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.TowerData
|
||||
id: 5
|
||||
memo: "\uD0C0\uC6CC"
|
||||
buildingName: Arrow Tower Lv.5
|
||||
level: 5
|
||||
upgradeTo: 0
|
||||
towerType: attack
|
||||
mana: 750
|
||||
manpower: 100
|
||||
sizeX: 4
|
||||
sizeY: 10
|
||||
sizeZ: 4
|
||||
maxHp: 400
|
||||
sight: 25
|
||||
atkRange: 25
|
||||
atkDamage: 50
|
||||
atkIntervalSec: 2
|
||||
modelPath: Assets/Models/building_tower_B_blue.fbx
|
||||
prefab: {fileID: 7839175078399552227, guid: 56b0a93f2c28474419ccd3d67c2af475, type: 3}
|
||||
icon: {fileID: 0}
|
||||
placementOffset: {x: 0, y: 0, z: 0}
|
||||
allowRotation: 1
|
||||
isIndestructible: 0
|
||||
autoRegenerate: 0
|
||||
regenPerSecond: 1
|
||||
providesVision: 1
|
||||
constructionEquipment:
|
||||
socketName: RightHand
|
||||
equipmentPrefab: {fileID: 0}
|
||||
attachOnStart: 1
|
||||
detachOnEnd: 1
|
||||
keepEquipped: 0
|
||||
attachDelay: 0
|
||||
detachDelay: 0
|
||||
8
Assets/Data/ScriptableObjects/Tower/Tower5.asset.meta
Normal file
8
Assets/Data/ScriptableObjects/Tower/Tower5.asset.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b1e7d2677a482df45a6db3185adbeb4d
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
47
Assets/Data/ScriptableObjects/Tower/Tower6.asset
Normal file
47
Assets/Data/ScriptableObjects/Tower/Tower6.asset
Normal file
@@ -0,0 +1,47 @@
|
||||
%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: 8c40fef5ebc37b743a3f225c1ca57c32, type: 3}
|
||||
m_Name: Tower6
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.TowerData
|
||||
id: 6
|
||||
memo: "\uBCBD"
|
||||
buildingName: Wall Lv.1
|
||||
level: 1
|
||||
upgradeTo: 7
|
||||
towerType: defense
|
||||
mana: 10
|
||||
manpower: 10
|
||||
sizeX: 8
|
||||
sizeY: 4
|
||||
sizeZ: 3
|
||||
maxHp: 30
|
||||
sight: 1
|
||||
atkRange: 0
|
||||
atkDamage: 0
|
||||
atkIntervalSec: 0
|
||||
modelPath: Assets/Models/wall_straight.fbx
|
||||
prefab: {fileID: 164713662324750716, guid: 667453ec7fc252240b7de7512cb575c5, type: 3}
|
||||
icon: {fileID: 0}
|
||||
placementOffset: {x: 0, y: 0, z: 0}
|
||||
allowRotation: 1
|
||||
isIndestructible: 0
|
||||
autoRegenerate: 0
|
||||
regenPerSecond: 1
|
||||
providesVision: 1
|
||||
constructionEquipment:
|
||||
socketName: RightHand
|
||||
equipmentPrefab: {fileID: 0}
|
||||
attachOnStart: 1
|
||||
detachOnEnd: 1
|
||||
keepEquipped: 0
|
||||
attachDelay: 0
|
||||
detachDelay: 0
|
||||
8
Assets/Data/ScriptableObjects/Tower/Tower6.asset.meta
Normal file
8
Assets/Data/ScriptableObjects/Tower/Tower6.asset.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 347d5d19570d2314095c974067ccc481
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
47
Assets/Data/ScriptableObjects/Tower/Tower7.asset
Normal file
47
Assets/Data/ScriptableObjects/Tower/Tower7.asset
Normal file
@@ -0,0 +1,47 @@
|
||||
%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: 8c40fef5ebc37b743a3f225c1ca57c32, type: 3}
|
||||
m_Name: Tower7
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.TowerData
|
||||
id: 7
|
||||
memo: "\uBCBD"
|
||||
buildingName: Wall Lv.2
|
||||
level: 2
|
||||
upgradeTo: 8
|
||||
towerType: defense
|
||||
mana: 30
|
||||
manpower: 20
|
||||
sizeX: 8
|
||||
sizeY: 4
|
||||
sizeZ: 3
|
||||
maxHp: 50
|
||||
sight: 1
|
||||
atkRange: 0
|
||||
atkDamage: 0
|
||||
atkIntervalSec: 0
|
||||
modelPath: Assets/Models/wall_straight.fbx
|
||||
prefab: {fileID: 7542015048609582274, guid: bc3e47c18fbc0fb48bccecfb984ccc1b, type: 3}
|
||||
icon: {fileID: 0}
|
||||
placementOffset: {x: 0, y: 0, z: 0}
|
||||
allowRotation: 1
|
||||
isIndestructible: 0
|
||||
autoRegenerate: 0
|
||||
regenPerSecond: 1
|
||||
providesVision: 1
|
||||
constructionEquipment:
|
||||
socketName: RightHand
|
||||
equipmentPrefab: {fileID: 0}
|
||||
attachOnStart: 1
|
||||
detachOnEnd: 1
|
||||
keepEquipped: 0
|
||||
attachDelay: 0
|
||||
detachDelay: 0
|
||||
8
Assets/Data/ScriptableObjects/Tower/Tower7.asset.meta
Normal file
8
Assets/Data/ScriptableObjects/Tower/Tower7.asset.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 69d45810fe4341b4597d5ced3b60af50
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
47
Assets/Data/ScriptableObjects/Tower/Tower8.asset
Normal file
47
Assets/Data/ScriptableObjects/Tower/Tower8.asset
Normal file
@@ -0,0 +1,47 @@
|
||||
%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: 8c40fef5ebc37b743a3f225c1ca57c32, type: 3}
|
||||
m_Name: Tower8
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.TowerData
|
||||
id: 8
|
||||
memo: "\uBCBD"
|
||||
buildingName: Wall Lv.3
|
||||
level: 3
|
||||
upgradeTo: 9
|
||||
towerType: defense
|
||||
mana: 50
|
||||
manpower: 30
|
||||
sizeX: 8
|
||||
sizeY: 4
|
||||
sizeZ: 3
|
||||
maxHp: 60
|
||||
sight: 1
|
||||
atkRange: 0
|
||||
atkDamage: 0
|
||||
atkIntervalSec: 0
|
||||
modelPath: Assets/Models/wall_straight.fbx
|
||||
prefab: {fileID: 7602931991599237580, guid: bc315c69c34c838458975519fd75f0f5, type: 3}
|
||||
icon: {fileID: 0}
|
||||
placementOffset: {x: 0, y: 0, z: 0}
|
||||
allowRotation: 1
|
||||
isIndestructible: 0
|
||||
autoRegenerate: 0
|
||||
regenPerSecond: 1
|
||||
providesVision: 1
|
||||
constructionEquipment:
|
||||
socketName: RightHand
|
||||
equipmentPrefab: {fileID: 0}
|
||||
attachOnStart: 1
|
||||
detachOnEnd: 1
|
||||
keepEquipped: 0
|
||||
attachDelay: 0
|
||||
detachDelay: 0
|
||||
8
Assets/Data/ScriptableObjects/Tower/Tower8.asset.meta
Normal file
8
Assets/Data/ScriptableObjects/Tower/Tower8.asset.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8b72a1e58e168234280edfa2b5940212
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
47
Assets/Data/ScriptableObjects/Tower/Tower9.asset
Normal file
47
Assets/Data/ScriptableObjects/Tower/Tower9.asset
Normal file
@@ -0,0 +1,47 @@
|
||||
%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: 8c40fef5ebc37b743a3f225c1ca57c32, type: 3}
|
||||
m_Name: Tower9
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.TowerData
|
||||
id: 9
|
||||
memo: "\uBCBD"
|
||||
buildingName: Wall Lv.4
|
||||
level: 4
|
||||
upgradeTo: 10
|
||||
towerType: defense
|
||||
mana: 100
|
||||
manpower: 40
|
||||
sizeX: 8
|
||||
sizeY: 4
|
||||
sizeZ: 3
|
||||
maxHp: 80
|
||||
sight: 1
|
||||
atkRange: 0
|
||||
atkDamage: 0
|
||||
atkIntervalSec: 0
|
||||
modelPath: Assets/Models/wall_straight.fbx
|
||||
prefab: {fileID: 1425357096898832299, guid: c3ad48c2790ce194982baccac3d4cd9a, type: 3}
|
||||
icon: {fileID: 0}
|
||||
placementOffset: {x: 0, y: 0, z: 0}
|
||||
allowRotation: 1
|
||||
isIndestructible: 0
|
||||
autoRegenerate: 0
|
||||
regenPerSecond: 1
|
||||
providesVision: 1
|
||||
constructionEquipment:
|
||||
socketName: RightHand
|
||||
equipmentPrefab: {fileID: 0}
|
||||
attachOnStart: 1
|
||||
detachOnEnd: 1
|
||||
keepEquipped: 0
|
||||
attachDelay: 0
|
||||
detachDelay: 0
|
||||
8
Assets/Data/ScriptableObjects/Tower/Tower9.asset.meta
Normal file
8
Assets/Data/ScriptableObjects/Tower/Tower9.asset.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 99150640204515549b6441c26cad9691
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
Assets/Data/ScriptableObjects/Upgrade.meta
Normal file
8
Assets/Data/ScriptableObjects/Upgrade.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: dc09279707549e041ae0219468b0a4a2
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
27
Assets/Data/ScriptableObjects/Upgrade/Upgrade1.asset
Normal file
27
Assets/Data/ScriptableObjects/Upgrade/Upgrade1.asset
Normal file
@@ -0,0 +1,27 @@
|
||||
%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: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
|
||||
m_Name: Upgrade1
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
|
||||
id: 1
|
||||
memo: "\uCCB4\uB825 \uC99D\uAC00 Lv.1"
|
||||
upgradeCategory: combat
|
||||
upgradeTarget: person
|
||||
mana: 200
|
||||
requireUpgradeId:
|
||||
effectStatList:
|
||||
- player_max_hp
|
||||
effectOpList:
|
||||
- add
|
||||
effectValueList:
|
||||
- 50
|
||||
sortOrder: 1
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b9e46f00da341b24ab07b314c89b7fd9
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
27
Assets/Data/ScriptableObjects/Upgrade/Upgrade10.asset
Normal file
27
Assets/Data/ScriptableObjects/Upgrade/Upgrade10.asset
Normal file
@@ -0,0 +1,27 @@
|
||||
%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: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
|
||||
m_Name: Upgrade10
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
|
||||
id: 10
|
||||
memo: "\uB178\uB3D9\uB825 \uC99D\uAC00 Lv.1"
|
||||
upgradeCategory: harvest
|
||||
upgradeTarget: person
|
||||
mana: 200
|
||||
requireUpgradeId:
|
||||
effectStatList:
|
||||
- player_manpower
|
||||
effectOpList:
|
||||
- add
|
||||
effectValueList:
|
||||
- 5
|
||||
sortOrder: 10
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c665e2cbdd230c04fb6d3e9fac091a65
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
27
Assets/Data/ScriptableObjects/Upgrade/Upgrade11.asset
Normal file
27
Assets/Data/ScriptableObjects/Upgrade/Upgrade11.asset
Normal file
@@ -0,0 +1,27 @@
|
||||
%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: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
|
||||
m_Name: Upgrade11
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
|
||||
id: 11
|
||||
memo: "\uB178\uB3D9\uB825 \uC99D\uAC00 Lv.2"
|
||||
upgradeCategory: harvest
|
||||
upgradeTarget: person
|
||||
mana: 300
|
||||
requireUpgradeId: 0a000000
|
||||
effectStatList:
|
||||
- player_manpower
|
||||
effectOpList:
|
||||
- add
|
||||
effectValueList:
|
||||
- 10
|
||||
sortOrder: 11
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f5ad1c8a4ecf84a43b7c609c58592295
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
27
Assets/Data/ScriptableObjects/Upgrade/Upgrade12.asset
Normal file
27
Assets/Data/ScriptableObjects/Upgrade/Upgrade12.asset
Normal file
@@ -0,0 +1,27 @@
|
||||
%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: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
|
||||
m_Name: Upgrade12
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
|
||||
id: 12
|
||||
memo: "\uB178\uB3D9\uB825 \uC99D\uAC00 Lv.3"
|
||||
upgradeCategory: harvest
|
||||
upgradeTarget: person
|
||||
mana: 400
|
||||
requireUpgradeId: 070000000a000000
|
||||
effectStatList:
|
||||
- player_manpower
|
||||
effectOpList:
|
||||
- add
|
||||
effectValueList:
|
||||
- 20
|
||||
sortOrder: 12
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 555ef1e6ff58ee442953d075e417c091
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
27
Assets/Data/ScriptableObjects/Upgrade/Upgrade13.asset
Normal file
27
Assets/Data/ScriptableObjects/Upgrade/Upgrade13.asset
Normal file
@@ -0,0 +1,27 @@
|
||||
%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: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
|
||||
m_Name: Upgrade13
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
|
||||
id: 13
|
||||
memo: "\uC774\uB3D9\uC18D\uB3C4 \uC99D\uAC00 Lv.1"
|
||||
upgradeCategory: scout
|
||||
upgradeTarget: person
|
||||
mana: 200
|
||||
requireUpgradeId:
|
||||
effectStatList:
|
||||
- player_move_speed
|
||||
effectOpList:
|
||||
- mul
|
||||
effectValueList:
|
||||
- 1.1
|
||||
sortOrder: 13
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: aa2a6eecb804c3948a4fa7e75bacfca6
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
27
Assets/Data/ScriptableObjects/Upgrade/Upgrade14.asset
Normal file
27
Assets/Data/ScriptableObjects/Upgrade/Upgrade14.asset
Normal file
@@ -0,0 +1,27 @@
|
||||
%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: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
|
||||
m_Name: Upgrade14
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
|
||||
id: 14
|
||||
memo: "\uC774\uB3D9\uC18D\uB3C4 \uC99D\uAC00 Lv.2"
|
||||
upgradeCategory: scout
|
||||
upgradeTarget: person
|
||||
mana: 300
|
||||
requireUpgradeId: 0d000000
|
||||
effectStatList:
|
||||
- player_move_speed
|
||||
effectOpList:
|
||||
- mul
|
||||
effectValueList:
|
||||
- 1.2
|
||||
sortOrder: 14
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3216444533dfdc14891741f0b1c5a30a
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
27
Assets/Data/ScriptableObjects/Upgrade/Upgrade15.asset
Normal file
27
Assets/Data/ScriptableObjects/Upgrade/Upgrade15.asset
Normal file
@@ -0,0 +1,27 @@
|
||||
%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: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
|
||||
m_Name: Upgrade15
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
|
||||
id: 15
|
||||
memo: "\uC774\uB3D9\uC18D\uB3C4 \uC99D\uAC00 Lv.3"
|
||||
upgradeCategory: scout
|
||||
upgradeTarget: person
|
||||
mana: 400
|
||||
requireUpgradeId: 0e000000
|
||||
effectStatList:
|
||||
- player_move_speed
|
||||
effectOpList:
|
||||
- mul
|
||||
effectValueList:
|
||||
- 1.3
|
||||
sortOrder: 15
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 227e825691ca7c9498e4af4cbb592faa
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
27
Assets/Data/ScriptableObjects/Upgrade/Upgrade2.asset
Normal file
27
Assets/Data/ScriptableObjects/Upgrade/Upgrade2.asset
Normal file
@@ -0,0 +1,27 @@
|
||||
%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: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
|
||||
m_Name: Upgrade2
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
|
||||
id: 2
|
||||
memo: "\uCCB4\uB825 \uC99D\uAC00 Lv.2"
|
||||
upgradeCategory: combat
|
||||
upgradeTarget: person
|
||||
mana: 300
|
||||
requireUpgradeId: 01000000
|
||||
effectStatList:
|
||||
- player_max_hp
|
||||
effectOpList:
|
||||
- add
|
||||
effectValueList:
|
||||
- 100
|
||||
sortOrder: 2
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d989011e0aeec9a4b9ed3d9e49488c8a
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
27
Assets/Data/ScriptableObjects/Upgrade/Upgrade3.asset
Normal file
27
Assets/Data/ScriptableObjects/Upgrade/Upgrade3.asset
Normal file
@@ -0,0 +1,27 @@
|
||||
%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: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
|
||||
m_Name: Upgrade3
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
|
||||
id: 3
|
||||
memo: "\uCCB4\uB825 \uC99D\uAC00 Lv.3"
|
||||
upgradeCategory: combat
|
||||
upgradeTarget: person
|
||||
mana: 400
|
||||
requireUpgradeId: 0200000005000000
|
||||
effectStatList:
|
||||
- player_max_hp
|
||||
effectOpList:
|
||||
- add
|
||||
effectValueList:
|
||||
- 150
|
||||
sortOrder: 3
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 29b2206b90bc89c4183c6fb0a1bb699e
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
27
Assets/Data/ScriptableObjects/Upgrade/Upgrade4.asset
Normal file
27
Assets/Data/ScriptableObjects/Upgrade/Upgrade4.asset
Normal file
@@ -0,0 +1,27 @@
|
||||
%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: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
|
||||
m_Name: Upgrade4
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
|
||||
id: 4
|
||||
memo: "\uACF5\uACA9\uB825 \uC99D\uAC00 Lv.1"
|
||||
upgradeCategory: combat
|
||||
upgradeTarget: person
|
||||
mana: 200
|
||||
requireUpgradeId:
|
||||
effectStatList:
|
||||
- player_atk_damage
|
||||
effectOpList:
|
||||
- add
|
||||
effectValueList:
|
||||
- 5
|
||||
sortOrder: 4
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4c370fa5d360b034b977fa923d14f60b
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
27
Assets/Data/ScriptableObjects/Upgrade/Upgrade5.asset
Normal file
27
Assets/Data/ScriptableObjects/Upgrade/Upgrade5.asset
Normal file
@@ -0,0 +1,27 @@
|
||||
%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: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
|
||||
m_Name: Upgrade5
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
|
||||
id: 5
|
||||
memo: "\uACF5\uACA9\uB825 \uC99D\uAC00 Lv.2"
|
||||
upgradeCategory: combat
|
||||
upgradeTarget: person
|
||||
mana: 300
|
||||
requireUpgradeId: 04000000
|
||||
effectStatList:
|
||||
- player_atk_damage
|
||||
effectOpList:
|
||||
- add
|
||||
effectValueList:
|
||||
- 10
|
||||
sortOrder: 5
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 49e9bbb379a103741bca937c322db0cb
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
27
Assets/Data/ScriptableObjects/Upgrade/Upgrade6.asset
Normal file
27
Assets/Data/ScriptableObjects/Upgrade/Upgrade6.asset
Normal file
@@ -0,0 +1,27 @@
|
||||
%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: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
|
||||
m_Name: Upgrade6
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
|
||||
id: 6
|
||||
memo: "\uACF5\uACA9\uB825 \uC99D\uAC00 Lv.3"
|
||||
upgradeCategory: combat
|
||||
upgradeTarget: person
|
||||
mana: 400
|
||||
requireUpgradeId: 0200000005000000
|
||||
effectStatList:
|
||||
- player_atk_damage
|
||||
effectOpList:
|
||||
- add
|
||||
effectValueList:
|
||||
- 15
|
||||
sortOrder: 6
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c6178f649bd6ad141888fb39c653bda9
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
27
Assets/Data/ScriptableObjects/Upgrade/Upgrade7.asset
Normal file
27
Assets/Data/ScriptableObjects/Upgrade/Upgrade7.asset
Normal file
@@ -0,0 +1,27 @@
|
||||
%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: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
|
||||
m_Name: Upgrade7
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
|
||||
id: 7
|
||||
memo: "\uC790\uC6D0 \uCD5C\uB300 \uC6A9\uB7C9 \uC99D\uAC00 Lv.1"
|
||||
upgradeCategory: harvest
|
||||
upgradeTarget: person
|
||||
mana: 200
|
||||
requireUpgradeId:
|
||||
effectStatList:
|
||||
- player_capacity
|
||||
effectOpList:
|
||||
- add
|
||||
effectValueList:
|
||||
- 20
|
||||
sortOrder: 7
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 36cdb899e627bd54092fa9e4458ff6d2
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
27
Assets/Data/ScriptableObjects/Upgrade/Upgrade8.asset
Normal file
27
Assets/Data/ScriptableObjects/Upgrade/Upgrade8.asset
Normal file
@@ -0,0 +1,27 @@
|
||||
%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: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
|
||||
m_Name: Upgrade8
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
|
||||
id: 8
|
||||
memo: "\uC790\uC6D0 \uCD5C\uB300 \uC6A9\uB7C9 \uC99D\uAC00 Lv.2"
|
||||
upgradeCategory: harvest
|
||||
upgradeTarget: person
|
||||
mana: 300
|
||||
requireUpgradeId: 07000000
|
||||
effectStatList:
|
||||
- player_capacity
|
||||
effectOpList:
|
||||
- add
|
||||
effectValueList:
|
||||
- 50
|
||||
sortOrder: 8
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9e8418449515bb142b06d88d7a0ac4e1
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
27
Assets/Data/ScriptableObjects/Upgrade/Upgrade9.asset
Normal file
27
Assets/Data/ScriptableObjects/Upgrade/Upgrade9.asset
Normal file
@@ -0,0 +1,27 @@
|
||||
%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: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
|
||||
m_Name: Upgrade9
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
|
||||
id: 9
|
||||
memo: "\uC790\uC6D0 \uCD5C\uB300 \uC6A9\uB7C9 \uC99D\uAC00 Lv.3"
|
||||
upgradeCategory: harvest
|
||||
upgradeTarget: person
|
||||
mana: 400
|
||||
requireUpgradeId: 070000000a000000
|
||||
effectStatList:
|
||||
- player_capacity
|
||||
effectOpList:
|
||||
- add
|
||||
effectValueList:
|
||||
- 100
|
||||
sortOrder: 9
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: eca8a6e3f11a84f44aa061493293e791
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -18,6 +18,8 @@ namespace Northbound.Data
|
||||
public float moveSpeed;
|
||||
/// <summary>체력</summary>
|
||||
public int maxHp;
|
||||
/// <summary>시야</summary>
|
||||
public int sight;
|
||||
/// <summary>사정 거리</summary>
|
||||
public int atkRange;
|
||||
/// <summary>데미지</summary>
|
||||
|
||||
@@ -18,20 +18,26 @@ namespace Northbound.Data
|
||||
public float moveSpeed;
|
||||
/// <summary>체력</summary>
|
||||
public int maxHp;
|
||||
/// <summary>시야</summary>
|
||||
public int sight;
|
||||
/// <summary>사정 거리</summary>
|
||||
public int atkRange;
|
||||
/// <summary>데미지</summary>
|
||||
public int atkDamage;
|
||||
/// <summary>공격 주기</summary>
|
||||
/// <summary>공격 주기 (초)</summary>
|
||||
public float atkIntervalSec;
|
||||
/// <summary>몬스터 난이도 점수</summary>
|
||||
public int cost;
|
||||
/// <summary>등장 가중치</summary>
|
||||
public float weight;
|
||||
/// <summary>사용할 모델의 경로</summary>
|
||||
/// <summary>사용할 모델의 경로 • 확장자까지 입력</summary>
|
||||
public string modelPath;
|
||||
/// <summary>사용할 애니메이션 컨트롤러의 경로</summary>
|
||||
/// <summary>사용할 애니메이션 컨트롤러의 경로 • 확장자까지 입력</summary>
|
||||
public string animationControllerPath;
|
||||
/// <summary>등장 가능 최소 웨이브 정의 • 최소 1 입력</summary>
|
||||
public int waveMin;
|
||||
/// <summary>등장 가능 최대 웨이브 정의 • null = 웨이브 제한 없음</summary>
|
||||
public int waveMax;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -16,14 +16,14 @@ namespace Northbound.Data
|
||||
public string memo;
|
||||
/// <summary>이동 속도</summary>
|
||||
public float moveSpeed;
|
||||
/// <summary>시야 반경</summary>
|
||||
public float visionRadius;
|
||||
/// <summary>운반 용량</summary>
|
||||
public int capacity;
|
||||
/// <summary>생산 노동량</summary>
|
||||
public float manpower;
|
||||
/// <summary>체력</summary>
|
||||
public int maxHp;
|
||||
/// <summary>시야</summary>
|
||||
public int sight;
|
||||
/// <summary>사정거리</summary>
|
||||
public int atkRange;
|
||||
/// <summary>데미지</summary>
|
||||
|
||||
@@ -16,7 +16,13 @@ namespace Northbound.Data
|
||||
public string memo;
|
||||
/// <summary>건물 이름</summary>
|
||||
public string buildingName;
|
||||
/// <summary>건설 비용 (mana=20) (mana=50; iron=10)</summary>
|
||||
/// <summary>타워 레벨</summary>
|
||||
public int level;
|
||||
/// <summary>레벨업 시 변경될 타워 ID 입력</summary>
|
||||
public int upgradeTo;
|
||||
/// <summary>업그레이드 분류용 타워 종류 • attack • defense • special • sight</summary>
|
||||
public string towerType;
|
||||
/// <summary>건설 비용</summary>
|
||||
public int mana;
|
||||
/// <summary>건설 노동량</summary>
|
||||
public float manpower;
|
||||
@@ -28,13 +34,15 @@ namespace Northbound.Data
|
||||
public int sizeZ;
|
||||
/// <summary>체력</summary>
|
||||
public int maxHp;
|
||||
/// <summary>타워 시야</summary>
|
||||
public int sight;
|
||||
/// <summary>사정거리</summary>
|
||||
public int atkRange;
|
||||
/// <summary>데미지</summary>
|
||||
public int atkDamage;
|
||||
/// <summary>공격 주기</summary>
|
||||
public float atkIntervalSec;
|
||||
/// <summary>모델 경로</summary>
|
||||
/// <summary>프리팹/리소스 경로</summary>
|
||||
public string modelPath;
|
||||
|
||||
}
|
||||
|
||||
@@ -34,19 +34,19 @@ namespace Northbound.Data
|
||||
public EquipmentData constructionEquipment;
|
||||
|
||||
[Header("Properties for convenience")]
|
||||
public int width => sizeX;
|
||||
public int length => sizeY;
|
||||
public float height => sizeY;
|
||||
public int width => sizeX; // X축
|
||||
public int length => sizeZ; // Z축 (깊이)
|
||||
public float height => sizeY; // Y축 (높이)
|
||||
public int maxHealth => maxHp;
|
||||
public float visionRange => atkRange;
|
||||
public float visionRange => sight;
|
||||
public float requiredWorkAmount => manpower;
|
||||
|
||||
public Vector3 GetSize(int rotation)
|
||||
{
|
||||
bool isRotated = (rotation == 1 || rotation == 3);
|
||||
float w = isRotated ? length : width;
|
||||
float l = isRotated ? width : length;
|
||||
return new Vector3(w, sizeY, l);
|
||||
float d = isRotated ? width : length;
|
||||
return new Vector3(w, height, d); // (width, height, depth)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
35
Assets/Data/Scripts/DataClasses/UpgradeData.cs
Normal file
35
Assets/Data/Scripts/DataClasses/UpgradeData.cs
Normal file
@@ -0,0 +1,35 @@
|
||||
// 이 파일은 자동 생성되었습니다. 직접 수정하지 마세요!
|
||||
// 생성 스크립트: DataTools/generate_csharp_classes.py
|
||||
|
||||
using UnityEngine;
|
||||
using System.Collections.Generic; // 리스트 지원을 위해 추가
|
||||
|
||||
namespace Northbound.Data
|
||||
{
|
||||
[CreateAssetMenu(fileName = "UpgradeData", menuName = "Northbound/Upgrade Data")]
|
||||
public partial class UpgradeData : ScriptableObject
|
||||
{
|
||||
[Header("기본 정보")]
|
||||
/// <summary>고유 ID</summary>
|
||||
public int id;
|
||||
/// <summary>기획용 메모</summary>
|
||||
public string memo;
|
||||
/// <summary>업그레이드 타입 • combat • harvest • building • scout</summary>
|
||||
public string upgradeCategory;
|
||||
/// <summary>업그레이드 대상 • person • share</summary>
|
||||
public string upgradeTarget;
|
||||
/// <summary>건설 비용 (mana=20)(mana=50; iron=10)</summary>
|
||||
public int mana;
|
||||
/// <summary>선행 조건 ID (목록)</summary>
|
||||
public List<int> requireUpgradeId = new List<int>();
|
||||
/// <summary>효과 타입 목록 • player_movespeed • player_sight • …</summary>
|
||||
public List<string> effectStatList = new List<string>();
|
||||
/// <summary>계산식 목록 • add • mul • set</summary>
|
||||
public List<string> effectOpList = new List<string>();
|
||||
/// <summary>효과 수치 목록</summary>
|
||||
public List<float> effectValueList = new List<float>();
|
||||
/// <summary>UI 정렬 값</summary>
|
||||
public int sortOrder;
|
||||
|
||||
}
|
||||
}
|
||||
2
Assets/Data/Scripts/DataClasses/UpgradeData.cs.meta
Normal file
2
Assets/Data/Scripts/DataClasses/UpgradeData.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4f134815569ad014e9ccc81ddc443c4c
|
||||
@@ -17,6 +17,8 @@ GameObject:
|
||||
- component: {fileID: 6023907831447366429}
|
||||
- component: {fileID: 8728041163683826261}
|
||||
- component: {fileID: 3928237758911375249}
|
||||
- component: {fileID: -2284084906141577046}
|
||||
- component: {fileID: -8703503294977252669}
|
||||
m_Layer: 11
|
||||
m_Name: CreepTemplate
|
||||
m_TagString: Untagged
|
||||
@@ -77,7 +79,7 @@ MonoBehaviour:
|
||||
GlobalObjectIdHash: 437508337
|
||||
InScenePlacedSourceGlobalObjectIdHash: 0
|
||||
DeferredDespawnTick: 0
|
||||
Ownership: 1
|
||||
Ownership: 0
|
||||
AlwaysReplicateAsRoot: 0
|
||||
SynchronizeTransform: 1
|
||||
ActiveSceneSynchronization: 0
|
||||
@@ -102,8 +104,10 @@ MonoBehaviour:
|
||||
ShowTopMostFoldoutHeaderGroup: 1
|
||||
enemyTeam: 2
|
||||
maxHealth: 100
|
||||
damageEffectPrefab: {fileID: 0}
|
||||
destroyEffectPrefab: {fileID: 0}
|
||||
damageEffectPrefab: {fileID: 4021103657954561961, guid: 5c755f9bc5253ea418e919994537dcc7, type: 3}
|
||||
destroyEffectPrefab: {fileID: 141433446842962269, guid: 9fe8f8b3288e45a44af36ff8aa04486e, type: 3}
|
||||
showHealthBar: 1
|
||||
healthBarPrefab: {fileID: 100000, guid: 8e7a5b12c9f8a4a5ba3c8d1f2e5a7b9c, type: 3}
|
||||
--- !u!195 &4485945348237935463
|
||||
NavMeshAgent:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -140,7 +144,7 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.EnemyAIController
|
||||
ShowTopMostFoldoutHeaderGroup: 1
|
||||
aiType: 2
|
||||
detectionRange: 15
|
||||
detectionRange: 6
|
||||
detectionAngle: 360
|
||||
playerLayer:
|
||||
serializedVersion: 2
|
||||
@@ -154,7 +158,7 @@ MonoBehaviour:
|
||||
attackInterval: 1.5
|
||||
attackDamage: 10
|
||||
moveSpeed: 3.5
|
||||
chaseSpeedMultiplier: 1.5
|
||||
chaseSpeedMultiplier: 1
|
||||
showDebugInfo: 1
|
||||
--- !u!95 &6023907831447366429
|
||||
Animator:
|
||||
@@ -194,6 +198,7 @@ MonoBehaviour:
|
||||
speedParam: Speed
|
||||
attackTriggerParam: Attack
|
||||
isMovingParam: IsMoving
|
||||
dieTriggerParam: Die
|
||||
autoLoadFromMonsterData: 1
|
||||
debugLogging: 0
|
||||
--- !u!114 &3928237758911375249
|
||||
@@ -210,3 +215,85 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.CreepDataComponent
|
||||
creepData: {fileID: 0}
|
||||
autoApplyOnAwake: 1
|
||||
--- !u!114 &-2284084906141577046
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3810918154428190126}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: e8d0727d5ae3244e3b569694d3912374, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.Components.NetworkAnimator
|
||||
ShowTopMostFoldoutHeaderGroup: 1
|
||||
NetworkAnimatorExpanded: 0
|
||||
AuthorityMode: 0
|
||||
m_Animator: {fileID: 6023907831447366429}
|
||||
TransitionStateInfoList: []
|
||||
AnimatorParameterEntries:
|
||||
ParameterEntries:
|
||||
- name: IsMoving
|
||||
NameHash: 120489994
|
||||
Synchronize: 1
|
||||
ParameterType: 4
|
||||
- name: Attack
|
||||
NameHash: 1080829965
|
||||
Synchronize: 1
|
||||
ParameterType: 9
|
||||
- name: Speed
|
||||
NameHash: -823668238
|
||||
Synchronize: 1
|
||||
ParameterType: 1
|
||||
- name: Die
|
||||
NameHash: 20298039
|
||||
Synchronize: 1
|
||||
ParameterType: 9
|
||||
AnimatorParametersExpanded: 0
|
||||
--- !u!114 &-8703503294977252669
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3810918154428190126}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.Components.NetworkTransform
|
||||
ShowTopMostFoldoutHeaderGroup: 1
|
||||
NetworkTransformExpanded: 0
|
||||
AutoOwnerAuthorityTickOffset: 1
|
||||
PositionInterpolationType: 0
|
||||
RotationInterpolationType: 0
|
||||
ScaleInterpolationType: 0
|
||||
PositionLerpSmoothing: 1
|
||||
PositionMaxInterpolationTime: 0.1
|
||||
RotationLerpSmoothing: 1
|
||||
RotationMaxInterpolationTime: 0.1
|
||||
ScaleLerpSmoothing: 1
|
||||
ScaleMaxInterpolationTime: 0.1
|
||||
AuthorityMode: 0
|
||||
TickSyncChildren: 0
|
||||
UseUnreliableDeltas: 0
|
||||
SyncPositionX: 1
|
||||
SyncPositionY: 1
|
||||
SyncPositionZ: 1
|
||||
SyncRotAngleX: 1
|
||||
SyncRotAngleY: 1
|
||||
SyncRotAngleZ: 1
|
||||
SyncScaleX: 1
|
||||
SyncScaleY: 1
|
||||
SyncScaleZ: 1
|
||||
PositionThreshold: 0.001
|
||||
RotAngleThreshold: 0.01
|
||||
ScaleThreshold: 0.01
|
||||
UseQuaternionSynchronization: 0
|
||||
UseQuaternionCompression: 0
|
||||
UseHalfFloatPrecision: 0
|
||||
InLocalSpace: 0
|
||||
SwitchTransformSpaceWhenParented: 0
|
||||
Interpolate: 1
|
||||
SlerpPosition: 0
|
||||
|
||||
@@ -17,6 +17,8 @@ GameObject:
|
||||
- component: {fileID: 3710510283885710978}
|
||||
- component: {fileID: 6023907831447366429}
|
||||
- component: {fileID: 8728041163683826261}
|
||||
- component: {fileID: 502360995489719830}
|
||||
- component: {fileID: -6991373811087161316}
|
||||
m_Layer: 11
|
||||
m_Name: MonsterTemplate
|
||||
m_TagString: Untagged
|
||||
@@ -77,11 +79,11 @@ MonoBehaviour:
|
||||
GlobalObjectIdHash: 209349728
|
||||
InScenePlacedSourceGlobalObjectIdHash: 0
|
||||
DeferredDespawnTick: 0
|
||||
Ownership: 1
|
||||
Ownership: 0
|
||||
AlwaysReplicateAsRoot: 0
|
||||
SynchronizeTransform: 1
|
||||
ActiveSceneSynchronization: 0
|
||||
SceneMigrationSynchronization: 0
|
||||
SceneMigrationSynchronization: 1
|
||||
SpawnWithObservers: 1
|
||||
DontDestroyWithOwner: 0
|
||||
AutoObjectParentSync: 1
|
||||
@@ -102,8 +104,10 @@ MonoBehaviour:
|
||||
ShowTopMostFoldoutHeaderGroup: 1
|
||||
enemyTeam: 3
|
||||
maxHealth: 100
|
||||
damageEffectPrefab: {fileID: 0}
|
||||
destroyEffectPrefab: {fileID: 0}
|
||||
damageEffectPrefab: {fileID: 4021103657954561961, guid: 5c755f9bc5253ea418e919994537dcc7, type: 3}
|
||||
destroyEffectPrefab: {fileID: 141433446842962269, guid: 9fe8f8b3288e45a44af36ff8aa04486e, type: 3}
|
||||
showHealthBar: 1
|
||||
healthBarPrefab: {fileID: 100000, guid: 8e7a5b12c9f8a4a5ba3c8d1f2e5a7b9c, type: 3}
|
||||
--- !u!195 &4485945348237935463
|
||||
NavMeshAgent:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -140,7 +144,7 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.EnemyAIController
|
||||
ShowTopMostFoldoutHeaderGroup: 1
|
||||
aiType: 3
|
||||
detectionRange: 15
|
||||
detectionRange: 6
|
||||
detectionAngle: 360
|
||||
playerLayer:
|
||||
serializedVersion: 2
|
||||
@@ -154,7 +158,7 @@ MonoBehaviour:
|
||||
attackInterval: 1.5
|
||||
attackDamage: 10
|
||||
moveSpeed: 3.5
|
||||
chaseSpeedMultiplier: 1.5
|
||||
chaseSpeedMultiplier: 1
|
||||
showDebugInfo: 1
|
||||
--- !u!114 &3710510283885710978
|
||||
MonoBehaviour:
|
||||
@@ -208,5 +212,88 @@ MonoBehaviour:
|
||||
speedParam: Speed
|
||||
attackTriggerParam: Attack
|
||||
isMovingParam: IsMoving
|
||||
dieTriggerParam: Die
|
||||
autoLoadFromMonsterData: 1
|
||||
debugLogging: 0
|
||||
--- !u!114 &502360995489719830
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3810918154428190126}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: e8d0727d5ae3244e3b569694d3912374, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.Components.NetworkAnimator
|
||||
ShowTopMostFoldoutHeaderGroup: 1
|
||||
NetworkAnimatorExpanded: 0
|
||||
AuthorityMode: 0
|
||||
m_Animator: {fileID: 6023907831447366429}
|
||||
TransitionStateInfoList: []
|
||||
AnimatorParameterEntries:
|
||||
ParameterEntries:
|
||||
- name: IsMoving
|
||||
NameHash: 120489994
|
||||
Synchronize: 1
|
||||
ParameterType: 4
|
||||
- name: Attack
|
||||
NameHash: 1080829965
|
||||
Synchronize: 1
|
||||
ParameterType: 9
|
||||
- name: Speed
|
||||
NameHash: -823668238
|
||||
Synchronize: 1
|
||||
ParameterType: 1
|
||||
- name: Die
|
||||
NameHash: 20298039
|
||||
Synchronize: 1
|
||||
ParameterType: 9
|
||||
AnimatorParametersExpanded: 0
|
||||
--- !u!114 &-6991373811087161316
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3810918154428190126}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.Components.NetworkTransform
|
||||
ShowTopMostFoldoutHeaderGroup: 1
|
||||
NetworkTransformExpanded: 0
|
||||
AutoOwnerAuthorityTickOffset: 1
|
||||
PositionInterpolationType: 0
|
||||
RotationInterpolationType: 0
|
||||
ScaleInterpolationType: 0
|
||||
PositionLerpSmoothing: 1
|
||||
PositionMaxInterpolationTime: 0.1
|
||||
RotationLerpSmoothing: 1
|
||||
RotationMaxInterpolationTime: 0.1
|
||||
ScaleLerpSmoothing: 1
|
||||
ScaleMaxInterpolationTime: 0.1
|
||||
AuthorityMode: 0
|
||||
TickSyncChildren: 0
|
||||
UseUnreliableDeltas: 0
|
||||
SyncPositionX: 1
|
||||
SyncPositionY: 1
|
||||
SyncPositionZ: 1
|
||||
SyncRotAngleX: 1
|
||||
SyncRotAngleY: 1
|
||||
SyncRotAngleZ: 1
|
||||
SyncScaleX: 1
|
||||
SyncScaleY: 1
|
||||
SyncScaleZ: 1
|
||||
PositionThreshold: 0.001
|
||||
RotAngleThreshold: 0.01
|
||||
ScaleThreshold: 0.01
|
||||
UseQuaternionSynchronization: 0
|
||||
UseQuaternionCompression: 0
|
||||
UseHalfFloatPrecision: 0
|
||||
InLocalSpace: 0
|
||||
SwitchTransformSpaceWhenParented: 0
|
||||
Interpolate: 1
|
||||
SlerpPosition: 0
|
||||
|
||||
@@ -15,7 +15,7 @@ GameObject:
|
||||
- component: {fileID: -4086363217010332088}
|
||||
- component: {fileID: 4822792797652874450}
|
||||
- component: {fileID: -6756709031183627887}
|
||||
m_Layer: 0
|
||||
m_Layer: 7
|
||||
m_Name: TowerTemplate
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
@@ -52,7 +52,7 @@ MonoBehaviour:
|
||||
GlobalObjectIdHash: 4259369348
|
||||
InScenePlacedSourceGlobalObjectIdHash: 0
|
||||
DeferredDespawnTick: 0
|
||||
Ownership: 1
|
||||
Ownership: 0
|
||||
AlwaysReplicateAsRoot: 0
|
||||
SynchronizeTransform: 1
|
||||
ActiveSceneSynchronization: 0
|
||||
@@ -119,9 +119,9 @@ MonoBehaviour:
|
||||
initialOwnerId: 0
|
||||
useInitialOwner: 0
|
||||
showHealthBar: 1
|
||||
healthBarPrefab: {fileID: 0}
|
||||
destroyEffectPrefab: {fileID: 0}
|
||||
damageEffectPrefab: {fileID: 0}
|
||||
healthBarPrefab: {fileID: 100000, guid: 8e7a5b12c9f8a4a5ba3c8d1f2e5a7b9c, type: 3}
|
||||
destroyEffectPrefab: {fileID: 8656522925564163052, guid: e509867be4f82f246a95eca1ee5a2d61, type: 3}
|
||||
damageEffectPrefab: {fileID: 1429954232896169633, guid: 83036083a4ebcd34f98131bd3cf6f4d2, type: 3}
|
||||
effectSpawnPoint: {fileID: 0}
|
||||
showGridBounds: 1
|
||||
gridBoundsColor: {r: 0, g: 1, b: 1, a: 1}
|
||||
@@ -161,4 +161,10 @@ MonoBehaviour:
|
||||
targetLayer:
|
||||
serializedVersion: 2
|
||||
m_Bits: 2304
|
||||
beamPrefab: {fileID: 0}
|
||||
beamColor: {r: 1, g: 0, b: 0, a: 1}
|
||||
beamStartWidth: 0.1
|
||||
beamEndWidth: 0.05
|
||||
beamDuration: 0.15
|
||||
firePoint: {fileID: 0}
|
||||
showDebugInfo: 1
|
||||
|
||||
@@ -154,3 +154,63 @@ MonoBehaviour:
|
||||
SourcePrefabToOverride: {fileID: 0}
|
||||
SourceHashToOverride: 0
|
||||
OverridingTargetPrefab: {fileID: 0}
|
||||
- Override: 0
|
||||
Prefab: {fileID: 3432047510330746227, guid: 11e3760dda2c0164abf759c18d918893, type: 3}
|
||||
SourcePrefabToOverride: {fileID: 0}
|
||||
SourceHashToOverride: 0
|
||||
OverridingTargetPrefab: {fileID: 0}
|
||||
- Override: 0
|
||||
Prefab: {fileID: 3769411674882976201, guid: 368961a0f2d71ce4aad5d8ffe52e0b7f, type: 3}
|
||||
SourcePrefabToOverride: {fileID: 0}
|
||||
SourceHashToOverride: 0
|
||||
OverridingTargetPrefab: {fileID: 0}
|
||||
- Override: 0
|
||||
Prefab: {fileID: 5178364993341969979, guid: a8163f1921c918b4db0ca25636eef8f9, type: 3}
|
||||
SourcePrefabToOverride: {fileID: 0}
|
||||
SourceHashToOverride: 0
|
||||
OverridingTargetPrefab: {fileID: 0}
|
||||
- Override: 0
|
||||
Prefab: {fileID: 4171458273137159353, guid: 8430b50192177b8478a235db6987ae31, type: 3}
|
||||
SourcePrefabToOverride: {fileID: 0}
|
||||
SourceHashToOverride: 0
|
||||
OverridingTargetPrefab: {fileID: 0}
|
||||
- Override: 0
|
||||
Prefab: {fileID: 7839175078399552227, guid: 56b0a93f2c28474419ccd3d67c2af475, type: 3}
|
||||
SourcePrefabToOverride: {fileID: 0}
|
||||
SourceHashToOverride: 0
|
||||
OverridingTargetPrefab: {fileID: 0}
|
||||
- Override: 0
|
||||
Prefab: {fileID: 164713662324750716, guid: 667453ec7fc252240b7de7512cb575c5, type: 3}
|
||||
SourcePrefabToOverride: {fileID: 0}
|
||||
SourceHashToOverride: 0
|
||||
OverridingTargetPrefab: {fileID: 0}
|
||||
- Override: 0
|
||||
Prefab: {fileID: 7542015048609582274, guid: bc3e47c18fbc0fb48bccecfb984ccc1b, type: 3}
|
||||
SourcePrefabToOverride: {fileID: 0}
|
||||
SourceHashToOverride: 0
|
||||
OverridingTargetPrefab: {fileID: 0}
|
||||
- Override: 0
|
||||
Prefab: {fileID: 7602931991599237580, guid: bc315c69c34c838458975519fd75f0f5, type: 3}
|
||||
SourcePrefabToOverride: {fileID: 0}
|
||||
SourceHashToOverride: 0
|
||||
OverridingTargetPrefab: {fileID: 0}
|
||||
- Override: 0
|
||||
Prefab: {fileID: 1425357096898832299, guid: c3ad48c2790ce194982baccac3d4cd9a, type: 3}
|
||||
SourcePrefabToOverride: {fileID: 0}
|
||||
SourceHashToOverride: 0
|
||||
OverridingTargetPrefab: {fileID: 0}
|
||||
- Override: 0
|
||||
Prefab: {fileID: 5817331480696920731, guid: c680d37f654a3624f918970c8e7cee7a, type: 3}
|
||||
SourcePrefabToOverride: {fileID: 0}
|
||||
SourceHashToOverride: 0
|
||||
OverridingTargetPrefab: {fileID: 0}
|
||||
- Override: 0
|
||||
Prefab: {fileID: 4836465544871382218, guid: 444d5b6b074d6db4dbe8fcb699ca6203, type: 3}
|
||||
SourcePrefabToOverride: {fileID: 0}
|
||||
SourceHashToOverride: 0
|
||||
OverridingTargetPrefab: {fileID: 0}
|
||||
- Override: 0
|
||||
Prefab: {fileID: 8411033062678718070, guid: 1b51c70b826d97d47bb851e2d8ff758f, type: 3}
|
||||
SourcePrefabToOverride: {fileID: 0}
|
||||
SourceHashToOverride: 0
|
||||
OverridingTargetPrefab: {fileID: 0}
|
||||
|
||||
2
Assets/External/JMO Assets.meta
vendored
Normal file
2
Assets/External/JMO Assets.meta
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 976974e4d3018034e87caeb9f51f20f6
|
||||
BIN
Assets/External/JMO Assets/Cartoon FX FREE (old legacy effects).unitypackage
vendored
Normal file
BIN
Assets/External/JMO Assets/Cartoon FX FREE (old legacy effects).unitypackage
vendored
Normal file
Binary file not shown.
14
Assets/External/JMO Assets/Cartoon FX FREE (old legacy effects).unitypackage.meta
vendored
Normal file
14
Assets/External/JMO Assets/Cartoon FX FREE (old legacy effects).unitypackage.meta
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b18b93d4b5d00384ba417df18aeac5a3
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 109565
|
||||
packageName: Cartoon FX Remaster Free
|
||||
packageVersion: R 1.5.0
|
||||
assetPath: Assets/JMO Assets/Cartoon FX FREE (old legacy effects).unitypackage
|
||||
uploadId: 836238
|
||||
8
Assets/External/JMO Assets/Cartoon FX Remaster.meta
vendored
Normal file
8
Assets/External/JMO Assets/Cartoon FX Remaster.meta
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b56551e9e3ab84e4180b7b30c06ff232
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
Assets/External/JMO Assets/Cartoon FX Remaster/CFXR Assets.meta
vendored
Normal file
8
Assets/External/JMO Assets/Cartoon FX Remaster/CFXR Assets.meta
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bd9d1d014bf0b14428db03b2527d2d93
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
Assets/External/JMO Assets/Cartoon FX Remaster/CFXR Assets/Editor.meta
vendored
Normal file
8
Assets/External/JMO Assets/Cartoon FX Remaster/CFXR Assets/Editor.meta
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1a426d2ed10d55c47b7aee95ace55b60
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
14
Assets/External/JMO Assets/Cartoon FX Remaster/CFXR Assets/Editor/CFXR Editor.asmdef
vendored
Normal file
14
Assets/External/JMO Assets/Cartoon FX Remaster/CFXR Assets/Editor/CFXR Editor.asmdef
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"name": "CFXREditor",
|
||||
"references": [],
|
||||
"optionalUnityReferences": [],
|
||||
"includePlatforms": [
|
||||
"Editor"
|
||||
],
|
||||
"excludePlatforms": [],
|
||||
"allowUnsafeCode": false,
|
||||
"overrideReferences": false,
|
||||
"precompiledReferences": [],
|
||||
"autoReferenced": true,
|
||||
"defineConstraints": []
|
||||
}
|
||||
14
Assets/External/JMO Assets/Cartoon FX Remaster/CFXR Assets/Editor/CFXR Editor.asmdef.meta
vendored
Normal file
14
Assets/External/JMO Assets/Cartoon FX Remaster/CFXR Assets/Editor/CFXR Editor.asmdef.meta
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
fileFormatVersion: 2
|
||||
guid: eb5cb7c323a395242a81960087292f3c
|
||||
AssemblyDefinitionImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 109565
|
||||
packageName: Cartoon FX Remaster Free
|
||||
packageVersion: R 1.5.0
|
||||
assetPath: Assets/JMO Assets/Cartoon FX Remaster/CFXR Assets/Editor/CFXR Editor.asmdef
|
||||
uploadId: 836238
|
||||
275
Assets/External/JMO Assets/Cartoon FX Remaster/CFXR Assets/Editor/CFXR_ExpressionParser.cs
vendored
Normal file
275
Assets/External/JMO Assets/Cartoon FX Remaster/CFXR Assets/Editor/CFXR_ExpressionParser.cs
vendored
Normal file
@@ -0,0 +1,275 @@
|
||||
//--------------------------------------------------------------------------------------------------------------------------------
|
||||
// Cartoon FX
|
||||
// (c) 2012-2025 Jean Moreno
|
||||
//--------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
|
||||
// Parse conditional expressions from CFXR_MaterialInspector to show/hide some parts of the UI easily
|
||||
|
||||
namespace CartoonFX
|
||||
{
|
||||
public static class ExpressionParser
|
||||
{
|
||||
public delegate bool EvaluateFunction(string content);
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------------
|
||||
// Main Function to use
|
||||
|
||||
static public bool EvaluateExpression(string expression, EvaluateFunction evalFunction)
|
||||
{
|
||||
//Remove white spaces and double && ||
|
||||
string cleanExpr = "";
|
||||
for(int i = 0; i < expression.Length; i++)
|
||||
{
|
||||
switch(expression[i])
|
||||
{
|
||||
case ' ': break;
|
||||
case '&': cleanExpr += expression[i]; i++; break;
|
||||
case '|': cleanExpr += expression[i]; i++; break;
|
||||
default: cleanExpr += expression[i]; break;
|
||||
}
|
||||
}
|
||||
|
||||
List<Token> tokens = new List<Token>();
|
||||
StringReader reader = new StringReader(cleanExpr);
|
||||
Token t = null;
|
||||
do
|
||||
{
|
||||
t = new Token(reader);
|
||||
tokens.Add(t);
|
||||
} while(t.type != Token.TokenType.EXPR_END);
|
||||
|
||||
List<Token> polishNotation = Token.TransformToPolishNotation(tokens);
|
||||
|
||||
var enumerator = polishNotation.GetEnumerator();
|
||||
enumerator.MoveNext();
|
||||
Expression root = MakeExpression(ref enumerator, evalFunction);
|
||||
|
||||
return root.Evaluate();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------------
|
||||
// Expression Token
|
||||
|
||||
public class Token
|
||||
{
|
||||
static Dictionary<char, KeyValuePair<TokenType, string>> typesDict = new Dictionary<char, KeyValuePair<TokenType, string>>()
|
||||
{
|
||||
{'(', new KeyValuePair<TokenType, string>(TokenType.OPEN_PAREN, "(")},
|
||||
{')', new KeyValuePair<TokenType, string>(TokenType.CLOSE_PAREN, ")")},
|
||||
{'!', new KeyValuePair<TokenType, string>(TokenType.UNARY_OP, "NOT")},
|
||||
{'&', new KeyValuePair<TokenType, string>(TokenType.BINARY_OP, "AND")},
|
||||
{'|', new KeyValuePair<TokenType, string>(TokenType.BINARY_OP, "OR")}
|
||||
};
|
||||
|
||||
public enum TokenType
|
||||
{
|
||||
OPEN_PAREN,
|
||||
CLOSE_PAREN,
|
||||
UNARY_OP,
|
||||
BINARY_OP,
|
||||
LITERAL,
|
||||
EXPR_END
|
||||
}
|
||||
|
||||
public TokenType type;
|
||||
public string value;
|
||||
|
||||
public Token(StringReader s)
|
||||
{
|
||||
int c = s.Read();
|
||||
if(c == -1)
|
||||
{
|
||||
type = TokenType.EXPR_END;
|
||||
value = "";
|
||||
return;
|
||||
}
|
||||
|
||||
char ch = (char)c;
|
||||
|
||||
//Special case: solve bug where !COND_FALSE_1 && COND_FALSE_2 would return True
|
||||
bool embeddedNot = (ch == '!' && s.Peek() != '(');
|
||||
|
||||
if(typesDict.ContainsKey(ch) && !embeddedNot)
|
||||
{
|
||||
type = typesDict[ch].Key;
|
||||
value = typesDict[ch].Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
string str = "";
|
||||
str += ch;
|
||||
while(s.Peek() != -1 && !typesDict.ContainsKey((char)s.Peek()))
|
||||
{
|
||||
str += (char)s.Read();
|
||||
}
|
||||
type = TokenType.LITERAL;
|
||||
value = str;
|
||||
}
|
||||
}
|
||||
|
||||
static public List<Token> TransformToPolishNotation(List<Token> infixTokenList)
|
||||
{
|
||||
Queue<Token> outputQueue = new Queue<Token>();
|
||||
Stack<Token> stack = new Stack<Token>();
|
||||
|
||||
int index = 0;
|
||||
while(infixTokenList.Count > index)
|
||||
{
|
||||
Token t = infixTokenList[index];
|
||||
|
||||
switch(t.type)
|
||||
{
|
||||
case Token.TokenType.LITERAL:
|
||||
outputQueue.Enqueue(t);
|
||||
break;
|
||||
case Token.TokenType.BINARY_OP:
|
||||
case Token.TokenType.UNARY_OP:
|
||||
case Token.TokenType.OPEN_PAREN:
|
||||
stack.Push(t);
|
||||
break;
|
||||
case Token.TokenType.CLOSE_PAREN:
|
||||
while(stack.Peek().type != Token.TokenType.OPEN_PAREN)
|
||||
{
|
||||
outputQueue.Enqueue(stack.Pop());
|
||||
}
|
||||
stack.Pop();
|
||||
if(stack.Count > 0 && stack.Peek().type == Token.TokenType.UNARY_OP)
|
||||
{
|
||||
outputQueue.Enqueue(stack.Pop());
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
index++;
|
||||
}
|
||||
while(stack.Count > 0)
|
||||
{
|
||||
outputQueue.Enqueue(stack.Pop());
|
||||
}
|
||||
|
||||
var list = new List<Token>(outputQueue);
|
||||
list.Reverse();
|
||||
return list;
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------------
|
||||
// Boolean Expression Classes
|
||||
|
||||
public abstract class Expression
|
||||
{
|
||||
public abstract bool Evaluate();
|
||||
}
|
||||
|
||||
public class ExpressionLeaf : Expression
|
||||
{
|
||||
private string content;
|
||||
private EvaluateFunction evalFunction;
|
||||
|
||||
public ExpressionLeaf(EvaluateFunction _evalFunction, string _content)
|
||||
{
|
||||
this.evalFunction = _evalFunction;
|
||||
this.content = _content;
|
||||
}
|
||||
|
||||
override public bool Evaluate()
|
||||
{
|
||||
//embedded not, see special case in Token declaration
|
||||
if(content.StartsWith("!"))
|
||||
{
|
||||
return !this.evalFunction(content.Substring(1));
|
||||
}
|
||||
|
||||
return this.evalFunction(content);
|
||||
}
|
||||
}
|
||||
|
||||
public class ExpressionAnd : Expression
|
||||
{
|
||||
private Expression left;
|
||||
private Expression right;
|
||||
|
||||
public ExpressionAnd(Expression _left, Expression _right)
|
||||
{
|
||||
this.left = _left;
|
||||
this.right = _right;
|
||||
}
|
||||
|
||||
override public bool Evaluate()
|
||||
{
|
||||
return left.Evaluate() && right.Evaluate();
|
||||
}
|
||||
}
|
||||
|
||||
public class ExpressionOr : Expression
|
||||
{
|
||||
private Expression left;
|
||||
private Expression right;
|
||||
|
||||
public ExpressionOr(Expression _left, Expression _right)
|
||||
{
|
||||
this.left = _left;
|
||||
this.right = _right;
|
||||
}
|
||||
|
||||
override public bool Evaluate()
|
||||
{
|
||||
return left.Evaluate() || right.Evaluate();
|
||||
}
|
||||
}
|
||||
|
||||
public class ExpressionNot : Expression
|
||||
{
|
||||
private Expression expr;
|
||||
|
||||
public ExpressionNot(Expression _expr)
|
||||
{
|
||||
this.expr = _expr;
|
||||
}
|
||||
|
||||
override public bool Evaluate()
|
||||
{
|
||||
return !expr.Evaluate();
|
||||
}
|
||||
}
|
||||
|
||||
static public Expression MakeExpression(ref List<Token>.Enumerator polishNotationTokensEnumerator, EvaluateFunction _evalFunction)
|
||||
{
|
||||
if(polishNotationTokensEnumerator.Current.type == Token.TokenType.LITERAL)
|
||||
{
|
||||
Expression lit = new ExpressionLeaf(_evalFunction, polishNotationTokensEnumerator.Current.value);
|
||||
polishNotationTokensEnumerator.MoveNext();
|
||||
return lit;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(polishNotationTokensEnumerator.Current.value == "NOT")
|
||||
{
|
||||
polishNotationTokensEnumerator.MoveNext();
|
||||
Expression operand = MakeExpression(ref polishNotationTokensEnumerator, _evalFunction);
|
||||
return new ExpressionNot(operand);
|
||||
}
|
||||
else if(polishNotationTokensEnumerator.Current.value == "AND")
|
||||
{
|
||||
polishNotationTokensEnumerator.MoveNext();
|
||||
Expression left = MakeExpression(ref polishNotationTokensEnumerator, _evalFunction);
|
||||
Expression right = MakeExpression(ref polishNotationTokensEnumerator, _evalFunction);
|
||||
return new ExpressionAnd(left, right);
|
||||
}
|
||||
else if(polishNotationTokensEnumerator.Current.value == "OR")
|
||||
{
|
||||
polishNotationTokensEnumerator.MoveNext();
|
||||
Expression left = MakeExpression(ref polishNotationTokensEnumerator, _evalFunction);
|
||||
Expression right = MakeExpression(ref polishNotationTokensEnumerator, _evalFunction);
|
||||
return new ExpressionOr(left, right);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
17
Assets/External/JMO Assets/Cartoon FX Remaster/CFXR Assets/Editor/CFXR_ExpressionParser.cs.meta
vendored
Normal file
17
Assets/External/JMO Assets/Cartoon FX Remaster/CFXR Assets/Editor/CFXR_ExpressionParser.cs.meta
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ce7d96d3a4d4f3b4681ab437a9710d60
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 109565
|
||||
packageName: Cartoon FX Remaster Free
|
||||
packageVersion: R 1.5.0
|
||||
assetPath: Assets/JMO Assets/Cartoon FX Remaster/CFXR Assets/Editor/CFXR_ExpressionParser.cs
|
||||
uploadId: 836238
|
||||
604
Assets/External/JMO Assets/Cartoon FX Remaster/CFXR Assets/Editor/CFXR_MaterialInspector.cs
vendored
Normal file
604
Assets/External/JMO Assets/Cartoon FX Remaster/CFXR Assets/Editor/CFXR_MaterialInspector.cs
vendored
Normal file
@@ -0,0 +1,604 @@
|
||||
//--------------------------------------------------------------------------------------------------------------------------------
|
||||
// Cartoon FX
|
||||
// (c) 2012-2025 Jean Moreno
|
||||
//--------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
// Custom material inspector for Stylized FX shaders
|
||||
// - organize UI using comments in the shader code
|
||||
// - more flexibility than the material property drawers
|
||||
// version 2 (dec 2017)
|
||||
|
||||
namespace CartoonFX
|
||||
{
|
||||
public class MaterialInspector : ShaderGUI
|
||||
{
|
||||
//Set by PropertyDrawers to defined if the next properties should be visible
|
||||
static private Stack<bool> ShowStack = new Stack<bool>();
|
||||
|
||||
static public bool ShowNextProperty { get; private set; }
|
||||
static public void PushShowProperty(bool value)
|
||||
{
|
||||
ShowStack.Push(ShowNextProperty);
|
||||
ShowNextProperty &= value;
|
||||
}
|
||||
static public void PopShowProperty()
|
||||
{
|
||||
ShowNextProperty = ShowStack.Pop();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
const string kGuiCommandPrefix = "//#";
|
||||
const string kGC_IfKeyword = "IF_KEYWORD";
|
||||
const string kGC_IfProperty = "IF_PROPERTY";
|
||||
const string kGC_EndIf = "END_IF";
|
||||
const string kGC_HelpBox = "HELP_BOX";
|
||||
const string kGC_Label = "LABEL";
|
||||
|
||||
Dictionary<int, List<GUICommand>> guiCommands = new Dictionary<int, List<GUICommand>>();
|
||||
|
||||
bool initialized = false;
|
||||
AssetImporter shaderImporter;
|
||||
ulong lastTimestamp;
|
||||
void Initialize(MaterialEditor editor, bool force)
|
||||
{
|
||||
if((!initialized || force) && editor != null)
|
||||
{
|
||||
initialized = true;
|
||||
|
||||
guiCommands.Clear();
|
||||
|
||||
//Find the shader and parse the source to find special comments that will organize the GUI
|
||||
//It's hackish, but at least it allows any character to be used (unlike material property drawers/decorators) and can be used along with property drawers
|
||||
|
||||
var materials = new List<Material>();
|
||||
foreach(var o in editor.targets)
|
||||
{
|
||||
var m = o as Material;
|
||||
if(m != null)
|
||||
materials.Add(m);
|
||||
}
|
||||
if(materials.Count > 0 && materials[0].shader != null)
|
||||
{
|
||||
var path = AssetDatabase.GetAssetPath(materials[0].shader);
|
||||
//get asset importer
|
||||
shaderImporter = AssetImporter.GetAtPath(path);
|
||||
if(shaderImporter != null)
|
||||
{
|
||||
lastTimestamp = shaderImporter.assetTimeStamp;
|
||||
}
|
||||
//remove 'Assets' and replace with OS path
|
||||
path = Application.dataPath + path.Substring(6);
|
||||
//convert to cross-platform path
|
||||
path = path.Replace('/', Path.DirectorySeparatorChar);
|
||||
//open file for reading
|
||||
var lines = File.ReadAllLines(path);
|
||||
|
||||
bool insideProperties = false;
|
||||
//regex pattern to find properties, as they need to be counted so that
|
||||
//special commands can be inserted at the right position when enumerating them
|
||||
var regex = new Regex(@"[a-zA-Z0-9_]+\s*\([^\)]*\)");
|
||||
int propertyCount = 0;
|
||||
bool insideCommentBlock = false;
|
||||
foreach(var l in lines)
|
||||
{
|
||||
var line = l.TrimStart();
|
||||
|
||||
if(insideProperties)
|
||||
{
|
||||
bool isComment = line.StartsWith("//");
|
||||
|
||||
if(line.Contains("/*"))
|
||||
insideCommentBlock = true;
|
||||
if(line.Contains("*/"))
|
||||
insideCommentBlock = false;
|
||||
|
||||
//finished properties block?
|
||||
if(line.StartsWith("}"))
|
||||
break;
|
||||
|
||||
//comment
|
||||
if(line.StartsWith(kGuiCommandPrefix))
|
||||
{
|
||||
string command = line.Substring(kGuiCommandPrefix.Length).TrimStart();
|
||||
//space
|
||||
if(string.IsNullOrEmpty(command))
|
||||
AddGUICommand(propertyCount, new GC_Space());
|
||||
//separator
|
||||
else if(command.StartsWith("---"))
|
||||
AddGUICommand(propertyCount, new GC_Separator());
|
||||
//separator
|
||||
else if(command.StartsWith("==="))
|
||||
AddGUICommand(propertyCount, new GC_SeparatorDouble());
|
||||
//if keyword
|
||||
else if(command.StartsWith(kGC_IfKeyword))
|
||||
{
|
||||
var expr = command.Substring(command.LastIndexOf(kGC_IfKeyword) + kGC_IfKeyword.Length + 1);
|
||||
AddGUICommand(propertyCount, new GC_IfKeyword() { expression = expr, materials = materials.ToArray() });
|
||||
}
|
||||
//if property
|
||||
else if(command.StartsWith(kGC_IfProperty))
|
||||
{
|
||||
var expr = command.Substring(command.LastIndexOf(kGC_IfProperty) + kGC_IfProperty.Length + 1);
|
||||
AddGUICommand(propertyCount, new GC_IfProperty() { expression = expr, materials = materials.ToArray() });
|
||||
}
|
||||
//end if
|
||||
else if(command.StartsWith(kGC_EndIf))
|
||||
{
|
||||
AddGUICommand(propertyCount, new GC_EndIf());
|
||||
}
|
||||
//help box
|
||||
else if(command.StartsWith(kGC_HelpBox))
|
||||
{
|
||||
var messageType = MessageType.Error;
|
||||
var message = "Invalid format for HELP_BOX:\n" + command;
|
||||
var cmd = command.Substring(command.LastIndexOf(kGC_HelpBox) + kGC_HelpBox.Length + 1).Split(new string[] { "::" }, System.StringSplitOptions.RemoveEmptyEntries);
|
||||
if(cmd.Length == 1)
|
||||
{
|
||||
message = cmd[0];
|
||||
messageType = MessageType.None;
|
||||
}
|
||||
else if(cmd.Length == 2)
|
||||
{
|
||||
try
|
||||
{
|
||||
var msgType = (MessageType)System.Enum.Parse(typeof(MessageType), cmd[0], true);
|
||||
message = cmd[1].Replace(" ", "\n");
|
||||
messageType = msgType;
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
AddGUICommand(propertyCount, new GC_HelpBox()
|
||||
{
|
||||
message = message,
|
||||
messageType = messageType
|
||||
});
|
||||
}
|
||||
//label
|
||||
else if(command.StartsWith(kGC_Label))
|
||||
{
|
||||
var label = command.Substring(command.LastIndexOf(kGC_Label) + kGC_Label.Length + 1);
|
||||
AddGUICommand(propertyCount, new GC_Label() { label = label });
|
||||
}
|
||||
//header: plain text after command
|
||||
else
|
||||
{
|
||||
AddGUICommand(propertyCount, new GC_Header() { label = command });
|
||||
}
|
||||
}
|
||||
else
|
||||
//property
|
||||
{
|
||||
if(regex.IsMatch(line) && !insideCommentBlock && !isComment)
|
||||
propertyCount++;
|
||||
}
|
||||
}
|
||||
|
||||
//start properties block?
|
||||
if(line.StartsWith("Properties"))
|
||||
{
|
||||
insideProperties = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void AddGUICommand(int propertyIndex, GUICommand command)
|
||||
{
|
||||
if(!guiCommands.ContainsKey(propertyIndex))
|
||||
guiCommands.Add(propertyIndex, new List<GUICommand>());
|
||||
|
||||
guiCommands[propertyIndex].Add(command);
|
||||
}
|
||||
|
||||
public override void AssignNewShaderToMaterial(Material material, Shader oldShader, Shader newShader)
|
||||
{
|
||||
initialized = false;
|
||||
base.AssignNewShaderToMaterial(material, oldShader, newShader);
|
||||
}
|
||||
|
||||
public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] properties)
|
||||
{
|
||||
//init:
|
||||
//- read metadata in properties comment to generate ui layout
|
||||
//- force update if timestamp doesn't match last (= file externally updated)
|
||||
bool force = (shaderImporter != null && shaderImporter.assetTimeStamp != lastTimestamp);
|
||||
Initialize(materialEditor, force);
|
||||
|
||||
var shader = (materialEditor.target as Material).shader;
|
||||
materialEditor.SetDefaultGUIWidths();
|
||||
|
||||
//show all properties by default
|
||||
ShowNextProperty = true;
|
||||
ShowStack.Clear();
|
||||
|
||||
for(int i = 0; i < properties.Length; i++)
|
||||
{
|
||||
if(guiCommands.ContainsKey(i))
|
||||
{
|
||||
for(int j = 0; j < guiCommands[i].Count; j++)
|
||||
{
|
||||
guiCommands[i][j].OnGUI();
|
||||
}
|
||||
}
|
||||
|
||||
//Use custom properties to enable/disable groups based on keywords
|
||||
if(ShowNextProperty)
|
||||
{
|
||||
#if UNITY_6000_1_OR_NEWER
|
||||
if((properties[i].propertyFlags & (UnityEngine.Rendering.ShaderPropertyFlags.HideInInspector | UnityEngine.Rendering.ShaderPropertyFlags.PerRendererData)) == UnityEngine.Rendering.ShaderPropertyFlags.None)
|
||||
#else
|
||||
if((properties[i].flags & (MaterialProperty.PropFlags.HideInInspector | MaterialProperty.PropFlags.PerRendererData)) == MaterialProperty.PropFlags.None)
|
||||
#endif
|
||||
{
|
||||
DisplayProperty(properties[i], materialEditor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//make sure to show gui commands that are after properties
|
||||
int index = properties.Length;
|
||||
if(guiCommands.ContainsKey(index))
|
||||
{
|
||||
for(int j = 0; j < guiCommands[index].Count; j++)
|
||||
{
|
||||
guiCommands[index][j].OnGUI();
|
||||
}
|
||||
}
|
||||
|
||||
//Special fields
|
||||
Styles.MaterialDrawSeparatorDouble();
|
||||
materialEditor.RenderQueueField();
|
||||
materialEditor.EnableInstancingField();
|
||||
}
|
||||
|
||||
virtual protected void DisplayProperty(MaterialProperty property, MaterialEditor materialEditor)
|
||||
{
|
||||
float propertyHeight = materialEditor.GetPropertyHeight(property, property.displayName);
|
||||
Rect controlRect = EditorGUILayout.GetControlRect(true, propertyHeight, EditorStyles.layerMaskField, new GUILayoutOption[0]);
|
||||
materialEditor.ShaderProperty(controlRect, property, property.displayName);
|
||||
}
|
||||
}
|
||||
|
||||
// Same as Toggle drawer, but doesn't set any keyword
|
||||
// This will avoid adding unnecessary shader keyword to the project
|
||||
internal class MaterialToggleNoKeywordDrawer : MaterialPropertyDrawer
|
||||
{
|
||||
private static bool IsPropertyTypeSuitable(MaterialProperty prop)
|
||||
{
|
||||
#if UNITY_6000_1_OR_NEWER
|
||||
return prop.propertyType == UnityEngine.Rendering.ShaderPropertyType.Float || prop.propertyType == UnityEngine.Rendering.ShaderPropertyType.Range;
|
||||
#else
|
||||
return prop.type == MaterialProperty.PropType.Float || prop.type == MaterialProperty.PropType.Range;
|
||||
#endif
|
||||
}
|
||||
|
||||
public override float GetPropertyHeight(MaterialProperty prop, string label, MaterialEditor editor)
|
||||
{
|
||||
float height;
|
||||
if (!MaterialToggleNoKeywordDrawer.IsPropertyTypeSuitable(prop))
|
||||
{
|
||||
height = 40f;
|
||||
}
|
||||
else
|
||||
{
|
||||
height = base.GetPropertyHeight(prop, label, editor);
|
||||
}
|
||||
return height;
|
||||
}
|
||||
|
||||
public override void OnGUI(Rect position, MaterialProperty prop, GUIContent label, MaterialEditor editor)
|
||||
{
|
||||
if (!MaterialToggleNoKeywordDrawer.IsPropertyTypeSuitable(prop))
|
||||
{
|
||||
EditorGUI.HelpBox(position, "Toggle used on a non-float property: " + prop.name, MessageType.Warning);
|
||||
}
|
||||
else
|
||||
{
|
||||
EditorGUI.BeginChangeCheck();
|
||||
bool flag = Mathf.Abs(prop.floatValue) > 0.001f;
|
||||
EditorGUI.showMixedValue = prop.hasMixedValue;
|
||||
flag = EditorGUI.Toggle(position, label, flag);
|
||||
EditorGUI.showMixedValue = false;
|
||||
if (EditorGUI.EndChangeCheck())
|
||||
{
|
||||
prop.floatValue = ((!flag) ? 0f : 1f);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Same as KeywordEnum drawer, but uses the keyword supplied as is rather than adding a prefix to them
|
||||
internal class MaterialKeywordEnumNoPrefixDrawer : MaterialPropertyDrawer
|
||||
{
|
||||
private readonly GUIContent[] labels;
|
||||
private readonly string[] keywords;
|
||||
|
||||
public MaterialKeywordEnumNoPrefixDrawer(string lbl1, string kw1) : this(new[] { lbl1 }, new[] { kw1 }) { }
|
||||
public MaterialKeywordEnumNoPrefixDrawer(string lbl1, string kw1, string lbl2, string kw2) : this(new[] { lbl1, lbl2 }, new[] { kw1, kw2 }) { }
|
||||
public MaterialKeywordEnumNoPrefixDrawer(string lbl1, string kw1, string lbl2, string kw2, string lbl3, string kw3) : this(new[] { lbl1, lbl2, lbl3 }, new[] { kw1, kw2, kw3 }) { }
|
||||
public MaterialKeywordEnumNoPrefixDrawer(string lbl1, string kw1, string lbl2, string kw2, string lbl3, string kw3, string lbl4, string kw4) : this(new[] { lbl1, lbl2, lbl3, lbl4 }, new[] { kw1, kw2, kw3, kw4 }) { }
|
||||
public MaterialKeywordEnumNoPrefixDrawer(string lbl1, string kw1, string lbl2, string kw2, string lbl3, string kw3, string lbl4, string kw4, string lbl5, string kw5) : this(new[] { lbl1, lbl2, lbl3, lbl4, lbl5 }, new[] { kw1, kw2, kw3, kw4, kw5 }) { }
|
||||
public MaterialKeywordEnumNoPrefixDrawer(string lbl1, string kw1, string lbl2, string kw2, string lbl3, string kw3, string lbl4, string kw4, string lbl5, string kw5, string lbl6, string kw6) : this(new[] { lbl1, lbl2, lbl3, lbl4, lbl5, lbl6 }, new[] { kw1, kw2, kw3, kw4, kw5, kw6 }) { }
|
||||
|
||||
public MaterialKeywordEnumNoPrefixDrawer(string[] labels, string[] keywords)
|
||||
{
|
||||
this.labels= new GUIContent[keywords.Length];
|
||||
this.keywords = new string[keywords.Length];
|
||||
for (int i = 0; i < keywords.Length; ++i)
|
||||
{
|
||||
this.labels[i] = new GUIContent(labels[i]);
|
||||
this.keywords[i] = keywords[i];
|
||||
}
|
||||
}
|
||||
|
||||
static bool IsPropertyTypeSuitable(MaterialProperty prop)
|
||||
{
|
||||
#if UNITY_6000_1_OR_NEWER
|
||||
return prop.propertyType == UnityEngine.Rendering.ShaderPropertyType.Float || prop.propertyType == UnityEngine.Rendering.ShaderPropertyType.Range;
|
||||
#else
|
||||
return prop.type == MaterialProperty.PropType.Float || prop.type == MaterialProperty.PropType.Range;
|
||||
#endif
|
||||
}
|
||||
|
||||
void SetKeyword(MaterialProperty prop, int index)
|
||||
{
|
||||
for (int i = 0; i < keywords.Length; ++i)
|
||||
{
|
||||
string keyword = GetKeywordName(prop.name, keywords[i]);
|
||||
foreach (Material material in prop.targets)
|
||||
{
|
||||
if (index == i)
|
||||
material.EnableKeyword(keyword);
|
||||
else
|
||||
material.DisableKeyword(keyword);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override float GetPropertyHeight(MaterialProperty prop, string label, MaterialEditor editor)
|
||||
{
|
||||
if (!IsPropertyTypeSuitable(prop))
|
||||
{
|
||||
return EditorGUIUtility.singleLineHeight * 2.5f;
|
||||
}
|
||||
return base.GetPropertyHeight(prop, label, editor);
|
||||
}
|
||||
|
||||
public override void OnGUI(Rect position, MaterialProperty prop, GUIContent label, MaterialEditor editor)
|
||||
{
|
||||
if (!IsPropertyTypeSuitable(prop))
|
||||
{
|
||||
EditorGUI.HelpBox(position, "Toggle used on a non-float property: " + prop.name, MessageType.Warning);
|
||||
return;
|
||||
}
|
||||
|
||||
EditorGUI.BeginChangeCheck();
|
||||
|
||||
EditorGUI.showMixedValue = prop.hasMixedValue;
|
||||
var value = (int)prop.floatValue;
|
||||
value = EditorGUI.Popup(position, label, value, labels);
|
||||
EditorGUI.showMixedValue = false;
|
||||
if (EditorGUI.EndChangeCheck())
|
||||
{
|
||||
prop.floatValue = value;
|
||||
SetKeyword(prop, value);
|
||||
}
|
||||
}
|
||||
|
||||
public override void Apply(MaterialProperty prop)
|
||||
{
|
||||
base.Apply(prop);
|
||||
if (!IsPropertyTypeSuitable(prop))
|
||||
return;
|
||||
|
||||
if (prop.hasMixedValue)
|
||||
return;
|
||||
|
||||
SetKeyword(prop, (int)prop.floatValue);
|
||||
}
|
||||
|
||||
// Final keyword name: property name + "_" + display name. Uppercased,
|
||||
// and spaces replaced with underscores.
|
||||
private static string GetKeywordName(string propName, string name)
|
||||
{
|
||||
// Just return the supplied name
|
||||
return name;
|
||||
|
||||
// Original code:
|
||||
/*
|
||||
string n = propName + "_" + name;
|
||||
return n.Replace(' ', '_').ToUpperInvariant();
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//================================================================================================================================================================================================
|
||||
// GUI Commands System
|
||||
//
|
||||
// Workaround to Material Property Drawers limitations:
|
||||
// - uses shader comments to organize the GUI, and show/hide properties based on conditions
|
||||
// - can use any character (unlike property drawers)
|
||||
// - parsed once at material editor initialization
|
||||
|
||||
internal class GUICommand
|
||||
{
|
||||
public virtual bool Visible() { return true; }
|
||||
public virtual void OnGUI() { }
|
||||
}
|
||||
|
||||
internal class GC_Separator : GUICommand { public override void OnGUI() { if(MaterialInspector.ShowNextProperty) Styles.MaterialDrawSeparator(); } }
|
||||
internal class GC_SeparatorDouble : GUICommand { public override void OnGUI() { if(MaterialInspector.ShowNextProperty) Styles.MaterialDrawSeparatorDouble(); } }
|
||||
internal class GC_Space : GUICommand { public override void OnGUI() { if(MaterialInspector.ShowNextProperty) GUILayout.Space(8); } }
|
||||
internal class GC_HelpBox : GUICommand
|
||||
{
|
||||
public string message { get; set; }
|
||||
public MessageType messageType { get; set; }
|
||||
|
||||
public override void OnGUI()
|
||||
{
|
||||
if(MaterialInspector.ShowNextProperty)
|
||||
Styles.HelpBoxRichText(message, messageType);
|
||||
}
|
||||
}
|
||||
internal class GC_Header : GUICommand
|
||||
{
|
||||
public string label { get; set; }
|
||||
GUIContent guiContent;
|
||||
|
||||
public override void OnGUI()
|
||||
{
|
||||
if(guiContent == null)
|
||||
guiContent = new GUIContent(label);
|
||||
|
||||
if(MaterialInspector.ShowNextProperty)
|
||||
Styles.MaterialDrawHeader(guiContent);
|
||||
}
|
||||
}
|
||||
internal class GC_Label : GUICommand
|
||||
{
|
||||
public string label { get; set; }
|
||||
GUIContent guiContent;
|
||||
|
||||
public override void OnGUI()
|
||||
{
|
||||
if(guiContent == null)
|
||||
guiContent = new GUIContent(label);
|
||||
|
||||
if(MaterialInspector.ShowNextProperty)
|
||||
GUILayout.Label(guiContent);
|
||||
}
|
||||
}
|
||||
internal class GC_IfKeyword : GUICommand
|
||||
{
|
||||
public string expression { get; set; }
|
||||
public Material[] materials { get; set; }
|
||||
public override void OnGUI()
|
||||
{
|
||||
bool show = ExpressionParser.EvaluateExpression(expression, (string s) =>
|
||||
{
|
||||
foreach(var m in materials)
|
||||
{
|
||||
if(m.IsKeywordEnabled(s))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
MaterialInspector.PushShowProperty(show);
|
||||
}
|
||||
}
|
||||
internal class GC_EndIf : GUICommand { public override void OnGUI() { MaterialInspector.PopShowProperty(); } }
|
||||
|
||||
internal class GC_IfProperty : GUICommand
|
||||
{
|
||||
string _expression;
|
||||
public string expression
|
||||
{
|
||||
get { return _expression; }
|
||||
set { _expression = value.Replace("!=", "<>"); }
|
||||
}
|
||||
public Material[] materials { get; set; }
|
||||
|
||||
public override void OnGUI()
|
||||
{
|
||||
bool show = ExpressionParser.EvaluateExpression(expression, EvaluatePropertyExpression);
|
||||
MaterialInspector.PushShowProperty(show);
|
||||
}
|
||||
|
||||
bool EvaluatePropertyExpression(string expr)
|
||||
{
|
||||
//expression is expected to be in the form of: property operator value
|
||||
var reader = new StringReader(expr);
|
||||
string property = "";
|
||||
string op = "";
|
||||
float value = 0f;
|
||||
|
||||
int overflow = 0;
|
||||
while(true)
|
||||
{
|
||||
char c = (char)reader.Read();
|
||||
|
||||
//operator
|
||||
if(c == '=' || c == '>' || c == '<' || c == '!')
|
||||
{
|
||||
op += c;
|
||||
//second operator character, if any
|
||||
char c2 = (char)reader.Peek();
|
||||
if(c2 == '=' || c2 == '>')
|
||||
{
|
||||
reader.Read();
|
||||
op += c2;
|
||||
}
|
||||
|
||||
//end of string is the value
|
||||
var end = reader.ReadToEnd();
|
||||
if(!float.TryParse(end, out value))
|
||||
{
|
||||
Debug.LogError("Couldn't parse float from property expression:\n" + end);
|
||||
return false;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
//property name
|
||||
property += c;
|
||||
|
||||
overflow++;
|
||||
if(overflow >= 9999)
|
||||
{
|
||||
Debug.LogError("Expression parsing overflow!\n");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//evaluate property
|
||||
bool conditionMet = false;
|
||||
foreach(var m in materials)
|
||||
{
|
||||
float propValue = 0f;
|
||||
if(property.Contains(".x") || property.Contains(".y") || property.Contains(".z") || property.Contains(".w"))
|
||||
{
|
||||
string[] split = property.Split('.');
|
||||
string component = split[1];
|
||||
switch(component)
|
||||
{
|
||||
case "x": propValue = m.GetVector(split[0]).x; break;
|
||||
case "y": propValue = m.GetVector(split[0]).y; break;
|
||||
case "z": propValue = m.GetVector(split[0]).z; break;
|
||||
case "w": propValue = m.GetVector(split[0]).w; break;
|
||||
default: Debug.LogError("Invalid component for vector property: '" + property + "'"); break;
|
||||
}
|
||||
}
|
||||
else
|
||||
propValue = m.GetFloat(property);
|
||||
|
||||
switch(op)
|
||||
{
|
||||
case ">=": conditionMet = propValue >= value; break;
|
||||
case "<=": conditionMet = propValue <= value; break;
|
||||
case ">": conditionMet = propValue > value; break;
|
||||
case "<": conditionMet = propValue < value; break;
|
||||
case "<>": conditionMet = propValue != value; break; //not equal, "!=" is replaced by "<>" to prevent bug with leading ! ("not" operator)
|
||||
case "==": conditionMet = propValue == value; break;
|
||||
default:
|
||||
Debug.LogError("Invalid property expression:\n" + expr);
|
||||
break;
|
||||
}
|
||||
if(conditionMet)
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
19
Assets/External/JMO Assets/Cartoon FX Remaster/CFXR Assets/Editor/CFXR_MaterialInspector.cs.meta
vendored
Normal file
19
Assets/External/JMO Assets/Cartoon FX Remaster/CFXR Assets/Editor/CFXR_MaterialInspector.cs.meta
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4fb4c15e772a1cc4baecc7a958bf9cc7
|
||||
timeCreated: 1486392341
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 109565
|
||||
packageName: Cartoon FX Remaster Free
|
||||
packageVersion: R 1.5.0
|
||||
assetPath: Assets/JMO Assets/Cartoon FX Remaster/CFXR Assets/Editor/CFXR_MaterialInspector.cs
|
||||
uploadId: 836238
|
||||
423
Assets/External/JMO Assets/Cartoon FX Remaster/CFXR Assets/Editor/CFXR_ShaderImporter.cs
vendored
Normal file
423
Assets/External/JMO Assets/Cartoon FX Remaster/CFXR Assets/Editor/CFXR_ShaderImporter.cs
vendored
Normal file
@@ -0,0 +1,423 @@
|
||||
// #define SHOW_EXPORT_BUTTON
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
using UnityEditor;
|
||||
using UnityEditor.Rendering;
|
||||
using UnityEngine;
|
||||
#if UNITY_2020_2_OR_NEWER
|
||||
using UnityEditor.AssetImporters;
|
||||
#else
|
||||
using UnityEditor.Experimental.AssetImporters;
|
||||
#endif
|
||||
using UnityEngine.Rendering;
|
||||
|
||||
namespace CartoonFX
|
||||
{
|
||||
namespace CustomShaderImporter
|
||||
{
|
||||
static class Utils
|
||||
{
|
||||
public static bool IsUsingURP()
|
||||
{
|
||||
#if UNITY_2019_3_OR_NEWER
|
||||
var renderPipeline = GraphicsSettings.currentRenderPipeline;
|
||||
#else
|
||||
var renderPipeline = GraphicsSettings.renderPipelineAsset;
|
||||
#endif
|
||||
return renderPipeline != null && renderPipeline.GetType().Name.Contains("Universal");
|
||||
}
|
||||
}
|
||||
|
||||
[ScriptedImporter(0, FILE_EXTENSION)]
|
||||
public class CFXR_ShaderImporter : ScriptedImporter
|
||||
{
|
||||
public enum RenderPipeline
|
||||
{
|
||||
Auto,
|
||||
ForceBuiltInRenderPipeline,
|
||||
ForceUniversalRenderPipeline
|
||||
}
|
||||
|
||||
public const string FILE_EXTENSION = "cfxrshader";
|
||||
|
||||
[Tooltip("In case of errors when building the project or with addressables, you can try forcing a specific render pipeline")]
|
||||
public RenderPipeline renderPipelineDetection = RenderPipeline.Auto;
|
||||
public string detectedRenderPipeline = "Built-In Render Pipeline";
|
||||
public int strippedLinesCount = 0;
|
||||
public string shaderSourceCode;
|
||||
public string shaderName;
|
||||
public string[] shaderErrors;
|
||||
public ulong variantCount;
|
||||
public ulong variantCountUsed;
|
||||
|
||||
enum ComparisonOperator
|
||||
{
|
||||
Equal,
|
||||
Greater,
|
||||
GreaterOrEqual,
|
||||
Less,
|
||||
LessOrEqual
|
||||
}
|
||||
|
||||
#if UNITY_2022_2_OR_NEWER
|
||||
const int URP_VERSION = 14;
|
||||
#elif UNITY_2021_2_OR_NEWER
|
||||
const int URP_VERSION = 12;
|
||||
#elif UNITY_2021_1_OR_NEWER
|
||||
const int URP_VERSION = 11;
|
||||
#elif UNITY_2020_3_OR_NEWER
|
||||
const int URP_VERSION = 10;
|
||||
#else
|
||||
const int URP_VERSION = 7;
|
||||
#endif
|
||||
|
||||
static ComparisonOperator ParseComparisonOperator(string symbols)
|
||||
{
|
||||
switch (symbols)
|
||||
{
|
||||
case "==": return ComparisonOperator.Equal;
|
||||
case "<=": return ComparisonOperator.LessOrEqual;
|
||||
case "<": return ComparisonOperator.Less;
|
||||
case ">": return ComparisonOperator.Greater;
|
||||
case ">=": return ComparisonOperator.GreaterOrEqual;
|
||||
default: throw new Exception("Invalid comparison operator: " + symbols);
|
||||
}
|
||||
}
|
||||
|
||||
static bool CompareWithOperator(int value1, int value2, ComparisonOperator comparisonOperator)
|
||||
{
|
||||
switch (comparisonOperator)
|
||||
{
|
||||
case ComparisonOperator.Equal: return value1 == value2;
|
||||
case ComparisonOperator.Greater: return value1 > value2;
|
||||
case ComparisonOperator.GreaterOrEqual: return value1 >= value2;
|
||||
case ComparisonOperator.Less: return value1 < value2;
|
||||
case ComparisonOperator.LessOrEqual: return value1 <= value2;
|
||||
default: throw new Exception("Invalid comparison operator value: " + comparisonOperator);
|
||||
}
|
||||
}
|
||||
|
||||
bool StartsOrEndWithSpecialTag(string line)
|
||||
{
|
||||
bool startsWithTag = (line.Length > 4 && line[0] == '/' && line[1] == '*' && line[2] == '*' && line[3] == '*');
|
||||
if (startsWithTag) return true;
|
||||
|
||||
int l = line.Length-1;
|
||||
bool endsWithTag = (line.Length > 4 && line[l] == '/' && line[l-1] == '*' && line[l-2] == '*' && line[l-3] == '*');
|
||||
return endsWithTag;
|
||||
}
|
||||
|
||||
public override void OnImportAsset(AssetImportContext context)
|
||||
{
|
||||
bool isUsingURP;
|
||||
switch (renderPipelineDetection)
|
||||
{
|
||||
default:
|
||||
case RenderPipeline.Auto:
|
||||
{
|
||||
isUsingURP = Utils.IsUsingURP();
|
||||
detectedRenderPipeline = isUsingURP ? "Universal Render Pipeline" : "Built-In Render Pipeline";
|
||||
break;
|
||||
}
|
||||
case RenderPipeline.ForceBuiltInRenderPipeline:
|
||||
{
|
||||
detectedRenderPipeline = "Built-In Render Pipeline";
|
||||
isUsingURP = false;
|
||||
break;
|
||||
}
|
||||
case RenderPipeline.ForceUniversalRenderPipeline:
|
||||
{
|
||||
detectedRenderPipeline = "Universal Render Pipeline";
|
||||
isUsingURP = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
StringWriter shaderSource = new StringWriter();
|
||||
string[] sourceLines = File.ReadAllLines(context.assetPath);
|
||||
Stack<bool> excludeCurrentLines = new Stack<bool>();
|
||||
strippedLinesCount = 0;
|
||||
|
||||
for (int i = 0; i < sourceLines.Length; i++)
|
||||
{
|
||||
bool excludeThisLine = excludeCurrentLines.Count > 0 && excludeCurrentLines.Peek();
|
||||
|
||||
string line = sourceLines[i];
|
||||
if (StartsOrEndWithSpecialTag(line))
|
||||
{
|
||||
if (line.StartsWith("/*** BIRP ***/"))
|
||||
{
|
||||
excludeCurrentLines.Push(excludeThisLine || isUsingURP);
|
||||
}
|
||||
else if (line.StartsWith("/*** URP ***/"))
|
||||
{
|
||||
excludeCurrentLines.Push(excludeThisLine || !isUsingURP);
|
||||
}
|
||||
else if (line.StartsWith("/*** URP_VERSION "))
|
||||
{
|
||||
string subline = line.Substring("/*** URP_VERSION ".Length);
|
||||
int spaceIndex = subline.IndexOf(' ');
|
||||
string version = subline.Substring(spaceIndex, subline.LastIndexOf(' ') - spaceIndex);
|
||||
string op = subline.Substring(0, spaceIndex);
|
||||
|
||||
var compOp = ParseComparisonOperator(op);
|
||||
int compVersion = int.Parse(version);
|
||||
|
||||
bool isCorrectURP = CompareWithOperator(URP_VERSION, compVersion, compOp);
|
||||
excludeCurrentLines.Push(excludeThisLine || !isCorrectURP);
|
||||
}
|
||||
else if (excludeThisLine && line.StartsWith("/*** END"))
|
||||
{
|
||||
excludeCurrentLines.Pop();
|
||||
}
|
||||
else if (!excludeThisLine && line.StartsWith("/*** #define URP_VERSION ***/"))
|
||||
{
|
||||
shaderSource.WriteLine("\t\t\t#define URP_VERSION " + URP_VERSION);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (excludeThisLine)
|
||||
{
|
||||
strippedLinesCount++;
|
||||
continue;
|
||||
}
|
||||
|
||||
shaderSource.WriteLine(line);
|
||||
}
|
||||
}
|
||||
|
||||
// Get source code and extract name
|
||||
shaderSourceCode = shaderSource.ToString();
|
||||
int idx = shaderSourceCode.IndexOf("Shader \"", StringComparison.InvariantCulture) + 8;
|
||||
int idx2 = shaderSourceCode.IndexOf('"', idx);
|
||||
shaderName = shaderSourceCode.Substring(idx, idx2 - idx);
|
||||
shaderErrors = null;
|
||||
|
||||
Shader shader = ShaderUtil.CreateShaderAsset(context, shaderSourceCode, true);
|
||||
|
||||
if (ShaderUtil.ShaderHasError(shader))
|
||||
{
|
||||
string[] shaderSourceLines = shaderSourceCode.Split(new [] {'\n'}, StringSplitOptions.None);
|
||||
var errors = ShaderUtil.GetShaderMessages(shader);
|
||||
shaderErrors = Array.ConvertAll(errors, err => $"{err.message} (line {err.line})");
|
||||
foreach (ShaderMessage error in errors)
|
||||
{
|
||||
string message = error.line <= 0 ?
|
||||
string.Format("Shader Error in '{0}' (in file '{2}')\nError: {1}\n", shaderName, error.message, error.file) :
|
||||
string.Format("Shader Error in '{0}' (line {2} in file '{3}')\nError: {1}\nLine: {4}\n", shaderName, error.message, error.line, error.file, shaderSourceLines[error.line-1]);
|
||||
if (error.severity == ShaderCompilerMessageSeverity.Warning)
|
||||
{
|
||||
Debug.LogWarning(message);
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogError(message);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ShaderUtil.ClearShaderMessages(shader);
|
||||
}
|
||||
|
||||
context.AddObjectToAsset("MainAsset", shader);
|
||||
context.SetMainObject(shader);
|
||||
|
||||
// Try to count variant using reflection:
|
||||
// internal static extern ulong GetVariantCount(Shader s, bool usedBySceneOnly);
|
||||
variantCount = 0;
|
||||
variantCountUsed = 0;
|
||||
MethodInfo getVariantCountReflection = typeof(ShaderUtil).GetMethod("GetVariantCount", BindingFlags.Static | BindingFlags.NonPublic);
|
||||
if (getVariantCountReflection != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
object result = getVariantCountReflection.Invoke(null, new object[] {shader, false});
|
||||
variantCount = (ulong)result;
|
||||
result = getVariantCountReflection.Invoke(null, new object[] {shader, true});
|
||||
variantCountUsed = (ulong)result;
|
||||
}
|
||||
catch
|
||||
{
|
||||
// ignored
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
namespace Inspector
|
||||
{
|
||||
[CustomEditor(typeof(CFXR_ShaderImporter)), CanEditMultipleObjects]
|
||||
public class TCP2ShaderImporter_Editor : Editor
|
||||
{
|
||||
CFXR_ShaderImporter Importer => (CFXR_ShaderImporter) this.target;
|
||||
|
||||
// From: UnityEditor.ShaderInspectorPlatformsPopup
|
||||
static string FormatCount(ulong count)
|
||||
{
|
||||
bool flag = count > 1000000000uL;
|
||||
string result;
|
||||
if (flag)
|
||||
{
|
||||
result = (count / 1000000000.0).ToString("f2", CultureInfo.InvariantCulture.NumberFormat) + "B";
|
||||
}
|
||||
else
|
||||
{
|
||||
bool flag2 = count > 1000000uL;
|
||||
if (flag2)
|
||||
{
|
||||
result = (count / 1000000.0).ToString("f2", CultureInfo.InvariantCulture.NumberFormat) + "M";
|
||||
}
|
||||
else
|
||||
{
|
||||
bool flag3 = count > 1000uL;
|
||||
if (flag3)
|
||||
{
|
||||
result = (count / 1000.0).ToString("f2", CultureInfo.InvariantCulture.NumberFormat) + "k";
|
||||
}
|
||||
else
|
||||
{
|
||||
result = count.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
static GUIStyle _HelpBoxRichTextStyle;
|
||||
static GUIStyle HelpBoxRichTextStyle
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_HelpBoxRichTextStyle == null)
|
||||
{
|
||||
_HelpBoxRichTextStyle = new GUIStyle("HelpBox");
|
||||
_HelpBoxRichTextStyle.richText = true;
|
||||
_HelpBoxRichTextStyle.margin = new RectOffset(4, 4, 0, 0);
|
||||
_HelpBoxRichTextStyle.padding = new RectOffset(4, 4, 4, 4);
|
||||
}
|
||||
return _HelpBoxRichTextStyle;
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnInspectorGUI()
|
||||
{
|
||||
bool multipleValues = serializedObject.isEditingMultipleObjects;
|
||||
|
||||
CFXR_ShaderImporter.RenderPipeline detection = ((CFXR_ShaderImporter)target).renderPipelineDetection;
|
||||
bool isUsingURP = Utils.IsUsingURP();
|
||||
serializedObject.Update();
|
||||
|
||||
GUILayout.Label(Importer.shaderName);
|
||||
string variantsText = "";
|
||||
if (Importer.variantCount > 0 && Importer.variantCountUsed > 0)
|
||||
{
|
||||
string variantsCount = multipleValues ? "-" : FormatCount(Importer.variantCount);
|
||||
string variantsCountUsed = multipleValues ? "-" : FormatCount(Importer.variantCountUsed);
|
||||
variantsText = $"\nVariants (currently used): <b>{variantsCountUsed}</b>\nVariants (including unused): <b>{variantsCount}</b>";
|
||||
}
|
||||
string strippedLinesCount = multipleValues ? "-" : Importer.strippedLinesCount.ToString();
|
||||
string renderPipeline = Importer.detectedRenderPipeline;
|
||||
if (targets is { Length: > 1 })
|
||||
{
|
||||
foreach (CFXR_ShaderImporter importer in targets)
|
||||
{
|
||||
if (importer.detectedRenderPipeline != renderPipeline)
|
||||
{
|
||||
renderPipeline = "-";
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
GUILayout.Label($"{(detection == CFXR_ShaderImporter.RenderPipeline.Auto ? "Detected" : "Forced")} render pipeline: <b>{renderPipeline}</b>\nStripped lines: <b>{strippedLinesCount}</b>{variantsText}", HelpBoxRichTextStyle);
|
||||
|
||||
if (Importer.shaderErrors != null && Importer.shaderErrors.Length > 0)
|
||||
{
|
||||
GUILayout.Space(4);
|
||||
var color = GUI.color;
|
||||
GUI.color = new Color32(0xFF, 0x80, 0x80, 0xFF);
|
||||
GUILayout.Label($"<b>Errors:</b>\n{string.Join("\n", Importer.shaderErrors)}", HelpBoxRichTextStyle);
|
||||
GUI.color = color;
|
||||
}
|
||||
|
||||
bool shouldReimportShader = false;
|
||||
bool compiledForURP = Importer.detectedRenderPipeline.Contains("Universal");
|
||||
if (detection == CFXR_ShaderImporter.RenderPipeline.Auto
|
||||
&& ((isUsingURP && !compiledForURP) || (!isUsingURP && compiledForURP)))
|
||||
{
|
||||
GUILayout.Space(4);
|
||||
Color guiColor = GUI.color;
|
||||
GUI.color *= Color.yellow;
|
||||
EditorGUILayout.HelpBox("The detected render pipeline doesn't match the pipeline this shader was compiled for!\nPlease reimport the shaders for them to work in the current render pipeline.", MessageType.Warning);
|
||||
if (GUILayout.Button("Reimport Shader"))
|
||||
{
|
||||
shouldReimportShader = true;
|
||||
}
|
||||
GUI.color = guiColor;
|
||||
}
|
||||
|
||||
GUILayout.Space(4);
|
||||
|
||||
|
||||
EditorGUI.BeginChangeCheck();
|
||||
EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(CFXR_ShaderImporter.renderPipelineDetection)));
|
||||
if (EditorGUI.EndChangeCheck())
|
||||
{
|
||||
shouldReimportShader = true;
|
||||
}
|
||||
|
||||
if (GUILayout.Button("View Source", GUILayout.ExpandWidth(false)))
|
||||
{
|
||||
string path = Application.temporaryCachePath + "/" + Importer.shaderName.Replace("/", "-") + "_Source.shader";
|
||||
if (File.Exists(path))
|
||||
{
|
||||
File.SetAttributes(path, FileAttributes.Normal);
|
||||
}
|
||||
|
||||
File.WriteAllText(path, Importer.shaderSourceCode);
|
||||
File.SetAttributes(path, FileAttributes.ReadOnly);
|
||||
UnityEditorInternal.InternalEditorUtility.OpenFileAtLineExternal(path, 0);
|
||||
}
|
||||
|
||||
#if SHOW_EXPORT_BUTTON
|
||||
GUILayout.Space(8);
|
||||
|
||||
EditorGUI.BeginDisabledGroup(string.IsNullOrEmpty(importer.shaderSourceCode));
|
||||
{
|
||||
if (GUILayout.Button("Export .shader file", GUILayout.ExpandWidth(false)))
|
||||
{
|
||||
string savePath = EditorUtility.SaveFilePanel("Export CFXR shader", Application.dataPath, "CFXR Shader","shader");
|
||||
if (!string.IsNullOrEmpty(savePath))
|
||||
{
|
||||
File.WriteAllText(savePath, importer.shaderSourceCode);
|
||||
}
|
||||
}
|
||||
}
|
||||
EditorGUI.EndDisabledGroup();
|
||||
#endif
|
||||
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
|
||||
if (shouldReimportShader)
|
||||
{
|
||||
ReimportShader();
|
||||
}
|
||||
}
|
||||
|
||||
void ReimportShader()
|
||||
{
|
||||
foreach (UnityEngine.Object t in targets)
|
||||
{
|
||||
string path = AssetDatabase.GetAssetPath(t);
|
||||
AssetDatabase.ImportAsset(path, ImportAssetOptions.ForceSynchronousImport);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
18
Assets/External/JMO Assets/Cartoon FX Remaster/CFXR Assets/Editor/CFXR_ShaderImporter.cs.meta
vendored
Normal file
18
Assets/External/JMO Assets/Cartoon FX Remaster/CFXR Assets/Editor/CFXR_ShaderImporter.cs.meta
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fe56ec25963759b49955809beeb4324b
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 109565
|
||||
packageName: Cartoon FX Remaster Free
|
||||
packageVersion: R 1.5.0
|
||||
assetPath: Assets/JMO Assets/Cartoon FX Remaster/CFXR Assets/Editor/CFXR_ShaderImporter.cs
|
||||
uploadId: 836238
|
||||
38
Assets/External/JMO Assets/Cartoon FX Remaster/CFXR Assets/Editor/CFXR_ShaderPostProcessor.cs
vendored
Normal file
38
Assets/External/JMO Assets/Cartoon FX Remaster/CFXR Assets/Editor/CFXR_ShaderPostProcessor.cs
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
using System;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace CartoonFX
|
||||
{
|
||||
namespace CustomShaderImporter
|
||||
{
|
||||
public class CFXR_ShaderPostProcessor : AssetPostprocessor
|
||||
{
|
||||
static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths)
|
||||
{
|
||||
CleanCFXRShaders(importedAssets);
|
||||
}
|
||||
|
||||
static void CleanCFXRShaders(string[] paths)
|
||||
{
|
||||
foreach (var assetPath in paths)
|
||||
{
|
||||
if (!assetPath.EndsWith(CFXR_ShaderImporter.FILE_EXTENSION, StringComparison.InvariantCultureIgnoreCase))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var shader = AssetDatabase.LoadMainAssetAtPath(assetPath) as Shader;
|
||||
if (shader != null)
|
||||
{
|
||||
ShaderUtil.ClearShaderMessages(shader);
|
||||
if (!ShaderUtil.ShaderHasError(shader))
|
||||
{
|
||||
ShaderUtil.RegisterShader(shader);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 29d46695388f9a84d9ae71b5140727a3
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 109565
|
||||
packageName: Cartoon FX Remaster Free
|
||||
packageVersion: R 1.5.0
|
||||
assetPath: Assets/JMO Assets/Cartoon FX Remaster/CFXR Assets/Editor/CFXR_ShaderPostProcessor.cs
|
||||
uploadId: 836238
|
||||
362
Assets/External/JMO Assets/Cartoon FX Remaster/CFXR Assets/Editor/CFXR_Styles.cs
vendored
Normal file
362
Assets/External/JMO Assets/Cartoon FX Remaster/CFXR Assets/Editor/CFXR_Styles.cs
vendored
Normal file
@@ -0,0 +1,362 @@
|
||||
//--------------------------------------------------------------------------------------------------------------------------------
|
||||
// Cartoon FX
|
||||
// (c) 2012-2025 Jean Moreno
|
||||
//--------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
|
||||
// GUI Styles and UI methods
|
||||
|
||||
namespace CartoonFX
|
||||
{
|
||||
public static class Styles
|
||||
{
|
||||
//================================================================================================================================
|
||||
// GUI Styles
|
||||
//================================================================================================================================
|
||||
|
||||
//================================================================================================================================
|
||||
// (x) close button
|
||||
static GUIStyle _closeCrossButton;
|
||||
public static GUIStyle CloseCrossButton
|
||||
{
|
||||
get
|
||||
{
|
||||
if(_closeCrossButton == null)
|
||||
{
|
||||
//Try to load GUISkin according to its GUID
|
||||
//Assumes that its .meta file should always stick with it!
|
||||
string guiSkinPath = AssetDatabase.GUIDToAssetPath("02d396fa782e5d7438e231ea9f8be23c");
|
||||
var gs = AssetDatabase.LoadAssetAtPath<GUISkin>(guiSkinPath);
|
||||
if(gs != null)
|
||||
{
|
||||
_closeCrossButton = System.Array.Find<GUIStyle>(gs.customStyles, x => x.name == "CloseCrossButton");
|
||||
}
|
||||
|
||||
//Else fall back to minibutton
|
||||
if(_closeCrossButton == null)
|
||||
_closeCrossButton = EditorStyles.miniButton;
|
||||
}
|
||||
return _closeCrossButton;
|
||||
}
|
||||
}
|
||||
|
||||
//================================================================================================================================
|
||||
// Shuriken Toggle with label alignment fix
|
||||
static GUIStyle _shurikenToggle;
|
||||
public static GUIStyle ShurikenToggle
|
||||
{
|
||||
get
|
||||
{
|
||||
if(_shurikenToggle == null)
|
||||
{
|
||||
_shurikenToggle = new GUIStyle("ShurikenToggle");
|
||||
_shurikenToggle.fontSize = 9;
|
||||
_shurikenToggle.contentOffset = new Vector2(16, -1);
|
||||
if(EditorGUIUtility.isProSkin)
|
||||
{
|
||||
var textColor = new Color(.8f, .8f, .8f);
|
||||
_shurikenToggle.normal.textColor = textColor;
|
||||
_shurikenToggle.active.textColor = textColor;
|
||||
_shurikenToggle.focused.textColor = textColor;
|
||||
_shurikenToggle.hover.textColor = textColor;
|
||||
_shurikenToggle.onNormal.textColor = textColor;
|
||||
_shurikenToggle.onActive.textColor = textColor;
|
||||
_shurikenToggle.onFocused.textColor = textColor;
|
||||
_shurikenToggle.onHover.textColor = textColor;
|
||||
}
|
||||
}
|
||||
return _shurikenToggle;
|
||||
}
|
||||
}
|
||||
|
||||
//================================================================================================================================
|
||||
// Bold mini-label (the one from EditorStyles isn't actually "mini")
|
||||
static GUIStyle _miniBoldLabel;
|
||||
public static GUIStyle MiniBoldLabel
|
||||
{
|
||||
get
|
||||
{
|
||||
if(_miniBoldLabel == null)
|
||||
{
|
||||
_miniBoldLabel = new GUIStyle(EditorStyles.boldLabel);
|
||||
_miniBoldLabel.fontSize = 10;
|
||||
_miniBoldLabel.margin = new RectOffset(0, 0, 0, 0);
|
||||
}
|
||||
return _miniBoldLabel;
|
||||
}
|
||||
}
|
||||
|
||||
//================================================================================================================================
|
||||
// Bold mini-foldout
|
||||
static GUIStyle _miniBoldFoldout;
|
||||
public static GUIStyle MiniBoldFoldout
|
||||
{
|
||||
get
|
||||
{
|
||||
if(_miniBoldFoldout == null)
|
||||
{
|
||||
_miniBoldFoldout = new GUIStyle(EditorStyles.foldout);
|
||||
_miniBoldFoldout.fontSize = 10;
|
||||
_miniBoldFoldout.fontStyle = FontStyle.Bold;
|
||||
_miniBoldFoldout.margin = new RectOffset(0, 0, 0, 0);
|
||||
}
|
||||
return _miniBoldFoldout;
|
||||
}
|
||||
}
|
||||
|
||||
//================================================================================================================================
|
||||
// Gray right-aligned label for Orderable List (Material Animator)
|
||||
static GUIStyle _PropertyTypeLabel;
|
||||
public static GUIStyle PropertyTypeLabel
|
||||
{
|
||||
get
|
||||
{
|
||||
if(_PropertyTypeLabel == null)
|
||||
{
|
||||
_PropertyTypeLabel = new GUIStyle(EditorStyles.label);
|
||||
_PropertyTypeLabel.alignment = TextAnchor.MiddleRight;
|
||||
_PropertyTypeLabel.normal.textColor = Color.gray;
|
||||
_PropertyTypeLabel.fontSize = 9;
|
||||
}
|
||||
return _PropertyTypeLabel;
|
||||
}
|
||||
}
|
||||
|
||||
// Dark Gray right-aligned label for Orderable List (Material Animator)
|
||||
static GUIStyle _PropertyTypeLabelFocused;
|
||||
public static GUIStyle PropertyTypeLabelFocused
|
||||
{
|
||||
get
|
||||
{
|
||||
if(_PropertyTypeLabelFocused == null)
|
||||
{
|
||||
_PropertyTypeLabelFocused = new GUIStyle(EditorStyles.label);
|
||||
_PropertyTypeLabelFocused.alignment = TextAnchor.MiddleRight;
|
||||
_PropertyTypeLabelFocused.normal.textColor = new Color(.2f, .2f, .2f);
|
||||
_PropertyTypeLabelFocused.fontSize = 9;
|
||||
}
|
||||
return _PropertyTypeLabelFocused;
|
||||
}
|
||||
}
|
||||
|
||||
//================================================================================================================================
|
||||
// Rounded Box
|
||||
static GUIStyle _roundedBox;
|
||||
public static GUIStyle RoundedBox
|
||||
{
|
||||
get
|
||||
{
|
||||
if(_roundedBox == null)
|
||||
{
|
||||
_roundedBox = new GUIStyle(EditorStyles.helpBox);
|
||||
}
|
||||
return _roundedBox;
|
||||
}
|
||||
}
|
||||
|
||||
//================================================================================================================================
|
||||
// Center White Label ("Editing Spline" label in Scene View)
|
||||
static GUIStyle _CenteredWhiteLabel;
|
||||
public static GUIStyle CenteredWhiteLabel
|
||||
{
|
||||
get
|
||||
{
|
||||
if(_CenteredWhiteLabel == null)
|
||||
{
|
||||
_CenteredWhiteLabel = new GUIStyle(EditorStyles.centeredGreyMiniLabel);
|
||||
_CenteredWhiteLabel.fontSize = 20;
|
||||
_CenteredWhiteLabel.normal.textColor = Color.white;
|
||||
}
|
||||
return _CenteredWhiteLabel;
|
||||
}
|
||||
}
|
||||
|
||||
//================================================================================================================================
|
||||
// Used to draw lines for separators
|
||||
static public GUIStyle _LineStyle;
|
||||
static public GUIStyle LineStyle
|
||||
{
|
||||
get
|
||||
{
|
||||
if(_LineStyle == null)
|
||||
{
|
||||
_LineStyle = new GUIStyle();
|
||||
_LineStyle.normal.background = EditorGUIUtility.whiteTexture;
|
||||
_LineStyle.stretchWidth = true;
|
||||
}
|
||||
|
||||
return _LineStyle;
|
||||
}
|
||||
}
|
||||
|
||||
//================================================================================================================================
|
||||
// HelpBox with rich text formatting support
|
||||
static GUIStyle _HelpBoxRichTextStyle;
|
||||
static public GUIStyle HelpBoxRichTextStyle
|
||||
{
|
||||
get
|
||||
{
|
||||
if(_HelpBoxRichTextStyle == null)
|
||||
{
|
||||
_HelpBoxRichTextStyle = new GUIStyle("HelpBox");
|
||||
_HelpBoxRichTextStyle.richText = true;
|
||||
}
|
||||
return _HelpBoxRichTextStyle;
|
||||
}
|
||||
}
|
||||
|
||||
//================================================================================================================================
|
||||
// Material Blue Header
|
||||
static public GUIStyle _MaterialHeaderStyle;
|
||||
static public GUIStyle MaterialHeaderStyle
|
||||
{
|
||||
get
|
||||
{
|
||||
if(_MaterialHeaderStyle == null)
|
||||
{
|
||||
_MaterialHeaderStyle = new GUIStyle(EditorStyles.label);
|
||||
_MaterialHeaderStyle.fontStyle = FontStyle.Bold;
|
||||
_MaterialHeaderStyle.fontSize = 11;
|
||||
_MaterialHeaderStyle.padding.top = 0;
|
||||
_MaterialHeaderStyle.padding.bottom = 0;
|
||||
_MaterialHeaderStyle.normal.textColor = EditorGUIUtility.isProSkin ? new Color32(75, 128, 255, 255) : new Color32(0, 50, 230, 255);
|
||||
_MaterialHeaderStyle.stretchWidth = true;
|
||||
}
|
||||
|
||||
return _MaterialHeaderStyle;
|
||||
}
|
||||
}
|
||||
|
||||
//================================================================================================================================
|
||||
// Material Header emboss effect
|
||||
static public GUIStyle _MaterialHeaderStyleHighlight;
|
||||
static public GUIStyle MaterialHeaderStyleHighlight
|
||||
{
|
||||
get
|
||||
{
|
||||
if(_MaterialHeaderStyleHighlight == null)
|
||||
{
|
||||
_MaterialHeaderStyleHighlight = new GUIStyle(MaterialHeaderStyle);
|
||||
_MaterialHeaderStyleHighlight.contentOffset = new Vector2(1, 1);
|
||||
_MaterialHeaderStyleHighlight.normal.textColor = EditorGUIUtility.isProSkin ? new Color32(255, 255, 255, 16) : new Color32(255, 255, 255, 32);
|
||||
}
|
||||
|
||||
return _MaterialHeaderStyleHighlight;
|
||||
}
|
||||
}
|
||||
|
||||
//================================================================================================================================
|
||||
// Filled rectangle
|
||||
|
||||
static private GUIStyle _WhiteRectangleStyle;
|
||||
|
||||
static public void DrawRectangle(Rect position, Color color)
|
||||
{
|
||||
var col = GUI.color;
|
||||
GUI.color *= color;
|
||||
DrawRectangle(position);
|
||||
GUI.color = col;
|
||||
}
|
||||
static public void DrawRectangle(Rect position)
|
||||
{
|
||||
if(_WhiteRectangleStyle == null)
|
||||
{
|
||||
_WhiteRectangleStyle = new GUIStyle();
|
||||
_WhiteRectangleStyle.normal.background = EditorGUIUtility.whiteTexture;
|
||||
}
|
||||
|
||||
if(Event.current != null && Event.current.type == EventType.Repaint)
|
||||
{
|
||||
_WhiteRectangleStyle.Draw(position, false, false, false, false);
|
||||
}
|
||||
}
|
||||
|
||||
//================================================================================================================================
|
||||
// Methods
|
||||
//================================================================================================================================
|
||||
|
||||
static public void DrawLine(float height = 2f)
|
||||
{
|
||||
DrawLine(Color.black, height);
|
||||
}
|
||||
static public void DrawLine(Color color, float height = 1f)
|
||||
{
|
||||
Rect position = GUILayoutUtility.GetRect(0f, float.MaxValue, height, height, LineStyle);
|
||||
DrawLine(position, color);
|
||||
}
|
||||
static public void DrawLine(Rect position, Color color)
|
||||
{
|
||||
if(Event.current.type == EventType.Repaint)
|
||||
{
|
||||
Color orgColor = GUI.color;
|
||||
GUI.color = orgColor * color;
|
||||
LineStyle.Draw(position, false, false, false, false);
|
||||
GUI.color = orgColor;
|
||||
}
|
||||
}
|
||||
|
||||
static public void MaterialDrawHeader(GUIContent guiContent)
|
||||
{
|
||||
var rect = GUILayoutUtility.GetRect(guiContent, MaterialHeaderStyle);
|
||||
GUI.Label(rect, guiContent, MaterialHeaderStyleHighlight);
|
||||
GUI.Label(rect, guiContent, MaterialHeaderStyle);
|
||||
}
|
||||
|
||||
static public void MaterialDrawSeparator()
|
||||
{
|
||||
GUILayout.Space(4);
|
||||
if(EditorGUIUtility.isProSkin)
|
||||
DrawLine(new Color(.3f, .3f, .3f, 1f), 1);
|
||||
else
|
||||
DrawLine(new Color(.6f, .6f, .6f, 1f), 1);
|
||||
GUILayout.Space(4);
|
||||
}
|
||||
|
||||
static public void MaterialDrawSeparatorDouble()
|
||||
{
|
||||
GUILayout.Space(6);
|
||||
if(EditorGUIUtility.isProSkin)
|
||||
{
|
||||
DrawLine(new Color(.1f, .1f, .1f, 1f), 1);
|
||||
DrawLine(new Color(.4f, .4f, .4f, 1f), 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
DrawLine(new Color(.3f, .3f, .3f, 1f), 1);
|
||||
DrawLine(new Color(.9f, .9f, .9f, 1f), 1);
|
||||
}
|
||||
GUILayout.Space(6);
|
||||
}
|
||||
|
||||
//built-in console icons, also used in help box
|
||||
static Texture2D warnIcon;
|
||||
static Texture2D infoIcon;
|
||||
static Texture2D errorIcon;
|
||||
|
||||
static public void HelpBoxRichText(Rect position, string message, MessageType msgType)
|
||||
{
|
||||
Texture2D icon = null;
|
||||
switch(msgType)
|
||||
{
|
||||
case MessageType.Warning: icon = warnIcon ?? (warnIcon = EditorGUIUtility.Load("console.warnicon") as Texture2D); break;
|
||||
case MessageType.Info: icon = infoIcon ?? (infoIcon = EditorGUIUtility.Load("console.infoicon") as Texture2D); break;
|
||||
case MessageType.Error: icon = errorIcon ?? (errorIcon = EditorGUIUtility.Load("console.erroricon") as Texture2D); break;
|
||||
}
|
||||
EditorGUI.LabelField(position, GUIContent.none, new GUIContent(message, icon), HelpBoxRichTextStyle);
|
||||
}
|
||||
|
||||
static public void HelpBoxRichText(string message, MessageType msgType)
|
||||
{
|
||||
Texture2D icon = null;
|
||||
switch(msgType)
|
||||
{
|
||||
case MessageType.Warning: icon = warnIcon ?? (warnIcon = EditorGUIUtility.Load("console.warnicon") as Texture2D); break;
|
||||
case MessageType.Info: icon = infoIcon ?? (infoIcon = EditorGUIUtility.Load("console.infoicon") as Texture2D); break;
|
||||
case MessageType.Error: icon = errorIcon ?? (errorIcon = EditorGUIUtility.Load("console.erroricon") as Texture2D); break;
|
||||
}
|
||||
EditorGUILayout.LabelField(GUIContent.none, new GUIContent(message, icon), HelpBoxRichTextStyle);
|
||||
}
|
||||
}
|
||||
}
|
||||
19
Assets/External/JMO Assets/Cartoon FX Remaster/CFXR Assets/Editor/CFXR_Styles.cs.meta
vendored
Normal file
19
Assets/External/JMO Assets/Cartoon FX Remaster/CFXR Assets/Editor/CFXR_Styles.cs.meta
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 26306333afc273640814fd7a7b3968e0
|
||||
timeCreated: 1501149213
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 109565
|
||||
packageName: Cartoon FX Remaster Free
|
||||
packageVersion: R 1.5.0
|
||||
assetPath: Assets/JMO Assets/Cartoon FX Remaster/CFXR Assets/Editor/CFXR_Styles.cs
|
||||
uploadId: 836238
|
||||
8
Assets/External/JMO Assets/Cartoon FX Remaster/CFXR Assets/Graphics.meta
vendored
Normal file
8
Assets/External/JMO Assets/Cartoon FX Remaster/CFXR Assets/Graphics.meta
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ae70c5d833aa6d74e9429910c18b70c6
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
113
Assets/External/JMO Assets/Cartoon FX Remaster/CFXR Assets/Graphics/cfxr aura rays hdr ab nosp.mat
vendored
Normal file
113
Assets/External/JMO Assets/Cartoon FX Remaster/CFXR Assets/Graphics/cfxr aura rays hdr ab nosp.mat
vendored
Normal file
@@ -0,0 +1,113 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: cfxr aura rays hdr ab nosp
|
||||
m_Shader: {fileID: -6465566751694194690, guid: 1a29b4d27eb8b04479ef89c00dea533d,
|
||||
type: 3}
|
||||
m_ValidKeywords:
|
||||
- _ALPHABLEND_ON
|
||||
- _CFXR_HDR_BOOST
|
||||
- _CFXR_SINGLE_CHANNEL
|
||||
m_InvalidKeywords:
|
||||
- _
|
||||
- _CFXR_DITHERED_SHADOWS_OFF
|
||||
- _CFXR_OVERLAYBLEND_RGBA
|
||||
- _CFXR_OVERLAYTEX_OFF
|
||||
m_LightmapFlags: 0
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DissolveTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DistortTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DitherCustom:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 2800000, guid: 4ece64fbaa1a3d14091abf505199104e, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OverlayTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _SecondColorTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _BacklightTransmittance: 1
|
||||
- _BlendingType: 0
|
||||
- _BumpScale: 1
|
||||
- _CFXR_DITHERED_SHADOWS: 0
|
||||
- _CFXR_OVERLAYBLEND: 0
|
||||
- _CFXR_OVERLAYTEX: 0
|
||||
- _Cutoff: 0.1
|
||||
- _DirLightScreenAtten: 1
|
||||
- _DirectLightingRamp: 1
|
||||
- _DissolveSmooth: 0.1
|
||||
- _Distort: 0.1
|
||||
- _DoubleDissolve: 0
|
||||
- _DstBlend: 10
|
||||
- _EdgeFadePow: 1
|
||||
- _FadeAlongU: 0
|
||||
- _HdrBoost: 1
|
||||
- _HdrMultiply: 2
|
||||
- _IndirectLightingMix: 0.5
|
||||
- _InvertDissolveTex: 0
|
||||
- _LightingWorldPosStrength: 0.2
|
||||
- _OVERLAYBLEND: 0
|
||||
- _OVERLAYTEX: 0
|
||||
- _SecondColorSmooth: 0.2
|
||||
- _ShadowStrength: 1
|
||||
- _SingleChannel: 1
|
||||
- _SoftParticlesFadeDistanceFar: 1
|
||||
- _SoftParticlesFadeDistanceNear: 0
|
||||
- _SrcBlend: 5
|
||||
- _UVDistortionAdd: 0
|
||||
- _UseAlphaClip: 0
|
||||
- _UseBackLighting: 0
|
||||
- _UseDissolve: 0
|
||||
- _UseDissolveOffsetUV: 0
|
||||
- _UseEF: 0
|
||||
- _UseEmission: 0
|
||||
- _UseFB: 0
|
||||
- _UseFontColor: 0
|
||||
- _UseLighting: 0
|
||||
- _UseLightingWorldPosOffset: 0
|
||||
- _UseNormalMap: 0
|
||||
- _UseSP: 0
|
||||
- _UseSecondColor: 0
|
||||
- _UseUV2Distortion: 0
|
||||
- _UseUVDistortion: 0
|
||||
- _ZWrite: 0
|
||||
m_Colors:
|
||||
- _Color: {r: 4.237095, g: 4.237095, b: 4.237095, a: 1}
|
||||
- _DissolveScroll: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _DistortScrolling: {r: 0, g: 0, b: 1, a: 1}
|
||||
- _OverlayTex_Scroll: {r: 0.1, g: 0.1, b: 1, a: 1}
|
||||
- _ShadowColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _SoftParticlesFadeDistance: {r: 0, g: 1, b: 0, a: 0}
|
||||
m_BuildTextureStacks: []
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user