改动
This commit is contained in:
@@ -1,338 +0,0 @@
|
||||
<linker>
|
||||
<assembly fullname="AllIn1SpriteShaderAssembly, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
||||
<type fullname="AllIn1SpriteShader.AllIn1Shader" preserve="all" />
|
||||
</assembly>
|
||||
<assembly fullname="Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
||||
<type fullname="AibisDream.AudioManager" preserve="all" />
|
||||
<type fullname="AibisDream.AudioView" preserve="all" />
|
||||
<type fullname="AibisDream.CommandOptionView" preserve="all" />
|
||||
<type fullname="AibisDream.DialogBox" preserve="all" />
|
||||
<type fullname="AibisDream.DialogBubble" preserve="all" />
|
||||
<type fullname="AibisDream.DialogBubbleViewer" preserve="all" />
|
||||
<type fullname="AibisDream.DialogCanvasManager" preserve="all" />
|
||||
<type fullname="AibisDream.DialogController" preserve="all" />
|
||||
<type fullname="AibisDream.GameLoopManager" preserve="all" />
|
||||
<type fullname="AibisDream.Gear" preserve="all" />
|
||||
<type fullname="AibisDream.GearController" preserve="all" />
|
||||
<type fullname="AibisDream.LineView" preserve="all" />
|
||||
<type fullname="AibisDream.MainSceneController" preserve="all" />
|
||||
<type fullname="AibisDream.MainUIController" preserve="all" />
|
||||
<type fullname="AibisDream.SceneLoader" preserve="all" />
|
||||
<type fullname="AibisDream.Shaft" preserve="all" />
|
||||
<type fullname="AibisDream.StartMenu" preserve="all" />
|
||||
<type fullname="AibisDream.StartMenuViewer" preserve="all" />
|
||||
<type fullname="AibisDream.TalkSceneSO" preserve="all" />
|
||||
<type fullname="AibisDream.Test.OptionTest" preserve="all" />
|
||||
<type fullname="BookManager" preserve="all" />
|
||||
<type fullname="Cable" preserve="all" />
|
||||
<type fullname="CharacterManager" preserve="all" />
|
||||
<type fullname="ClueBaordNew" preserve="all" />
|
||||
<type fullname="ClueBoardManager" preserve="all" />
|
||||
<type fullname="ClueInteraction" preserve="all" />
|
||||
<type fullname="ClueItem" preserve="all" />
|
||||
<type fullname="ClueManager" preserve="all" />
|
||||
<type fullname="Crowbar" preserve="all" />
|
||||
<type fullname="DraggableUI" preserve="all" />
|
||||
<type fullname="ErrorWaveformVisualizer" preserve="all" />
|
||||
<type fullname="EyeManager" preserve="all" />
|
||||
<type fullname="EyeTarget" preserve="all" />
|
||||
<type fullname="EyeTargetDropdown" preserve="all" />
|
||||
<type fullname="EyeTransitionManager" preserve="all" />
|
||||
<type fullname="FavoritesManager" preserve="all" />
|
||||
<type fullname="GearModel" preserve="all" />
|
||||
<type fullname="HeatMapController" preserve="all" />
|
||||
<type fullname="Install" preserve="all" />
|
||||
<type fullname="InteractiveLineSegment" preserve="all" />
|
||||
<type fullname="LineManager" preserve="all" />
|
||||
<type fullname="ManualManager" preserve="all" />
|
||||
<type fullname="MemoryClueSlot" preserve="all" />
|
||||
<type fullname="MemoryProcess" preserve="all" />
|
||||
<type fullname="MessageBox" preserve="all" />
|
||||
<type fullname="Module" preserve="all" />
|
||||
<type fullname="MouseCursorManager" preserve="all" />
|
||||
<type fullname="MouseFollowAndZoom" preserve="all" />
|
||||
<type fullname="OscilloscopeController" preserve="all" />
|
||||
<type fullname="Page" preserve="all" />
|
||||
<type fullname="PhysicLineSegment" preserve="all" />
|
||||
<type fullname="Plug" preserve="all" />
|
||||
<type fullname="RaycastManager" preserve="all" />
|
||||
<type fullname="Scissor" preserve="all" />
|
||||
<type fullname="ScreenEffectManager" preserve="all" />
|
||||
<type fullname="Screw" preserve="all" />
|
||||
<type fullname="Screwdriver" preserve="all" />
|
||||
<type fullname="ShootingManager" preserve="all" />
|
||||
<type fullname="Socket" preserve="all" />
|
||||
<type fullname="TargetPointData" preserve="all" />
|
||||
<type fullname="TaskManager" preserve="all" />
|
||||
<type fullname="ToolManager" preserve="all" />
|
||||
<type fullname="UFProcess" preserve="all" />
|
||||
<type fullname="ViewCameraManager" preserve="all" />
|
||||
<type fullname="WaveformVisualizer" preserve="all" />
|
||||
<type fullname="Entry" preserve="nothing" serialized="true" />
|
||||
<type fullname="EyeTransitionManager/ViewConfig" preserve="nothing" serialized="true" />
|
||||
<type fullname="LineSegmentInfo" preserve="nothing" serialized="true" />
|
||||
</assembly>
|
||||
<assembly fullname="Assembly-CSharp-firstpass, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
||||
<type fullname="AutoFlip" preserve="all" />
|
||||
<type fullname="Book" preserve="all" />
|
||||
<type fullname="MeadowGames.UINodeConnect4.ConnectionLabel" preserve="all" />
|
||||
<type fullname="MeadowGames.UINodeConnect4.Extension.StartPlusEndNodeIDsRule" preserve="all" />
|
||||
<type fullname="MeadowGames.UINodeConnect4.Extra.ConstantUpdateLines" preserve="all" />
|
||||
<type fullname="MeadowGames.UINodeConnect4.Extra.HandlerRenderer" preserve="all" />
|
||||
<type fullname="MeadowGames.UINodeConnect4.GraphicRenderer.UICLineRenderer" preserve="all" />
|
||||
<type fullname="MeadowGames.UINodeConnect4.GraphManager" preserve="all" />
|
||||
<type fullname="MeadowGames.UINodeConnect4.InputManager_LegacyInputSystem" preserve="all" />
|
||||
<type fullname="MeadowGames.UINodeConnect4.Node" preserve="all" />
|
||||
<type fullname="MeadowGames.UINodeConnect4.Port" preserve="all" />
|
||||
<type fullname="MeadowGames.UINodeConnect4.PortControlPoint" preserve="all" />
|
||||
<type fullname="MeadowGames.UINodeConnect4.SampleScene.ScrollViewGraph.CustomScrollRect" preserve="all" />
|
||||
<type fullname="MeadowGames.UINodeConnect4.SampleScene.ScrollViewGraph.Zoom" preserve="all" />
|
||||
<type fullname="MeadowGames.UINodeConnect4.UICContextMenu.AddNodeButtonItem" preserve="all" />
|
||||
<type fullname="MeadowGames.UINodeConnect4.UICContextMenu.ContextMenuManager" preserve="all" />
|
||||
<type fullname="MeadowGames.UINodeConnect4.UICContextMenu.DefaultConnectionWidthInputItem" preserve="all" />
|
||||
<type fullname="MeadowGames.UINodeConnect4.UICContextMenu.DefaultCurveStyleDropdownItem" preserve="all" />
|
||||
<type fullname="MeadowGames.UINodeConnect4.UICContextMenu.DuplicateNodeButtonItem" preserve="all" />
|
||||
<type fullname="MeadowGames.UINodeConnect4.UICContextMenu.EmptyContextItem" preserve="all" />
|
||||
<type fullname="MeadowGames.UINodeConnect4.UICContextMenu.RemoveElementsButtonItem" preserve="all" />
|
||||
<type fullname="MeadowGames.UINodeConnect4.UICContextMenu.SelectedElementLabelItem" preserve="all" />
|
||||
<type fullname="MeadowGames.UINodeConnect4.UICContextMenu.SetConnectionAnimationActiveToggleItem" preserve="all" />
|
||||
<type fullname="MeadowGames.UINodeConnect4.UICContextMenu.SetConnectionAnimationPointsSliderItem" preserve="all" />
|
||||
<type fullname="MeadowGames.UINodeConnect4.UICContextMenu.SetConnectionWidthInputItem" preserve="all" />
|
||||
<type fullname="MeadowGames.UINodeConnect4.UICContextMenu.SetCurveStyleDropdownItem" preserve="all" />
|
||||
<type fullname="MeadowGames.UINodeConnect4.UICContextMenu.SetElementsColorItem" preserve="all" />
|
||||
<type fullname="MeadowGames.UINodeConnect4.UICContextMenu.SetNodesAlignmentItem" preserve="all" />
|
||||
<type fullname="MeadowGames.UINodeConnect4.UICSystemManager" preserve="all" />
|
||||
<type fullname="Oscillogram" preserve="all" />
|
||||
<type fullname="RainbowArt.CleanFlatUI.Notification" preserve="all" />
|
||||
<type fullname="RainbowArt.CleanFlatUI.SliderCircular" preserve="all" />
|
||||
<type fullname="RainbowArt.CleanFlatUI.SliderTransition" preserve="all" />
|
||||
<type fullname="RainbowArt.CleanFlatUI.TransitionDown" preserve="all" />
|
||||
<type fullname="MeadowGames.UINodeConnect4.Connection" preserve="nothing" serialized="true" />
|
||||
<type fullname="MeadowGames.UINodeConnect4.DragSelection" preserve="nothing" serialized="true" />
|
||||
<type fullname="MeadowGames.UINodeConnect4.GraphicRenderer.Line" preserve="nothing" serialized="true" />
|
||||
<type fullname="MeadowGames.UINodeConnect4.GraphicRenderer.Line/LineCap" preserve="nothing" serialized="true" />
|
||||
<type fullname="MeadowGames.UINodeConnect4.GraphicRenderer.LineAnimation" preserve="nothing" serialized="true" />
|
||||
<type fullname="MeadowGames.UINodeConnect4.Pointer" preserve="nothing" serialized="true" />
|
||||
<type fullname="RainbowArt.CleanFlatUI.Notification/NotificationEvent" preserve="nothing" serialized="true" />
|
||||
<type fullname="RainbowArt.CleanFlatUI.SliderCircular/SliderCircularEvent" preserve="nothing" serialized="true" />
|
||||
</assembly>
|
||||
<assembly fullname="Febucci.TextAnimator.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
||||
<type fullname="Febucci.UI.Actions.ActionDatabase" preserve="all" />
|
||||
<type fullname="Febucci.UI.Actions.SpeedAction" preserve="all" />
|
||||
<type fullname="Febucci.UI.Actions.WaitAnyInputAction" preserve="all" />
|
||||
<type fullname="Febucci.UI.Actions.WaitForAction" preserve="all" />
|
||||
<type fullname="Febucci.UI.Effects.AnimationsDatabase" preserve="all" />
|
||||
<type fullname="Febucci.UI.Effects.BounceBehavior" preserve="all" />
|
||||
<type fullname="Febucci.UI.Effects.DangleBehavior" preserve="all" />
|
||||
<type fullname="Febucci.UI.Effects.DiagonalExpandAppearance" preserve="all" />
|
||||
<type fullname="Febucci.UI.Effects.FadeAppearance" preserve="all" />
|
||||
<type fullname="Febucci.UI.Effects.FadeBehavior" preserve="all" />
|
||||
<type fullname="Febucci.UI.Effects.HorizontalExpandAppearance" preserve="all" />
|
||||
<type fullname="Febucci.UI.Effects.OffsetAppearance" preserve="all" />
|
||||
<type fullname="Febucci.UI.Effects.PendulumBehavior" preserve="all" />
|
||||
<type fullname="Febucci.UI.Effects.RainbowBehavior" preserve="all" />
|
||||
<type fullname="Febucci.UI.Effects.RandomDirectionAppearance" preserve="all" />
|
||||
<type fullname="Febucci.UI.Effects.RotatingAppearance" preserve="all" />
|
||||
<type fullname="Febucci.UI.Effects.RotationBehavior" preserve="all" />
|
||||
<type fullname="Febucci.UI.Effects.ShakeBehavior" preserve="all" />
|
||||
<type fullname="Febucci.UI.Effects.SizeAppearance" preserve="all" />
|
||||
<type fullname="Febucci.UI.Effects.SizeBehavior" preserve="all" />
|
||||
<type fullname="Febucci.UI.Effects.SlideBehavior" preserve="all" />
|
||||
<type fullname="Febucci.UI.Effects.SwingBehavior" preserve="all" />
|
||||
<type fullname="Febucci.UI.Effects.VerticalExpandAppearance" preserve="all" />
|
||||
<type fullname="Febucci.UI.Effects.WaveBehavior" preserve="all" />
|
||||
<type fullname="Febucci.UI.Effects.WiggleBehavior" preserve="all" />
|
||||
<type fullname="Febucci.UI.TypewriterByCharacter" preserve="all" />
|
||||
<type fullname="Febucci.UI.Core.CharacterEvent" preserve="nothing" serialized="true" />
|
||||
<type fullname="Febucci.UI.Core.MessageEvent" preserve="nothing" serialized="true" />
|
||||
<type fullname="Febucci.UI.TimeData" preserve="nothing" serialized="true" />
|
||||
</assembly>
|
||||
<assembly fullname="Febucci.TextAnimator.TMP.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
||||
<type fullname="Febucci.UI.TextAnimator_TMP" preserve="all" />
|
||||
</assembly>
|
||||
<assembly fullname="Unity.Addressables, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" preserve="all">
|
||||
<type fullname="UnityEngine.AddressableAssets.Addressables" preserve="all" />
|
||||
</assembly>
|
||||
<assembly fullname="Unity.RenderPipelines.Core.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
||||
<type fullname="UnityEngine.Rendering.Volume" preserve="all" />
|
||||
<type fullname="UnityEngine.Rendering.VolumeProfile" preserve="all" />
|
||||
<type fullname="UnityEngine.Rendering.BoolParameter" preserve="nothing" serialized="true" />
|
||||
<type fullname="UnityEngine.Rendering.ClampedFloatParameter" preserve="nothing" serialized="true" />
|
||||
<type fullname="UnityEngine.Rendering.ClampedIntParameter" preserve="nothing" serialized="true" />
|
||||
<type fullname="UnityEngine.Rendering.ColorParameter" preserve="nothing" serialized="true" />
|
||||
<type fullname="UnityEngine.Rendering.FloatParameter" preserve="nothing" serialized="true" />
|
||||
<type fullname="UnityEngine.Rendering.MinFloatParameter" preserve="nothing" serialized="true" />
|
||||
<type fullname="UnityEngine.Rendering.NoInterpTextureParameter" preserve="nothing" serialized="true" />
|
||||
<type fullname="UnityEngine.Rendering.TextureParameter" preserve="nothing" serialized="true" />
|
||||
<type fullname="UnityEngine.Rendering.Vector2Parameter" preserve="nothing" serialized="true" />
|
||||
<type fullname="UnityEngine.Rendering.Vector4Parameter" preserve="nothing" serialized="true" />
|
||||
</assembly>
|
||||
<assembly fullname="Unity.RenderPipelines.Universal.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
||||
<type fullname="UnityEngine.Rendering.Universal.Bloom" preserve="all" />
|
||||
<type fullname="UnityEngine.Rendering.Universal.ChannelMixer" preserve="all" />
|
||||
<type fullname="UnityEngine.Rendering.Universal.ChromaticAberration" preserve="all" />
|
||||
<type fullname="UnityEngine.Rendering.Universal.ColorAdjustments" preserve="all" />
|
||||
<type fullname="UnityEngine.Rendering.Universal.DepthOfField" preserve="all" />
|
||||
<type fullname="UnityEngine.Rendering.Universal.FilmGrain" preserve="all" />
|
||||
<type fullname="UnityEngine.Rendering.Universal.LensDistortion" preserve="all" />
|
||||
<type fullname="UnityEngine.Rendering.Universal.LiftGammaGain" preserve="all" />
|
||||
<type fullname="UnityEngine.Rendering.Universal.Light2D" preserve="all" />
|
||||
<type fullname="UnityEngine.Rendering.Universal.PaniniProjection" preserve="all" />
|
||||
<type fullname="UnityEngine.Rendering.Universal.ShadowsMidtonesHighlights" preserve="all" />
|
||||
<type fullname="UnityEngine.Rendering.Universal.Tonemapping" preserve="all" />
|
||||
<type fullname="UnityEngine.Rendering.Universal.UniversalAdditionalCameraData" preserve="all" />
|
||||
<type fullname="UnityEngine.Rendering.Universal.Vignette" preserve="all" />
|
||||
<type fullname="UnityEngine.Rendering.Universal.DepthOfFieldModeParameter" preserve="nothing" serialized="true" />
|
||||
<type fullname="UnityEngine.Rendering.Universal.DownscaleParameter" preserve="nothing" serialized="true" />
|
||||
<type fullname="UnityEngine.Rendering.Universal.FilmGrainLookupParameter" preserve="nothing" serialized="true" />
|
||||
<type fullname="UnityEngine.Rendering.Universal.HDRACESPresetParameter" preserve="nothing" serialized="true" />
|
||||
<type fullname="UnityEngine.Rendering.Universal.NeutralRangeReductionModeParameter" preserve="nothing" serialized="true" />
|
||||
<type fullname="UnityEngine.Rendering.Universal.TemporalAA/Settings" preserve="nothing" serialized="true" />
|
||||
<type fullname="UnityEngine.Rendering.Universal.TonemappingModeParameter" preserve="nothing" serialized="true" />
|
||||
</assembly>
|
||||
<assembly fullname="Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" preserve="all">
|
||||
<type fullname="UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider" preserve="all" />
|
||||
<type fullname="UnityEngine.ResourceManagement.ResourceProviders.BundledAssetProvider" preserve="all" />
|
||||
<type fullname="UnityEngine.ResourceManagement.ResourceProviders.InstanceProvider" preserve="all" />
|
||||
<type fullname="UnityEngine.ResourceManagement.ResourceProviders.LegacyResourcesProvider" preserve="all" />
|
||||
<type fullname="UnityEngine.ResourceManagement.ResourceProviders.SceneProvider" preserve="all" />
|
||||
</assembly>
|
||||
<assembly fullname="Unity.TextMeshPro, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
||||
<type fullname="TMPro.TextMeshProUGUI" preserve="all" />
|
||||
<type fullname="TMPro.TMP_Dropdown" preserve="all" />
|
||||
<type fullname="TMPro.TMP_FontAsset" preserve="all" />
|
||||
<type fullname="TMPro.TMP_InputField" preserve="all" />
|
||||
<type fullname="TMPro.FaceInfo_Legacy" preserve="nothing" serialized="true" />
|
||||
<type fullname="TMPro.FontAssetCreationSettings" preserve="nothing" serialized="true" />
|
||||
<type fullname="TMPro.KerningTable" preserve="nothing" serialized="true" />
|
||||
<type fullname="TMPro.TMP_Character" preserve="nothing" serialized="true" />
|
||||
<type fullname="TMPro.TMP_Dropdown/DropdownEvent" preserve="nothing" serialized="true" />
|
||||
<type fullname="TMPro.TMP_Dropdown/OptionData" preserve="nothing" serialized="true" />
|
||||
<type fullname="TMPro.TMP_Dropdown/OptionDataList" preserve="nothing" serialized="true" />
|
||||
<type fullname="TMPro.TMP_FontFeatureTable" preserve="nothing" serialized="true" />
|
||||
<type fullname="TMPro.TMP_FontWeightPair" preserve="nothing" serialized="true" />
|
||||
<type fullname="TMPro.TMP_GlyphAdjustmentRecord" preserve="nothing" serialized="true" />
|
||||
<type fullname="TMPro.TMP_GlyphPairAdjustmentRecord" preserve="nothing" serialized="true" />
|
||||
<type fullname="TMPro.TMP_GlyphValueRecord" preserve="nothing" serialized="true" />
|
||||
<type fullname="TMPro.TMP_InputField/OnChangeEvent" preserve="nothing" serialized="true" />
|
||||
<type fullname="TMPro.TMP_InputField/SelectionEvent" preserve="nothing" serialized="true" />
|
||||
<type fullname="TMPro.TMP_InputField/SubmitEvent" preserve="nothing" serialized="true" />
|
||||
<type fullname="TMPro.TMP_InputField/TextSelectionEvent" preserve="nothing" serialized="true" />
|
||||
<type fullname="TMPro.TMP_InputField/TouchScreenKeyboardEvent" preserve="nothing" serialized="true" />
|
||||
<type fullname="TMPro.VertexGradient" preserve="nothing" serialized="true" />
|
||||
</assembly>
|
||||
<assembly fullname="UnityEditor.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
||||
<type fullname="UnityEditor.Audio.AudioMixerSnapshotController" preserve="all" />
|
||||
</assembly>
|
||||
<assembly fullname="UnityEngine.AnimationModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
||||
<type fullname="UnityEngine.AnimationClip" preserve="all" />
|
||||
<type fullname="UnityEngine.Animator" preserve="all" />
|
||||
<type fullname="UnityEngine.RuntimeAnimatorController" preserve="all" />
|
||||
</assembly>
|
||||
<assembly fullname="UnityEngine.AudioModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
||||
<type fullname="UnityEngine.Audio.AudioMixer" preserve="all" />
|
||||
<type fullname="UnityEngine.Audio.AudioMixerGroup" preserve="all" />
|
||||
<type fullname="UnityEngine.AudioClip" preserve="all" />
|
||||
<type fullname="UnityEngine.AudioListener" preserve="all" />
|
||||
<type fullname="UnityEngine.AudioSource" preserve="all" />
|
||||
</assembly>
|
||||
<assembly fullname="UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
||||
<type fullname="UnityEngine.Camera" preserve="all" />
|
||||
<type fullname="UnityEngine.GameObject" preserve="all" />
|
||||
<type fullname="UnityEngine.LightmapSettings" preserve="all" />
|
||||
<type fullname="UnityEngine.LineRenderer" preserve="all" />
|
||||
<type fullname="UnityEngine.Material" preserve="all" />
|
||||
<type fullname="UnityEngine.Object" preserve="all" />
|
||||
<type fullname="UnityEngine.RectTransform" preserve="all" />
|
||||
<type fullname="UnityEngine.RenderSettings" preserve="all" />
|
||||
<type fullname="UnityEngine.RenderTexture" preserve="all" />
|
||||
<type fullname="UnityEngine.Shader" preserve="all" />
|
||||
<type fullname="UnityEngine.Sprite" preserve="all" />
|
||||
<type fullname="UnityEngine.SpriteRenderer" preserve="all" />
|
||||
<type fullname="UnityEngine.Texture2D" preserve="all" />
|
||||
<type fullname="UnityEngine.Transform" preserve="all" />
|
||||
<type fullname="UnityEngine.Events.ArgumentCache" preserve="nothing" serialized="true" />
|
||||
<type fullname="UnityEngine.Events.PersistentCallGroup" preserve="nothing" serialized="true" />
|
||||
<type fullname="UnityEngine.Events.PersistentListenerMode" preserve="nothing" serialized="true" />
|
||||
<type fullname="UnityEngine.Events.UnityEvent" preserve="nothing" serialized="true" />
|
||||
<type fullname="UnityEngine.RectOffset" preserve="nothing" serialized="true" />
|
||||
</assembly>
|
||||
<assembly fullname="UnityEngine.ParticleSystemModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
||||
<type fullname="UnityEngine.ParticleSystem" preserve="all" />
|
||||
<type fullname="UnityEngine.ParticleSystemRenderer" preserve="all" />
|
||||
</assembly>
|
||||
<assembly fullname="UnityEngine.Physics2DModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
||||
<type fullname="UnityEngine.BoxCollider2D" preserve="all" />
|
||||
<type fullname="UnityEngine.CircleCollider2D" preserve="all" />
|
||||
</assembly>
|
||||
<assembly fullname="UnityEngine.PhysicsModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
||||
<type fullname="UnityEngine.Rigidbody" preserve="all" />
|
||||
<type fullname="UnityEngine.SpringJoint" preserve="all" />
|
||||
</assembly>
|
||||
<assembly fullname="UnityEngine.SpriteMaskModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
||||
<type fullname="UnityEngine.SpriteMask" preserve="all" />
|
||||
</assembly>
|
||||
<assembly fullname="UnityEngine.TextRenderingModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
||||
<type fullname="UnityEngine.Font" preserve="all" />
|
||||
</assembly>
|
||||
<assembly fullname="UnityEngine.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
|
||||
<type fullname="UnityEngine.EventSystems.EventSystem" preserve="all" />
|
||||
<type fullname="UnityEngine.EventSystems.EventTrigger" preserve="all" />
|
||||
<type fullname="UnityEngine.EventSystems.StandaloneInputModule" preserve="all" />
|
||||
<type fullname="UnityEngine.UI.Button" preserve="all" />
|
||||
<type fullname="UnityEngine.UI.CanvasScaler" preserve="all" />
|
||||
<type fullname="UnityEngine.UI.ContentSizeFitter" preserve="all" />
|
||||
<type fullname="UnityEngine.UI.GraphicRaycaster" preserve="all" />
|
||||
<type fullname="UnityEngine.UI.GridLayoutGroup" preserve="all" />
|
||||
<type fullname="UnityEngine.UI.HorizontalLayoutGroup" preserve="all" />
|
||||
<type fullname="UnityEngine.UI.Image" preserve="all" />
|
||||
<type fullname="UnityEngine.UI.LayoutElement" preserve="all" />
|
||||
<type fullname="UnityEngine.UI.Mask" preserve="all" />
|
||||
<type fullname="UnityEngine.UI.Outline" preserve="all" />
|
||||
<type fullname="UnityEngine.UI.RawImage" preserve="all" />
|
||||
<type fullname="UnityEngine.UI.RectMask2D" preserve="all" />
|
||||
<type fullname="UnityEngine.UI.Scrollbar" preserve="all" />
|
||||
<type fullname="UnityEngine.UI.ScrollRect" preserve="all" />
|
||||
<type fullname="UnityEngine.UI.Slider" preserve="all" />
|
||||
<type fullname="UnityEngine.UI.Text" preserve="all" />
|
||||
<type fullname="UnityEngine.UI.Toggle" preserve="all" />
|
||||
<type fullname="UnityEngine.UI.VerticalLayoutGroup" preserve="all" />
|
||||
<type fullname="UnityEngine.EventSystems.EventTrigger/Entry" preserve="nothing" serialized="true" />
|
||||
<type fullname="UnityEngine.EventSystems.EventTrigger/TriggerEvent" preserve="nothing" serialized="true" />
|
||||
<type fullname="UnityEngine.UI.AnimationTriggers" preserve="nothing" serialized="true" />
|
||||
<type fullname="UnityEngine.UI.Button/ButtonClickedEvent" preserve="nothing" serialized="true" />
|
||||
<type fullname="UnityEngine.UI.ColorBlock" preserve="nothing" serialized="true" />
|
||||
<type fullname="UnityEngine.UI.FontData" preserve="nothing" serialized="true" />
|
||||
<type fullname="UnityEngine.UI.MaskableGraphic/CullStateChangedEvent" preserve="nothing" serialized="true" />
|
||||
<type fullname="UnityEngine.UI.Navigation" preserve="nothing" serialized="true" />
|
||||
<type fullname="UnityEngine.UI.ScrollRect/ScrollRectEvent" preserve="nothing" serialized="true" />
|
||||
<type fullname="UnityEngine.UI.Scrollbar/ScrollEvent" preserve="nothing" serialized="true" />
|
||||
<type fullname="UnityEngine.UI.Slider/SliderEvent" preserve="nothing" serialized="true" />
|
||||
<type fullname="UnityEngine.UI.SpriteState" preserve="nothing" serialized="true" />
|
||||
<type fullname="UnityEngine.UI.Toggle/ToggleEvent" preserve="nothing" serialized="true" />
|
||||
</assembly>
|
||||
<assembly fullname="UnityEngine.UIModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
||||
<type fullname="UnityEngine.Canvas" preserve="all" />
|
||||
<type fullname="UnityEngine.CanvasGroup" preserve="all" />
|
||||
<type fullname="UnityEngine.CanvasRenderer" preserve="all" />
|
||||
</assembly>
|
||||
<assembly fullname="YarnSpinner.Unity, Version=2.4.2.0, Culture=neutral, PublicKeyToken=null">
|
||||
<type fullname="Yarn.Unity.AudioLineProvider" preserve="all" />
|
||||
<type fullname="Yarn.Unity.DialogueAdvanceInput" preserve="all" />
|
||||
<type fullname="Yarn.Unity.DialogueRunner" preserve="all" />
|
||||
<type fullname="Yarn.Unity.InMemoryVariableStorage" preserve="all" />
|
||||
<type fullname="Yarn.Unity.Localization" preserve="all" />
|
||||
<type fullname="Yarn.Unity.YarnProject" preserve="all" />
|
||||
<type fullname="Yarn.Unity.DialogueRunner/StringUnityEvent" preserve="nothing" serialized="true" />
|
||||
<type fullname="Yarn.Unity.LineMetadata" preserve="nothing" serialized="true" />
|
||||
<type fullname="Yarn.Unity.LineMetadata/StringDictionary" preserve="nothing" serialized="true" />
|
||||
<type fullname="Yarn.Unity.Localization/AssetDictionary" preserve="nothing" serialized="true" />
|
||||
<type fullname="Yarn.Unity.Localization/StringDictionary" preserve="nothing" serialized="true" />
|
||||
</assembly>
|
||||
<assembly fullname="UnityEngine.TextCoreFontEngineModule">
|
||||
<type fullname="UnityEngine.TextCore.FaceInfo" preserve="nothing" serialized="true" />
|
||||
<type fullname="UnityEngine.TextCore.Glyph" preserve="nothing" serialized="true" />
|
||||
<type fullname="UnityEngine.TextCore.GlyphMetrics" preserve="nothing" serialized="true" />
|
||||
<type fullname="UnityEngine.TextCore.GlyphRect" preserve="nothing" serialized="true" />
|
||||
</assembly>
|
||||
</linker>
|
||||
@@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cd966470c04680c4a97c0568dc56e6eb
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 17f2d95280452404dbb3f62d8e0de359
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2c64798740b034274bbe7de863517ca1
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2b3ecb0221ffc4967908529774091b89
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,3 +0,0 @@
|
||||
{
|
||||
"name": "QFramework"
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9e97e42c28a41430880bee376c274c86
|
||||
AssemblyDefinitionImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,944 +0,0 @@
|
||||
/****************************************************************************
|
||||
* Copyright (c) 2015 ~ 2024 liangxiegame MIT License
|
||||
*
|
||||
* QFramework v1.0
|
||||
*
|
||||
* https://qframework.cn
|
||||
* https://github.com/liangxiegame/QFramework
|
||||
* https://gitee.com/liangxiegame/QFramework
|
||||
*
|
||||
* Author:
|
||||
* liangxie https://github.com/liangxie
|
||||
* soso https://github.com/so-sos-so
|
||||
*
|
||||
* Contributor
|
||||
* TastSong https://github.com/TastSong
|
||||
* 京产肠饭 https://gitee.com/JingChanChangFan/hk_-unity-tools
|
||||
* 猫叔(一只皮皮虾) https://space.bilibili.com/656352/
|
||||
* misakiMeiii https://github.com/misakiMeiii
|
||||
* New一天
|
||||
* 幽飞冷凝雪~冷
|
||||
*
|
||||
* Community
|
||||
* QQ Group: 623597263
|
||||
*
|
||||
* Latest Update: 2024.5.12 20:17 add UnRegisterWhenCurrentSceneUnloaded(Suggested by misakiMeiii)
|
||||
****************************************************************************/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
using UnityEngine.SceneManagement;
|
||||
|
||||
namespace QFramework
|
||||
{
|
||||
#region Architecture
|
||||
|
||||
public interface IArchitecture
|
||||
{
|
||||
void RegisterSystem<T>(T system) where T : ISystem;
|
||||
|
||||
void RegisterModel<T>(T model) where T : IModel;
|
||||
|
||||
void RegisterUtility<T>(T utility) where T : IUtility;
|
||||
|
||||
T GetSystem<T>() where T : class, ISystem;
|
||||
|
||||
T GetModel<T>() where T : class, IModel;
|
||||
|
||||
T GetUtility<T>() where T : class, IUtility;
|
||||
|
||||
void SendCommand<T>(T command) where T : ICommand;
|
||||
|
||||
TResult SendCommand<TResult>(ICommand<TResult> command);
|
||||
|
||||
TResult SendQuery<TResult>(IQuery<TResult> query);
|
||||
|
||||
void SendEvent<T>() where T : new();
|
||||
void SendEvent<T>(T e);
|
||||
|
||||
IUnRegister RegisterEvent<T>(Action<T> onEvent);
|
||||
void UnRegisterEvent<T>(Action<T> onEvent);
|
||||
|
||||
void Deinit();
|
||||
}
|
||||
|
||||
public abstract class Architecture<T> : IArchitecture where T : Architecture<T>, new()
|
||||
{
|
||||
private bool mInited = false;
|
||||
|
||||
|
||||
public static Action<T> OnRegisterPatch = architecture => { };
|
||||
|
||||
protected static T mArchitecture;
|
||||
|
||||
public static IArchitecture Interface
|
||||
{
|
||||
get
|
||||
{
|
||||
if (mArchitecture == null) MakeSureArchitecture();
|
||||
return mArchitecture;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void MakeSureArchitecture()
|
||||
{
|
||||
if (mArchitecture == null)
|
||||
{
|
||||
mArchitecture = new T();
|
||||
mArchitecture.Init();
|
||||
|
||||
OnRegisterPatch?.Invoke(mArchitecture);
|
||||
|
||||
foreach (var model in mArchitecture.mContainer.GetInstancesByType<IModel>().Where(m => !m.Initialized))
|
||||
{
|
||||
model.Init();
|
||||
model.Initialized = true;
|
||||
}
|
||||
|
||||
foreach (var system in mArchitecture.mContainer.GetInstancesByType<ISystem>()
|
||||
.Where(m => !m.Initialized))
|
||||
{
|
||||
system.Init();
|
||||
system.Initialized = true;
|
||||
}
|
||||
|
||||
mArchitecture.mInited = true;
|
||||
}
|
||||
}
|
||||
|
||||
protected abstract void Init();
|
||||
|
||||
public void Deinit()
|
||||
{
|
||||
OnDeinit();
|
||||
foreach (var system in mContainer.GetInstancesByType<ISystem>().Where(s => s.Initialized)) system.Deinit();
|
||||
foreach (var model in mContainer.GetInstancesByType<IModel>().Where(m => m.Initialized)) model.Deinit();
|
||||
mContainer.Clear();
|
||||
mArchitecture = null;
|
||||
}
|
||||
|
||||
protected virtual void OnDeinit()
|
||||
{
|
||||
}
|
||||
|
||||
private IOCContainer mContainer = new IOCContainer();
|
||||
|
||||
public void RegisterSystem<TSystem>(TSystem system) where TSystem : ISystem
|
||||
{
|
||||
system.SetArchitecture(this);
|
||||
mContainer.Register<TSystem>(system);
|
||||
|
||||
if (mInited)
|
||||
{
|
||||
system.Init();
|
||||
system.Initialized = true;
|
||||
}
|
||||
}
|
||||
|
||||
public void RegisterModel<TModel>(TModel model) where TModel : IModel
|
||||
{
|
||||
model.SetArchitecture(this);
|
||||
mContainer.Register<TModel>(model);
|
||||
|
||||
if (mInited)
|
||||
{
|
||||
model.Init();
|
||||
model.Initialized = true;
|
||||
}
|
||||
}
|
||||
|
||||
public void RegisterUtility<TUtility>(TUtility utility) where TUtility : IUtility =>
|
||||
mContainer.Register<TUtility>(utility);
|
||||
|
||||
public TSystem GetSystem<TSystem>() where TSystem : class, ISystem => mContainer.Get<TSystem>();
|
||||
|
||||
public TModel GetModel<TModel>() where TModel : class, IModel => mContainer.Get<TModel>();
|
||||
|
||||
public TUtility GetUtility<TUtility>() where TUtility : class, IUtility => mContainer.Get<TUtility>();
|
||||
|
||||
public TResult SendCommand<TResult>(ICommand<TResult> command) => ExecuteCommand(command);
|
||||
|
||||
public void SendCommand<TCommand>(TCommand command) where TCommand : ICommand => ExecuteCommand(command);
|
||||
|
||||
protected virtual TResult ExecuteCommand<TResult>(ICommand<TResult> command)
|
||||
{
|
||||
command.SetArchitecture(this);
|
||||
return command.Execute();
|
||||
}
|
||||
|
||||
protected virtual void ExecuteCommand(ICommand command)
|
||||
{
|
||||
command.SetArchitecture(this);
|
||||
command.Execute();
|
||||
}
|
||||
|
||||
public TResult SendQuery<TResult>(IQuery<TResult> query) => DoQuery<TResult>(query);
|
||||
|
||||
protected virtual TResult DoQuery<TResult>(IQuery<TResult> query)
|
||||
{
|
||||
query.SetArchitecture(this);
|
||||
return query.Do();
|
||||
}
|
||||
|
||||
private TypeEventSystem mTypeEventSystem = new TypeEventSystem();
|
||||
|
||||
public void SendEvent<TEvent>() where TEvent : new() => mTypeEventSystem.Send<TEvent>();
|
||||
|
||||
public void SendEvent<TEvent>(TEvent e) => mTypeEventSystem.Send<TEvent>(e);
|
||||
|
||||
public IUnRegister RegisterEvent<TEvent>(Action<TEvent> onEvent) => mTypeEventSystem.Register<TEvent>(onEvent);
|
||||
|
||||
public void UnRegisterEvent<TEvent>(Action<TEvent> onEvent) => mTypeEventSystem.UnRegister<TEvent>(onEvent);
|
||||
}
|
||||
|
||||
public interface IOnEvent<T>
|
||||
{
|
||||
void OnEvent(T e);
|
||||
}
|
||||
|
||||
public static class OnGlobalEventExtension
|
||||
{
|
||||
public static IUnRegister RegisterEvent<T>(this IOnEvent<T> self) where T : struct =>
|
||||
TypeEventSystem.Global.Register<T>(self.OnEvent);
|
||||
|
||||
public static void UnRegisterEvent<T>(this IOnEvent<T> self) where T : struct =>
|
||||
TypeEventSystem.Global.UnRegister<T>(self.OnEvent);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Controller
|
||||
|
||||
public interface IController : IBelongToArchitecture, ICanSendCommand, ICanGetSystem, ICanGetModel,
|
||||
ICanRegisterEvent, ICanSendQuery, ICanGetUtility
|
||||
{
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region System
|
||||
|
||||
public interface ISystem : IBelongToArchitecture, ICanSetArchitecture, ICanGetModel, ICanGetUtility,
|
||||
ICanRegisterEvent, ICanSendEvent, ICanGetSystem, ICanInit
|
||||
{
|
||||
}
|
||||
|
||||
public abstract class AbstractSystem : ISystem
|
||||
{
|
||||
private IArchitecture mArchitecture;
|
||||
|
||||
IArchitecture IBelongToArchitecture.GetArchitecture() => mArchitecture;
|
||||
|
||||
void ICanSetArchitecture.SetArchitecture(IArchitecture architecture) => mArchitecture = architecture;
|
||||
|
||||
public bool Initialized { get; set; }
|
||||
void ICanInit.Init() => OnInit();
|
||||
|
||||
public void Deinit() => OnDeinit();
|
||||
|
||||
protected virtual void OnDeinit()
|
||||
{
|
||||
}
|
||||
|
||||
protected abstract void OnInit();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Model
|
||||
|
||||
public interface IModel : IBelongToArchitecture, ICanSetArchitecture, ICanGetUtility, ICanSendEvent, ICanInit
|
||||
{
|
||||
}
|
||||
|
||||
public abstract class AbstractModel : IModel
|
||||
{
|
||||
private IArchitecture mArchitecturel;
|
||||
|
||||
IArchitecture IBelongToArchitecture.GetArchitecture() => mArchitecturel;
|
||||
|
||||
void ICanSetArchitecture.SetArchitecture(IArchitecture architecture) => mArchitecturel = architecture;
|
||||
|
||||
public bool Initialized { get; set; }
|
||||
void ICanInit.Init() => OnInit();
|
||||
public void Deinit() => OnDeinit();
|
||||
|
||||
protected virtual void OnDeinit()
|
||||
{
|
||||
}
|
||||
|
||||
protected abstract void OnInit();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Utility
|
||||
|
||||
public interface IUtility
|
||||
{
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Command
|
||||
|
||||
public interface ICommand : IBelongToArchitecture, ICanSetArchitecture, ICanGetSystem, ICanGetModel, ICanGetUtility,
|
||||
ICanSendEvent, ICanSendCommand, ICanSendQuery
|
||||
{
|
||||
void Execute();
|
||||
}
|
||||
|
||||
public interface ICommand<TResult> : IBelongToArchitecture, ICanSetArchitecture, ICanGetSystem, ICanGetModel,
|
||||
ICanGetUtility,
|
||||
ICanSendEvent, ICanSendCommand, ICanSendQuery
|
||||
{
|
||||
TResult Execute();
|
||||
}
|
||||
|
||||
public abstract class AbstractCommand : ICommand
|
||||
{
|
||||
private IArchitecture mArchitecture;
|
||||
|
||||
IArchitecture IBelongToArchitecture.GetArchitecture() => mArchitecture;
|
||||
|
||||
void ICanSetArchitecture.SetArchitecture(IArchitecture architecture) => mArchitecture = architecture;
|
||||
|
||||
void ICommand.Execute() => OnExecute();
|
||||
|
||||
protected abstract void OnExecute();
|
||||
}
|
||||
|
||||
public abstract class AbstractCommand<TResult> : ICommand<TResult>
|
||||
{
|
||||
private IArchitecture mArchitecture;
|
||||
|
||||
IArchitecture IBelongToArchitecture.GetArchitecture() => mArchitecture;
|
||||
|
||||
void ICanSetArchitecture.SetArchitecture(IArchitecture architecture) => mArchitecture = architecture;
|
||||
|
||||
TResult ICommand<TResult>.Execute() => OnExecute();
|
||||
|
||||
protected abstract TResult OnExecute();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Query
|
||||
|
||||
public interface IQuery<TResult> : IBelongToArchitecture, ICanSetArchitecture, ICanGetModel, ICanGetSystem,
|
||||
ICanSendQuery
|
||||
{
|
||||
TResult Do();
|
||||
}
|
||||
|
||||
public abstract class AbstractQuery<T> : IQuery<T>
|
||||
{
|
||||
public T Do() => OnDo();
|
||||
|
||||
protected abstract T OnDo();
|
||||
|
||||
|
||||
private IArchitecture mArchitecture;
|
||||
|
||||
public IArchitecture GetArchitecture() => mArchitecture;
|
||||
|
||||
public void SetArchitecture(IArchitecture architecture) => mArchitecture = architecture;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Rule
|
||||
|
||||
public interface IBelongToArchitecture
|
||||
{
|
||||
IArchitecture GetArchitecture();
|
||||
}
|
||||
|
||||
public interface ICanSetArchitecture
|
||||
{
|
||||
void SetArchitecture(IArchitecture architecture);
|
||||
}
|
||||
|
||||
public interface ICanGetModel : IBelongToArchitecture
|
||||
{
|
||||
}
|
||||
|
||||
public static class CanGetModelExtension
|
||||
{
|
||||
public static T GetModel<T>(this ICanGetModel self) where T : class, IModel =>
|
||||
self.GetArchitecture().GetModel<T>();
|
||||
}
|
||||
|
||||
public interface ICanGetSystem : IBelongToArchitecture
|
||||
{
|
||||
}
|
||||
|
||||
public static class CanGetSystemExtension
|
||||
{
|
||||
public static T GetSystem<T>(this ICanGetSystem self) where T : class, ISystem =>
|
||||
self.GetArchitecture().GetSystem<T>();
|
||||
}
|
||||
|
||||
public interface ICanGetUtility : IBelongToArchitecture
|
||||
{
|
||||
}
|
||||
|
||||
public static class CanGetUtilityExtension
|
||||
{
|
||||
public static T GetUtility<T>(this ICanGetUtility self) where T : class, IUtility =>
|
||||
self.GetArchitecture().GetUtility<T>();
|
||||
}
|
||||
|
||||
public interface ICanRegisterEvent : IBelongToArchitecture
|
||||
{
|
||||
}
|
||||
|
||||
public static class CanRegisterEventExtension
|
||||
{
|
||||
public static IUnRegister RegisterEvent<T>(this ICanRegisterEvent self, Action<T> onEvent) =>
|
||||
self.GetArchitecture().RegisterEvent<T>(onEvent);
|
||||
|
||||
public static void UnRegisterEvent<T>(this ICanRegisterEvent self, Action<T> onEvent) =>
|
||||
self.GetArchitecture().UnRegisterEvent<T>(onEvent);
|
||||
}
|
||||
|
||||
public interface ICanSendCommand : IBelongToArchitecture
|
||||
{
|
||||
}
|
||||
|
||||
public static class CanSendCommandExtension
|
||||
{
|
||||
public static void SendCommand<T>(this ICanSendCommand self) where T : ICommand, new() =>
|
||||
self.GetArchitecture().SendCommand<T>(new T());
|
||||
|
||||
public static void SendCommand<T>(this ICanSendCommand self, T command) where T : ICommand =>
|
||||
self.GetArchitecture().SendCommand<T>(command);
|
||||
|
||||
public static TResult SendCommand<TResult>(this ICanSendCommand self, ICommand<TResult> command) =>
|
||||
self.GetArchitecture().SendCommand(command);
|
||||
}
|
||||
|
||||
public interface ICanSendEvent : IBelongToArchitecture
|
||||
{
|
||||
}
|
||||
|
||||
public static class CanSendEventExtension
|
||||
{
|
||||
public static void SendEvent<T>(this ICanSendEvent self) where T : new() =>
|
||||
self.GetArchitecture().SendEvent<T>();
|
||||
|
||||
public static void SendEvent<T>(this ICanSendEvent self, T e) => self.GetArchitecture().SendEvent<T>(e);
|
||||
}
|
||||
|
||||
public interface ICanSendQuery : IBelongToArchitecture
|
||||
{
|
||||
}
|
||||
|
||||
public static class CanSendQueryExtension
|
||||
{
|
||||
public static TResult SendQuery<TResult>(this ICanSendQuery self, IQuery<TResult> query) =>
|
||||
self.GetArchitecture().SendQuery(query);
|
||||
}
|
||||
|
||||
public interface ICanInit
|
||||
{
|
||||
bool Initialized { get; set; }
|
||||
void Init();
|
||||
void Deinit();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region TypeEventSystem
|
||||
|
||||
public interface IUnRegister
|
||||
{
|
||||
void UnRegister();
|
||||
}
|
||||
|
||||
public interface IUnRegisterList
|
||||
{
|
||||
List<IUnRegister> UnregisterList { get; }
|
||||
}
|
||||
|
||||
public static class IUnRegisterListExtension
|
||||
{
|
||||
public static void AddToUnregisterList(this IUnRegister self, IUnRegisterList unRegisterList) =>
|
||||
unRegisterList.UnregisterList.Add(self);
|
||||
|
||||
public static void UnRegisterAll(this IUnRegisterList self)
|
||||
{
|
||||
foreach (var unRegister in self.UnregisterList)
|
||||
{
|
||||
unRegister.UnRegister();
|
||||
}
|
||||
|
||||
self.UnregisterList.Clear();
|
||||
}
|
||||
}
|
||||
|
||||
public struct CustomUnRegister : IUnRegister
|
||||
{
|
||||
private Action mOnUnRegister { get; set; }
|
||||
public CustomUnRegister(Action onUnRegister) => mOnUnRegister = onUnRegister;
|
||||
|
||||
public void UnRegister()
|
||||
{
|
||||
mOnUnRegister.Invoke();
|
||||
mOnUnRegister = null;
|
||||
}
|
||||
}
|
||||
|
||||
#if UNITY_5_6_OR_NEWER
|
||||
public abstract class UnRegisterTrigger : UnityEngine.MonoBehaviour
|
||||
{
|
||||
private readonly HashSet<IUnRegister> mUnRegisters = new HashSet<IUnRegister>();
|
||||
|
||||
public IUnRegister AddUnRegister(IUnRegister unRegister)
|
||||
{
|
||||
mUnRegisters.Add(unRegister);
|
||||
return unRegister;
|
||||
}
|
||||
|
||||
public void RemoveUnRegister(IUnRegister unRegister) => mUnRegisters.Remove(unRegister);
|
||||
|
||||
public void UnRegister()
|
||||
{
|
||||
foreach (var unRegister in mUnRegisters)
|
||||
{
|
||||
unRegister.UnRegister();
|
||||
}
|
||||
|
||||
mUnRegisters.Clear();
|
||||
}
|
||||
}
|
||||
|
||||
public class UnRegisterOnDestroyTrigger : UnRegisterTrigger
|
||||
{
|
||||
private void OnDestroy()
|
||||
{
|
||||
UnRegister();
|
||||
}
|
||||
}
|
||||
|
||||
public class UnRegisterOnDisableTrigger : UnRegisterTrigger
|
||||
{
|
||||
private void OnDisable()
|
||||
{
|
||||
UnRegister();
|
||||
}
|
||||
}
|
||||
|
||||
public class UnRegisterCurrentSceneUnloadedTrigger : UnRegisterTrigger
|
||||
{
|
||||
private static UnRegisterCurrentSceneUnloadedTrigger mDefault;
|
||||
|
||||
public static UnRegisterCurrentSceneUnloadedTrigger Get
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!mDefault)
|
||||
{
|
||||
mDefault = new GameObject("UnRegisterCurrentSceneUnloadedTrigger")
|
||||
.AddComponent<UnRegisterCurrentSceneUnloadedTrigger>();
|
||||
}
|
||||
|
||||
return mDefault;
|
||||
}
|
||||
}
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
DontDestroyOnLoad(this);
|
||||
hideFlags = HideFlags.HideInHierarchy;
|
||||
SceneManager.sceneUnloaded += OnSceneUnloaded;
|
||||
}
|
||||
|
||||
private void OnDestroy() => SceneManager.sceneUnloaded -= OnSceneUnloaded;
|
||||
void OnSceneUnloaded(Scene scene) => UnRegister();
|
||||
}
|
||||
#endif
|
||||
|
||||
public static class UnRegisterExtension
|
||||
{
|
||||
#if UNITY_5_6_OR_NEWER
|
||||
|
||||
static T GetOrAddComponent<T>(GameObject gameObject) where T : Component
|
||||
{
|
||||
var trigger = gameObject.GetComponent<T>();
|
||||
|
||||
if (!trigger)
|
||||
{
|
||||
trigger = gameObject.AddComponent<T>();
|
||||
}
|
||||
|
||||
return trigger;
|
||||
}
|
||||
|
||||
public static IUnRegister UnRegisterWhenGameObjectDestroyed(this IUnRegister unRegister,
|
||||
UnityEngine.GameObject gameObject) =>
|
||||
GetOrAddComponent<UnRegisterOnDestroyTrigger>(gameObject)
|
||||
.AddUnRegister(unRegister);
|
||||
|
||||
public static IUnRegister UnRegisterWhenGameObjectDestroyed<T>(this IUnRegister self, T component)
|
||||
where T : UnityEngine.Component =>
|
||||
self.UnRegisterWhenGameObjectDestroyed(component.gameObject);
|
||||
|
||||
public static IUnRegister UnRegisterWhenDisabled<T>(this IUnRegister self, T component)
|
||||
where T : UnityEngine.Component =>
|
||||
self.UnRegisterWhenDisabled(component.gameObject);
|
||||
|
||||
public static IUnRegister UnRegisterWhenDisabled(this IUnRegister unRegister,
|
||||
UnityEngine.GameObject gameObject) =>
|
||||
GetOrAddComponent<UnRegisterOnDisableTrigger>(gameObject)
|
||||
.AddUnRegister(unRegister);
|
||||
|
||||
public static IUnRegister UnRegisterWhenCurrentSceneUnloaded(this IUnRegister self) =>
|
||||
UnRegisterCurrentSceneUnloadedTrigger.Get.AddUnRegister(self);
|
||||
#endif
|
||||
|
||||
|
||||
#if GODOT
|
||||
public static IUnRegister UnRegisterWhenNodeExitTree(this IUnRegister unRegister, Godot.Node node)
|
||||
{
|
||||
node.TreeExiting += unRegister.UnRegister;
|
||||
return unRegister;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
public class TypeEventSystem
|
||||
{
|
||||
private readonly EasyEvents mEvents = new EasyEvents();
|
||||
|
||||
public static readonly TypeEventSystem Global = new TypeEventSystem();
|
||||
|
||||
public void Send<T>() where T : new() => mEvents.GetEvent<EasyEvent<T>>()?.Trigger(new T());
|
||||
|
||||
public void Send<T>(T e) => mEvents.GetEvent<EasyEvent<T>>()?.Trigger(e);
|
||||
|
||||
public IUnRegister Register<T>(Action<T> onEvent) => mEvents.GetOrAddEvent<EasyEvent<T>>().Register(onEvent);
|
||||
|
||||
public void UnRegister<T>(Action<T> onEvent)
|
||||
{
|
||||
var e = mEvents.GetEvent<EasyEvent<T>>();
|
||||
e?.UnRegister(onEvent);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region IOC
|
||||
|
||||
public class IOCContainer
|
||||
{
|
||||
private Dictionary<Type, object> mInstances = new Dictionary<Type, object>();
|
||||
|
||||
public void Register<T>(T instance)
|
||||
{
|
||||
var key = typeof(T);
|
||||
|
||||
if (mInstances.ContainsKey(key))
|
||||
{
|
||||
mInstances[key] = instance;
|
||||
}
|
||||
else
|
||||
{
|
||||
mInstances.Add(key, instance);
|
||||
}
|
||||
}
|
||||
|
||||
public T Get<T>() where T : class
|
||||
{
|
||||
var key = typeof(T);
|
||||
|
||||
if (mInstances.TryGetValue(key, out var retInstance))
|
||||
{
|
||||
return retInstance as T;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public IEnumerable<T> GetInstancesByType<T>()
|
||||
{
|
||||
var type = typeof(T);
|
||||
return mInstances.Values.Where(instance => type.IsInstanceOfType(instance)).Cast<T>();
|
||||
}
|
||||
|
||||
public void Clear() => mInstances.Clear();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region BindableProperty
|
||||
|
||||
public interface IBindableProperty<T> : IReadonlyBindableProperty<T>
|
||||
{
|
||||
new T Value { get; set; }
|
||||
void SetValueWithoutEvent(T newValue);
|
||||
}
|
||||
|
||||
public interface IReadonlyBindableProperty<T> : IEasyEvent
|
||||
{
|
||||
T Value { get; }
|
||||
|
||||
IUnRegister RegisterWithInitValue(Action<T> action);
|
||||
void UnRegister(Action<T> onValueChanged);
|
||||
IUnRegister Register(Action<T> onValueChanged);
|
||||
}
|
||||
|
||||
public class BindableProperty<T> : IBindableProperty<T>
|
||||
{
|
||||
public BindableProperty(T defaultValue = default) => mValue = defaultValue;
|
||||
|
||||
protected T mValue;
|
||||
|
||||
public static Func<T, T, bool> Comparer { get; set; } = (a, b) => a.Equals(b);
|
||||
|
||||
public BindableProperty<T> WithComparer(Func<T, T, bool> comparer)
|
||||
{
|
||||
Comparer = comparer;
|
||||
return this;
|
||||
}
|
||||
|
||||
public T Value
|
||||
{
|
||||
get => GetValue();
|
||||
set
|
||||
{
|
||||
if (value == null && mValue == null) return;
|
||||
if (value != null && Comparer(value, mValue)) return;
|
||||
|
||||
SetValue(value);
|
||||
mOnValueChanged.Trigger(value);
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void SetValue(T newValue) => mValue = newValue;
|
||||
|
||||
protected virtual T GetValue() => mValue;
|
||||
|
||||
public void SetValueWithoutEvent(T newValue) => mValue = newValue;
|
||||
|
||||
private EasyEvent<T> mOnValueChanged = new EasyEvent<T>();
|
||||
|
||||
public IUnRegister Register(Action<T> onValueChanged)
|
||||
{
|
||||
return mOnValueChanged.Register(onValueChanged);
|
||||
}
|
||||
|
||||
public IUnRegister RegisterWithInitValue(Action<T> onValueChanged)
|
||||
{
|
||||
onValueChanged(mValue);
|
||||
return Register(onValueChanged);
|
||||
}
|
||||
|
||||
public void UnRegister(Action<T> onValueChanged) => mOnValueChanged.UnRegister(onValueChanged);
|
||||
|
||||
IUnRegister IEasyEvent.Register(Action onEvent)
|
||||
{
|
||||
return Register(Action);
|
||||
void Action(T _) => onEvent();
|
||||
}
|
||||
|
||||
public override string ToString() => Value.ToString();
|
||||
}
|
||||
|
||||
internal class ComparerAutoRegister
|
||||
{
|
||||
#if UNITY_5_6_OR_NEWER
|
||||
[UnityEngine.RuntimeInitializeOnLoadMethod(UnityEngine.RuntimeInitializeLoadType.BeforeSceneLoad)]
|
||||
public static void AutoRegister()
|
||||
{
|
||||
BindableProperty<int>.Comparer = (a, b) => a == b;
|
||||
BindableProperty<float>.Comparer = (a, b) => a == b;
|
||||
BindableProperty<double>.Comparer = (a, b) => a == b;
|
||||
BindableProperty<string>.Comparer = (a, b) => a == b;
|
||||
BindableProperty<long>.Comparer = (a, b) => a == b;
|
||||
BindableProperty<UnityEngine.Vector2>.Comparer = (a, b) => a == b;
|
||||
BindableProperty<UnityEngine.Vector3>.Comparer = (a, b) => a == b;
|
||||
BindableProperty<UnityEngine.Vector4>.Comparer = (a, b) => a == b;
|
||||
BindableProperty<UnityEngine.Color>.Comparer = (a, b) => a == b;
|
||||
BindableProperty<UnityEngine.Color32>.Comparer =
|
||||
(a, b) => a.r == b.r && a.g == b.g && a.b == b.b && a.a == b.a;
|
||||
BindableProperty<UnityEngine.Bounds>.Comparer = (a, b) => a == b;
|
||||
BindableProperty<UnityEngine.Rect>.Comparer = (a, b) => a == b;
|
||||
BindableProperty<UnityEngine.Quaternion>.Comparer = (a, b) => a == b;
|
||||
BindableProperty<UnityEngine.Vector2Int>.Comparer = (a, b) => a == b;
|
||||
BindableProperty<UnityEngine.Vector3Int>.Comparer = (a, b) => a == b;
|
||||
BindableProperty<UnityEngine.BoundsInt>.Comparer = (a, b) => a == b;
|
||||
BindableProperty<UnityEngine.RangeInt>.Comparer = (a, b) => a.start == b.start && a.length == b.length;
|
||||
BindableProperty<UnityEngine.RectInt>.Comparer = (a, b) => a.Equals(b);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region EasyEvent
|
||||
|
||||
public interface IEasyEvent
|
||||
{
|
||||
IUnRegister Register(Action onEvent);
|
||||
}
|
||||
|
||||
public class EasyEvent : IEasyEvent
|
||||
{
|
||||
private Action mOnEvent = () => { };
|
||||
|
||||
public IUnRegister Register(Action onEvent)
|
||||
{
|
||||
mOnEvent += onEvent;
|
||||
return new CustomUnRegister(() => { UnRegister(onEvent); });
|
||||
}
|
||||
|
||||
public void UnRegister(Action onEvent) => mOnEvent -= onEvent;
|
||||
|
||||
public void Trigger() => mOnEvent?.Invoke();
|
||||
}
|
||||
|
||||
public class EasyEvent<T> : IEasyEvent
|
||||
{
|
||||
private Action<T> mOnEvent = e => { };
|
||||
|
||||
public IUnRegister Register(Action<T> onEvent)
|
||||
{
|
||||
mOnEvent += onEvent;
|
||||
return new CustomUnRegister(() => { UnRegister(onEvent); });
|
||||
}
|
||||
|
||||
public void UnRegister(Action<T> onEvent) => mOnEvent -= onEvent;
|
||||
|
||||
public void Trigger(T t) => mOnEvent?.Invoke(t);
|
||||
|
||||
IUnRegister IEasyEvent.Register(Action onEvent)
|
||||
{
|
||||
return Register(Action);
|
||||
void Action(T _) => onEvent();
|
||||
}
|
||||
}
|
||||
|
||||
public class EasyEvent<T, K> : IEasyEvent
|
||||
{
|
||||
private Action<T, K> mOnEvent = (t, k) => { };
|
||||
|
||||
public IUnRegister Register(Action<T, K> onEvent)
|
||||
{
|
||||
mOnEvent += onEvent;
|
||||
return new CustomUnRegister(() => { UnRegister(onEvent); });
|
||||
}
|
||||
|
||||
public void UnRegister(Action<T, K> onEvent) => mOnEvent -= onEvent;
|
||||
|
||||
public void Trigger(T t, K k) => mOnEvent?.Invoke(t, k);
|
||||
|
||||
IUnRegister IEasyEvent.Register(Action onEvent)
|
||||
{
|
||||
return Register(Action);
|
||||
void Action(T _, K __) => onEvent();
|
||||
}
|
||||
}
|
||||
|
||||
public class EasyEvent<T, K, S> : IEasyEvent
|
||||
{
|
||||
private Action<T, K, S> mOnEvent = (t, k, s) => { };
|
||||
|
||||
public IUnRegister Register(Action<T, K, S> onEvent)
|
||||
{
|
||||
mOnEvent += onEvent;
|
||||
return new CustomUnRegister(() => { UnRegister(onEvent); });
|
||||
}
|
||||
|
||||
public void UnRegister(Action<T, K, S> onEvent) => mOnEvent -= onEvent;
|
||||
|
||||
public void Trigger(T t, K k, S s) => mOnEvent?.Invoke(t, k, s);
|
||||
|
||||
IUnRegister IEasyEvent.Register(Action onEvent)
|
||||
{
|
||||
return Register(Action);
|
||||
void Action(T _, K __, S ___) => onEvent();
|
||||
}
|
||||
}
|
||||
|
||||
public class EasyEvents
|
||||
{
|
||||
private static readonly EasyEvents mGlobalEvents = new EasyEvents();
|
||||
|
||||
public static T Get<T>() where T : IEasyEvent => mGlobalEvents.GetEvent<T>();
|
||||
|
||||
public static void Register<T>() where T : IEasyEvent, new() => mGlobalEvents.AddEvent<T>();
|
||||
|
||||
private readonly Dictionary<Type, IEasyEvent> mTypeEvents = new Dictionary<Type, IEasyEvent>();
|
||||
|
||||
public void AddEvent<T>() where T : IEasyEvent, new() => mTypeEvents.Add(typeof(T), new T());
|
||||
|
||||
public T GetEvent<T>() where T : IEasyEvent
|
||||
{
|
||||
return mTypeEvents.TryGetValue(typeof(T), out var e) ? (T)e : default;
|
||||
}
|
||||
|
||||
public T GetOrAddEvent<T>() where T : IEasyEvent, new()
|
||||
{
|
||||
var eType = typeof(T);
|
||||
if (mTypeEvents.TryGetValue(eType, out var e))
|
||||
{
|
||||
return (T)e;
|
||||
}
|
||||
|
||||
var t = new T();
|
||||
mTypeEvents.Add(eType, t);
|
||||
return t;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region Event Extension
|
||||
|
||||
public class OrEvent : IUnRegisterList
|
||||
{
|
||||
public OrEvent Or(IEasyEvent easyEvent)
|
||||
{
|
||||
easyEvent.Register(Trigger).AddToUnregisterList(this);
|
||||
return this;
|
||||
}
|
||||
|
||||
private Action mOnEvent = () => { };
|
||||
|
||||
public IUnRegister Register(Action onEvent)
|
||||
{
|
||||
mOnEvent += onEvent;
|
||||
return new CustomUnRegister(() => { UnRegister(onEvent); });
|
||||
}
|
||||
|
||||
public void UnRegister(Action onEvent)
|
||||
{
|
||||
mOnEvent -= onEvent;
|
||||
this.UnRegisterAll();
|
||||
}
|
||||
|
||||
private void Trigger() => mOnEvent?.Invoke();
|
||||
|
||||
public List<IUnRegister> UnregisterList { get; } = new List<IUnRegister>();
|
||||
}
|
||||
|
||||
public static class OrEventExtensions
|
||||
{
|
||||
public static OrEvent Or(this IEasyEvent self, IEasyEvent e) => new OrEvent().Or(self).Or(e);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#if UNITY_EDITOR
|
||||
internal class EditorMenus
|
||||
{
|
||||
[UnityEditor.MenuItem("QFramework/Install QFrameworkWithToolKits")]
|
||||
public static void InstallPackageKit() => UnityEngine.Application.OpenURL("https://qframework.cn/qf");
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7a1fba0c3bb80422c82f18ba7b548eda
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,3 +0,0 @@
|
||||
<linker>
|
||||
<assembly fullname="QFramework" preserve="all" />
|
||||
</linker>
|
||||
@@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 32878c59179e84e84ab2d2132693f8f4
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cf640d6fae113ee42b18a6e3d15725e4
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
+250
-561
@@ -123,7 +123,7 @@ NavMeshSettings:
|
||||
debug:
|
||||
m_Flags: 0
|
||||
m_NavMeshData: {fileID: 0}
|
||||
--- !u!1 &26713700
|
||||
--- !u!1 &18238394
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
@@ -131,37 +131,37 @@ GameObject:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 26713701}
|
||||
- component: {fileID: 26713702}
|
||||
- component: {fileID: 18238395}
|
||||
- component: {fileID: 18238396}
|
||||
m_Layer: 0
|
||||
m_Name: Dial Plate
|
||||
m_Name: Dashboard Background
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &26713701
|
||||
--- !u!4 &18238395
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 26713700}
|
||||
m_GameObject: {fileID: 18238394}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: -3.1427, y: -1.9055, z: 0}
|
||||
m_LocalScale: {x: 0.5606, y: 2.175, z: 1}
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: -0.79, y: 0.36999977, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 863998405}
|
||||
m_Father: {fileID: 1964529542}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!212 &26713702
|
||||
--- !u!212 &18238396
|
||||
SpriteRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 26713700}
|
||||
m_GameObject: {fileID: 18238394}
|
||||
m_Enabled: 1
|
||||
m_CastShadows: 0
|
||||
m_ReceiveShadows: 0
|
||||
@@ -195,13 +195,13 @@ SpriteRenderer:
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 1
|
||||
m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, type: 3}
|
||||
m_SortingOrder: 3
|
||||
m_Sprite: {fileID: 8330958895188906776, guid: 6de0a74e5b5268b4998dc7a5c687fb95, type: 3}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_FlipX: 0
|
||||
m_FlipY: 0
|
||||
m_DrawMode: 0
|
||||
m_Size: {x: 1, y: 1}
|
||||
m_Size: {x: 0.43, y: 0.43}
|
||||
m_AdaptiveModeThreshold: 0.5
|
||||
m_SpriteTileMode: 0
|
||||
m_WasSpriteAssigned: 1
|
||||
@@ -534,121 +534,6 @@ Material:
|
||||
- _ShadowColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _ShineColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_BuildTextureStacks: []
|
||||
--- !u!1 &139644182
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 139644183}
|
||||
- component: {fileID: 139644184}
|
||||
m_Layer: 0
|
||||
m_Name: Dial Plate
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &139644183
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 139644182}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: -1, y: -1.9055, z: 0}
|
||||
m_LocalScale: {x: 0.5606, y: 2.175, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1691014403}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!212 &139644184
|
||||
SpriteRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 139644182}
|
||||
m_Enabled: 1
|
||||
m_CastShadows: 0
|
||||
m_ReceiveShadows: 0
|
||||
m_DynamicOccludee: 1
|
||||
m_StaticShadowCaster: 0
|
||||
m_MotionVectors: 1
|
||||
m_LightProbeUsage: 1
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 0
|
||||
m_RayTraceProcedural: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
m_StaticBatchRoot: {fileID: 0}
|
||||
m_ProbeAnchor: {fileID: 0}
|
||||
m_LightProbeVolumeOverride: {fileID: 0}
|
||||
m_ScaleInLightmap: 1
|
||||
m_ReceiveGI: 1
|
||||
m_PreserveUVs: 0
|
||||
m_IgnoreNormalsForChartDetection: 0
|
||||
m_ImportantGI: 0
|
||||
m_StitchLightmapSeams: 1
|
||||
m_SelectedEditorRenderState: 0
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 1
|
||||
m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, type: 3}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_FlipX: 0
|
||||
m_FlipY: 0
|
||||
m_DrawMode: 0
|
||||
m_Size: {x: 1, y: 1}
|
||||
m_AdaptiveModeThreshold: 0.5
|
||||
m_SpriteTileMode: 0
|
||||
m_WasSpriteAssigned: 1
|
||||
m_MaskInteraction: 0
|
||||
m_SpriteSortPoint: 0
|
||||
--- !u!1 &187844037
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 187844038}
|
||||
m_Layer: 0
|
||||
m_Name: Gears Anime
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &187844038
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 187844037}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1112213369}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &199118572
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -898,6 +783,90 @@ LineRenderer:
|
||||
m_UseWorldSpace: 1
|
||||
m_Loop: 0
|
||||
m_ApplyActiveColorSpace: 1
|
||||
--- !u!1 &285714351
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 285714352}
|
||||
- component: {fileID: 285714353}
|
||||
m_Layer: 0
|
||||
m_Name: Heart Cover
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 0
|
||||
--- !u!4 &285714352
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 285714351}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: -0.75, y: 0.26000008, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1964529542}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!212 &285714353
|
||||
SpriteRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 285714351}
|
||||
m_Enabled: 1
|
||||
m_CastShadows: 0
|
||||
m_ReceiveShadows: 0
|
||||
m_DynamicOccludee: 1
|
||||
m_StaticShadowCaster: 0
|
||||
m_MotionVectors: 1
|
||||
m_LightProbeUsage: 1
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 0
|
||||
m_RayTraceProcedural: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
m_StaticBatchRoot: {fileID: 0}
|
||||
m_ProbeAnchor: {fileID: 0}
|
||||
m_LightProbeVolumeOverride: {fileID: 0}
|
||||
m_ScaleInLightmap: 1
|
||||
m_ReceiveGI: 1
|
||||
m_PreserveUVs: 0
|
||||
m_IgnoreNormalsForChartDetection: 0
|
||||
m_ImportantGI: 0
|
||||
m_StitchLightmapSeams: 1
|
||||
m_SelectedEditorRenderState: 0
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 4
|
||||
m_Sprite: {fileID: -8759480157694563036, guid: 6de0a74e5b5268b4998dc7a5c687fb95, type: 3}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_FlipX: 0
|
||||
m_FlipY: 0
|
||||
m_DrawMode: 0
|
||||
m_Size: {x: 1, y: 1}
|
||||
m_AdaptiveModeThreshold: 0.5
|
||||
m_SpriteTileMode: 0
|
||||
m_WasSpriteAssigned: 1
|
||||
m_MaskInteraction: 0
|
||||
m_SpriteSortPoint: 0
|
||||
--- !u!1 &307041274
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -1010,8 +979,7 @@ Transform:
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 1015604843}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 657112469}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &420163262
|
||||
@@ -1805,7 +1773,7 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 5489eacced0c49c4ab26308cd50fb917, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
gearPrefab: {fileID: 5285827322175967477, guid: 1711cb9f16070e0488096c259d4eee3d, type: 3}
|
||||
runType: 0
|
||||
--- !u!1 &693951178
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -2128,13 +2096,14 @@ GameObject:
|
||||
m_Component:
|
||||
- component: {fileID: 863998405}
|
||||
- component: {fileID: 863998406}
|
||||
- component: {fileID: 863998407}
|
||||
m_Layer: 0
|
||||
m_Name: Oil Dashboard
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &863998405
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -2144,12 +2113,10 @@ Transform:
|
||||
m_GameObject: {fileID: 863998404}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalPosition: {x: -0.844, y: 0.759, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 26713701}
|
||||
- {fileID: 1313204897}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1112213369}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &863998406
|
||||
@@ -2164,8 +2131,58 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 5f1dc6d4faf506b479900b5b2b534d14, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
topPosY: -1
|
||||
bottomPosY: -2.95
|
||||
--- !u!212 &863998407
|
||||
SpriteRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 863998404}
|
||||
m_Enabled: 1
|
||||
m_CastShadows: 0
|
||||
m_ReceiveShadows: 0
|
||||
m_DynamicOccludee: 1
|
||||
m_StaticShadowCaster: 0
|
||||
m_MotionVectors: 1
|
||||
m_LightProbeUsage: 1
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 0
|
||||
m_RayTraceProcedural: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
m_StaticBatchRoot: {fileID: 0}
|
||||
m_ProbeAnchor: {fileID: 0}
|
||||
m_LightProbeVolumeOverride: {fileID: 0}
|
||||
m_ScaleInLightmap: 1
|
||||
m_ReceiveGI: 1
|
||||
m_PreserveUVs: 0
|
||||
m_IgnoreNormalsForChartDetection: 0
|
||||
m_ImportantGI: 0
|
||||
m_StitchLightmapSeams: 1
|
||||
m_SelectedEditorRenderState: 0
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 3
|
||||
m_Sprite: {fileID: -7430884138805397470, guid: 6de0a74e5b5268b4998dc7a5c687fb95, type: 3}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_FlipX: 0
|
||||
m_FlipY: 0
|
||||
m_DrawMode: 0
|
||||
m_Size: {x: 0.08, y: 1.215}
|
||||
m_AdaptiveModeThreshold: 0.5
|
||||
m_SpriteTileMode: 0
|
||||
m_WasSpriteAssigned: 1
|
||||
m_MaskInteraction: 0
|
||||
m_SpriteSortPoint: 0
|
||||
--- !u!1 &885292091
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -2416,164 +2433,6 @@ Transform:
|
||||
- {fileID: 30335134}
|
||||
m_Father: {fileID: 1410382569}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &928740851
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 928740852}
|
||||
- component: {fileID: 928740853}
|
||||
m_Layer: 0
|
||||
m_Name: Min Pointer
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &928740852
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 928740851}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: -1.05, y: -2.95, z: 0}
|
||||
m_LocalScale: {x: 0.4334, y: 0.03467707, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1691014403}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!212 &928740853
|
||||
SpriteRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 928740851}
|
||||
m_Enabled: 1
|
||||
m_CastShadows: 0
|
||||
m_ReceiveShadows: 0
|
||||
m_DynamicOccludee: 1
|
||||
m_StaticShadowCaster: 0
|
||||
m_MotionVectors: 1
|
||||
m_LightProbeUsage: 1
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 0
|
||||
m_RayTraceProcedural: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
m_StaticBatchRoot: {fileID: 0}
|
||||
m_ProbeAnchor: {fileID: 0}
|
||||
m_LightProbeVolumeOverride: {fileID: 0}
|
||||
m_ScaleInLightmap: 1
|
||||
m_ReceiveGI: 1
|
||||
m_PreserveUVs: 0
|
||||
m_IgnoreNormalsForChartDetection: 0
|
||||
m_ImportantGI: 0
|
||||
m_StitchLightmapSeams: 1
|
||||
m_SelectedEditorRenderState: 0
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 2
|
||||
m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, type: 3}
|
||||
m_Color: {r: 0, g: 0.4034543, b: 1, a: 1}
|
||||
m_FlipX: 0
|
||||
m_FlipY: 0
|
||||
m_DrawMode: 0
|
||||
m_Size: {x: 1, y: 1}
|
||||
m_AdaptiveModeThreshold: 0.5
|
||||
m_SpriteTileMode: 0
|
||||
m_WasSpriteAssigned: 1
|
||||
m_MaskInteraction: 0
|
||||
m_SpriteSortPoint: 0
|
||||
--- !u!1001 &1015604842
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 360323325}
|
||||
m_Modifications:
|
||||
- target: {fileID: 3319742319015225169, guid: 1711cb9f16070e0488096c259d4eee3d, type: 3}
|
||||
propertyPath: data
|
||||
value:
|
||||
objectReference: {fileID: 11400000, guid: 0b31f7a5b65969146ace2f70ffebf57e, type: 2}
|
||||
- target: {fileID: 5285827322175967477, guid: 1711cb9f16070e0488096c259d4eee3d, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: Gear
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5471826428459579353, guid: 1711cb9f16070e0488096c259d4eee3d, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: -4.55
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5471826428459579353, guid: 1711cb9f16070e0488096c259d4eee3d, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0.39
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5471826428459579353, guid: 1711cb9f16070e0488096c259d4eee3d, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5471826428459579353, guid: 1711cb9f16070e0488096c259d4eee3d, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5471826428459579353, guid: 1711cb9f16070e0488096c259d4eee3d, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5471826428459579353, guid: 1711cb9f16070e0488096c259d4eee3d, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5471826428459579353, guid: 1711cb9f16070e0488096c259d4eee3d, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5471826428459579353, guid: 1711cb9f16070e0488096c259d4eee3d, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5471826428459579353, guid: 1711cb9f16070e0488096c259d4eee3d, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5471826428459579353, guid: 1711cb9f16070e0488096c259d4eee3d, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6708275724089666452, guid: 1711cb9f16070e0488096c259d4eee3d, type: 3}
|
||||
propertyPath: m_SortingLayer
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6708275724089666452, guid: 1711cb9f16070e0488096c259d4eee3d, type: 3}
|
||||
propertyPath: m_SortingLayerID
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: 1711cb9f16070e0488096c259d4eee3d, type: 3}
|
||||
--- !u!4 &1015604843 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 5471826428459579353, guid: 1711cb9f16070e0488096c259d4eee3d, type: 3}
|
||||
m_PrefabInstance: {fileID: 1015604842}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1 &1035218747
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -2911,7 +2770,7 @@ GameObject:
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &1104267851
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -2961,13 +2820,13 @@ Transform:
|
||||
m_LocalScale: {x: 0.93, y: 0.93, z: 0.93}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 1964529542}
|
||||
- {fileID: 1691014403}
|
||||
- {fileID: 2019900043}
|
||||
- {fileID: 863998405}
|
||||
- {fileID: 885292092}
|
||||
- {fileID: 1537489913}
|
||||
- {fileID: 551825977}
|
||||
- {fileID: 187844038}
|
||||
m_Father: {fileID: 1104267851}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!212 &1112213370
|
||||
@@ -3173,90 +3032,6 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: a2e20b111511460a8f3a151bd470da9d, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!1 &1313204896
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1313204897}
|
||||
- component: {fileID: 1313204898}
|
||||
m_Layer: 0
|
||||
m_Name: Pointer
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &1313204897
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1313204896}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: -3.206, y: -2.9411, z: 0}
|
||||
m_LocalScale: {x: 0.4334, y: 0.03467707, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 863998405}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!212 &1313204898
|
||||
SpriteRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1313204896}
|
||||
m_Enabled: 1
|
||||
m_CastShadows: 0
|
||||
m_ReceiveShadows: 0
|
||||
m_DynamicOccludee: 1
|
||||
m_StaticShadowCaster: 0
|
||||
m_MotionVectors: 1
|
||||
m_LightProbeUsage: 1
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 0
|
||||
m_RayTraceProcedural: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
m_StaticBatchRoot: {fileID: 0}
|
||||
m_ProbeAnchor: {fileID: 0}
|
||||
m_LightProbeVolumeOverride: {fileID: 0}
|
||||
m_ScaleInLightmap: 1
|
||||
m_ReceiveGI: 1
|
||||
m_PreserveUVs: 0
|
||||
m_IgnoreNormalsForChartDetection: 0
|
||||
m_ImportantGI: 0
|
||||
m_StitchLightmapSeams: 1
|
||||
m_SelectedEditorRenderState: 0
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 2
|
||||
m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, type: 3}
|
||||
m_Color: {r: 1, g: 0, b: 0, a: 1}
|
||||
m_FlipX: 0
|
||||
m_FlipY: 0
|
||||
m_DrawMode: 0
|
||||
m_Size: {x: 1, y: 1}
|
||||
m_AdaptiveModeThreshold: 0.5
|
||||
m_SpriteTileMode: 0
|
||||
m_WasSpriteAssigned: 1
|
||||
m_MaskInteraction: 0
|
||||
m_SpriteSortPoint: 0
|
||||
--- !u!1 &1410382568
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -3388,90 +3163,6 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 14ffdfdc63be167489dc01c0b661c1ac, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!1 &1504845248
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1504845249}
|
||||
- component: {fileID: 1504845250}
|
||||
m_Layer: 0
|
||||
m_Name: Pointer
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &1504845249
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1504845248}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: -1.05, y: -2.95, z: 0}
|
||||
m_LocalScale: {x: 0.4334, y: 0.03467707, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1691014403}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!212 &1504845250
|
||||
SpriteRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1504845248}
|
||||
m_Enabled: 1
|
||||
m_CastShadows: 0
|
||||
m_ReceiveShadows: 0
|
||||
m_DynamicOccludee: 1
|
||||
m_StaticShadowCaster: 0
|
||||
m_MotionVectors: 1
|
||||
m_LightProbeUsage: 1
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 0
|
||||
m_RayTraceProcedural: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
m_StaticBatchRoot: {fileID: 0}
|
||||
m_ProbeAnchor: {fileID: 0}
|
||||
m_LightProbeVolumeOverride: {fileID: 0}
|
||||
m_ScaleInLightmap: 1
|
||||
m_ReceiveGI: 1
|
||||
m_PreserveUVs: 0
|
||||
m_IgnoreNormalsForChartDetection: 0
|
||||
m_ImportantGI: 0
|
||||
m_StitchLightmapSeams: 1
|
||||
m_SelectedEditorRenderState: 0
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 2
|
||||
m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, type: 3}
|
||||
m_Color: {r: 1, g: 0, b: 0, a: 1}
|
||||
m_FlipX: 0
|
||||
m_FlipY: 0
|
||||
m_DrawMode: 0
|
||||
m_Size: {x: 1, y: 1}
|
||||
m_AdaptiveModeThreshold: 0.5
|
||||
m_SpriteTileMode: 0
|
||||
m_WasSpriteAssigned: 1
|
||||
m_MaskInteraction: 0
|
||||
m_SpriteSortPoint: 0
|
||||
--- !u!1 &1537489912
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -3656,13 +3347,14 @@ GameObject:
|
||||
m_Component:
|
||||
- component: {fileID: 1691014403}
|
||||
- component: {fileID: 1691014404}
|
||||
- component: {fileID: 1691014405}
|
||||
m_Layer: 0
|
||||
m_Name: Air Dashboard
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &1691014403
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -3672,14 +3364,10 @@ Transform:
|
||||
m_GameObject: {fileID: 1691014402}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalPosition: {x: -0.427, y: 0.761, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 139644183}
|
||||
- {fileID: 1504845249}
|
||||
- {fileID: 2079041947}
|
||||
- {fileID: 928740852}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1112213369}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &1691014404
|
||||
@@ -3696,6 +3384,58 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier:
|
||||
topPosY: -1
|
||||
bottomPosY: -2.95
|
||||
--- !u!212 &1691014405
|
||||
SpriteRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1691014402}
|
||||
m_Enabled: 1
|
||||
m_CastShadows: 0
|
||||
m_ReceiveShadows: 0
|
||||
m_DynamicOccludee: 1
|
||||
m_StaticShadowCaster: 0
|
||||
m_MotionVectors: 1
|
||||
m_LightProbeUsage: 1
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 0
|
||||
m_RayTraceProcedural: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
m_StaticBatchRoot: {fileID: 0}
|
||||
m_ProbeAnchor: {fileID: 0}
|
||||
m_LightProbeVolumeOverride: {fileID: 0}
|
||||
m_ScaleInLightmap: 1
|
||||
m_ReceiveGI: 1
|
||||
m_PreserveUVs: 0
|
||||
m_IgnoreNormalsForChartDetection: 0
|
||||
m_ImportantGI: 0
|
||||
m_StitchLightmapSeams: 1
|
||||
m_SelectedEditorRenderState: 0
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 4
|
||||
m_Sprite: {fileID: 3452926339856333695, guid: 6de0a74e5b5268b4998dc7a5c687fb95, type: 3}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_FlipX: 0
|
||||
m_FlipY: 0
|
||||
m_DrawMode: 0
|
||||
m_Size: {x: 0.08, y: 1.215}
|
||||
m_AdaptiveModeThreshold: 0.5
|
||||
m_SpriteTileMode: 0
|
||||
m_WasSpriteAssigned: 1
|
||||
m_MaskInteraction: 0
|
||||
m_SpriteSortPoint: 0
|
||||
--- !u!1 &1732205054
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -3712,7 +3452,7 @@ GameObject:
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &1732205055
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -3895,7 +3635,7 @@ GameObject:
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &1814664091
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -4529,6 +4269,39 @@ SpriteRenderer:
|
||||
m_WasSpriteAssigned: 1
|
||||
m_MaskInteraction: 0
|
||||
m_SpriteSortPoint: 0
|
||||
--- !u!1 &1964529541
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1964529542}
|
||||
m_Layer: 0
|
||||
m_Name: Moveable Parts
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &1964529542
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1964529541}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 285714352}
|
||||
- {fileID: 18238395}
|
||||
m_Father: {fileID: 1112213369}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &2000626642
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -4849,90 +4622,6 @@ SpriteRenderer:
|
||||
m_WasSpriteAssigned: 1
|
||||
m_MaskInteraction: 0
|
||||
m_SpriteSortPoint: 0
|
||||
--- !u!1 &2079041946
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 2079041947}
|
||||
- component: {fileID: 2079041948}
|
||||
m_Layer: 0
|
||||
m_Name: Max Pointer
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &2079041947
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2079041946}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: -1.05, y: -2.95, z: 0}
|
||||
m_LocalScale: {x: 0.4334, y: 0.03467707, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1691014403}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!212 &2079041948
|
||||
SpriteRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2079041946}
|
||||
m_Enabled: 1
|
||||
m_CastShadows: 0
|
||||
m_ReceiveShadows: 0
|
||||
m_DynamicOccludee: 1
|
||||
m_StaticShadowCaster: 0
|
||||
m_MotionVectors: 1
|
||||
m_LightProbeUsage: 1
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 0
|
||||
m_RayTraceProcedural: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
m_StaticBatchRoot: {fileID: 0}
|
||||
m_ProbeAnchor: {fileID: 0}
|
||||
m_LightProbeVolumeOverride: {fileID: 0}
|
||||
m_ScaleInLightmap: 1
|
||||
m_ReceiveGI: 1
|
||||
m_PreserveUVs: 0
|
||||
m_IgnoreNormalsForChartDetection: 0
|
||||
m_ImportantGI: 0
|
||||
m_StitchLightmapSeams: 1
|
||||
m_SelectedEditorRenderState: 0
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 2
|
||||
m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, type: 3}
|
||||
m_Color: {r: 0, g: 0.5306525, b: 1, a: 1}
|
||||
m_FlipX: 0
|
||||
m_FlipY: 0
|
||||
m_DrawMode: 0
|
||||
m_Size: {x: 1, y: 1}
|
||||
m_AdaptiveModeThreshold: 0.5
|
||||
m_SpriteTileMode: 0
|
||||
m_WasSpriteAssigned: 1
|
||||
m_MaskInteraction: 0
|
||||
m_SpriteSortPoint: 0
|
||||
--- !u!1 &2133683124
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Newtonsoft.Json.Serialization;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AibisDream.Kit
|
||||
@@ -69,5 +70,9 @@ namespace AibisDream.Kit
|
||||
{
|
||||
return _baseConfigDic.TryGetValue(key, out value);
|
||||
}
|
||||
|
||||
// public bool TryToLoadConfig<T>(string path, string key, out T res)
|
||||
// {
|
||||
// }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
namespace Framework.Core
|
||||
{
|
||||
public enum RunType
|
||||
{
|
||||
Editor,
|
||||
Test,
|
||||
Pro
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a1e14444d3ce49aabda2476eefb6e20f
|
||||
timeCreated: 1732360239
|
||||
@@ -1,37 +1,83 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using MeadowGames.UINodeConnect4.GraphicRenderer;
|
||||
using System.Linq;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace Framework.Core
|
||||
namespace AibisDream.Framework
|
||||
{
|
||||
public interface IModule
|
||||
{
|
||||
void Init();
|
||||
void Enable();
|
||||
void Disable();
|
||||
void End();
|
||||
void Deinit();
|
||||
}
|
||||
|
||||
public interface ISystem
|
||||
{
|
||||
void Init();
|
||||
void Enable();
|
||||
void Disable();
|
||||
void Deinit();
|
||||
}
|
||||
|
||||
public interface IData
|
||||
{
|
||||
void SaveData();
|
||||
void LoadData();
|
||||
}
|
||||
|
||||
public interface IConfig
|
||||
public static class DataExtension
|
||||
{
|
||||
void SaveConfig();
|
||||
void LoadConfig();
|
||||
public static void Save(this IData data)
|
||||
{
|
||||
string json = JsonConvert.SerializeObject(data, Formatting.Indented);
|
||||
}
|
||||
|
||||
public static void Load(this IData data)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#region IOC容器
|
||||
|
||||
public class IOCContainer
|
||||
{
|
||||
private readonly Dictionary<Type, object> _instances = new Dictionary<Type, object>();
|
||||
|
||||
public void Register<T>(T instance)
|
||||
{
|
||||
var key = typeof(T);
|
||||
|
||||
if (_instances.ContainsKey(key))
|
||||
{
|
||||
_instances[key] = instance;
|
||||
}
|
||||
else
|
||||
{
|
||||
_instances.Add(key, instance);
|
||||
}
|
||||
}
|
||||
|
||||
public T Get<T>() where T : class
|
||||
{
|
||||
var key = typeof(T);
|
||||
|
||||
if (_instances.TryGetValue(key, out var retInstance))
|
||||
{
|
||||
return retInstance as T;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public IEnumerable<T> GetInstancesByType<T>()
|
||||
{
|
||||
var type = typeof(T);
|
||||
return _instances.Values.Where(instance => type.IsInstanceOfType(instance)).Cast<T>();
|
||||
}
|
||||
|
||||
public void Clear() => _instances.Clear();
|
||||
}
|
||||
|
||||
public interface ISystem : IModule, IConfig, IData
|
||||
{
|
||||
}
|
||||
|
||||
public class IocContainer
|
||||
{
|
||||
private Dictionary<Type, object> _container;
|
||||
|
||||
public void Register<T>() {}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
@@ -10,6 +10,7 @@ namespace Framework.Core
|
||||
{
|
||||
public readonly string goName;
|
||||
public readonly bool getChild;
|
||||
|
||||
/// <summary>
|
||||
/// 查找游戏物体组件的特性
|
||||
/// </summary>
|
||||
@@ -17,13 +18,20 @@ namespace Framework.Core
|
||||
/// <param name="getChild">
|
||||
/// true => 查找对应名字对象的下一级子物体 通常名字为父物体名字 类型为子物体
|
||||
/// false => 查找对应名字的对象 通常会将类型和名字对应</param>
|
||||
public FindComponentAttribute(string goName, bool getChild = true)
|
||||
public FindComponentAttribute(string goName = null, bool getChild = true)
|
||||
{
|
||||
this.goName = goName;
|
||||
this.getChild = getChild;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
[AttributeUsage(AttributeTargets.Field, AllowMultiple = false)]
|
||||
public class FindComponentsInChildrenAttribute : Attribute
|
||||
{
|
||||
/// 空类
|
||||
/// 直接获取下层所有组件
|
||||
}
|
||||
|
||||
public static class UnityTool
|
||||
{
|
||||
/// <summary>
|
||||
@@ -32,47 +40,91 @@ namespace Framework.Core
|
||||
/// </summary>
|
||||
public static void FindComponents(this Component mono)
|
||||
{
|
||||
Dictionary<Type, Component[]> dic = null;
|
||||
Dictionary<Type, Component[]> dic = new();
|
||||
var flags = BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance;
|
||||
foreach (var field in mono.GetType().GetFields(flags))
|
||||
{
|
||||
var attribute = field.GetCustomAttribute<FindComponentAttribute>();
|
||||
Attribute attribute = GetFindCompAttribute(field);
|
||||
if (attribute == null) continue;
|
||||
dic ??= new Dictionary<Type, Component[]>();
|
||||
|
||||
Type type = field.FieldType;
|
||||
if (!dic.TryGetValue(type, out var components))
|
||||
var components = GetComponentsByType(mono, type, dic);
|
||||
|
||||
switch (attribute)
|
||||
{
|
||||
components = mono.GetComponentsInChildren(type, true);
|
||||
if (components == null || components.Length == 0)
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
Debug.Log($"无法找到{type}对象");
|
||||
#endif
|
||||
continue;
|
||||
}
|
||||
dic.Add(type, components);
|
||||
case FindComponentAttribute componentAttribute:
|
||||
HandleFindComponent(mono, field, components, componentAttribute);
|
||||
break;
|
||||
case FindComponentsInChildrenAttribute:
|
||||
HandleFindComponentsInChildren(mono, field, components);
|
||||
break;
|
||||
}
|
||||
if (attribute.getChild)
|
||||
}
|
||||
}
|
||||
|
||||
private static Attribute GetFindCompAttribute(FieldInfo field)
|
||||
{
|
||||
var attr1 = field.GetCustomAttribute<FindComponentAttribute>();
|
||||
if (attr1 != null)
|
||||
{
|
||||
return attr1;
|
||||
}
|
||||
|
||||
var attr2 = field.GetCustomAttribute<FindComponentsInChildrenAttribute>();
|
||||
return attr2;
|
||||
}
|
||||
|
||||
private static void HandleFindComponent(Component mono, FieldInfo field, Component[] components,
|
||||
FindComponentAttribute attribute)
|
||||
{
|
||||
if (string.IsNullOrEmpty(attribute.goName))
|
||||
{
|
||||
field.SetValue(mono, components[0]);
|
||||
return;
|
||||
}
|
||||
|
||||
if (attribute.getChild)
|
||||
{
|
||||
foreach (var component in components)
|
||||
{
|
||||
foreach (var component in components)
|
||||
if (component.transform.parent.name == attribute.goName)
|
||||
{
|
||||
if (component.transform.parent.name == attribute.goName)
|
||||
{
|
||||
field.SetValue(mono, component);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var component in components)
|
||||
{
|
||||
if (component.name != attribute.goName) continue;
|
||||
field.SetValue(mono, component);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var component in components)
|
||||
{
|
||||
if (component.name != attribute.goName) continue;
|
||||
field.SetValue(mono, component);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void HandleFindComponentsInChildren(Component mono, FieldInfo field, Component[] components)
|
||||
{
|
||||
field.SetValue(mono, components);
|
||||
}
|
||||
|
||||
private static Component[] GetComponentsByType(Component mono, Type type, Dictionary<Type, Component[]> dic)
|
||||
{
|
||||
if (dic.TryGetValue(type, out var components)) return components;
|
||||
|
||||
components = mono.GetComponentsInChildren(type, true);
|
||||
if (components == null || components.Length == 0)
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
Debug.Log($"无法找到{type}对象");
|
||||
#endif
|
||||
return null;
|
||||
}
|
||||
|
||||
dic.Add(type, components);
|
||||
return components;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,70 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace AibisDream.Framework
|
||||
{
|
||||
public class IocContainer
|
||||
{
|
||||
private readonly Dictionary<Type, object> _container = new();
|
||||
|
||||
public void Register<T>(T instance)
|
||||
{
|
||||
var key = typeof(T);
|
||||
|
||||
if (_container.ContainsKey(key))
|
||||
{
|
||||
_container[key] = instance;
|
||||
}
|
||||
else
|
||||
{
|
||||
_container.Add(key, instance);
|
||||
}
|
||||
}
|
||||
|
||||
public T Get<T>() where T : class
|
||||
{
|
||||
var key = typeof(T);
|
||||
|
||||
if (_container.TryGetValue(key, out var retInstance))
|
||||
{
|
||||
return retInstance as T;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public IEnumerable<T> GetInstancesByType<T>()
|
||||
{
|
||||
var type = typeof(T);
|
||||
return _container.Values.Where(instance => type.IsInstanceOfType(instance)).Cast<T>();
|
||||
}
|
||||
|
||||
public void Clear() => _container.Clear();
|
||||
}
|
||||
|
||||
public static class IocTools
|
||||
{
|
||||
private static readonly IocContainer IocContainer = new();
|
||||
|
||||
public static void RegisterIoc<T>(this object self, T instance)
|
||||
{
|
||||
IocContainer.Register(instance);
|
||||
}
|
||||
|
||||
public static T GetIoc<T>(this object self) where T : class
|
||||
{
|
||||
return IocContainer.Get<T>();
|
||||
}
|
||||
|
||||
public static IEnumerable<T> GetIocInstancesByType<T>()
|
||||
{
|
||||
return IocContainer.GetInstancesByType<T>();
|
||||
}
|
||||
|
||||
public static void ClearIoc()
|
||||
{
|
||||
IocContainer.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e3900bea9d184aa0b42e5a151b931571
|
||||
timeCreated: 1731417783
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9a9cfd121f9a45c0a72e5f056e7ce308
|
||||
timeCreated: 1732358305
|
||||
+1
-1
@@ -2,7 +2,7 @@ using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AibisDream
|
||||
namespace AibisDream.Framework
|
||||
{
|
||||
public interface IMoveable
|
||||
{
|
||||
@@ -0,0 +1,79 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AibisDream.Framework
|
||||
{
|
||||
public class MoveableSystem : MonoBehaviour
|
||||
{
|
||||
private bool _isDragging;
|
||||
private IMoveable _dragObj;
|
||||
private Vector3 _offset;
|
||||
private Camera _camera;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
_camera = Camera.main;
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
// 鼠标按下
|
||||
if (Input.GetMouseButtonDown(0))
|
||||
{
|
||||
OnMouseClickDown();
|
||||
}
|
||||
|
||||
// 鼠标按住
|
||||
if (Input.GetMouseButton(0) && _isDragging)
|
||||
{
|
||||
OnMouseHolding();
|
||||
}
|
||||
|
||||
// 鼠标松开
|
||||
if (Input.GetMouseButtonUp(0))
|
||||
{
|
||||
OnMouseClickUp();
|
||||
}
|
||||
}
|
||||
|
||||
private void OnMouseClickDown()
|
||||
{
|
||||
// 按下时发出检查射线
|
||||
Ray ray = _camera.ScreenPointToRay(Input.mousePosition);
|
||||
RaycastHit2D hit = Physics2D.Raycast(ray.origin, ray.direction);
|
||||
|
||||
// 检测命中的物体
|
||||
if (hit.collider && hit.collider.CompareTag("Moveable"))
|
||||
{
|
||||
_dragObj = hit.collider.gameObject.GetComponent<IMoveable>();
|
||||
if (_dragObj == null) return;
|
||||
|
||||
_dragObj.StartMove();
|
||||
_offset = hit.collider.transform.position - GetMouseAsWorldPoint();
|
||||
|
||||
_isDragging = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void OnMouseHolding()
|
||||
{
|
||||
_dragObj.Move(GetMouseAsWorldPoint() + _offset);
|
||||
}
|
||||
|
||||
private void OnMouseClickUp()
|
||||
{
|
||||
if (!_isDragging) return;
|
||||
|
||||
_dragObj?.StopMove();
|
||||
_dragObj = null;
|
||||
_isDragging = false;
|
||||
}
|
||||
|
||||
private Vector3 GetMouseAsWorldPoint()
|
||||
{
|
||||
Vector3 mousePoint = Input.mousePosition;
|
||||
mousePoint.z = _camera.nearClipPlane;
|
||||
return _camera.ScreenToWorldPoint(mousePoint);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5d755460ba0142f39c5677d8f948c777
|
||||
timeCreated: 1732358554
|
||||
@@ -1,30 +1,24 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using DG.Tweening;
|
||||
using Framework.Core;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AibisDream
|
||||
{
|
||||
public class AirDashboard : Dashboard
|
||||
{
|
||||
private Transform _pointer;
|
||||
private Transform _minPointer;
|
||||
private Transform _maxPointer;
|
||||
[FindComponent("Pointer")] private Transform _pointer;
|
||||
[FindComponent("Min Pointer")] private Transform _minPointer;
|
||||
[FindComponent("Max Pointer")] private Transform _maxPointer;
|
||||
|
||||
[SerializeField] private float topPosY;
|
||||
[SerializeField] private float bottomPosY;
|
||||
|
||||
protected override void OnStart()
|
||||
{
|
||||
_pointer = transform.Find("Pointer");
|
||||
_maxPointer = transform.Find("Max Pointer");
|
||||
_minPointer = transform.Find("Min Pointer");
|
||||
}
|
||||
|
||||
protected override void UpdateDashboard(EngineData data)
|
||||
{
|
||||
// 气门
|
||||
var targetPosY = (topPosY - bottomPosY) * data.curAir + bottomPosY;
|
||||
_pointer.position = new Vector3(_pointer.position.x, targetPosY, _pointer.position.z);
|
||||
_pointer.DOScaleY(data.curAir, Time.deltaTime);
|
||||
|
||||
// 气门上下限
|
||||
var minPosY = (topPosY - bottomPosY) * data.curAirMin + bottomPosY;
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using Framework.Core;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AibisDream
|
||||
@@ -9,6 +10,7 @@ namespace AibisDream
|
||||
private void Awake()
|
||||
{
|
||||
engineSystem = transform.parent.GetComponent<EngineSystem>();
|
||||
this.FindComponents();
|
||||
OnStart();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,25 +1,13 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using DG.Tweening;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AibisDream
|
||||
{
|
||||
public class OilDashBoard : Dashboard
|
||||
{
|
||||
private Transform _pointer;
|
||||
|
||||
[SerializeField] private float topPosY;
|
||||
[SerializeField] private float bottomPosY;
|
||||
|
||||
protected override void OnStart()
|
||||
{
|
||||
_pointer = transform.Find("Pointer");
|
||||
}
|
||||
|
||||
protected override void UpdateDashboard(EngineData data)
|
||||
{
|
||||
var targetPosY = (topPosY - bottomPosY) * data.curOil + bottomPosY;
|
||||
_pointer.position = new Vector3(_pointer.position.x, targetPosY, _pointer.position.z);
|
||||
transform.DOScaleY(data.curOil, Time.deltaTime);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using AibisDream.Framework;
|
||||
using DG.Tweening;
|
||||
using UnityEngine;
|
||||
|
||||
@@ -10,7 +11,6 @@ namespace AibisDream
|
||||
|
||||
public GearModel Data
|
||||
{
|
||||
get => data;
|
||||
set
|
||||
{
|
||||
data = value;
|
||||
|
||||
@@ -1,77 +1,69 @@
|
||||
using AibisDream.Framework;
|
||||
using Framework.Core;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AibisDream
|
||||
{
|
||||
public class GearController : MonoBehaviour
|
||||
public class GearController : MonoBehaviour, ISystem
|
||||
{
|
||||
[SerializeField] private GameObject gearPrefab;
|
||||
#region 索引
|
||||
|
||||
private ShaftGraph shaftGraph;
|
||||
private GameObject _gearPrefab;
|
||||
[FindComponentsInChildren] private Shaft[] _shafts;
|
||||
[FindComponentsInChildren] private Gear[] _gears;
|
||||
|
||||
private Shaft[] shafts;
|
||||
|
||||
private Vector3 offset; // 鼠标点击位置与物体pos偏移量
|
||||
|
||||
private Gear draggingGear;
|
||||
#endregion
|
||||
|
||||
private ShaftGraph _shaftGraph;
|
||||
private GearSysTemLevelData _levelData;
|
||||
|
||||
public RunType runType;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
shafts = GetComponentsInChildren<Shaft>();
|
||||
Init();
|
||||
}
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
shaftGraph = new ShaftGraph(shafts);
|
||||
Enable();
|
||||
}
|
||||
|
||||
private void OnDisable()
|
||||
{
|
||||
shaftGraph = null;
|
||||
Disable();
|
||||
}
|
||||
|
||||
private void Update()
|
||||
#region 生命周期管理
|
||||
|
||||
public void Init()
|
||||
{
|
||||
// 鼠标按下
|
||||
if (Input.GetMouseButtonDown(0))
|
||||
{
|
||||
OnMouseClickDown();
|
||||
}
|
||||
|
||||
// 鼠标拖动
|
||||
if (Input.GetMouseButton(0) && draggingGear)
|
||||
{
|
||||
draggingGear.Move(GetMouseAsWorldPoint() + offset);
|
||||
}
|
||||
|
||||
// 鼠标释放
|
||||
if (Input.GetMouseButtonUp(0)) // 检查鼠标左键释放
|
||||
{
|
||||
draggingGear?.StopMove();
|
||||
|
||||
if (draggingGear && draggingGear.targetShaft)
|
||||
{
|
||||
shaftGraph.ChangeVertex(draggingGear.targetShaft.GetInstanceID());
|
||||
}
|
||||
|
||||
draggingGear = null;
|
||||
}
|
||||
this.FindComponents();
|
||||
_gearPrefab = Resources.Load<GameObject>("Prefabs/Gear System/Gear");
|
||||
}
|
||||
|
||||
private void OnMouseClickDown()
|
||||
public void Enable()
|
||||
{
|
||||
// 按下时发出检查射线
|
||||
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
|
||||
RaycastHit2D hit = Physics2D.Raycast(ray.origin, ray.direction);
|
||||
|
||||
// 检测命中的物体
|
||||
if (hit.collider && hit.collider.CompareTag("Moveable"))
|
||||
if (runType == RunType.Editor)
|
||||
{
|
||||
offset = hit.collider.transform.position - GetMouseAsWorldPoint();
|
||||
draggingGear = hit.collider.gameObject.GetComponent<Gear>();
|
||||
draggingGear.StartMove();
|
||||
|
||||
}
|
||||
|
||||
_shaftGraph = new ShaftGraph(_shafts);
|
||||
}
|
||||
|
||||
public void Disable()
|
||||
{
|
||||
_shaftGraph = null;
|
||||
}
|
||||
|
||||
public void Deinit()
|
||||
{
|
||||
throw new System.NotImplementedException();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// 判断吸附位置
|
||||
/// </summary>
|
||||
@@ -80,16 +72,9 @@ namespace AibisDream
|
||||
/// <returns>能够被吸附的轴</returns>
|
||||
public Shaft CheckClosestShaft(Vector3 pos, float gearRadius)
|
||||
{
|
||||
return shaftGraph.QuerySnapShaft(pos, gearRadius);
|
||||
return _shaftGraph.QuerySnapShaft(pos, gearRadius);
|
||||
}
|
||||
|
||||
private Vector3 GetMouseAsWorldPoint()
|
||||
{
|
||||
Vector3 mousePoint = Input.mousePosition;
|
||||
mousePoint.z = Camera.main.nearClipPlane;
|
||||
return Camera.main.ScreenToWorldPoint(mousePoint);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 生成齿轮
|
||||
/// </summary>
|
||||
@@ -99,15 +84,40 @@ namespace AibisDream
|
||||
/// <returns>齿轮Obj</returns>
|
||||
public GameObject InitGear(Vector3 pos, GearModel gearModel, float speed)
|
||||
{
|
||||
GameObject gear = Instantiate(gearPrefab, pos, Quaternion.identity);
|
||||
GameObject gear = Instantiate(_gearPrefab, pos, Quaternion.identity);
|
||||
gear.transform.parent = transform.GetChild(0).transform;
|
||||
gear.GetComponent<Gear>().Data = gearModel;
|
||||
return gear;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 某个轴上齿轮发生变化时更新临接关系
|
||||
/// </summary>
|
||||
/// <param name="shaftId">轴ID</param>
|
||||
public void ChangeGraphVertex(int shaftId)
|
||||
{
|
||||
_shaftGraph?.ChangeVertex(shaftId);
|
||||
}
|
||||
|
||||
public void Succeed()
|
||||
{
|
||||
Debug.Log("达成目标");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 加载关卡配置
|
||||
/// </summary>
|
||||
public void LoadLevelData()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 保存关卡配置
|
||||
/// </summary>
|
||||
public void SaveLevelData()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AibisDream
|
||||
{
|
||||
[Serializable]
|
||||
public class GearSysTemLevelData
|
||||
{
|
||||
public GearLevelData[] gearLevelDataArray;
|
||||
public ShaftLevelData[] shaftLevelDataArray;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class GearLevelData
|
||||
{
|
||||
public const string GearPicPath = "Art/Fix/Stone";
|
||||
|
||||
public Vector3 gearPos;
|
||||
public float radius;
|
||||
public string gearPic;
|
||||
|
||||
public Sprite GearSprite => Resources.Load<Sprite>($"{GearPicPath}/{gearPic}");
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class ShaftLevelData
|
||||
{
|
||||
public int id;
|
||||
public ShaftType shaftType;
|
||||
// 初始角速度(仅Driver有)
|
||||
public float initialSpeed;
|
||||
// 目标角速度(仅Target有)
|
||||
public float targetSpeed;
|
||||
|
||||
// 初始齿轮情况(Driver, Target, Constant必须有,Pluggable不一定)
|
||||
public bool hasChildGear;
|
||||
public float radius;
|
||||
public string gearPic;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1f588bece13144969fb1eb88bed44f56
|
||||
timeCreated: 1732358007
|
||||
@@ -197,6 +197,7 @@ namespace AibisDream
|
||||
Driver, // 拥有初始速度,没有目标速度,全局仅有一个
|
||||
Target, // 没有初始速度,有目标速度,全局有多个
|
||||
Constant, // 没有初始速度,没有目标速度,不可拖动
|
||||
Pluggable // 没有初始速度,没有目标速度,可拔插
|
||||
Pluggable, // 没有初始速度,没有目标速度,可拔插
|
||||
Outside // 放在身体外面的轴,仅用于放置齿轮
|
||||
}
|
||||
}
|
||||
@@ -8,33 +8,29 @@ namespace AibisDream
|
||||
public class ShaftGraph
|
||||
{
|
||||
// 顶点数量
|
||||
int vertexSize;
|
||||
|
||||
private readonly int _vertexSize;
|
||||
// 顶点Map
|
||||
Shaft[] vertexArray;
|
||||
|
||||
private readonly Shaft[] _vertexArray;
|
||||
// 邻接表
|
||||
float[,] edgeTable;
|
||||
|
||||
private float[,] _edgeTable;
|
||||
// 遍历记录
|
||||
bool[] vertexRecordArray;
|
||||
|
||||
private readonly bool[] _vertexRecordArray;
|
||||
// 动力轴序号
|
||||
int rootIdx;
|
||||
private readonly int _rootIdx;
|
||||
|
||||
public ShaftGraph(Shaft[] shafts)
|
||||
{
|
||||
// 为轴赋值
|
||||
vertexSize = shafts.Length;
|
||||
vertexRecordArray = new bool[vertexSize];
|
||||
vertexArray = shafts;
|
||||
foreach (var shaft in vertexArray)
|
||||
_vertexSize = shafts.Length;
|
||||
_vertexRecordArray = new bool[_vertexSize];
|
||||
_vertexArray = shafts;
|
||||
foreach (var shaft in _vertexArray)
|
||||
{
|
||||
shaft.InitShaft();
|
||||
}
|
||||
|
||||
// 寻找唯一的驱动轴序号
|
||||
rootIdx = FindDriverIdx();
|
||||
_rootIdx = FindDriverIdx();
|
||||
|
||||
// 生成边邻接表
|
||||
GeneEdgeTable();
|
||||
@@ -44,9 +40,9 @@ namespace AibisDream
|
||||
|
||||
private int FindDriverIdx()
|
||||
{
|
||||
for (int i = 0; i < vertexSize; i++)
|
||||
for (int i = 0; i < _vertexSize; i++)
|
||||
{
|
||||
if (vertexArray[i].shaftType == ShaftType.Driver)
|
||||
if (_vertexArray[i].shaftType == ShaftType.Driver)
|
||||
{
|
||||
return i;
|
||||
}
|
||||
@@ -60,22 +56,22 @@ namespace AibisDream
|
||||
/// </summary>
|
||||
private void GeneEdgeTable()
|
||||
{
|
||||
edgeTable = new float[vertexSize, vertexSize];
|
||||
_edgeTable = new float[_vertexSize, _vertexSize];
|
||||
|
||||
for (int i = 0; i < vertexSize - 1; i++)
|
||||
for (int i = 0; i < _vertexSize - 1; i++)
|
||||
{
|
||||
for (int j = i + 1; j < vertexSize; j++)
|
||||
for (int j = i + 1; j < _vertexSize; j++)
|
||||
{
|
||||
// 判断两个Shaft是否临接
|
||||
if (Shaft.IsShaftConnected(vertexArray[i], vertexArray[j]))
|
||||
if (Shaft.IsShaftConnected(_vertexArray[i], _vertexArray[j]))
|
||||
{
|
||||
edgeTable[i, j] = Shaft.CalcAngularVelocityRatio(vertexArray[i], vertexArray[j]);
|
||||
edgeTable[j, i] = Shaft.CalcAngularVelocityRatio(vertexArray[j], vertexArray[i]);
|
||||
_edgeTable[i, j] = Shaft.CalcAngularVelocityRatio(_vertexArray[i], _vertexArray[j]);
|
||||
_edgeTable[j, i] = Shaft.CalcAngularVelocityRatio(_vertexArray[j], _vertexArray[i]);
|
||||
}
|
||||
else
|
||||
{
|
||||
edgeTable[i, j] = 0;
|
||||
edgeTable[j, i] = 0;
|
||||
_edgeTable[i, j] = 0;
|
||||
_edgeTable[j, i] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -91,7 +87,7 @@ namespace AibisDream
|
||||
int idx = TranInstanceIDToIdx(instanceID);
|
||||
|
||||
// 更新该节点对应的邻接表
|
||||
for (int i = 0; i < vertexSize; i++)
|
||||
for (int i = 0; i < _vertexSize; i++)
|
||||
{
|
||||
// 遇到自身跳过
|
||||
if (i == idx)
|
||||
@@ -100,15 +96,15 @@ namespace AibisDream
|
||||
}
|
||||
|
||||
// 判断两个Shaft是否临接
|
||||
if (Shaft.IsShaftConnected(vertexArray[idx], vertexArray[i]))
|
||||
if (Shaft.IsShaftConnected(_vertexArray[idx], _vertexArray[i]))
|
||||
{
|
||||
edgeTable[idx, i] = Shaft.CalcAngularVelocityRatio(vertexArray[idx], vertexArray[i]);
|
||||
edgeTable[i, idx] = Shaft.CalcAngularVelocityRatio(vertexArray[i], vertexArray[idx]);
|
||||
_edgeTable[idx, i] = Shaft.CalcAngularVelocityRatio(_vertexArray[idx], _vertexArray[i]);
|
||||
_edgeTable[i, idx] = Shaft.CalcAngularVelocityRatio(_vertexArray[i], _vertexArray[idx]);
|
||||
}
|
||||
else
|
||||
{
|
||||
edgeTable[idx, i] = 0;
|
||||
edgeTable[i, idx] = 0;
|
||||
_edgeTable[idx, i] = 0;
|
||||
_edgeTable[i, idx] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -119,9 +115,9 @@ namespace AibisDream
|
||||
{
|
||||
// 查找对应的序号
|
||||
int idx = -1;
|
||||
for (int i = 0; i < vertexSize; i++)
|
||||
for (int i = 0; i < _vertexSize; i++)
|
||||
{
|
||||
if (instanceID == vertexArray[i].GetInstanceID())
|
||||
if (instanceID == _vertexArray[i].GetInstanceID())
|
||||
{
|
||||
idx = i;
|
||||
break;
|
||||
@@ -137,12 +133,12 @@ namespace AibisDream
|
||||
public void UpdateSpeed()
|
||||
{
|
||||
// 清除遍历记录
|
||||
Array.Clear(vertexRecordArray, 0, vertexSize);
|
||||
Array.Clear(_vertexRecordArray, 0, _vertexSize);
|
||||
// 从驱动轴开始计算速度
|
||||
vertexRecordArray[rootIdx] = true;
|
||||
UpdateShaftSpeedByIdx(rootIdx);
|
||||
_vertexRecordArray[_rootIdx] = true;
|
||||
UpdateShaftSpeedByIdx(_rootIdx);
|
||||
// 更新完速度后统一更新动画
|
||||
foreach (var shaft in vertexArray)
|
||||
foreach (var shaft in _vertexArray)
|
||||
{
|
||||
shaft.UpdateSpeed();
|
||||
}
|
||||
@@ -151,23 +147,23 @@ namespace AibisDream
|
||||
private void UpdateShaftSpeedByIdx(int idx)
|
||||
{
|
||||
// 已知当前齿轮速度
|
||||
float currentSpeed = vertexArray[idx].speed;
|
||||
float currentSpeed = _vertexArray[idx].speed;
|
||||
|
||||
for (int i = 0; i < vertexSize; i++)
|
||||
for (int i = 0; i < _vertexSize; i++)
|
||||
{
|
||||
// 遍历临接齿轮
|
||||
if (i != idx && edgeTable[idx, i] > 0)
|
||||
if (i != idx && _edgeTable[idx, i] > 0)
|
||||
{
|
||||
// 已遍历过就跳过
|
||||
if (vertexRecordArray[i])
|
||||
if (_vertexRecordArray[i])
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// 更新速度
|
||||
vertexArray[i].speed = - currentSpeed * edgeTable[idx, i];
|
||||
_vertexArray[i].speed = - currentSpeed * _edgeTable[idx, i];
|
||||
// 已遍历的轴加上标记
|
||||
vertexRecordArray[i] = true;
|
||||
_vertexRecordArray[i] = true;
|
||||
// 继续寻找相邻齿轮
|
||||
UpdateShaftSpeedByIdx(i);
|
||||
}
|
||||
@@ -182,7 +178,7 @@ namespace AibisDream
|
||||
/// <returns>吸附轴</returns>
|
||||
public Shaft QuerySnapShaft(Vector3 pos, float gearRadius)
|
||||
{
|
||||
if (vertexArray == null || vertexArray.Length == 0)
|
||||
if (_vertexArray == null || _vertexArray.Length == 0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
@@ -190,7 +186,7 @@ namespace AibisDream
|
||||
// 查询距离最近的,可吸附的Shaft
|
||||
Shaft closestShaft = null;
|
||||
float minDistance = -1;
|
||||
foreach (var vertex in vertexArray)
|
||||
foreach (var vertex in _vertexArray)
|
||||
{
|
||||
if (vertex.shaftType == ShaftType.Pluggable && !vertex.HasChildGear())
|
||||
{
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
using System.IO;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using Newtonsoft.Json.Serialization;
|
||||
using UnityEngine.Device;
|
||||
|
||||
namespace Utility
|
||||
{
|
||||
public static class JsonUtil
|
||||
{
|
||||
// public static T ReadBean<T>(string path, string key)
|
||||
// {
|
||||
// // 加载自由结构Json
|
||||
// string json = File.ReadAllText(path);
|
||||
// var jObject = JObject.Parse(json);
|
||||
// jObject.TryGetValue(key);
|
||||
// }
|
||||
|
||||
/// <summary>
|
||||
/// 按路径加载Json
|
||||
/// </summary>
|
||||
/// <param name="path"></param>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <returns></returns>
|
||||
public static T ReadBean<T>(string path)
|
||||
{
|
||||
string json = File.ReadAllText(path);
|
||||
return JsonConvert.DeserializeObject<T>(json);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 按路径加载Json
|
||||
/// </summary>
|
||||
/// <param name="path">路径</param>
|
||||
/// <typeparam name="T">Bean</typeparam>
|
||||
/// <returns>目标Bean</returns>
|
||||
public static T[] ReadBeanArray<T>(string path)
|
||||
{
|
||||
string json = File.ReadAllText(path);
|
||||
return JsonConvert.DeserializeObject<T[]>(json);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1057e13b721749ac9d715da49023320a
|
||||
timeCreated: 1732363097
|
||||
Reference in New Issue
Block a user