master #57
6
.gitignore
vendored
6
.gitignore
vendored
@ -13,7 +13,5 @@
|
|||||||
/AxibugEmuOnline.Client/ProjectSettings/ProjectVersion.txt
|
/AxibugEmuOnline.Client/ProjectSettings/ProjectVersion.txt
|
||||||
/AxibugEmuOnline.Client/ProjectSettings/AutoStreamingSettings.asset
|
/AxibugEmuOnline.Client/ProjectSettings/AutoStreamingSettings.asset
|
||||||
/AxibugEmuOnline.Client/Logs
|
/AxibugEmuOnline.Client/Logs
|
||||||
/virtuanessrc097-master/save
|
|
||||||
/virtuanessrc097-master/.vs
|
/virtuanessrc097-master
|
||||||
/virtuanessrc097-master/Debug
|
|
||||||
/virtuanessrc097-master/VirtuaNES.ini
|
|
||||||
|
@ -458,6 +458,7 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: 39557e19783acee499ace6c68549e8f8, type: 3}
|
m_Script: {fileID: 11500000, guid: 39557e19783acee499ace6c68549e8f8, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
|
InputTemplate: {fileID: 0}
|
||||||
VideoProvider: {fileID: 4232056520112715744}
|
VideoProvider: {fileID: 4232056520112715744}
|
||||||
AudioProvider: {fileID: 9003897287163669553}
|
AudioProvider: {fileID: 9003897287163669553}
|
||||||
m_bPause: 0
|
m_bPause: 0
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 3ecc1c637c161184099b69c3d7a0f354
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -0,0 +1,822 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &29419265480821815
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 8126322204359135913}
|
||||||
|
- component: {fileID: 2718916271043989317}
|
||||||
|
- component: {fileID: 3380485461544738227}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Descript
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &8126322204359135913
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 29419265480821815}
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 8789823129857705082}
|
||||||
|
m_RootOrder: 3
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 0, y: 0}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 0, y: 33}
|
||||||
|
m_Pivot: {x: 0, y: 1}
|
||||||
|
--- !u!222 &2718916271043989317
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 29419265480821815}
|
||||||
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &3380485461544738227
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 29419265480821815}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_RaycastTarget: 1
|
||||||
|
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_FontData:
|
||||||
|
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_FontSize: 20
|
||||||
|
m_FontStyle: 0
|
||||||
|
m_BestFit: 0
|
||||||
|
m_MinSize: 2
|
||||||
|
m_MaxSize: 300
|
||||||
|
m_Alignment: 0
|
||||||
|
m_AlignByGeometry: 0
|
||||||
|
m_RichText: 1
|
||||||
|
m_HorizontalOverflow: 0
|
||||||
|
m_VerticalOverflow: 1
|
||||||
|
m_LineSpacing: 1
|
||||||
|
m_Text: DESCRIBTIONDESCRIBTIONDESCRIBTIONDESCRIBTIONDESCRIBTIONDESCRIBTIONDESCRIBTIONDESCRIBTIONDESCRIBTIONDESCRIBTIONDESCRIBTION
|
||||||
|
--- !u!1 &734025543935719296
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1323634865265500141}
|
||||||
|
- component: {fileID: 5792146190930927166}
|
||||||
|
- component: {fileID: 2619187604372594158}
|
||||||
|
- component: {fileID: 1779247868001543556}
|
||||||
|
- component: {fileID: 4496630961732192070}
|
||||||
|
- component: {fileID: 2059277597780235898}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: shadowIcon
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &1323634865265500141
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 734025543935719296}
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 2}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 8754483333502849411}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0.5}
|
||||||
|
m_AnchorMax: {x: 0, y: 0.5}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 100, y: 100}
|
||||||
|
m_Pivot: {x: 0, y: 0.5}
|
||||||
|
--- !u!222 &5792146190930927166
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 734025543935719296}
|
||||||
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &2619187604372594158
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 734025543935719296}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_Color: {r: 1, g: 0.4577373, b: 0, a: 1}
|
||||||
|
m_RaycastTarget: 1
|
||||||
|
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_Sprite: {fileID: 21300000, guid: 8706af46c93329b4da3c86c0b13b886e, type: 3}
|
||||||
|
m_Type: 0
|
||||||
|
m_PreserveAspect: 0
|
||||||
|
m_FillCenter: 0
|
||||||
|
m_FillMethod: 4
|
||||||
|
m_FillAmount: 1
|
||||||
|
m_FillClockwise: 1
|
||||||
|
m_FillOrigin: 0
|
||||||
|
m_UseSpriteMesh: 0
|
||||||
|
m_PixelsPerUnitMultiplier: 1
|
||||||
|
--- !u!114 &1779247868001543556
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 734025543935719296}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: f8b2ed11d675446c5a49da1ea296d490, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Version: 300
|
||||||
|
m_EffectMaterial: {fileID: 21305736874167728, guid: aee96bc531e6eba468ec405e536f515f, type: 2}
|
||||||
|
m_EffectFactor: 0
|
||||||
|
m_ColorFactor: 0
|
||||||
|
m_BlurFactor: 0
|
||||||
|
m_EffectMode: 0
|
||||||
|
m_ColorMode: 1
|
||||||
|
m_BlurMode: 3
|
||||||
|
m_AdvancedBlur: 1
|
||||||
|
m_ShadowBlur: 1
|
||||||
|
m_ShadowStyle: 0
|
||||||
|
m_ShadowColor: {r: 0, g: 0, b: 0, a: 1}
|
||||||
|
m_EffectDistance: {x: 1, y: -1}
|
||||||
|
m_UseGraphicAlpha: 1
|
||||||
|
m_EffectColor: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_AdditionalShadows: []
|
||||||
|
--- !u!114 &4496630961732192070
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 734025543935719296}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 0848bff101191904ead4bb831f7084db, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_BlurFactor: 1
|
||||||
|
m_Style: 3
|
||||||
|
m_AdditionalShadows: []
|
||||||
|
m_EffectColor: {r: 1, g: 1, b: 1, a: 0}
|
||||||
|
m_EffectDistance: {x: 8, y: 8}
|
||||||
|
m_UseGraphicAlpha: 0
|
||||||
|
--- !u!95 &2059277597780235898
|
||||||
|
Animator:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 734025543935719296}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_Avatar: {fileID: 0}
|
||||||
|
m_Controller: {fileID: 9100000, guid: 0b3ccf7414d2ead43be0cd33b6e1b53c, type: 2}
|
||||||
|
m_CullingMode: 0
|
||||||
|
m_UpdateMode: 0
|
||||||
|
m_ApplyRootMotion: 0
|
||||||
|
m_LinearVelocityBlending: 0
|
||||||
|
m_WarningMessage:
|
||||||
|
m_HasTransformHierarchy: 1
|
||||||
|
m_AllowConstantClipSamplingOptimization: 1
|
||||||
|
m_KeepAnimatorControllerStateOnDisable: 0
|
||||||
|
--- !u!1 &1776357407830023228
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 6087025893861054323}
|
||||||
|
- component: {fileID: 7036072602178187444}
|
||||||
|
- component: {fileID: 6771349210554360888}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Icon
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &6087025893861054323
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1776357407830023228}
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 2}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 8754483333502849411}
|
||||||
|
m_RootOrder: 1
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 1, y: 1}
|
||||||
|
m_AnchoredPosition: {x: -200, y: 0}
|
||||||
|
m_SizeDelta: {x: -396, y: 4}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &7036072602178187444
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1776357407830023228}
|
||||||
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &6771349210554360888
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1776357407830023228}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_RaycastTarget: 1
|
||||||
|
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_Sprite: {fileID: 21300000, guid: 8706af46c93329b4da3c86c0b13b886e, type: 3}
|
||||||
|
m_Type: 0
|
||||||
|
m_PreserveAspect: 0
|
||||||
|
m_FillCenter: 0
|
||||||
|
m_FillMethod: 4
|
||||||
|
m_FillAmount: 1
|
||||||
|
m_FillClockwise: 1
|
||||||
|
m_FillOrigin: 0
|
||||||
|
m_UseSpriteMesh: 0
|
||||||
|
m_PixelsPerUnitMultiplier: 1
|
||||||
|
--- !u!1 &3189920797946144379
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1998281097548910301}
|
||||||
|
- component: {fileID: 5700455559359757662}
|
||||||
|
- component: {fileID: 1719219194513122235}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: FilterItemTemplate
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &1998281097548910301
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3189920797946144379}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 8754483333502849411}
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||||
|
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 500, y: 100}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!114 &5700455559359757662
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3189920797946144379}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_IgnoreLayout: 0
|
||||||
|
m_MinWidth: -1
|
||||||
|
m_MinHeight: -1
|
||||||
|
m_PreferredWidth: 200
|
||||||
|
m_PreferredHeight: 230
|
||||||
|
m_FlexibleWidth: -1
|
||||||
|
m_FlexibleHeight: -1
|
||||||
|
m_LayoutPriority: 1
|
||||||
|
--- !u!114 &1719219194513122235
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3189920797946144379}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 267dda362a6090d42b48e3cced57ae9c, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
Icon: {fileID: 6771349210554360888}
|
||||||
|
Txt: {fileID: 991446423622995247}
|
||||||
|
SubTitle: {fileID: 6534898873012636952}
|
||||||
|
spline: {fileID: 4812759387377418448}
|
||||||
|
Descript: {fileID: 3380485461544738227}
|
||||||
|
Root: {fileID: 8754483333502849411}
|
||||||
|
ShadowIcon: {fileID: 2619187604372594158}
|
||||||
|
InfoNode: {fileID: 6788248266412682264}
|
||||||
|
SubMenuItemGroup: {fileID: 0}
|
||||||
|
SelectScale: 1
|
||||||
|
UnSelectScale: 0.85
|
||||||
|
--- !u!1 &3993825260653792697
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 8789823129857705082}
|
||||||
|
- component: {fileID: 3252398029444565139}
|
||||||
|
- component: {fileID: 6788248266412682264}
|
||||||
|
- component: {fileID: 8081109478688381999}
|
||||||
|
- component: {fileID: 6660646139021869069}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: InfoNode
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &8789823129857705082
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3993825260653792697}
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 6095356919362338847}
|
||||||
|
- {fileID: 6797116381500671839}
|
||||||
|
- {fileID: 6673031368290035463}
|
||||||
|
- {fileID: 8126322204359135913}
|
||||||
|
m_Father: {fileID: 8754483333502849411}
|
||||||
|
m_RootOrder: 2
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
|
m_AnchoredPosition: {x: 100, y: 0}
|
||||||
|
m_SizeDelta: {x: 600, y: 0}
|
||||||
|
m_Pivot: {x: 0, y: 0.5}
|
||||||
|
--- !u!114 &3252398029444565139
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3993825260653792697}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Padding:
|
||||||
|
m_Left: 20
|
||||||
|
m_Right: 0
|
||||||
|
m_Top: 13
|
||||||
|
m_Bottom: 0
|
||||||
|
m_ChildAlignment: 0
|
||||||
|
m_Spacing: 0
|
||||||
|
m_ChildForceExpandWidth: 1
|
||||||
|
m_ChildForceExpandHeight: 0
|
||||||
|
m_ChildControlWidth: 1
|
||||||
|
m_ChildControlHeight: 0
|
||||||
|
m_ChildScaleWidth: 0
|
||||||
|
m_ChildScaleHeight: 0
|
||||||
|
m_ReverseArrangement: 0
|
||||||
|
--- !u!225 &6788248266412682264
|
||||||
|
CanvasGroup:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3993825260653792697}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_Alpha: 1
|
||||||
|
m_Interactable: 1
|
||||||
|
m_BlocksRaycasts: 1
|
||||||
|
m_IgnoreParentGroups: 0
|
||||||
|
--- !u!222 &8081109478688381999
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3993825260653792697}
|
||||||
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &6660646139021869069
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3993825260653792697}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 0}
|
||||||
|
m_RaycastTarget: 1
|
||||||
|
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_Sprite: {fileID: 0}
|
||||||
|
m_Type: 0
|
||||||
|
m_PreserveAspect: 0
|
||||||
|
m_FillCenter: 1
|
||||||
|
m_FillMethod: 4
|
||||||
|
m_FillAmount: 1
|
||||||
|
m_FillClockwise: 1
|
||||||
|
m_FillOrigin: 0
|
||||||
|
m_UseSpriteMesh: 0
|
||||||
|
m_PixelsPerUnitMultiplier: 1
|
||||||
|
--- !u!1 &5340761592919397836
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 6095356919362338847}
|
||||||
|
- component: {fileID: 7651669947470814669}
|
||||||
|
- component: {fileID: 991446423622995247}
|
||||||
|
- component: {fileID: 8545526122445709124}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Name
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &6095356919362338847
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5340761592919397836}
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 8986746042327041630}
|
||||||
|
m_Father: {fileID: 8789823129857705082}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 0, y: 0}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 0, y: 33}
|
||||||
|
m_Pivot: {x: 0, y: 1}
|
||||||
|
--- !u!222 &7651669947470814669
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5340761592919397836}
|
||||||
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &991446423622995247
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5340761592919397836}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_RaycastTarget: 1
|
||||||
|
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_FontData:
|
||||||
|
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_FontSize: 30
|
||||||
|
m_FontStyle: 0
|
||||||
|
m_BestFit: 0
|
||||||
|
m_MinSize: 2
|
||||||
|
m_MaxSize: 300
|
||||||
|
m_Alignment: 3
|
||||||
|
m_AlignByGeometry: 0
|
||||||
|
m_RichText: 1
|
||||||
|
m_HorizontalOverflow: 1
|
||||||
|
m_VerticalOverflow: 1
|
||||||
|
m_LineSpacing: 1
|
||||||
|
m_Text: NAME
|
||||||
|
--- !u!114 &8545526122445709124
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5340761592919397836}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: e19747de3f5aca642ab2be37e372fb86, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_EffectColor: {r: 0, g: 0, b: 0, a: 0.5}
|
||||||
|
m_EffectDistance: {x: 1.5, y: 1.5}
|
||||||
|
m_UseGraphicAlpha: 1
|
||||||
|
--- !u!1 &5468696000904882177
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 8986746042327041630}
|
||||||
|
- component: {fileID: 952406696262539679}
|
||||||
|
- component: {fileID: 6534898873012636952}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: subTitle
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &8986746042327041630
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5468696000904882177}
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 6095356919362338847}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 1, y: 0.5}
|
||||||
|
m_AnchorMax: {x: 1, y: 0.5}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 580, y: 33}
|
||||||
|
m_Pivot: {x: 1, y: 0.5}
|
||||||
|
--- !u!222 &952406696262539679
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5468696000904882177}
|
||||||
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &6534898873012636952
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5468696000904882177}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_RaycastTarget: 1
|
||||||
|
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_FontData:
|
||||||
|
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_FontSize: 25
|
||||||
|
m_FontStyle: 0
|
||||||
|
m_BestFit: 0
|
||||||
|
m_MinSize: 2
|
||||||
|
m_MaxSize: 300
|
||||||
|
m_Alignment: 5
|
||||||
|
m_AlignByGeometry: 0
|
||||||
|
m_RichText: 1
|
||||||
|
m_HorizontalOverflow: 1
|
||||||
|
m_VerticalOverflow: 1
|
||||||
|
m_LineSpacing: 1
|
||||||
|
m_Text: 4324234
|
||||||
|
--- !u!1 &6688216270065609628
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 6797116381500671839}
|
||||||
|
- component: {fileID: 5682159953164052307}
|
||||||
|
- component: {fileID: 4812759387377418448}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: spline
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &6797116381500671839
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 6688216270065609628}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 8789823129857705082}
|
||||||
|
m_RootOrder: 1
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 0, y: 0}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 0, y: 4}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &5682159953164052307
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 6688216270065609628}
|
||||||
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &4812759387377418448
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 6688216270065609628}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_RaycastTarget: 1
|
||||||
|
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_Sprite: {fileID: 0}
|
||||||
|
m_Type: 0
|
||||||
|
m_PreserveAspect: 0
|
||||||
|
m_FillCenter: 1
|
||||||
|
m_FillMethod: 4
|
||||||
|
m_FillAmount: 1
|
||||||
|
m_FillClockwise: 1
|
||||||
|
m_FillOrigin: 0
|
||||||
|
m_UseSpriteMesh: 0
|
||||||
|
m_PixelsPerUnitMultiplier: 1
|
||||||
|
--- !u!1 &8290338740711049006
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 8754483333502849411}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Root
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &8754483333502849411
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 8290338740711049006}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 1323634865265500141}
|
||||||
|
- {fileID: 6087025893861054323}
|
||||||
|
- {fileID: 8789823129857705082}
|
||||||
|
m_Father: {fileID: 1998281097548910301}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 1, y: 1}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 0, y: 0}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!1 &9036340599819825964
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 6673031368290035463}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: space
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &6673031368290035463
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 9036340599819825964}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 8789823129857705082}
|
||||||
|
m_RootOrder: 2
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 0, y: 0}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 0, y: 10}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 52fd21b2efaed0c4fa5229087906809a
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
@ -1,182 +0,0 @@
|
|||||||
%YAML 1.1
|
|
||||||
%TAG !u! tag:unity3d.com,2011:
|
|
||||||
--- !u!29 &1
|
|
||||||
OcclusionCullingSettings:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
serializedVersion: 2
|
|
||||||
m_OcclusionBakeSettings:
|
|
||||||
smallestOccluder: 5
|
|
||||||
smallestHole: 0.25
|
|
||||||
backfaceThreshold: 100
|
|
||||||
m_SceneGUID: 00000000000000000000000000000000
|
|
||||||
m_OcclusionCullingData: {fileID: 0}
|
|
||||||
--- !u!104 &2
|
|
||||||
RenderSettings:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
serializedVersion: 9
|
|
||||||
m_Fog: 0
|
|
||||||
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
|
|
||||||
m_FogMode: 3
|
|
||||||
m_FogDensity: 0.01
|
|
||||||
m_LinearFogStart: 0
|
|
||||||
m_LinearFogEnd: 300
|
|
||||||
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
|
|
||||||
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
|
|
||||||
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
|
|
||||||
m_AmbientIntensity: 1
|
|
||||||
m_AmbientMode: 0
|
|
||||||
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
|
|
||||||
m_SkyboxMaterial: {fileID: 0}
|
|
||||||
m_HaloStrength: 0.5
|
|
||||||
m_FlareStrength: 1
|
|
||||||
m_FlareFadeSpeed: 3
|
|
||||||
m_HaloTexture: {fileID: 0}
|
|
||||||
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
|
|
||||||
m_DefaultReflectionMode: 0
|
|
||||||
m_DefaultReflectionResolution: 128
|
|
||||||
m_ReflectionBounces: 1
|
|
||||||
m_ReflectionIntensity: 1
|
|
||||||
m_CustomReflection: {fileID: 0}
|
|
||||||
m_Sun: {fileID: 0}
|
|
||||||
m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
|
|
||||||
m_UseRadianceAmbientProbe: 0
|
|
||||||
--- !u!157 &3
|
|
||||||
LightmapSettings:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
serializedVersion: 12
|
|
||||||
m_GIWorkflowMode: 1
|
|
||||||
m_GISettings:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_BounceScale: 1
|
|
||||||
m_IndirectOutputScale: 1
|
|
||||||
m_AlbedoBoost: 1
|
|
||||||
m_EnvironmentLightingMode: 0
|
|
||||||
m_EnableBakedLightmaps: 1
|
|
||||||
m_EnableRealtimeLightmaps: 0
|
|
||||||
m_LightmapEditorSettings:
|
|
||||||
serializedVersion: 12
|
|
||||||
m_Resolution: 2
|
|
||||||
m_BakeResolution: 40
|
|
||||||
m_AtlasSize: 1024
|
|
||||||
m_AO: 0
|
|
||||||
m_AOMaxDistance: 1
|
|
||||||
m_CompAOExponent: 1
|
|
||||||
m_CompAOExponentDirect: 0
|
|
||||||
m_ExtractAmbientOcclusion: 0
|
|
||||||
m_Padding: 2
|
|
||||||
m_LightmapParameters: {fileID: 0}
|
|
||||||
m_LightmapsBakeMode: 1
|
|
||||||
m_TextureCompression: 1
|
|
||||||
m_FinalGather: 0
|
|
||||||
m_FinalGatherFiltering: 1
|
|
||||||
m_FinalGatherRayCount: 256
|
|
||||||
m_ReflectionCompression: 2
|
|
||||||
m_MixedBakeMode: 2
|
|
||||||
m_BakeBackend: 1
|
|
||||||
m_PVRSampling: 1
|
|
||||||
m_PVRDirectSampleCount: 32
|
|
||||||
m_PVRSampleCount: 512
|
|
||||||
m_PVRBounces: 2
|
|
||||||
m_PVREnvironmentSampleCount: 256
|
|
||||||
m_PVREnvironmentReferencePointCount: 2048
|
|
||||||
m_PVRFilteringMode: 1
|
|
||||||
m_PVRDenoiserTypeDirect: 1
|
|
||||||
m_PVRDenoiserTypeIndirect: 1
|
|
||||||
m_PVRDenoiserTypeAO: 1
|
|
||||||
m_PVRFilterTypeDirect: 0
|
|
||||||
m_PVRFilterTypeIndirect: 0
|
|
||||||
m_PVRFilterTypeAO: 0
|
|
||||||
m_PVREnvironmentMIS: 1
|
|
||||||
m_PVRCulling: 1
|
|
||||||
m_PVRFilteringGaussRadiusDirect: 1
|
|
||||||
m_PVRFilteringGaussRadiusIndirect: 5
|
|
||||||
m_PVRFilteringGaussRadiusAO: 2
|
|
||||||
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
|
|
||||||
m_PVRFilteringAtrousPositionSigmaIndirect: 2
|
|
||||||
m_PVRFilteringAtrousPositionSigmaAO: 1
|
|
||||||
m_ExportTrainingData: 0
|
|
||||||
m_TrainingDataDestination: TrainingData
|
|
||||||
m_LightProbeSampleCountMultiplier: 4
|
|
||||||
m_LightingDataAsset: {fileID: 0}
|
|
||||||
m_LightingSettings: {fileID: 0}
|
|
||||||
--- !u!196 &4
|
|
||||||
NavMeshSettings:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_BuildSettings:
|
|
||||||
serializedVersion: 2
|
|
||||||
agentTypeID: 0
|
|
||||||
agentRadius: 0.5
|
|
||||||
agentHeight: 2
|
|
||||||
agentSlope: 45
|
|
||||||
agentClimb: 0.4
|
|
||||||
ledgeDropHeight: 0
|
|
||||||
maxJumpAcrossDistance: 0
|
|
||||||
minRegionArea: 2
|
|
||||||
manualCellSize: 0
|
|
||||||
cellSize: 0.16666667
|
|
||||||
manualTileSize: 0
|
|
||||||
tileSize: 256
|
|
||||||
accuratePlacement: 0
|
|
||||||
maxJobWorkers: 0
|
|
||||||
preserveTilesOutsideBounds: 0
|
|
||||||
debug:
|
|
||||||
m_Flags: 0
|
|
||||||
m_NavMeshData: {fileID: 0}
|
|
||||||
--- !u!1001 &4232056520998800727
|
|
||||||
PrefabInstance:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Modification:
|
|
||||||
m_TransformParent: {fileID: 0}
|
|
||||||
m_Modifications:
|
|
||||||
- target: {fileID: 4232056521131536011, guid: f8bea3f8aa351bb46ada33b2274729ea, type: 3}
|
|
||||||
propertyPath: m_RootOrder
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 4232056521131536011, guid: f8bea3f8aa351bb46ada33b2274729ea, type: 3}
|
|
||||||
propertyPath: m_LocalPosition.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 4232056521131536011, guid: f8bea3f8aa351bb46ada33b2274729ea, type: 3}
|
|
||||||
propertyPath: m_LocalPosition.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 4232056521131536011, guid: f8bea3f8aa351bb46ada33b2274729ea, type: 3}
|
|
||||||
propertyPath: m_LocalPosition.z
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 4232056521131536011, guid: f8bea3f8aa351bb46ada33b2274729ea, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.w
|
|
||||||
value: 1
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 4232056521131536011, guid: f8bea3f8aa351bb46ada33b2274729ea, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 4232056521131536011, guid: f8bea3f8aa351bb46ada33b2274729ea, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 4232056521131536011, guid: f8bea3f8aa351bb46ada33b2274729ea, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.z
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 4232056521131536011, guid: f8bea3f8aa351bb46ada33b2274729ea, type: 3}
|
|
||||||
propertyPath: m_LocalEulerAnglesHint.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 4232056521131536011, guid: f8bea3f8aa351bb46ada33b2274729ea, type: 3}
|
|
||||||
propertyPath: m_LocalEulerAnglesHint.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 4232056521131536011, guid: f8bea3f8aa351bb46ada33b2274729ea, type: 3}
|
|
||||||
propertyPath: m_LocalEulerAnglesHint.z
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 4232056521131536013, guid: f8bea3f8aa351bb46ada33b2274729ea, type: 3}
|
|
||||||
propertyPath: m_Name
|
|
||||||
value: NesEmulator
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
m_RemovedComponents: []
|
|
||||||
m_SourcePrefab: {fileID: 100100000, guid: f8bea3f8aa351bb46ada33b2274729ea, type: 3}
|
|
@ -1,38 +0,0 @@
|
|||||||
%YAML 1.1
|
|
||||||
%TAG !u! tag:unity3d.com,2011:
|
|
||||||
--- !u!84 &8400000
|
|
||||||
RenderTexture:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: New Render Texture
|
|
||||||
m_ImageContentsHash:
|
|
||||||
serializedVersion: 2
|
|
||||||
Hash: 00000000000000000000000000000000
|
|
||||||
m_ForcedFallbackFormat: 4
|
|
||||||
m_DownscaleFallback: 0
|
|
||||||
m_IsAlphaChannelOptional: 0
|
|
||||||
serializedVersion: 3
|
|
||||||
m_Width: 256
|
|
||||||
m_Height: 240
|
|
||||||
m_AntiAliasing: 1
|
|
||||||
m_MipCount: -1
|
|
||||||
m_DepthFormat: 0
|
|
||||||
m_ColorFormat: 8
|
|
||||||
m_MipMap: 0
|
|
||||||
m_GenerateMips: 1
|
|
||||||
m_SRGB: 0
|
|
||||||
m_UseDynamicScale: 0
|
|
||||||
m_BindMS: 0
|
|
||||||
m_EnableCompatibleFormat: 1
|
|
||||||
m_TextureSettings:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_FilterMode: 1
|
|
||||||
m_Aniso: 0
|
|
||||||
m_MipBias: 0
|
|
||||||
m_WrapU: 1
|
|
||||||
m_WrapV: 1
|
|
||||||
m_WrapW: 1
|
|
||||||
m_Dimension: 2
|
|
||||||
m_VolumeDepth: 1
|
|
@ -5,7 +5,7 @@ using System.IO;
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.Networking;
|
using UnityEngine.Networking;
|
||||||
using UnityEngine.Scripting;
|
using UnityEngine.Rendering.PostProcessing;
|
||||||
using static AxibugEmuOnline.Client.HttpAPI;
|
using static AxibugEmuOnline.Client.HttpAPI;
|
||||||
using static AxibugEmuOnline.Client.Manager.LogManager;
|
using static AxibugEmuOnline.Client.Manager.LogManager;
|
||||||
|
|
||||||
@ -28,6 +28,7 @@ namespace AxibugEmuOnline.Client.ClientCore
|
|||||||
public static CacheManager CacheMgr;
|
public static CacheManager CacheMgr;
|
||||||
public static AppRoom roomMgr;
|
public static AppRoom roomMgr;
|
||||||
public static AppSettings settings;
|
public static AppSettings settings;
|
||||||
|
public static FilterManager filter;
|
||||||
#region Mono
|
#region Mono
|
||||||
public static TickLoop tickLoop;
|
public static TickLoop tickLoop;
|
||||||
private static CoroutineRunner coRunner;
|
private static CoroutineRunner coRunner;
|
||||||
@ -38,12 +39,7 @@ namespace AxibugEmuOnline.Client.ClientCore
|
|||||||
#else
|
#else
|
||||||
public static string PersistentDataPath => Application.persistentDataPath;
|
public static string PersistentDataPath => Application.persistentDataPath;
|
||||||
#endif
|
#endif
|
||||||
|
public static void Init(Initer initer)
|
||||||
|
|
||||||
|
|
||||||
//[Preserve]
|
|
||||||
//[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterAssembliesLoaded)]
|
|
||||||
public static void Init()
|
|
||||||
{
|
{
|
||||||
settings = new AppSettings();
|
settings = new AppSettings();
|
||||||
|
|
||||||
@ -59,6 +55,7 @@ namespace AxibugEmuOnline.Client.ClientCore
|
|||||||
nesRomLib = new RomLib(EnumPlatform.NES);
|
nesRomLib = new RomLib(EnumPlatform.NES);
|
||||||
CacheMgr = new CacheManager();
|
CacheMgr = new CacheManager();
|
||||||
roomMgr = new AppRoom();
|
roomMgr = new AppRoom();
|
||||||
|
filter = new FilterManager(initer.m_filterVolume, initer.m_filterPreview,initer.m_xmbBg);
|
||||||
var go = new GameObject("[AppAxibugEmuOnline]");
|
var go = new GameObject("[AppAxibugEmuOnline]");
|
||||||
GameObject.DontDestroyOnLoad(go);
|
GameObject.DontDestroyOnLoad(go);
|
||||||
tickLoop = go.AddComponent<TickLoop>();
|
tickLoop = go.AddComponent<TickLoop>();
|
||||||
|
@ -4,7 +4,9 @@
|
|||||||
"references": [
|
"references": [
|
||||||
"GUID:390a2c4058e5c304a87e8be70c84d80b",
|
"GUID:390a2c4058e5c304a87e8be70c84d80b",
|
||||||
"GUID:085dc26d74e6f994a924d401ea41a5a8",
|
"GUID:085dc26d74e6f994a924d401ea41a5a8",
|
||||||
"GUID:0a45db2096af23647aaafe5b70ccb4d7"
|
"GUID:0a45db2096af23647aaafe5b70ccb4d7",
|
||||||
|
"GUID:75469ad4d38634e559750d17036d5f7c",
|
||||||
|
"GUID:d60799ab2a985554ea1a39cd38695018"
|
||||||
],
|
],
|
||||||
"includePlatforms": [],
|
"includePlatforms": [],
|
||||||
"excludePlatforms": [],
|
"excludePlatforms": [],
|
||||||
|
@ -1,65 +0,0 @@
|
|||||||
using System.Collections.Generic;
|
|
||||||
using UnityEngine;
|
|
||||||
|
|
||||||
namespace AxibugEmuOnline.Client
|
|
||||||
{
|
|
||||||
public abstract class ControlScheme
|
|
||||||
{
|
|
||||||
private static ControlScheme m_current;
|
|
||||||
public static ControlScheme Current
|
|
||||||
{
|
|
||||||
get => m_current;
|
|
||||||
set
|
|
||||||
{
|
|
||||||
m_current = value;
|
|
||||||
|
|
||||||
Dictionary<KeyCode, EnumCommand> mapper = new Dictionary<KeyCode, EnumCommand>();
|
|
||||||
m_current.SetUIKeys(mapper);
|
|
||||||
CommandDispatcher.Instance.SetKeyMapper(mapper);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public string Name { get; private set; }
|
|
||||||
|
|
||||||
public virtual void SetUIKeys(Dictionary<KeyCode, EnumCommand> uiKeyMapper)
|
|
||||||
{
|
|
||||||
uiKeyMapper[KeyCode.A] = EnumCommand.SelectItemLeft;
|
|
||||||
uiKeyMapper[KeyCode.D] = EnumCommand.SelectItemRight;
|
|
||||||
uiKeyMapper[KeyCode.W] = EnumCommand.SelectItemUp;
|
|
||||||
uiKeyMapper[KeyCode.S] = EnumCommand.SelectItemDown;
|
|
||||||
uiKeyMapper[KeyCode.K] = EnumCommand.Enter;
|
|
||||||
uiKeyMapper[KeyCode.L] = EnumCommand.Back;
|
|
||||||
uiKeyMapper[KeyCode.I] = EnumCommand.OptionMenu;
|
|
||||||
|
|
||||||
uiKeyMapper[KeyCode.LeftArrow] = EnumCommand.SelectItemLeft;
|
|
||||||
uiKeyMapper[KeyCode.RightArrow] = EnumCommand.SelectItemRight;
|
|
||||||
uiKeyMapper[KeyCode.UpArrow] = EnumCommand.SelectItemUp;
|
|
||||||
uiKeyMapper[KeyCode.DownArrow] = EnumCommand.SelectItemDown;
|
|
||||||
uiKeyMapper[KeyCode.Return] = EnumCommand.Enter;
|
|
||||||
uiKeyMapper[KeyCode.Escape] = EnumCommand.Back;
|
|
||||||
uiKeyMapper[KeyCode.RightShift] = EnumCommand.OptionMenu;
|
|
||||||
uiKeyMapper[KeyCode.LeftShift] = EnumCommand.OptionMenu;
|
|
||||||
|
|
||||||
if (Application.platform == RuntimePlatform.PSP2)
|
|
||||||
{
|
|
||||||
uiKeyMapper[Common.PSVitaKey.Left] = EnumCommand.SelectItemLeft;
|
|
||||||
uiKeyMapper[Common.PSVitaKey.Right] = EnumCommand.SelectItemRight;
|
|
||||||
uiKeyMapper[Common.PSVitaKey.Up] = EnumCommand.SelectItemUp;
|
|
||||||
uiKeyMapper[Common.PSVitaKey.Down] = EnumCommand.SelectItemDown;
|
|
||||||
uiKeyMapper[Common.PSVitaKey.Circle] = EnumCommand.Enter;
|
|
||||||
uiKeyMapper[Common.PSVitaKey.Cross] = EnumCommand.Back;
|
|
||||||
uiKeyMapper[Common.PSVitaKey.Triangle] = EnumCommand.OptionMenu;
|
|
||||||
}
|
|
||||||
|
|
||||||
//PC XBOX
|
|
||||||
|
|
||||||
//uiKeyMapper[Common.PC_XBOXKEY.Left] = EnumCommand.SelectItemLeft;
|
|
||||||
//uiKeyMapper[Common.PSVitaKey.Right] = EnumCommand.SelectItemRight;
|
|
||||||
//uiKeyMapper[Common.PSVitaKey.Up] = EnumCommand.SelectItemUp;
|
|
||||||
//uiKeyMapper[Common.PSVitaKey.Down] = EnumCommand.SelectItemDown;
|
|
||||||
uiKeyMapper[Common.PC_XBOXKEY.MenuBtn] = EnumCommand.Enter;
|
|
||||||
uiKeyMapper[Common.PC_XBOXKEY.ViewBtn] = EnumCommand.Back;
|
|
||||||
uiKeyMapper[Common.PC_XBOXKEY.Y] = EnumCommand.OptionMenu;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,27 +0,0 @@
|
|||||||
using System.Collections.Generic;
|
|
||||||
using UnityEngine;
|
|
||||||
|
|
||||||
namespace AxibugEmuOnline.Client
|
|
||||||
{
|
|
||||||
public class NesGamingScheme : ControlScheme
|
|
||||||
{
|
|
||||||
public override void SetUIKeys(Dictionary<KeyCode, EnumCommand> uiKeyMapper)
|
|
||||||
{
|
|
||||||
uiKeyMapper[KeyCode.Escape] = EnumCommand.OptionMenu;
|
|
||||||
|
|
||||||
if (Application.platform == RuntimePlatform.PSP2)
|
|
||||||
{
|
|
||||||
uiKeyMapper[Common.PSVitaKey.L] = EnumCommand.OptionMenu;
|
|
||||||
uiKeyMapper[Common.PSVitaKey.R] = EnumCommand.OptionMenu;
|
|
||||||
}
|
|
||||||
|
|
||||||
//PC XBOX
|
|
||||||
uiKeyMapper[Common.PC_XBOXKEY.Y] = EnumCommand.OptionMenu;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static partial class ControlSchemeSetts
|
|
||||||
{
|
|
||||||
public static NesGamingScheme NES { get; private set; } = new NesGamingScheme();
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,18 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace AxibugEmuOnline.Client
|
|
||||||
{
|
|
||||||
|
|
||||||
public class NormalScheme : ControlScheme
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public static partial class ControlSchemeSetts
|
|
||||||
{
|
|
||||||
public static NormalScheme Normal { get; private set; } = new NormalScheme();
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,5 +1,6 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 3dba71db67877594a9b5b77059205ec8
|
guid: 65f05f831c65bb042a8db3bf301f54ec
|
||||||
|
folderAsset: yes
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
userData:
|
userData:
|
77
AxibugEmuOnline.Client/Assets/Script/Filter/FilterEffect.cs
Normal file
77
AxibugEmuOnline.Client/Assets/Script/Filter/FilterEffect.cs
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Reflection;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.Rendering.PostProcessing;
|
||||||
|
|
||||||
|
namespace AxibugEmuOnline.Client
|
||||||
|
{
|
||||||
|
public abstract class FilterEffect : PostProcessEffectSettings
|
||||||
|
{
|
||||||
|
private List<EditableParamerter> m_editableParamList;
|
||||||
|
|
||||||
|
public IReadOnlyCollection<EditableParamerter> EditableParam => m_editableParamList.AsReadOnly();
|
||||||
|
|
||||||
|
public abstract string Name { get; }
|
||||||
|
|
||||||
|
public FilterEffect()
|
||||||
|
{
|
||||||
|
GetEditableFilterParamters();
|
||||||
|
}
|
||||||
|
protected void GetEditableFilterParamters()
|
||||||
|
{
|
||||||
|
var parameters = (from t in GetType().GetFields(BindingFlags.Instance | BindingFlags.Public)
|
||||||
|
where t.FieldType.IsSubclassOf(typeof(ParameterOverride))
|
||||||
|
where t.DeclaringType.IsSubclassOf(typeof(FilterEffect))
|
||||||
|
orderby t.MetadataToken
|
||||||
|
select t);
|
||||||
|
m_editableParamList = parameters.Select(p => new EditableParamerter(p.Name, (ParameterOverride)p.GetValue(this))).ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public class EditableParamerter
|
||||||
|
{
|
||||||
|
private ParameterOverride m_paramObject;
|
||||||
|
private FieldInfo valueFieldInfo;
|
||||||
|
|
||||||
|
public Type ValueType { get; private set; }
|
||||||
|
public string Name { get; private set; }
|
||||||
|
public object Value
|
||||||
|
{
|
||||||
|
get => valueFieldInfo.GetValue(m_paramObject);
|
||||||
|
set
|
||||||
|
{
|
||||||
|
valueFieldInfo.SetValue(m_paramObject, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public EditableParamerter(string name, ParameterOverride paramObject)
|
||||||
|
{
|
||||||
|
m_paramObject = paramObject;
|
||||||
|
Name = name;
|
||||||
|
|
||||||
|
var paramType = paramObject.GetType();
|
||||||
|
|
||||||
|
valueFieldInfo = paramType.GetField("value", BindingFlags.Public | BindingFlags.Instance);
|
||||||
|
if (valueFieldInfo != null)
|
||||||
|
{
|
||||||
|
ValueType = valueFieldInfo.FieldType;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ValueType = typeof(object);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Serilized()
|
||||||
|
{
|
||||||
|
return JsonUtility.ToJson(Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Apply(string json)
|
||||||
|
{
|
||||||
|
var overrideValue = JsonUtility.FromJson(json, ValueType);
|
||||||
|
Value = overrideValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: a90914c97f6349a4e96302cc0ceeeed0
|
guid: c4df899ccb7155d44be59fbc5289cedd
|
||||||
MonoImporter:
|
MonoImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
@ -0,0 +1,108 @@
|
|||||||
|
using AxibugEmuOnline.Client;
|
||||||
|
using AxibugEmuOnline.Client.ClientCore;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.Rendering.PostProcessing;
|
||||||
|
|
||||||
|
[System.Serializable]
|
||||||
|
[PostProcess(typeof(FixingPixelArtGrilleRenderer), PostProcessEvent.BeforeStack, "Filter/FixingPixelArtGrille")]
|
||||||
|
public sealed class FixingPixelArtGrille : FilterEffect
|
||||||
|
{
|
||||||
|
public override string Name => nameof(FixingPixelArtGrille);
|
||||||
|
|
||||||
|
public ParameterOverride<EnumMaskStyle> MaskStyle = new ParameterOverride<EnumMaskStyle> { value = EnumMaskStyle.ApertureGrille };
|
||||||
|
|
||||||
|
[Tooltip("Emulated input resolution\nOptimize for resize")]
|
||||||
|
public Vector2Parameter DrawResolution = new Vector2Parameter
|
||||||
|
{
|
||||||
|
value = new Vector2(272, 240)
|
||||||
|
};
|
||||||
|
|
||||||
|
[Tooltip("Hardness of scanline")]
|
||||||
|
[Range(-32, 0)]
|
||||||
|
public FloatParameter HardScan = new FloatParameter { value = -10 };
|
||||||
|
|
||||||
|
[Tooltip("Hardness of pixels in scanline")]
|
||||||
|
[Range(-6, 0)]
|
||||||
|
public FloatParameter HardPix = new FloatParameter { value = -2 };
|
||||||
|
|
||||||
|
[Tooltip("Hardness of short vertical bloom")]
|
||||||
|
[Range(-8, 0)]
|
||||||
|
public FloatParameter HardBloomScan = new FloatParameter { value = -4.0f };
|
||||||
|
|
||||||
|
[Tooltip("Hardness of short horizontal bloom")]
|
||||||
|
[Range(-4, 0)]
|
||||||
|
public FloatParameter HardBloomPix = new FloatParameter { value = -1.5f };
|
||||||
|
|
||||||
|
[Tooltip("Amount of small bloom effect")]
|
||||||
|
[Range(0, 1)]
|
||||||
|
public FloatParameter BloomAmount = new FloatParameter { value = 1 / 16f };
|
||||||
|
|
||||||
|
[Tooltip("Display warp")]
|
||||||
|
public Vector2Parameter Warp = new Vector2Parameter { value = new Vector2(1f / 64f, 1f / 24f) };
|
||||||
|
|
||||||
|
[Tooltip("Amount of shadow mask Light")]
|
||||||
|
[Range(1, 3)]
|
||||||
|
public FloatParameter MaskLight = new FloatParameter { value = 1.5f };
|
||||||
|
[Range(0.1f, 1)]
|
||||||
|
[Tooltip("Amount of shadow mask Dark")]
|
||||||
|
public FloatParameter MaskDrak = new FloatParameter { value = 0.5f };
|
||||||
|
|
||||||
|
public enum EnumMaskStyle
|
||||||
|
{
|
||||||
|
TVStyle,
|
||||||
|
ApertureGrille,
|
||||||
|
StretchedVGA,
|
||||||
|
VGAStyle
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed class FixingPixelArtGrilleRenderer : PostProcessEffectRenderer<FixingPixelArtGrille>
|
||||||
|
{
|
||||||
|
private Shader shader;
|
||||||
|
private Material material;
|
||||||
|
|
||||||
|
public override void Init()
|
||||||
|
{
|
||||||
|
shader = Shader.Find("PostEffect/FixingPixcelArtGrille");
|
||||||
|
material = new Material(shader);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Render(PostProcessRenderContext context)
|
||||||
|
{
|
||||||
|
material.SetVector("_iResolution", new Vector4(Screen.width, Screen.height, 0, 0));
|
||||||
|
var res = settings.DrawResolution;
|
||||||
|
material.SetVector("_res", new Vector4(res.value.x, res.value.y, 0, 0));
|
||||||
|
material.SetFloat("_hardScan", settings.HardScan.value);
|
||||||
|
material.SetFloat("_hardPix", settings.HardPix.value);
|
||||||
|
material.SetFloat("_hardBloomScan", settings.HardBloomScan.value);
|
||||||
|
material.SetFloat("_hardBloomPix", settings.HardBloomPix.value);
|
||||||
|
material.SetFloat("_bloomAmount", settings.BloomAmount.value);
|
||||||
|
material.SetVector("_warp", settings.Warp.value);
|
||||||
|
material.SetFloat("_maskDark", settings.MaskDrak.value);
|
||||||
|
material.SetFloat("_maskLight", settings.MaskLight.value);
|
||||||
|
|
||||||
|
material.DisableKeyword("_MASKSTYLE_VGASTYLE");
|
||||||
|
material.DisableKeyword("_MASKSTYLE_TVSTYLE");
|
||||||
|
material.DisableKeyword("_MASKSTYLE_APERTUREGRILLE");
|
||||||
|
material.DisableKeyword("_MASKSTYLE_STRETCHEDVGA");
|
||||||
|
|
||||||
|
switch (settings.MaskStyle.value)
|
||||||
|
{
|
||||||
|
case FixingPixelArtGrille.EnumMaskStyle.VGAStyle:
|
||||||
|
material.EnableKeyword("_MASKSTYLE_VGASTYLE");
|
||||||
|
break;
|
||||||
|
case FixingPixelArtGrille.EnumMaskStyle.TVStyle:
|
||||||
|
material.EnableKeyword("_MASKSTYLE_TVSTYLE");
|
||||||
|
break;
|
||||||
|
case FixingPixelArtGrille.EnumMaskStyle.ApertureGrille:
|
||||||
|
material.EnableKeyword("_MASKSTYLE_APERTUREGRILLE");
|
||||||
|
break;
|
||||||
|
case FixingPixelArtGrille.EnumMaskStyle.StretchedVGA:
|
||||||
|
material.EnableKeyword("_MASKSTYLE_STRETCHEDVGA");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
context.command.Blit(context.source, context.destination, material);
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: d43d5934b9afba14782405dc1b6eb455
|
guid: e88ab71ab1a47d048ba0e45b742f6140
|
||||||
MonoImporter:
|
MonoImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
@ -0,0 +1,293 @@
|
|||||||
|
|
||||||
|
Shader "PostEffect/FixingPixcelArtGrille"
|
||||||
|
{
|
||||||
|
Properties
|
||||||
|
{
|
||||||
|
_MainTex ("Base (RGB)", 2D) = "white" {}
|
||||||
|
}
|
||||||
|
SubShader
|
||||||
|
{
|
||||||
|
Pass
|
||||||
|
{
|
||||||
|
CGPROGRAM
|
||||||
|
|
||||||
|
#pragma shader_feature_local _MASKSTYLE_TVSTYLE _MASKSTYLE_APERTUREGRILLE _MASKSTYLE_STRETCHEDVGA _MASKSTYLE_VGASTYLE
|
||||||
|
#pragma vertex vert_img
|
||||||
|
#pragma fragment frag
|
||||||
|
#include "UnityCG.cginc"
|
||||||
|
|
||||||
|
sampler2D _MainTex;
|
||||||
|
float4 _MainTex_TexelSize;
|
||||||
|
|
||||||
|
//
|
||||||
|
// PUBLIC DOMAIN CRT STYLED SCAN-LINE SHADER
|
||||||
|
//
|
||||||
|
// by Timothy Lottes
|
||||||
|
//
|
||||||
|
// This is more along the style of a really good CGA arcade monitor.
|
||||||
|
// With RGB inputs instead of NTSC.
|
||||||
|
// The shadow mask example has the mask rotated 90 degrees for less chromatic aberration.
|
||||||
|
//
|
||||||
|
// Left it unoptimized to show the theory behind the algorithm.
|
||||||
|
//
|
||||||
|
// It is an example what I personally would want as a display option for pixel art games.
|
||||||
|
// Please take and use, change, or whatever.
|
||||||
|
//
|
||||||
|
|
||||||
|
float2 _iResolution = float2(1920,1080);
|
||||||
|
|
||||||
|
// Emulated input resolution.
|
||||||
|
// Optimize for resize.
|
||||||
|
float2 _res = float2(272.0,240.0);
|
||||||
|
|
||||||
|
// Hardness of scanline.
|
||||||
|
// -8.0 = soft
|
||||||
|
// -16.0 = medium
|
||||||
|
float _hardScan = -10.0;
|
||||||
|
|
||||||
|
// Hardness of pixels in scanline.
|
||||||
|
// -2.0 = soft
|
||||||
|
// -4.0 = hard
|
||||||
|
float _hardPix =-2.0;
|
||||||
|
|
||||||
|
// Hardness of short vertical bloom.
|
||||||
|
// -1.0 = wide to the point of clipping (bad)
|
||||||
|
// -1.5 = wide
|
||||||
|
// -4.0 = not very wide at all
|
||||||
|
float _hardBloomScan = -4.0;
|
||||||
|
|
||||||
|
// Hardness of short horizontal bloom.
|
||||||
|
// -0.5 = wide to the point of clipping (bad)
|
||||||
|
// -1.0 = wide
|
||||||
|
// -2.0 = not very wide at all
|
||||||
|
float _hardBloomPix = -1.5;
|
||||||
|
|
||||||
|
// Amount of small bloom effect.
|
||||||
|
// 1.0/1.0 = only bloom
|
||||||
|
// 1.0/16.0 = what I think is a good amount of small bloom
|
||||||
|
// 0.0 = no bloom
|
||||||
|
float _bloomAmount = 1.0/16.0;
|
||||||
|
|
||||||
|
// Display warp.
|
||||||
|
// 0.0 = none
|
||||||
|
// 1.0/8.0 = extreme
|
||||||
|
float2 _warp = float2(1.0/64.0,1.0/24.0);
|
||||||
|
|
||||||
|
// Amount of shadow mask.
|
||||||
|
float _maskDark = 0.5;
|
||||||
|
float _maskLight = 1.5;
|
||||||
|
|
||||||
|
//------------------------------------------------------------------------
|
||||||
|
|
||||||
|
float fract(float x){
|
||||||
|
return x-floor(x);
|
||||||
|
}
|
||||||
|
|
||||||
|
// sRGB to Linear.
|
||||||
|
// Assuing using sRGB typed textures this should not be needed.
|
||||||
|
float ToLinear1(float c){return(c<=0.04045)?c/12.92:pow((c+0.055)/1.055,2.4);}
|
||||||
|
float3 ToLinear(float3 c){return float3(ToLinear1(c.r),ToLinear1(c.g),ToLinear1(c.b));}
|
||||||
|
|
||||||
|
// Linear to sRGB.
|
||||||
|
// Assuing using sRGB typed textures this should not be needed.
|
||||||
|
float ToSrgb1(float c){return(c<0.0031308?c*12.92:1.055*pow(c,0.41666)-0.055);}
|
||||||
|
float3 ToSrgb(float3 c){return float3(ToSrgb1(c.r),ToSrgb1(c.g),ToSrgb1(c.b));}
|
||||||
|
|
||||||
|
|
||||||
|
float3 Test(float3 c){return c*(1.0/64.0)+c*c*c;}
|
||||||
|
|
||||||
|
// Nearest emulated sample given floating point position and texel offset.
|
||||||
|
// Also zero's off screen.
|
||||||
|
float3 Fetch( float2 pos,float2 off){
|
||||||
|
pos=floor(pos*_res+off)/_res;
|
||||||
|
if(max(abs(pos.x-0.5),abs(pos.y-0.5))>0.5)return float3(0.0,0.0,0.0);
|
||||||
|
return Test(ToLinear(tex2D(_MainTex,pos.xy).rgb));}
|
||||||
|
|
||||||
|
// Distance in emulated pixels to nearest texel.
|
||||||
|
float2 Dist(float2 pos){pos=pos*_res;return -((pos-floor(pos))-float2(0.5,0.5));}
|
||||||
|
|
||||||
|
// 1D Gaussian.
|
||||||
|
float Gaus(float pos,float scale){return exp2(scale*pos*pos);}
|
||||||
|
|
||||||
|
// 3-tap Gaussian filter along horz line.
|
||||||
|
float3 Horz3(float2 pos,float off){
|
||||||
|
float3 b=Fetch(pos,float2(-1.0,off));
|
||||||
|
float3 c=Fetch(pos,float2( 0.0,off));
|
||||||
|
float3 d=Fetch(pos,float2( 1.0,off));
|
||||||
|
float dst=Dist(pos).x;
|
||||||
|
// Convert distance to weight.
|
||||||
|
float scale=_hardPix;
|
||||||
|
float wb=Gaus(dst-1.0,scale);
|
||||||
|
float wc=Gaus(dst+0.0,scale);
|
||||||
|
float wd=Gaus(dst+1.0,scale);
|
||||||
|
// Return filtered sample.
|
||||||
|
return (b*wb+c*wc+d*wd)/(wb+wc+wd);}
|
||||||
|
|
||||||
|
// 5-tap Gaussian filter along horz line.
|
||||||
|
float3 Horz5(float2 pos,float off){
|
||||||
|
float3 a=Fetch(pos,float2(-2.0,off));
|
||||||
|
float3 b=Fetch(pos,float2(-1.0,off));
|
||||||
|
float3 c=Fetch(pos,float2( 0.0,off));
|
||||||
|
float3 d=Fetch(pos,float2( 1.0,off));
|
||||||
|
float3 e=Fetch(pos,float2( 2.0,off));
|
||||||
|
float dst=Dist(pos).x;
|
||||||
|
// Convert distance to weight.
|
||||||
|
float scale=_hardPix;
|
||||||
|
float wa=Gaus(dst-2.0,scale);
|
||||||
|
float wb=Gaus(dst-1.0,scale);
|
||||||
|
float wc=Gaus(dst+0.0,scale);
|
||||||
|
float wd=Gaus(dst+1.0,scale);
|
||||||
|
float we=Gaus(dst+2.0,scale);
|
||||||
|
// Return filtered sample.
|
||||||
|
return (a*wa+b*wb+c*wc+d*wd+e*we)/(wa+wb+wc+wd+we);}
|
||||||
|
|
||||||
|
// 7-tap Gaussian filter along horz line.
|
||||||
|
float3 Horz7(float2 pos,float off){
|
||||||
|
float3 a=Fetch(pos,float2(-3.0,off));
|
||||||
|
float3 b=Fetch(pos,float2(-2.0,off));
|
||||||
|
float3 c=Fetch(pos,float2(-1.0,off));
|
||||||
|
float3 d=Fetch(pos,float2( 0.0,off));
|
||||||
|
float3 e=Fetch(pos,float2( 1.0,off));
|
||||||
|
float3 f=Fetch(pos,float2( 2.0,off));
|
||||||
|
float3 g=Fetch(pos,float2( 3.0,off));
|
||||||
|
float dst=Dist(pos).x;
|
||||||
|
// Convert distance to weight.
|
||||||
|
float scale=_hardBloomPix;
|
||||||
|
float wa=Gaus(dst-3.0,scale);
|
||||||
|
float wb=Gaus(dst-2.0,scale);
|
||||||
|
float wc=Gaus(dst-1.0,scale);
|
||||||
|
float wd=Gaus(dst+0.0,scale);
|
||||||
|
float we=Gaus(dst+1.0,scale);
|
||||||
|
float wf=Gaus(dst+2.0,scale);
|
||||||
|
float wg=Gaus(dst+3.0,scale);
|
||||||
|
// Return filtered sample.
|
||||||
|
return (a*wa+b*wb+c*wc+d*wd+e*we+f*wf+g*wg)/(wa+wb+wc+wd+we+wf+wg);}
|
||||||
|
|
||||||
|
// Return scanline weight.
|
||||||
|
float Scan(float2 pos,float off){
|
||||||
|
float dst=Dist(pos).y;
|
||||||
|
return Gaus(dst+off,_hardScan);}
|
||||||
|
|
||||||
|
// Return scanline weight for bloom.
|
||||||
|
float BloomScan(float2 pos,float off){
|
||||||
|
float dst=Dist(pos).y;
|
||||||
|
return Gaus(dst+off,_hardBloomScan);}
|
||||||
|
|
||||||
|
// Allow nearest three lines to effect pixel.
|
||||||
|
float3 Tri(float2 pos){
|
||||||
|
float3 a=Horz3(pos,-1.0);
|
||||||
|
float3 b=Horz5(pos, 0.0);
|
||||||
|
float3 c=Horz3(pos, 1.0);
|
||||||
|
float wa=Scan(pos,-1.0);
|
||||||
|
float wb=Scan(pos, 0.0);
|
||||||
|
float wc=Scan(pos, 1.0);
|
||||||
|
return a*wa+b*wb+c*wc;}
|
||||||
|
|
||||||
|
// Small bloom.
|
||||||
|
float3 Bloom(float2 pos){
|
||||||
|
float3 a=Horz5(pos,-2.0);
|
||||||
|
float3 b=Horz7(pos,-1.0);
|
||||||
|
float3 c=Horz7(pos, 0.0);
|
||||||
|
float3 d=Horz7(pos, 1.0);
|
||||||
|
float3 e=Horz5(pos, 2.0);
|
||||||
|
float wa=BloomScan(pos,-2.0);
|
||||||
|
float wb=BloomScan(pos,-1.0);
|
||||||
|
float wc=BloomScan(pos, 0.0);
|
||||||
|
float wd=BloomScan(pos, 1.0);
|
||||||
|
float we=BloomScan(pos, 2.0);
|
||||||
|
return a*wa+b*wb+c*wc+d*wd+e*we;}
|
||||||
|
|
||||||
|
// Distortion of scanlines, and end of screen alpha.
|
||||||
|
float2 Warp(float2 pos){
|
||||||
|
|
||||||
|
pos=pos*2.0-1.0;
|
||||||
|
pos*=float2(1.0+(pos.y*pos.y)*_warp.x,1.0+(pos.x*pos.x)*_warp.y);
|
||||||
|
return pos*0.5+0.5;}
|
||||||
|
|
||||||
|
#if defined(_MASKSTYLE_TVSTYLE)
|
||||||
|
// Very compressed TV style shadow mask.
|
||||||
|
float3 Mask(float2 pos){
|
||||||
|
float lineee=_maskLight;
|
||||||
|
float odd=0.0;
|
||||||
|
if(fract(pos.x/6.0)<0.5)odd=1.0;
|
||||||
|
if(fract((pos.y+odd)/2.0)<0.5) lineee=_maskDark;
|
||||||
|
pos.x=fract(pos.x/3.0);
|
||||||
|
float3 mask=float3(_maskDark,_maskDark,_maskDark);
|
||||||
|
if(pos.x<0.333)mask.r=_maskLight;
|
||||||
|
else if(pos.x<0.666)mask.g=_maskLight;
|
||||||
|
else mask.b=_maskLight;
|
||||||
|
mask*=lineee;
|
||||||
|
return mask;
|
||||||
|
}
|
||||||
|
#elif defined(_MASKSTYLE_APERTUREGRILLE)
|
||||||
|
// Aperture-grille.
|
||||||
|
float3 Mask(float2 pos){
|
||||||
|
pos.x=fract(pos.x/3.0);
|
||||||
|
float3 mask=float3(_maskDark,_maskDark,_maskDark);
|
||||||
|
if(pos.x<0.333)mask.r=_maskLight;
|
||||||
|
else if(pos.x<0.666)mask.g=_maskLight;
|
||||||
|
else mask.b=_maskLight;
|
||||||
|
return mask;}
|
||||||
|
#elif defined(_MASKSTYLE_STRETCHEDVGA)
|
||||||
|
// Stretched VGA style shadow mask (same as prior shaders).
|
||||||
|
float3 Mask(float2 pos){
|
||||||
|
pos.x+=pos.y*3.0;
|
||||||
|
float3 mask=float3(_maskDark,_maskDark,_maskDark);
|
||||||
|
pos.x=fract(pos.x/6.0);
|
||||||
|
if(pos.x<0.333)mask.r=_maskLight;
|
||||||
|
else if(pos.x<0.666)mask.g=_maskLight;
|
||||||
|
else mask.b=_maskLight;
|
||||||
|
return mask;}
|
||||||
|
#elif defined(_MASKSTYLE_VGASTYLE)
|
||||||
|
// VGA style shadow mask.
|
||||||
|
float3 Mask(float2 pos){
|
||||||
|
pos.xy=floor(pos.xy*float2(1.0,0.5));
|
||||||
|
pos.x+=pos.y*3.0;
|
||||||
|
float3 mask=float3(_maskDark,_maskDark,_maskDark);
|
||||||
|
pos.x=fract(pos.x/6.0);
|
||||||
|
if(pos.x<0.333)mask.r=_maskLight;
|
||||||
|
else if(pos.x<0.666)mask.g=_maskLight;
|
||||||
|
else mask.b=_maskLight;
|
||||||
|
return mask;}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Draw dividing bars.
|
||||||
|
float Bar(float pos,float bar){pos-=bar;return pos*pos<4.0?0.0:1.0;}
|
||||||
|
|
||||||
|
// Entry.
|
||||||
|
float4 mainImage(float2 fragCoord){
|
||||||
|
|
||||||
|
float4 fragColor = float4(1,1,1,1);
|
||||||
|
float2 pos=Warp(fragCoord.xy/_iResolution.xy);
|
||||||
|
|
||||||
|
fragColor.rgb=Tri(pos)*Mask(fragCoord.xy);
|
||||||
|
|
||||||
|
fragColor.rgb+=Bloom(pos)*_bloomAmount;
|
||||||
|
|
||||||
|
fragColor.a=1.0;
|
||||||
|
fragColor.rgb=ToSrgb(fragColor.rgb);
|
||||||
|
|
||||||
|
return fragColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct v2f
|
||||||
|
{
|
||||||
|
float4 pos : POSITION;
|
||||||
|
float2 uv : TEXCOORD0;
|
||||||
|
};
|
||||||
|
|
||||||
|
fixed4 frag (v2f i) : SV_Target
|
||||||
|
{
|
||||||
|
float2 pos = _iResolution.xy*i.uv;
|
||||||
|
fixed4 col = mainImage(pos);
|
||||||
|
return col;
|
||||||
|
}
|
||||||
|
ENDCG
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,10 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 57c38351364c92e45aef2dc17245b3ce
|
||||||
|
ShaderImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
defaultTextures: []
|
||||||
|
nonModifiableTextures: []
|
||||||
|
preprocessorOverride: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -0,0 +1,62 @@
|
|||||||
|
%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: 8e6292b2c06870d4495f009f912b9600, type: 3}
|
||||||
|
m_Name: GameCamera Profile
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
settings:
|
||||||
|
- {fileID: 117625959343581733}
|
||||||
|
--- !u!114 &117625959343581733
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: e88ab71ab1a47d048ba0e45b742f6140, type: 3}
|
||||||
|
m_Name: FixingPixelArtGrille
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
enabled:
|
||||||
|
overrideState: 1
|
||||||
|
value: 1
|
||||||
|
MaskStyle:
|
||||||
|
overrideState: 0
|
||||||
|
value: 1
|
||||||
|
DrawResolution:
|
||||||
|
overrideState: 0
|
||||||
|
value: {x: 272, y: 240}
|
||||||
|
HardScan:
|
||||||
|
overrideState: 0
|
||||||
|
value: -10
|
||||||
|
HardPix:
|
||||||
|
overrideState: 0
|
||||||
|
value: -2
|
||||||
|
HardBloomScan:
|
||||||
|
overrideState: 0
|
||||||
|
value: -4
|
||||||
|
HardBloomPix:
|
||||||
|
overrideState: 0
|
||||||
|
value: -1.5
|
||||||
|
BloomAmount:
|
||||||
|
overrideState: 0
|
||||||
|
value: 0.0625
|
||||||
|
Warp:
|
||||||
|
overrideState: 0
|
||||||
|
value: {x: 0.015625, y: 0.041666668}
|
||||||
|
MaskLight:
|
||||||
|
overrideState: 0
|
||||||
|
value: 1.5
|
||||||
|
MaskDrak:
|
||||||
|
overrideState: 0
|
||||||
|
value: 0.5
|
@ -1,8 +1,8 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 5d4a385f133f9074583d64ab2172a03b
|
guid: 17060e2d2f9e5c340a526f08317e5a98
|
||||||
NativeFormatImporter:
|
NativeFormatImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
mainObjectFileID: 8400000
|
mainObjectFileID: 11400000
|
||||||
userData:
|
userData:
|
||||||
assetBundleName:
|
assetBundleName:
|
||||||
assetBundleVariant:
|
assetBundleVariant:
|
@ -15,6 +15,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
void SetupScheme();
|
void SetupScheme();
|
||||||
void StartGame(RomFile romFile);
|
void StartGame(RomFile romFile);
|
||||||
void DoReset();
|
void DoReset();
|
||||||
|
EnumPlatform Platform { get; }
|
||||||
uint Frame { get; }
|
uint Frame { get; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,12 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace AxibugEmuOnline.Client
|
||||||
|
{
|
||||||
|
public abstract class CommandChanger : IKeyMapperChanger
|
||||||
|
{
|
||||||
|
public string Name { get; private set; }
|
||||||
|
|
||||||
|
public abstract object GetConfig();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d5a7a9a2191170e49b387c0487288ae9
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -0,0 +1,25 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace AxibugEmuOnline.Client
|
||||||
|
{
|
||||||
|
public class GamingChanger : CommandChanger
|
||||||
|
{
|
||||||
|
Dictionary<KeyCode, EnumCommand> m_uiKeyMapper = new Dictionary<KeyCode, EnumCommand>();
|
||||||
|
public GamingChanger()
|
||||||
|
{
|
||||||
|
m_uiKeyMapper[KeyCode.Escape] = EnumCommand.OptionMenu;
|
||||||
|
|
||||||
|
if (Application.platform == RuntimePlatform.PSP2)
|
||||||
|
{
|
||||||
|
m_uiKeyMapper[Common.PSVitaKey.L] = EnumCommand.OptionMenu;
|
||||||
|
m_uiKeyMapper[Common.PSVitaKey.R] = EnumCommand.OptionMenu;
|
||||||
|
}
|
||||||
|
|
||||||
|
//PC XBOX
|
||||||
|
m_uiKeyMapper[Common.PC_XBOXKEY.Y] = EnumCommand.OptionMenu;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override object GetConfig() => m_uiKeyMapper;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c8339ffab20bfea4cbc7d3aa440c3fdb
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -0,0 +1,54 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace AxibugEmuOnline.Client
|
||||||
|
{
|
||||||
|
|
||||||
|
public class NormalChanger : CommandChanger
|
||||||
|
{
|
||||||
|
Dictionary<KeyCode, EnumCommand> m_uiKeyMapper = new Dictionary<KeyCode, EnumCommand>();
|
||||||
|
public NormalChanger()
|
||||||
|
{
|
||||||
|
m_uiKeyMapper[KeyCode.A] = EnumCommand.SelectItemLeft;
|
||||||
|
m_uiKeyMapper[KeyCode.D] = EnumCommand.SelectItemRight;
|
||||||
|
m_uiKeyMapper[KeyCode.W] = EnumCommand.SelectItemUp;
|
||||||
|
m_uiKeyMapper[KeyCode.S] = EnumCommand.SelectItemDown;
|
||||||
|
m_uiKeyMapper[KeyCode.K] = EnumCommand.Enter;
|
||||||
|
m_uiKeyMapper[KeyCode.L] = EnumCommand.Back;
|
||||||
|
m_uiKeyMapper[KeyCode.I] = EnumCommand.OptionMenu;
|
||||||
|
|
||||||
|
m_uiKeyMapper[KeyCode.LeftArrow] = EnumCommand.SelectItemLeft;
|
||||||
|
m_uiKeyMapper[KeyCode.RightArrow] = EnumCommand.SelectItemRight;
|
||||||
|
m_uiKeyMapper[KeyCode.UpArrow] = EnumCommand.SelectItemUp;
|
||||||
|
m_uiKeyMapper[KeyCode.DownArrow] = EnumCommand.SelectItemDown;
|
||||||
|
m_uiKeyMapper[KeyCode.Return] = EnumCommand.Enter;
|
||||||
|
m_uiKeyMapper[KeyCode.Escape] = EnumCommand.Back;
|
||||||
|
m_uiKeyMapper[KeyCode.RightShift] = EnumCommand.OptionMenu;
|
||||||
|
m_uiKeyMapper[KeyCode.LeftShift] = EnumCommand.OptionMenu;
|
||||||
|
|
||||||
|
if (Application.platform == RuntimePlatform.PSP2)
|
||||||
|
{
|
||||||
|
m_uiKeyMapper[Common.PSVitaKey.Left] = EnumCommand.SelectItemLeft;
|
||||||
|
m_uiKeyMapper[Common.PSVitaKey.Right] = EnumCommand.SelectItemRight;
|
||||||
|
m_uiKeyMapper[Common.PSVitaKey.Up] = EnumCommand.SelectItemUp;
|
||||||
|
m_uiKeyMapper[Common.PSVitaKey.Down] = EnumCommand.SelectItemDown;
|
||||||
|
m_uiKeyMapper[Common.PSVitaKey.Circle] = EnumCommand.Enter;
|
||||||
|
m_uiKeyMapper[Common.PSVitaKey.Cross] = EnumCommand.Back;
|
||||||
|
m_uiKeyMapper[Common.PSVitaKey.Triangle] = EnumCommand.OptionMenu;
|
||||||
|
}
|
||||||
|
|
||||||
|
//PC XBOX
|
||||||
|
|
||||||
|
//m_uiKeyMapper[Common.PC_XBOXKEY.Left] = EnumCommand.SelectItemLeft;
|
||||||
|
//m_uiKeyMapper[Common.PSVitaKey.Right] = EnumCommand.SelectItemRight;
|
||||||
|
//m_uiKeyMapper[Common.PSVitaKey.Up] = EnumCommand.SelectItemUp;
|
||||||
|
//m_uiKeyMapper[Common.PSVitaKey.Down] = EnumCommand.SelectItemDown;
|
||||||
|
m_uiKeyMapper[Common.PC_XBOXKEY.MenuBtn] = EnumCommand.Enter;
|
||||||
|
m_uiKeyMapper[Common.PC_XBOXKEY.ViewBtn] = EnumCommand.Back;
|
||||||
|
m_uiKeyMapper[Common.PC_XBOXKEY.Y] = EnumCommand.OptionMenu;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override object GetConfig() => m_uiKeyMapper;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b8790f215d873d044aa8d00bacdee237
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -1,13 +1,18 @@
|
|||||||
using AxibugEmuOnline.Client.ClientCore;
|
using AxibugEmuOnline.Client.ClientCore;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
using UnityEngine.Rendering.PostProcessing;
|
||||||
|
|
||||||
namespace AxibugEmuOnline.Client
|
namespace AxibugEmuOnline.Client
|
||||||
{
|
{
|
||||||
public class Initer : MonoBehaviour
|
public class Initer : MonoBehaviour
|
||||||
{
|
{
|
||||||
|
public PostProcessVolume m_filterVolume;
|
||||||
|
public CanvasGroup m_filterPreview;
|
||||||
|
public CanvasGroup m_xmbBg;
|
||||||
|
|
||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
App.Init();
|
App.Init(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -71,7 +71,7 @@ namespace AxibugEmuOnline.Client.Manager
|
|||||||
InGameUI.Instance.Hide();
|
InGameUI.Instance.Hide();
|
||||||
LaunchUI.Instance.ShowMainMenu();
|
LaunchUI.Instance.ShowMainMenu();
|
||||||
|
|
||||||
ControlScheme.Current = ControlSchemeSetts.Normal;
|
CommandDispatcher.Instance.Current = CommandDispatcher.Instance.Normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ResetGame()
|
public void ResetGame()
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
using DG.Tweening;
|
using System.Collections.Generic;
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace AxibugEmuOnline.Client
|
namespace AxibugEmuOnline.Client
|
||||||
|
@ -0,0 +1,81 @@
|
|||||||
|
using DG.Tweening;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.Rendering.PostProcessing;
|
||||||
|
using static AxibugEmuOnline.Client.FilterEffect;
|
||||||
|
|
||||||
|
namespace AxibugEmuOnline.Client
|
||||||
|
{
|
||||||
|
public class FilterManager
|
||||||
|
{
|
||||||
|
private PostProcessProfile m_filterPorfile;
|
||||||
|
private List<Filter> m_filters;
|
||||||
|
private Dictionary<EnumPlatform, Filter> m_filterPlatforms = new Dictionary<EnumPlatform, Filter>();
|
||||||
|
private AlphaWraper m_previewFilterWraper;
|
||||||
|
/// <summary>
|
||||||
|
/// 滤镜列表
|
||||||
|
/// </summary>
|
||||||
|
public IReadOnlyList<Filter> Filters => m_filters;
|
||||||
|
|
||||||
|
public FilterManager(PostProcessVolume filterVolume, CanvasGroup filterPreview, CanvasGroup mainBg)
|
||||||
|
{
|
||||||
|
m_filterPorfile = filterVolume.profile;
|
||||||
|
m_filters = m_filterPorfile.settings.Where(setting => setting is FilterEffect).Select(setting => new Filter(setting as FilterEffect)).ToList();
|
||||||
|
|
||||||
|
m_previewFilterWraper = new AlphaWraper(mainBg, filterPreview, false);
|
||||||
|
ShutDownFilterPreview();
|
||||||
|
ShutDownFilter();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary> 关闭滤镜预览 </summary>
|
||||||
|
public void ShutDownFilterPreview()
|
||||||
|
{
|
||||||
|
m_previewFilterWraper.On = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary> 开启滤镜预览 </summary>
|
||||||
|
public void EnableFilterPreview()
|
||||||
|
{
|
||||||
|
m_previewFilterWraper.On = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 打开滤镜
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="filter"></param>
|
||||||
|
public void EnableFilter(Filter filter)
|
||||||
|
{
|
||||||
|
foreach (var selfFiler in Filters)
|
||||||
|
{
|
||||||
|
if (selfFiler != filter) selfFiler.m_setting.enabled.Override(false);
|
||||||
|
else selfFiler.m_setting.enabled.Override(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 关闭滤镜效果
|
||||||
|
/// </summary>
|
||||||
|
public void ShutDownFilter()
|
||||||
|
{
|
||||||
|
//关闭所有后处理效果
|
||||||
|
foreach (var setting in m_filterPorfile.settings)
|
||||||
|
setting.enabled.Override(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public class Filter
|
||||||
|
{
|
||||||
|
public string Name => m_setting.Name;
|
||||||
|
|
||||||
|
internal FilterEffect m_setting;
|
||||||
|
|
||||||
|
public Filter(FilterEffect setting)
|
||||||
|
{
|
||||||
|
m_setting = setting;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal IReadOnlyCollection<EditableParamerter> Paramerters => m_setting.EditableParam;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 5354e2e13dbff91438a04b9de2351645
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -1,5 +1,4 @@
|
|||||||
using AxibugEmuOnline.Client.ClientCore;
|
using AxibugEmuOnline.Client.ClientCore;
|
||||||
using AxiReplay;
|
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
@ -57,7 +56,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
}
|
}
|
||||||
|
|
||||||
public EmulatorConfig Config { get; private set; } = new EmulatorConfig();
|
public EmulatorConfig Config { get; private set; } = new EmulatorConfig();
|
||||||
|
public NesControllerMapper ControllerMapper { get; private set; } = new NesControllerMapper();
|
||||||
public void PrepareDirectory(string directPath)
|
public void PrepareDirectory(string directPath)
|
||||||
{
|
{
|
||||||
Directory.CreateDirectory($"{App.PersistentDataPath}/{directPath}");
|
Directory.CreateDirectory($"{App.PersistentDataPath}/{directPath}");
|
||||||
@ -115,7 +114,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
}
|
}
|
||||||
else m_sampledState = default;
|
else m_sampledState = default;
|
||||||
|
|
||||||
var localState = NesControllerMapper.Get().CreateState();
|
var localState = ControllerMapper.CreateState();
|
||||||
var rawData = ToNet(localState);
|
var rawData = ToNet(localState);
|
||||||
if (LastTestInput != rawData)
|
if (LastTestInput != rawData)
|
||||||
{
|
{
|
||||||
@ -126,7 +125,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_sampledState = NesControllerMapper.Get().CreateState();
|
m_sampledState = ControllerMapper.CreateState();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
using AxibugEmuOnline.Client.ClientCore;
|
using System;
|
||||||
using System;
|
using System.Text;
|
||||||
using System.IO;
|
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using VirtualNes.Core;
|
using VirtualNes.Core;
|
||||||
|
|
||||||
@ -8,36 +7,10 @@ namespace AxibugEmuOnline.Client
|
|||||||
{
|
{
|
||||||
public class NesControllerMapper
|
public class NesControllerMapper
|
||||||
{
|
{
|
||||||
private static readonly string ConfigFilePath = $"{App.PersistentDataPath}/NES/ControllerMapper.json";
|
public MapperSetter Player1 = new MapperSetter(1);
|
||||||
|
public MapperSetter Player2 = new MapperSetter(2);
|
||||||
public MapperSetter Player1 = new MapperSetter();
|
public MapperSetter Player3 = new MapperSetter(3);
|
||||||
public MapperSetter Player2 = new MapperSetter();
|
public MapperSetter Player4 = new MapperSetter(4);
|
||||||
public MapperSetter Player3 = new MapperSetter();
|
|
||||||
public MapperSetter Player4 = new MapperSetter();
|
|
||||||
|
|
||||||
public NesControllerMapper()
|
|
||||||
{
|
|
||||||
Player1.UP.keyCode = KeyCode.W;
|
|
||||||
Player1.DOWN.keyCode = KeyCode.S;
|
|
||||||
Player1.LEFT.keyCode = KeyCode.A;
|
|
||||||
Player1.RIGHT.keyCode = KeyCode.D;
|
|
||||||
Player1.B.keyCode = KeyCode.J;
|
|
||||||
Player1.A.keyCode = KeyCode.K;
|
|
||||||
Player1.SELECT.keyCode = KeyCode.V;
|
|
||||||
Player1.START.keyCode = KeyCode.B;
|
|
||||||
|
|
||||||
//PC XBOX
|
|
||||||
//Player1.B.keyCode = Common.PC_XBOXKEY.A;
|
|
||||||
//Player1.A.keyCode = Common.PC_XBOXKEY.B;
|
|
||||||
//Player1.SELECT.keyCode = Common.PC_XBOXKEY.ViewBtn;
|
|
||||||
//Player1.START.keyCode = Common.PC_XBOXKEY.MenuBtn;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Save()
|
|
||||||
{
|
|
||||||
var jsonStr = JsonUtility.ToJson(this);
|
|
||||||
File.WriteAllText(ConfigFilePath, jsonStr);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ControllerState CreateState()
|
public ControllerState CreateState()
|
||||||
{
|
{
|
||||||
@ -46,86 +19,168 @@ namespace AxibugEmuOnline.Client
|
|||||||
var state3 = Player3.GetButtons();
|
var state3 = Player3.GetButtons();
|
||||||
var state4 = Player4.GetButtons();
|
var state4 = Player4.GetButtons();
|
||||||
|
|
||||||
return new ControllerState(state1, state2, state3, state4);
|
var result = new ControllerState(state1, state2, state3, state4);
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static NesControllerMapper s_setting;
|
|
||||||
public static NesControllerMapper Get()
|
|
||||||
{
|
|
||||||
if (s_setting == null)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var json = File.ReadAllText($"{App.PersistentDataPath}/Nes/ControllerMapper.json");
|
|
||||||
s_setting = JsonUtility.FromJson<NesControllerMapper>(json);
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
s_setting = new NesControllerMapper();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return s_setting;
|
|
||||||
}
|
|
||||||
|
|
||||||
[Serializable]
|
|
||||||
public class Mapper
|
public class Mapper
|
||||||
{
|
{
|
||||||
public EnumButtonType buttonType;
|
MapperSetter m_setter;
|
||||||
public KeyCode keyCode;
|
EnumButtonType m_buttonType;
|
||||||
|
IKeyListener m_keyListener;
|
||||||
|
int m_controllerIndex => m_setter.ControllerIndex;
|
||||||
|
|
||||||
public Mapper(EnumButtonType buttonType)
|
public Mapper(MapperSetter setter, EnumButtonType buttonType)
|
||||||
{
|
{
|
||||||
this.buttonType = buttonType;
|
m_setter = setter;
|
||||||
|
m_buttonType = buttonType;
|
||||||
|
|
||||||
|
loadConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void loadConfig()
|
||||||
|
{
|
||||||
|
m_keyListener = MapperSetter.GetKey(m_controllerIndex, m_buttonType);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public EnumButtonType SampleKey()
|
||||||
|
{
|
||||||
|
return m_keyListener.IsPressing() ? m_buttonType : 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[Serializable]
|
|
||||||
public class MapperSetter
|
public class MapperSetter
|
||||||
{
|
{
|
||||||
public Mapper UP = new Mapper(EnumButtonType.UP);
|
/// <summary> 控制器序号(手柄1,2,3,4) </summary>
|
||||||
public Mapper DOWN = new Mapper(EnumButtonType.DOWN);
|
public int ControllerIndex { get; }
|
||||||
public Mapper LEFT = new Mapper(EnumButtonType.LEFT);
|
public Mapper UP { get; private set; }
|
||||||
public Mapper RIGHT = new Mapper(EnumButtonType.RIGHT);
|
public Mapper DOWN { get; private set; }
|
||||||
public Mapper A = new Mapper(EnumButtonType.A);
|
public Mapper LEFT { get; private set; }
|
||||||
public Mapper B = new Mapper(EnumButtonType.B);
|
public Mapper RIGHT { get; private set; }
|
||||||
public Mapper SELECT = new Mapper(EnumButtonType.SELECT);
|
public Mapper A { get; private set; }
|
||||||
public Mapper START = new Mapper(EnumButtonType.START);
|
public Mapper B { get; private set; }
|
||||||
public Mapper MIC = new Mapper(EnumButtonType.MIC);
|
public Mapper SELECT { get; private set; }
|
||||||
|
public Mapper START { get; private set; }
|
||||||
|
public Mapper MIC { get; private set; }
|
||||||
|
|
||||||
|
public MapperSetter(int controllerIndex)
|
||||||
|
{
|
||||||
|
ControllerIndex = controllerIndex;
|
||||||
|
UP = new Mapper(this, EnumButtonType.UP);
|
||||||
|
DOWN = new Mapper(this, EnumButtonType.DOWN);
|
||||||
|
LEFT = new Mapper(this, EnumButtonType.LEFT);
|
||||||
|
RIGHT = new Mapper(this, EnumButtonType.RIGHT);
|
||||||
|
A = new Mapper(this, EnumButtonType.A);
|
||||||
|
B = new Mapper(this, EnumButtonType.B);
|
||||||
|
SELECT = new Mapper(this, EnumButtonType.SELECT);
|
||||||
|
START = new Mapper(this, EnumButtonType.START);
|
||||||
|
MIC = new Mapper(this, EnumButtonType.MIC);
|
||||||
|
}
|
||||||
|
|
||||||
public EnumButtonType GetButtons()
|
public EnumButtonType GetButtons()
|
||||||
{
|
{
|
||||||
EnumButtonType res = 0;
|
EnumButtonType res = 0;
|
||||||
|
|
||||||
if (Input.GetKey(UP.keyCode))
|
res |= UP.SampleKey();
|
||||||
res |= EnumButtonType.UP;
|
res |= DOWN.SampleKey();
|
||||||
|
res |= LEFT.SampleKey();
|
||||||
if (Input.GetKey(DOWN.keyCode))
|
res |= RIGHT.SampleKey();
|
||||||
res |= EnumButtonType.DOWN;
|
res |= A.SampleKey();
|
||||||
|
res |= B.SampleKey();
|
||||||
if (Input.GetKey(LEFT.keyCode))
|
res |= SELECT.SampleKey();
|
||||||
res |= EnumButtonType.LEFT;
|
res |= START.SampleKey();
|
||||||
|
res |= MIC.SampleKey();
|
||||||
if (Input.GetKey(RIGHT.keyCode))
|
|
||||||
res |= EnumButtonType.RIGHT;
|
|
||||||
|
|
||||||
if (Input.GetKey(A.keyCode))
|
|
||||||
res |= EnumButtonType.A;
|
|
||||||
|
|
||||||
if (Input.GetKey(B.keyCode))
|
|
||||||
res |= EnumButtonType.B;
|
|
||||||
|
|
||||||
if (Input.GetKey(SELECT.keyCode))
|
|
||||||
res |= EnumButtonType.SELECT;
|
|
||||||
|
|
||||||
if (Input.GetKey(START.keyCode))
|
|
||||||
res |= EnumButtonType.START;
|
|
||||||
|
|
||||||
if (Input.GetKey(MIC.keyCode))
|
|
||||||
res |= EnumButtonType.MIC;
|
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static IKeyListener GetKey(int controllerInput, EnumButtonType nesConBtnType)
|
||||||
|
{
|
||||||
|
string configKey = $"NES_{controllerInput}_{nesConBtnType}";
|
||||||
|
if (PlayerPrefs.HasKey(configKey))
|
||||||
|
{
|
||||||
|
return new KeyListener(PlayerPrefs.GetString(configKey));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var defaultKeyCode = GetDefaultKey();
|
||||||
|
PlayerPrefs.SetString(configKey, defaultKeyCode.ToString());
|
||||||
|
return defaultKeyCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
KeyListener GetDefaultKey()
|
||||||
|
{
|
||||||
|
switch (controllerInput)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
if (nesConBtnType == EnumButtonType.LEFT) return new KeyListener(KeyCode.A);
|
||||||
|
if (nesConBtnType == EnumButtonType.RIGHT) return new KeyListener(KeyCode.D);
|
||||||
|
if (nesConBtnType == EnumButtonType.UP) return new KeyListener(KeyCode.W);
|
||||||
|
if (nesConBtnType == EnumButtonType.DOWN) return new KeyListener(KeyCode.S);
|
||||||
|
if (nesConBtnType == EnumButtonType.START) return new KeyListener(KeyCode.B);
|
||||||
|
if (nesConBtnType == EnumButtonType.SELECT) return new KeyListener(KeyCode.V);
|
||||||
|
if (nesConBtnType == EnumButtonType.A) return new KeyListener(KeyCode.K);
|
||||||
|
if (nesConBtnType == EnumButtonType.B) return new KeyListener(KeyCode.J);
|
||||||
|
if (nesConBtnType == EnumButtonType.MIC) return new KeyListener(KeyCode.M);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
if (nesConBtnType == EnumButtonType.LEFT) return new KeyListener(KeyCode.Delete);
|
||||||
|
if (nesConBtnType == EnumButtonType.RIGHT) return new KeyListener(KeyCode.PageDown);
|
||||||
|
if (nesConBtnType == EnumButtonType.UP) return new KeyListener(KeyCode.Home);
|
||||||
|
if (nesConBtnType == EnumButtonType.DOWN) return new KeyListener(KeyCode.End);
|
||||||
|
if (nesConBtnType == EnumButtonType.START) return new KeyListener(KeyCode.PageUp);
|
||||||
|
if (nesConBtnType == EnumButtonType.SELECT) return new KeyListener(KeyCode.Insert);
|
||||||
|
if (nesConBtnType == EnumButtonType.A) return new KeyListener(KeyCode.Keypad5);
|
||||||
|
if (nesConBtnType == EnumButtonType.B) return new KeyListener(KeyCode.Keypad4);
|
||||||
|
if (nesConBtnType == EnumButtonType.MIC) return new KeyListener(KeyCode.KeypadPeriod);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return default;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface IKeyListener
|
||||||
|
{
|
||||||
|
bool IsPressing();
|
||||||
|
}
|
||||||
|
|
||||||
|
public struct KeyListener : IKeyListener
|
||||||
|
{
|
||||||
|
private KeyCode m_key;
|
||||||
|
|
||||||
|
public KeyListener(KeyCode key)
|
||||||
|
{
|
||||||
|
m_key = key;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 从配置表字符串构建
|
||||||
|
/// </summary>
|
||||||
|
public KeyListener(string confStr)
|
||||||
|
{
|
||||||
|
m_key = KeyCode.None;
|
||||||
|
|
||||||
|
if (int.TryParse(confStr, out int result))
|
||||||
|
m_key = (KeyCode)result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public readonly bool IsPressing()
|
||||||
|
{
|
||||||
|
if (Input.GetKey(m_key)) return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string ToString()
|
||||||
|
{
|
||||||
|
return ((int)(m_key)).ToString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
using AxibugEmuOnline.Client.ClientCore;
|
using AxibugEmuOnline.Client.ClientCore;
|
||||||
using AxibugEmuOnline.Client.Common;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
@ -12,6 +11,8 @@ namespace AxibugEmuOnline.Client
|
|||||||
{
|
{
|
||||||
public class NesEmulator : MonoBehaviour, IEmuCore
|
public class NesEmulator : MonoBehaviour, IEmuCore
|
||||||
{
|
{
|
||||||
|
public EnumPlatform Platform => EnumPlatform.NES;
|
||||||
|
|
||||||
//模拟器核心实例化对象
|
//模拟器核心实例化对象
|
||||||
public NES NesCore { get; private set; }
|
public NES NesCore { get; private set; }
|
||||||
|
|
||||||
@ -135,7 +136,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
|
|
||||||
public void SetupScheme()
|
public void SetupScheme()
|
||||||
{
|
{
|
||||||
ControlScheme.Current = ControlSchemeSetts.NES;
|
CommandDispatcher.Instance.Current = CommandDispatcher.Instance.Gaming;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LoadState(object state)
|
public void LoadState(object state)
|
||||||
@ -168,6 +169,8 @@ namespace AxibugEmuOnline.Client
|
|||||||
NesCore.LoadState(st);
|
NesCore.LoadState(st);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public uint Frame => NesCore.FrameCount;
|
||||||
|
|
||||||
#if UNITY_EDITOR
|
#if UNITY_EDITOR
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 编辑器用
|
/// 编辑器用
|
||||||
@ -196,8 +199,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
UnityEditor.EditorUtility.SetDirty(db);
|
UnityEditor.EditorUtility.SetDirty(db);
|
||||||
UnityEditor.AssetDatabase.SaveAssets();
|
UnityEditor.AssetDatabase.SaveAssets();
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
public uint Frame => NesCore.FrameCount;
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@ Material:
|
|||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
m_PrefabInstance: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_Name: VirtuNesDraw
|
m_Name: NesEmulator_Screen
|
||||||
m_Shader: {fileID: 4800000, guid: b351396ff606116478d7f4412abe4e2e, type: 3}
|
m_Shader: {fileID: 4800000, guid: b351396ff606116478d7f4412abe4e2e, type: 3}
|
||||||
m_ShaderKeywords:
|
m_ShaderKeywords:
|
||||||
m_LightmapFlags: 4
|
m_LightmapFlags: 4
|
@ -1,4 +1,4 @@
|
|||||||
Shader "AleinUI/Clip"
|
Shader "NesEmulator/Screen"
|
||||||
{
|
{
|
||||||
Properties
|
Properties
|
||||||
{
|
{
|
||||||
@ -107,8 +107,6 @@
|
|||||||
|
|
||||||
mapUV.x = lerp(start,end, mapUV.x);
|
mapUV.x = lerp(start,end, mapUV.x);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
half4 color = tex2D(_MainTex,mapUV);
|
half4 color = tex2D(_MainTex,mapUV);
|
||||||
|
|
||||||
//float rawIndex = color.b;
|
//float rawIndex = color.b;
|
93
AxibugEmuOnline.Client/Assets/Script/UI/AlphaWraper.cs
Normal file
93
AxibugEmuOnline.Client/Assets/Script/UI/AlphaWraper.cs
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
using DG.Tweening;
|
||||||
|
using DG.Tweening.Core;
|
||||||
|
using DG.Tweening.Plugins.Options;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace AxibugEmuOnline.Client
|
||||||
|
{
|
||||||
|
public class AlphaWraper
|
||||||
|
{
|
||||||
|
private bool m_on;
|
||||||
|
private CanvasGroup m_offUI;
|
||||||
|
private CanvasGroup m_onUI;
|
||||||
|
private TweenerCore<float, float, FloatOptions> m_onTween;
|
||||||
|
private TweenerCore<float, float, FloatOptions> m_offTween;
|
||||||
|
|
||||||
|
public bool On
|
||||||
|
{
|
||||||
|
get => m_on;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (m_on == value) return;
|
||||||
|
|
||||||
|
m_on = value;
|
||||||
|
|
||||||
|
if (m_onTween != null)
|
||||||
|
{
|
||||||
|
m_onTween.Kill();
|
||||||
|
m_onTween = null;
|
||||||
|
}
|
||||||
|
if (m_offTween != null)
|
||||||
|
{
|
||||||
|
m_offTween.Kill();
|
||||||
|
m_offTween = null;
|
||||||
|
}
|
||||||
|
m_onUI.gameObject.SetActiveEx(true);
|
||||||
|
m_offUI.gameObject.SetActiveEx(true);
|
||||||
|
|
||||||
|
if (On)
|
||||||
|
{
|
||||||
|
float progress = 0f;
|
||||||
|
m_onTween = DOTween.To(() => progress, (x) =>
|
||||||
|
{
|
||||||
|
progress = x;
|
||||||
|
m_onUI.alpha = progress;
|
||||||
|
m_offUI.alpha = 1 - progress;
|
||||||
|
}, 1f, 0.3f);
|
||||||
|
m_onTween.onComplete = () =>
|
||||||
|
{
|
||||||
|
m_offUI.gameObject.SetActiveEx(false);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
float progress = 0f;
|
||||||
|
m_offTween = DOTween.To(() => progress, (x) =>
|
||||||
|
{
|
||||||
|
progress = x;
|
||||||
|
m_onUI.alpha = 1 - progress;
|
||||||
|
m_offUI.alpha = progress;
|
||||||
|
}, 1f, 0.3f);
|
||||||
|
m_offTween.onComplete = () =>
|
||||||
|
{
|
||||||
|
m_onUI.gameObject.SetActiveEx(false);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public AlphaWraper(CanvasGroup offUI, CanvasGroup onUI, bool defaultOn)
|
||||||
|
{
|
||||||
|
m_offUI = offUI;
|
||||||
|
m_onUI = onUI;
|
||||||
|
|
||||||
|
m_on = defaultOn;
|
||||||
|
if (On)
|
||||||
|
{
|
||||||
|
onUI.alpha = 1;
|
||||||
|
onUI.gameObject.SetActiveEx(true);
|
||||||
|
offUI.alpha = 0;
|
||||||
|
offUI.gameObject.SetActiveEx(false);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
onUI.alpha = 0;
|
||||||
|
onUI.gameObject.SetActiveEx(false);
|
||||||
|
offUI.alpha = 1;
|
||||||
|
offUI.gameObject.SetActiveEx(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
11
AxibugEmuOnline.Client/Assets/Script/UI/AlphaWraper.cs.meta
Normal file
11
AxibugEmuOnline.Client/Assets/Script/UI/AlphaWraper.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 02337cc8c99c47341aa29b3e296b7b13
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -1,5 +1,3 @@
|
|||||||
using System.Collections;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace AxibugEmuOnline.Client
|
namespace AxibugEmuOnline.Client
|
||||||
|
@ -0,0 +1,32 @@
|
|||||||
|
using AxibugEmuOnline.Client.ClientCore;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
namespace AxibugEmuOnline.Client
|
||||||
|
{
|
||||||
|
public class GlobalFilterListMenuItem : VirtualSubMenuItem
|
||||||
|
{
|
||||||
|
public override bool OnEnterItem()
|
||||||
|
{
|
||||||
|
App.filter.EnableFilterPreview();
|
||||||
|
|
||||||
|
return base.OnEnterItem();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool OnExitItem()
|
||||||
|
{
|
||||||
|
App.filter.ShutDownFilterPreview();
|
||||||
|
App.filter.ShutDownFilter();
|
||||||
|
|
||||||
|
return base.OnExitItem();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void GetVirtualListDatas(Action<object> datas)
|
||||||
|
{
|
||||||
|
List<object> list = new List<object>();
|
||||||
|
list.AddRange(App.filter.Filters.Select(f => (object)f));
|
||||||
|
datas.Invoke(list);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0ac5f46132259b045b524fc310dbd532
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -0,0 +1,47 @@
|
|||||||
|
using AxibugEmuOnline.Client.ClientCore;
|
||||||
|
using AxibugEmuOnline.Client.UI;
|
||||||
|
|
||||||
|
namespace AxibugEmuOnline.Client
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// ±³¾°ÑÕÉ«ÉèÖÃUI
|
||||||
|
/// </summary>
|
||||||
|
public class UI_FilterItem : MenuItem, IVirtualItem
|
||||||
|
{
|
||||||
|
public int Index { get; set; }
|
||||||
|
public FilterManager.Filter Datacontext { get; private set; }
|
||||||
|
|
||||||
|
|
||||||
|
public void SetData(object data)
|
||||||
|
{
|
||||||
|
Datacontext = data as FilterManager.Filter;
|
||||||
|
|
||||||
|
UpdateView();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void UpdateView()
|
||||||
|
{
|
||||||
|
SetBaseInfo(Datacontext.Name, $"²ÎÊýÊýÁ¿:{Datacontext.Paramerters.Count}", null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetDependencyProperty(object data)
|
||||||
|
{
|
||||||
|
SetSelectState(data is ThirdMenuRoot tr && tr.SelectIndex == Index);
|
||||||
|
|
||||||
|
if (m_select)
|
||||||
|
{
|
||||||
|
App.filter.EnableFilterPreview();
|
||||||
|
App.filter.EnableFilter(Datacontext);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Release()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool OnEnterItem()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 267dda362a6090d42b48e3cced57ae9c
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -1,3 +1,5 @@
|
|||||||
|
using AxibugEmuOnline.Client.ClientCore;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
@ -12,11 +14,34 @@ namespace AxibugEmuOnline.Client
|
|||||||
/// <summary> 独占注册对象,指令会被列表中最后一个对象独占 </summary>
|
/// <summary> 独占注册对象,指令会被列表中最后一个对象独占 </summary>
|
||||||
List<CommandExecuter> m_registerHigh = new List<CommandExecuter>();
|
List<CommandExecuter> m_registerHigh = new List<CommandExecuter>();
|
||||||
|
|
||||||
Dictionary<KeyCode, EnumCommand> m_keyMapper = new Dictionary<KeyCode, EnumCommand>();
|
ICommandListener m_listener;
|
||||||
|
/// <summary> 标准UI操作 </summary>
|
||||||
|
public IKeyMapperChanger Normal { get; private set; }
|
||||||
|
/// <summary> 游戏中UI操作 </summary>
|
||||||
|
public IKeyMapperChanger Gaming { get; private set; }
|
||||||
|
|
||||||
|
private IKeyMapperChanger m_current;
|
||||||
|
public IKeyMapperChanger Current
|
||||||
|
{
|
||||||
|
get => m_current;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
m_current = value;
|
||||||
|
|
||||||
|
SetKeyMapper(m_current);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
Instance = this;
|
Instance = this;
|
||||||
|
|
||||||
|
//初始化command监视器
|
||||||
|
m_listener = new CommandListener();
|
||||||
|
|
||||||
|
//初始化键位修改器
|
||||||
|
Normal = new NormalChanger();
|
||||||
|
Gaming = new GamingChanger();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnDestroy()
|
private void OnDestroy()
|
||||||
@ -24,6 +49,11 @@ namespace AxibugEmuOnline.Client
|
|||||||
Instance = null;
|
Instance = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool IsRegisted(CommandExecuter commandExecuter)
|
||||||
|
{
|
||||||
|
return m_register.Contains(commandExecuter) || m_registerHigh.Contains(commandExecuter);
|
||||||
|
}
|
||||||
|
|
||||||
public void RegistController(CommandExecuter controller)
|
public void RegistController(CommandExecuter controller)
|
||||||
{
|
{
|
||||||
if (!controller.AloneMode)
|
if (!controller.AloneMode)
|
||||||
@ -50,41 +80,22 @@ namespace AxibugEmuOnline.Client
|
|||||||
|
|
||||||
readonly List<CommandExecuter> oneFrameRegister = new List<CommandExecuter>();
|
readonly List<CommandExecuter> oneFrameRegister = new List<CommandExecuter>();
|
||||||
private void Update()
|
private void Update()
|
||||||
{
|
|
||||||
foreach (var item in m_keyMapper)
|
|
||||||
{
|
{
|
||||||
peekRegister(oneFrameRegister);
|
peekRegister(oneFrameRegister);
|
||||||
|
m_listener.Update(oneFrameRegister);
|
||||||
|
|
||||||
if (Input.GetKeyDown(item.Key))
|
//键位映射在按键响应的堆栈结束后处理,防止迭代器修改问题
|
||||||
{
|
|
||||||
foreach (var controller in oneFrameRegister)
|
|
||||||
{
|
|
||||||
if (!controller.Enable) continue;
|
|
||||||
controller.ExecuteCommand(item.Value, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (Input.GetKeyUp(item.Key))
|
|
||||||
{
|
|
||||||
foreach (var controller in oneFrameRegister)
|
|
||||||
{
|
|
||||||
if (!controller.Enable) continue;
|
|
||||||
controller.ExecuteCommand(item.Value, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//键位映射表需要在按键响应的堆栈结束后处理,防止迭代器修改问题
|
|
||||||
if (m_waitMapperSetting != null)
|
if (m_waitMapperSetting != null)
|
||||||
{
|
{
|
||||||
m_keyMapper = m_waitMapperSetting;
|
m_listener.ApplyKeyMapper(m_waitMapperSetting);
|
||||||
m_waitMapperSetting = null;
|
m_waitMapperSetting = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Dictionary<KeyCode, EnumCommand> m_waitMapperSetting = null;
|
IKeyMapperChanger m_waitMapperSetting = null;
|
||||||
public void SetKeyMapper(Dictionary<KeyCode, EnumCommand> mapper)
|
void SetKeyMapper(IKeyMapperChanger keyMapChanger)
|
||||||
{
|
{
|
||||||
m_waitMapperSetting = mapper;
|
m_waitMapperSetting = keyMapChanger;
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<CommandExecuter> peekRegister(List<CommandExecuter> results)
|
private List<CommandExecuter> peekRegister(List<CommandExecuter> results)
|
||||||
@ -114,14 +125,12 @@ namespace AxibugEmuOnline.Client
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#if UNITY_EDITOR
|
#if UNITY_EDITOR
|
||||||
public void GetRegisters(out IReadOnlyList<CommandExecuter> normal, out IReadOnlyList<CommandExecuter> alone)
|
public void GetRegisters(out IReadOnlyList<CommandExecuter> normal, out IReadOnlyList<CommandExecuter> alone)
|
||||||
{
|
{
|
||||||
normal = m_register;
|
normal = m_register;
|
||||||
alone = m_registerHigh;
|
alone = m_registerHigh;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
|
|
||||||
public abstract bool Enable { get; }
|
public abstract bool Enable { get; }
|
||||||
public virtual bool AloneMode { get; }
|
public virtual bool AloneMode { get; }
|
||||||
|
public bool Registed => CommandDispatcher.Instance.IsRegisted(this);
|
||||||
|
|
||||||
protected virtual void Awake()
|
protected virtual void Awake()
|
||||||
{
|
{
|
||||||
@ -31,12 +32,22 @@ namespace AxibugEmuOnline.Client
|
|||||||
protected virtual void OnDestroy() { }
|
protected virtual void OnDestroy() { }
|
||||||
|
|
||||||
protected virtual void Update()
|
protected virtual void Update()
|
||||||
|
{
|
||||||
|
if (Registed)
|
||||||
{
|
{
|
||||||
m_pulsInvoker_Left.Update(Time.deltaTime);
|
m_pulsInvoker_Left.Update(Time.deltaTime);
|
||||||
m_pulsInvoker_Right.Update(Time.deltaTime);
|
m_pulsInvoker_Right.Update(Time.deltaTime);
|
||||||
m_pulsInvoker_Up.Update(Time.deltaTime);
|
m_pulsInvoker_Up.Update(Time.deltaTime);
|
||||||
m_pulsInvoker_Down.Update(Time.deltaTime);
|
m_pulsInvoker_Down.Update(Time.deltaTime);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_pulsInvoker_Left.DisActive();
|
||||||
|
m_pulsInvoker_Right.DisActive();
|
||||||
|
m_pulsInvoker_Up.DisActive();
|
||||||
|
m_pulsInvoker_Down.DisActive();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public void ResetPulsInvoker()
|
public void ResetPulsInvoker()
|
||||||
@ -49,6 +60,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
|
|
||||||
public void ExecuteCommand(EnumCommand cmd, bool cancel)
|
public void ExecuteCommand(EnumCommand cmd, bool cancel)
|
||||||
{
|
{
|
||||||
|
if (cmd == EnumCommand.NONE) return;
|
||||||
if (!cancel)
|
if (!cancel)
|
||||||
{
|
{
|
||||||
switch (cmd)
|
switch (cmd)
|
||||||
@ -118,6 +130,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
|
|
||||||
public enum EnumCommand
|
public enum EnumCommand
|
||||||
{
|
{
|
||||||
|
NONE,
|
||||||
SelectItemLeft,
|
SelectItemLeft,
|
||||||
SelectItemRight,
|
SelectItemRight,
|
||||||
SelectItemUp,
|
SelectItemUp,
|
||||||
|
@ -0,0 +1,38 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace AxibugEmuOnline.Client
|
||||||
|
{
|
||||||
|
public class CommandListener : ICommandListener
|
||||||
|
{
|
||||||
|
Dictionary<KeyCode, EnumCommand> m_keyMapper = new Dictionary<KeyCode, EnumCommand>();
|
||||||
|
List<CommandState> m_commands = new List<CommandState>();
|
||||||
|
IEnumerable<CommandState> GetCommand()
|
||||||
|
{
|
||||||
|
m_commands.Clear();
|
||||||
|
foreach (var item in m_keyMapper)
|
||||||
|
{
|
||||||
|
if (Input.GetKeyDown(item.Key)) m_commands.Add(new CommandState { Cmd = item.Value, Cancel = false });
|
||||||
|
if (Input.GetKeyUp(item.Key)) m_commands.Add(new CommandState { Cmd = item.Value, Cancel = true });
|
||||||
|
}
|
||||||
|
|
||||||
|
return m_commands;
|
||||||
|
}
|
||||||
|
public void ApplyKeyMapper(IKeyMapperChanger changer)
|
||||||
|
{
|
||||||
|
var cfg = (Dictionary<KeyCode, EnumCommand>)changer.GetConfig();
|
||||||
|
m_keyMapper = cfg;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Update(IEnumerable<CommandExecuter> executers)
|
||||||
|
{
|
||||||
|
foreach (var cmd in GetCommand())
|
||||||
|
{
|
||||||
|
foreach (var executer in executers)
|
||||||
|
{
|
||||||
|
executer.ExecuteCommand(cmd.Cmd, cmd.Cancel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0c54554335d283d4ca61e01335c58665
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -0,0 +1,24 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace AxibugEmuOnline.Client
|
||||||
|
{
|
||||||
|
public interface IKeyMapperChanger
|
||||||
|
{
|
||||||
|
object GetConfig();
|
||||||
|
}
|
||||||
|
public interface ICommandListener
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 应用键位设置
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="changer"></param>
|
||||||
|
void ApplyKeyMapper(IKeyMapperChanger changer);
|
||||||
|
void Update(IEnumerable<CommandExecuter> commands);
|
||||||
|
}
|
||||||
|
|
||||||
|
public struct CommandState
|
||||||
|
{
|
||||||
|
public EnumCommand Cmd;
|
||||||
|
public bool Cancel;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 16e65b8db21c226419b57118ec1f56ff
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -124,7 +124,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
App.roomMgr.SendLeavnRoom();
|
App.roomMgr.SendLeavnRoom();
|
||||||
App.emu.StopGame();
|
App.emu.StopGame();
|
||||||
|
|
||||||
ControlScheme.Current = ControlSchemeSetts.Normal;
|
CommandDispatcher.Instance.Current = CommandDispatcher.Instance.Normal;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,8 +14,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
RectTransform MainMenuRoot;
|
RectTransform MainMenuRoot;
|
||||||
[SerializeField]
|
[SerializeField]
|
||||||
MainMenuController MainMenu;
|
MainMenuController MainMenu;
|
||||||
[SerializeField]
|
public Image BG;
|
||||||
Image BG;
|
|
||||||
|
|
||||||
Vector2 m_mainLayoutPosition;
|
Vector2 m_mainLayoutPosition;
|
||||||
[SerializeField]
|
[SerializeField]
|
||||||
@ -36,7 +35,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
|
|
||||||
private void Start()
|
private void Start()
|
||||||
{
|
{
|
||||||
ControlScheme.Current = ControlSchemeSetts.Normal;
|
CommandDispatcher.Instance.Current = CommandDispatcher.Instance.Normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void HideMainMenu()
|
public void HideMainMenu()
|
||||||
|
@ -103,9 +103,13 @@ namespace AxibugEmuOnline.Client.UI
|
|||||||
if (InfoNode != null) InfoNode.alpha = m_progress;
|
if (InfoNode != null) InfoNode.alpha = m_progress;
|
||||||
if (spline != null) spline.SetAlpha(m_progress);
|
if (spline != null) spline.SetAlpha(m_progress);
|
||||||
Root.localScale = Vector3.one * Mathf.Lerp(UnSelectScale, SelectScale, m_progress);
|
Root.localScale = Vector3.one * Mathf.Lerp(UnSelectScale, SelectScale, m_progress);
|
||||||
|
|
||||||
|
if (m_select) OnSelected(m_progress);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected virtual void OnSelected(float progress) { }
|
||||||
|
|
||||||
public virtual bool OnEnterItem() => true;
|
public virtual bool OnEnterItem() => true;
|
||||||
|
|
||||||
public virtual bool OnExitItem() => true;
|
public virtual bool OnExitItem() => true;
|
||||||
|
@ -69,6 +69,8 @@ namespace AxibugEmuOnline.Client
|
|||||||
protected override void Update()
|
protected override void Update()
|
||||||
{
|
{
|
||||||
UpdateMenuState();
|
UpdateMenuState();
|
||||||
|
|
||||||
|
base.Update();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateMenuState()
|
private void UpdateMenuState()
|
||||||
@ -125,7 +127,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ControlScheme m_lastCS;
|
IKeyMapperChanger m_lastCS;
|
||||||
public void Pop<T>(List<T> menus, int defaultIndex = 0) where T : OptionMenu
|
public void Pop<T>(List<T> menus, int defaultIndex = 0) where T : OptionMenu
|
||||||
{
|
{
|
||||||
ReleaseRuntimeMenus();
|
ReleaseRuntimeMenus();
|
||||||
@ -160,8 +162,8 @@ namespace AxibugEmuOnline.Client
|
|||||||
0.3f
|
0.3f
|
||||||
).SetEase(Ease.OutCubic);
|
).SetEase(Ease.OutCubic);
|
||||||
|
|
||||||
m_lastCS = ControlScheme.Current;
|
m_lastCS = CommandDispatcher.Instance.Current;
|
||||||
ControlScheme.Current = ControlSchemeSetts.Normal;
|
CommandDispatcher.Instance.Current = CommandDispatcher.Instance.Normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -192,7 +194,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
|
|
||||||
m_bPoped = false;
|
m_bPoped = false;
|
||||||
|
|
||||||
ControlScheme.Current = m_lastCS;
|
CommandDispatcher.Instance.Current = m_lastCS;
|
||||||
|
|
||||||
OnHide?.Invoke();
|
OnHide?.Invoke();
|
||||||
}
|
}
|
||||||
|
@ -60,6 +60,7 @@ namespace VirtualNes.Core
|
|||||||
[Flags]
|
[Flags]
|
||||||
public enum EnumButtonType
|
public enum EnumButtonType
|
||||||
{
|
{
|
||||||
|
NONE = 0,
|
||||||
UP = 1,
|
UP = 1,
|
||||||
DOWN = 2,
|
DOWN = 2,
|
||||||
LEFT = 4,
|
LEFT = 4,
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"com.unity.2d.sprite": "1.0.0",
|
"com.unity.2d.sprite": "1.0.0",
|
||||||
"com.unity.ide.visualstudio": "2.0.22",
|
"com.unity.ide.visualstudio": "2.0.22",
|
||||||
|
"com.unity.postprocessing": "3.2.2",
|
||||||
"com.unity.ugui": "1.0.0",
|
"com.unity.ugui": "1.0.0",
|
||||||
"com.unity.modules.ai": "1.0.0",
|
"com.unity.modules.ai": "1.0.0",
|
||||||
"com.unity.modules.androidjni": "1.0.0",
|
"com.unity.modules.androidjni": "1.0.0",
|
||||||
|
@ -22,6 +22,15 @@
|
|||||||
},
|
},
|
||||||
"url": "https://packages.unity.cn"
|
"url": "https://packages.unity.cn"
|
||||||
},
|
},
|
||||||
|
"com.unity.postprocessing": {
|
||||||
|
"version": "3.2.2",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.physics": "1.0.0"
|
||||||
|
},
|
||||||
|
"url": "https://packages.unity.cn"
|
||||||
|
},
|
||||||
"com.unity.test-framework": {
|
"com.unity.test-framework": {
|
||||||
"version": "1.1.31",
|
"version": "1.1.31",
|
||||||
"depth": 1,
|
"depth": 1,
|
||||||
|
@ -8,7 +8,7 @@ EditorBuildSettings:
|
|||||||
- enabled: 1
|
- enabled: 1
|
||||||
path: Assets/Scene/AxibugEmuOnline.Client.unity
|
path: Assets/Scene/AxibugEmuOnline.Client.unity
|
||||||
guid: eb0c18a619175384d95147898a43054b
|
guid: eb0c18a619175384d95147898a43054b
|
||||||
- enabled: 1
|
- enabled: 0
|
||||||
path: Assets/Scene/Emu_NES.unity
|
path: Assets/Scene/Emu_NES.unity
|
||||||
guid: 3dba71db67877594a9b5b77059205ec8
|
guid: 3dba71db67877594a9b5b77059205ec8
|
||||||
m_configObjects: {}
|
m_configObjects: {}
|
||||||
|
@ -640,21 +640,21 @@ PlayerSettings:
|
|||||||
webGLThreadsSupport: 0
|
webGLThreadsSupport: 0
|
||||||
webGLDecompressionFallback: 0
|
webGLDecompressionFallback: 0
|
||||||
scriptingDefineSymbols:
|
scriptingDefineSymbols:
|
||||||
1: DOTWEEN
|
1: DOTWEEN;UNITY_POST_PROCESSING_STACK_V2
|
||||||
4: DOTWEEN
|
4: DOTWEEN
|
||||||
7: DOTWEEN;ODIN_INSPECTOR;ODIN_INSPECTOR_3;ODIN_INSPECTOR_3_1;ODIN_INSPECTOR_EDITOR_ONLY
|
7: DOTWEEN;ODIN_INSPECTOR;ODIN_INSPECTOR_3;ODIN_INSPECTOR_3_1;ODIN_INSPECTOR_EDITOR_ONLY;UNITY_POST_PROCESSING_STACK_V2
|
||||||
13: DOTWEEN
|
13: DOTWEEN;UNITY_POST_PROCESSING_STACK_V2
|
||||||
14: DOTWEEN
|
14: DOTWEEN;UNITY_POST_PROCESSING_STACK_V2
|
||||||
19: DOTWEEN
|
19: DOTWEEN;UNITY_POST_PROCESSING_STACK_V2
|
||||||
21: DOTWEEN
|
21: DOTWEEN;UNITY_POST_PROCESSING_STACK_V2
|
||||||
25: DOTWEEN
|
25: DOTWEEN;UNITY_POST_PROCESSING_STACK_V2
|
||||||
27: DOTWEEN
|
27: DOTWEEN;UNITY_POST_PROCESSING_STACK_V2
|
||||||
28: DOTWEEN
|
28: DOTWEEN;UNITY_POST_PROCESSING_STACK_V2
|
||||||
29: DOTWEEN
|
29: DOTWEEN;UNITY_POST_PROCESSING_STACK_V2
|
||||||
30: DOTWEEN
|
30: DOTWEEN;UNITY_POST_PROCESSING_STACK_V2
|
||||||
31: DOTWEEN
|
31: DOTWEEN
|
||||||
32: DOTWEEN
|
32: DOTWEEN;UNITY_POST_PROCESSING_STACK_V2
|
||||||
33: DOTWEEN
|
33: DOTWEEN;UNITY_POST_PROCESSING_STACK_V2
|
||||||
additionalCompilerArguments: {}
|
additionalCompilerArguments: {}
|
||||||
platformArchitecture: {}
|
platformArchitecture: {}
|
||||||
scriptingBackend:
|
scriptingBackend:
|
||||||
@ -744,7 +744,7 @@ PlayerSettings:
|
|||||||
m_VersionCode: 1
|
m_VersionCode: 1
|
||||||
m_VersionName:
|
m_VersionName:
|
||||||
apiCompatibilityLevel: 3
|
apiCompatibilityLevel: 3
|
||||||
activeInputHandler: 0
|
activeInputHandler: 2
|
||||||
cloudProjectId:
|
cloudProjectId:
|
||||||
framebufferDepthMemorylessMode: 0
|
framebufferDepthMemorylessMode: 0
|
||||||
qualitySettingsNames: []
|
qualitySettingsNames: []
|
||||||
|
@ -3,7 +3,8 @@
|
|||||||
--- !u!78 &1
|
--- !u!78 &1
|
||||||
TagManager:
|
TagManager:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
tags: []
|
tags:
|
||||||
|
- UIInput
|
||||||
layers:
|
layers:
|
||||||
- Default
|
- Default
|
||||||
- TransparentFX
|
- TransparentFX
|
||||||
|
Loading…
Reference in New Issue
Block a user