代码提交-20240627-0949
This commit is contained in:
parent
abfd4822c5
commit
f3fe5787eb
BulkCargo_UnityProject/Assets
DatePicker.meta
DatePicker
Date Range Picker.meta
Date Range Picker
Documentation.meta
Helpers.metaDocumentation
Fonts.metaFonts
Montserrat.meta
Prefabs.metaMontserrat
Prefabs
CalenderButton.prefabCalenderButton.prefab.metaDate Range Pickers.meta
Scenes.metaDate Range Pickers
Dual Date Range Picker.prefabDual Date Range Picker.prefab.metaNH Dual Date Range Picker.prefabNH Dual Date Range Picker.prefab.metaNH Single Date Range Picker.prefabNH Single Date Range Picker.prefab.metaSingle Date Range Picker.prefabSingle Date Range Picker.prefab.metaSingle Date Range Picker_TMP.prefabSingle Date Range Picker_TMP.prefab.meta
Scenes
H Dual Date Range Picker.unityH Dual Date Range Picker.unity.metaH Single Date Range Picker.unityH Single Date Range Picker.unity.metaNH Dual Date Range Picker.unityNH Dual Date Range Picker.unity.metaNH Single Date Range Picker.unityNH Single Date Range Picker.unity.meta
Scripts.metaScripts
Calender.meta
Textures.metaCalender
Calender.csCalender.cs.metaCalenderButton.csCalenderButton.cs.metaDateRangePicker.csDateRangePicker.cs.metaDateText.csDateText.cs.metaSpawnCalenderButtons.csSpawnCalenderButtons.cs.meta
Date Range Pickers.metaDate Range Pickers
Dual_DateRangePicker.csDual_DateRangePicker.cs.metaSingle_DateRangePicker.csSingle_DateRangePicker.cs.metanh_Dual_DateRangePicker.csnh_Dual_DateRangePicker.cs.metanh_Single_DateRangePicker.csnh_Single_DateRangePicker.cs.meta
Display States.metaDisplay States
Textures
arrow.pngarrow.png.metacalender.pngcalender.png.metacircle.psdcircle.psd.metadouble-arrow.pngdouble-arrow.png.metarectangle center.pngrectangle center.png.metasquare-first-Selected.pngsquare-first-Selected.png.metasquare-last-Selected.pngsquare-last-Selected.png.meta
Tweening.metaTweening
Helpers
rectangle center.psdrectangle center.psd.metasquare-first-Selected.psdsquare-first-Selected.psd.metasquare-last-Selected.psdsquare-last-Selected.psd.metauGUITools.csuGUITools.cs.meta
HourPicker.metaHourPicker
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 36e2bd3e8c7c05748941200f14273f61
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 37017c8e38e58dd4cb8644f2f6466e65
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 5045b4877a5eb420da0cffa31b71daab
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,129 @@
|
||||||
|
UNITY ASSET
|
||||||
|
|
||||||
|
DATE RANGE PICKER
|
||||||
|
|
||||||
|
Table of contents
|
||||||
|
|
||||||
|
Table of contents
|
||||||
|
Overview
|
||||||
|
RATE
|
||||||
|
QUICK SETUP VIDEO
|
||||||
|
TYPES OF DATE RANGE PICKERS [PREFABS]
|
||||||
|
SCENES
|
||||||
|
DATE RANGE PICKER INITIAL SETUP
|
||||||
|
THINGS TO NOTE
|
||||||
|
|
||||||
|
Date range picker main scripts
|
||||||
|
Button color - Update the look of the calenders
|
||||||
|
Border color
|
||||||
|
Headings color
|
||||||
|
Show days in other months
|
||||||
|
Update the first day of the week
|
||||||
|
Close on last selection
|
||||||
|
Calendar updated callbacks
|
||||||
|
UITweenManager
|
||||||
|
Changing calender dates
|
||||||
|
|
||||||
|
Overview
|
||||||
|
|
||||||
|
Allows your users to visually select between two dates with this easy to use
|
||||||
|
Unity Asset.
|
||||||
|
|
||||||
|
RATE
|
||||||
|
|
||||||
|
If you enjoyed this asset, please rate it! It will help alot! Furthermore if
|
||||||
|
your having issues or need improvements reach out to h unter.glen@gmail.com
|
||||||
|
QUICK SETUP VIDEO
|
||||||
|
|
||||||
|
- https://youtu.be/X0FE6mdnz64
|
||||||
|
|
||||||
|
TYPES OF DATE RANGE PICKERS [PREFABS]
|
||||||
|
|
||||||
|
- Single Date Range Picker - D ate picker with single calender, w ith
|
||||||
|
highlighting for the inbetween, selected dates.
|
||||||
|
|
||||||
|
- Dual Date Range Picker - D ate picker with two calenders, with
|
||||||
|
highlighting for the inbetween, selected dates.
|
||||||
|
|
||||||
|
- NH Single Date Range Picker - D ate picker with single calender, w ithout
|
||||||
|
highlighting for the inbetween, selected dates.
|
||||||
|
|
||||||
|
- NH Dual Date Range Picker - D ate picker with two calenders, without
|
||||||
|
highlighting for the inbetween, selected dates.
|
||||||
|
|
||||||
|
SCENES
|
||||||
|
|
||||||
|
- H Single Date Range Picker
|
||||||
|
- H Dual Date Range Picker
|
||||||
|
- NH Single Date Range Picker
|
||||||
|
- NH Dual Date Range Picker
|
||||||
|
|
||||||
|
DATE RANGE PICKER INITIAL SETUP
|
||||||
|
|
||||||
|
1. Create a new scene
|
||||||
|
2. Add a canvas object, doing so by right clicking in the hierarchy > UI >
|
||||||
|
|
||||||
|
Canvas
|
||||||
|
3. Setup canvas to your liking, in this case asset was developed using the
|
||||||
|
following values (see picture below)
|
||||||
|
|
||||||
|
4. Drag and drop one of the date range pickers as a child object of the canvas
|
||||||
|
5.Hit play and see it working! :)
|
||||||
|
|
||||||
|
THINGS TO NOTE
|
||||||
|
|
||||||
|
Date range picker main scripts
|
||||||
|
Single_DateRangePicker.cs, Dual_DateRangePicker.cs,
|
||||||
|
nh_Single_DateRangePicker.cs, nh_Dual_DateRangePicker.cs these d ate range
|
||||||
|
picker scripts, define the differences between one another.
|
||||||
|
Button color - Update the look of the calenders
|
||||||
|
Calendar buttons: Select the CalenderButton Prefab within the project window,
|
||||||
|
here you can change the default color, depending upon the state. Once you do
|
||||||
|
this you will then have to update your calendars.
|
||||||
|
|
||||||
|
- To do this locate your Date Range Picker gameobject within your scene,
|
||||||
|
attached you should find SpawnCalenderButtons.cs - e nsure your date
|
||||||
|
range picker is complete unpacked from a prefab and hit spawn. D on’t
|
||||||
|
forget to save the scene after!
|
||||||
|
Border color
|
||||||
|
Border color - this can be done manually, by selecting the bottom outline
|
||||||
|
within the prefabs and changing the image component color.
|
||||||
|
|
||||||
|
Headings color
|
||||||
|
This can be done manually, by selecting the text component and setting the
|
||||||
|
color to the desired.
|
||||||
|
Show days in other months
|
||||||
|
You can show days in other months by locating a date range picker game object
|
||||||
|
and it’s ‘main’ retrospective script for example Dual_Date_RangePicker.cs.
|
||||||
|
Here you will be able to choose whether or not you want to show days in other
|
||||||
|
months.
|
||||||
|
Update the first day of the week
|
||||||
|
This can be done by locating your date range picker gameobject and it’s
|
||||||
|
retrospective ‘main’ script within the hierarchy. Here you will be able to
|
||||||
|
choose the first day of the week the calendar will start with.
|
||||||
|
Close on last selection
|
||||||
|
Attach to a date picker, you can toggle ‘Close On Last Selection’. If enabled,
|
||||||
|
this option will close the datepicker/calender when the second date of the
|
||||||
|
date picker has been selected.
|
||||||
|
|
||||||
|
For example...
|
||||||
|
|
||||||
|
Calendar updated callbacks
|
||||||
|
Attached to the date picker main gameobject, within your hierarchy. You will
|
||||||
|
find DateText.cs a ttached. This script has an example of how to plug into the
|
||||||
|
date range picker calendar update events - mainly used to display the chosen
|
||||||
|
date range.
|
||||||
|
UITweenManager
|
||||||
|
Simple tween manager, that is used for transitioning from different colours.
|
||||||
|
The tween manager is mainly used in conjunction with the Calendar buttons and
|
||||||
|
it’s display states for example transitioning/highlighting a button when a
|
||||||
|
mouse hovers over a button.
|
||||||
|
Changing calendar dates
|
||||||
|
All of the examples have buttons that either increase or decrease a calendar
|
||||||
|
year by 1 month or 1 year. If you want to change this value. Locate the date
|
||||||
|
range picker gameobject and it’s main retrospective script.
|
||||||
|
|
||||||
|
Opening it up you will find methods such as OnClick_NextCalenderMonth and
|
||||||
|
OnClick_PreviousCalenderYear that call either .AddMonths(1) or .AddYears(1).
|
||||||
|
Then change the values within the parameters (1) , to the desired.
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9f322b4d879b6470fb45dcd842be2def
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 3ed0cfe6ba8e24ed79016ec29e3a71bb
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 57ffa77aa6eca44fe878123a3fe12f05
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Binary file not shown.
|
@ -0,0 +1,26 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2f8936487aae64535a6e0723aec461a7
|
||||||
|
TrueTypeFontImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 4
|
||||||
|
fontSize: 16
|
||||||
|
forceTextureCase: -2
|
||||||
|
characterSpacing: 0
|
||||||
|
characterPadding: 1
|
||||||
|
includeFontData: 1
|
||||||
|
fontName: Montserrat
|
||||||
|
fontNames:
|
||||||
|
- Montserrat
|
||||||
|
fallbackFontReferences:
|
||||||
|
- {fileID: 12800000, guid: 11513ca76287048beaf2984d45165b57, type: 3}
|
||||||
|
- {fileID: 12800000, guid: 0581b15bc62764aeeb546de57a2114a1, type: 3}
|
||||||
|
- {fileID: 12800000, guid: 152f823d446ca423b89cd6d2feef9c2f, type: 3}
|
||||||
|
- {fileID: 12800000, guid: 02ed79fe659d34482a5fec3fede15d27, type: 3}
|
||||||
|
customCharacters:
|
||||||
|
fontRenderingMode: 0
|
||||||
|
ascentCalculationMode: 1
|
||||||
|
useLegacyBoundsCalculation: 0
|
||||||
|
shouldRoundAdvanceValue: 1
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Binary file not shown.
|
@ -0,0 +1,25 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 152f823d446ca423b89cd6d2feef9c2f
|
||||||
|
TrueTypeFontImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 4
|
||||||
|
fontSize: 16
|
||||||
|
forceTextureCase: -2
|
||||||
|
characterSpacing: 0
|
||||||
|
characterPadding: 1
|
||||||
|
includeFontData: 1
|
||||||
|
fontName: Montserrat
|
||||||
|
fontNames:
|
||||||
|
- Montserrat
|
||||||
|
fallbackFontReferences:
|
||||||
|
- {fileID: 12800000, guid: 11513ca76287048beaf2984d45165b57, type: 3}
|
||||||
|
- {fileID: 12800000, guid: 0581b15bc62764aeeb546de57a2114a1, type: 3}
|
||||||
|
- {fileID: 12800000, guid: 02ed79fe659d34482a5fec3fede15d27, type: 3}
|
||||||
|
customCharacters:
|
||||||
|
fontRenderingMode: 0
|
||||||
|
ascentCalculationMode: 1
|
||||||
|
useLegacyBoundsCalculation: 0
|
||||||
|
shouldRoundAdvanceValue: 1
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,93 @@
|
||||||
|
Copyright 2011 The Montserrat Project Authors (https://github.com/JulietaUla/Montserrat)
|
||||||
|
|
||||||
|
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||||
|
This license is copied below, and is also available with a FAQ at:
|
||||||
|
http://scripts.sil.org/OFL
|
||||||
|
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
PREAMBLE
|
||||||
|
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||||
|
development of collaborative font projects, to support the font creation
|
||||||
|
efforts of academic and linguistic communities, and to provide a free and
|
||||||
|
open framework in which fonts may be shared and improved in partnership
|
||||||
|
with others.
|
||||||
|
|
||||||
|
The OFL allows the licensed fonts to be used, studied, modified and
|
||||||
|
redistributed freely as long as they are not sold by themselves. The
|
||||||
|
fonts, including any derivative works, can be bundled, embedded,
|
||||||
|
redistributed and/or sold with any software provided that any reserved
|
||||||
|
names are not used by derivative works. The fonts and derivatives,
|
||||||
|
however, cannot be released under any other type of license. The
|
||||||
|
requirement for fonts to remain under this license does not apply
|
||||||
|
to any document created using the fonts or their derivatives.
|
||||||
|
|
||||||
|
DEFINITIONS
|
||||||
|
"Font Software" refers to the set of files released by the Copyright
|
||||||
|
Holder(s) under this license and clearly marked as such. This may
|
||||||
|
include source files, build scripts and documentation.
|
||||||
|
|
||||||
|
"Reserved Font Name" refers to any names specified as such after the
|
||||||
|
copyright statement(s).
|
||||||
|
|
||||||
|
"Original Version" refers to the collection of Font Software components as
|
||||||
|
distributed by the Copyright Holder(s).
|
||||||
|
|
||||||
|
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||||
|
or substituting -- in part or in whole -- any of the components of the
|
||||||
|
Original Version, by changing formats or by porting the Font Software to a
|
||||||
|
new environment.
|
||||||
|
|
||||||
|
"Author" refers to any designer, engineer, programmer, technical
|
||||||
|
writer or other person who contributed to the Font Software.
|
||||||
|
|
||||||
|
PERMISSION & CONDITIONS
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||||
|
redistribute, and sell modified and unmodified copies of the Font
|
||||||
|
Software, subject to the following conditions:
|
||||||
|
|
||||||
|
1) Neither the Font Software nor any of its individual components,
|
||||||
|
in Original or Modified Versions, may be sold by itself.
|
||||||
|
|
||||||
|
2) Original or Modified Versions of the Font Software may be bundled,
|
||||||
|
redistributed and/or sold with any software, provided that each copy
|
||||||
|
contains the above copyright notice and this license. These can be
|
||||||
|
included either as stand-alone text files, human-readable headers or
|
||||||
|
in the appropriate machine-readable metadata fields within text or
|
||||||
|
binary files as long as those fields can be easily viewed by the user.
|
||||||
|
|
||||||
|
3) No Modified Version of the Font Software may use the Reserved Font
|
||||||
|
Name(s) unless explicit written permission is granted by the corresponding
|
||||||
|
Copyright Holder. This restriction only applies to the primary font name as
|
||||||
|
presented to the users.
|
||||||
|
|
||||||
|
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||||
|
Software shall not be used to promote, endorse or advertise any
|
||||||
|
Modified Version, except to acknowledge the contribution(s) of the
|
||||||
|
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||||
|
permission.
|
||||||
|
|
||||||
|
5) The Font Software, modified or unmodified, in part or in whole,
|
||||||
|
must be distributed entirely under this license, and must not be
|
||||||
|
distributed under any other license. The requirement for fonts to
|
||||||
|
remain under this license does not apply to any document created
|
||||||
|
using the Font Software.
|
||||||
|
|
||||||
|
TERMINATION
|
||||||
|
This license becomes null and void if any of the above conditions are
|
||||||
|
not met.
|
||||||
|
|
||||||
|
DISCLAIMER
|
||||||
|
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||||
|
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||||
|
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||||
|
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||||
|
OTHER DEALINGS IN THE FONT SOFTWARE.
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: cb2669def561d43fb902a9ff0d098418
|
||||||
|
TextScriptImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 40df41bbe49bb406bbdae4d0d0783fee
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,466 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &1840375564978184210
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 3244997764918590192}
|
||||||
|
- component: {fileID: 664120096248191345}
|
||||||
|
- component: {fileID: 1157848042937354081}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Secondary
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &3244997764918590192
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1840375564978184210}
|
||||||
|
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: 3965394324223510559}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 1, y: 1}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 0, y: 0}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &664120096248191345
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1840375564978184210}
|
||||||
|
m_CullTransparentMesh: 0
|
||||||
|
--- !u!114 &1157848042937354081
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1840375564978184210}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_RaycastTarget: 1
|
||||||
|
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_Sprite: {fileID: 21300000, guid: dc94ab512ebec45028d7b49b74dd6c87, type: 3}
|
||||||
|
m_Type: 0
|
||||||
|
m_PreserveAspect: 0
|
||||||
|
m_FillCenter: 1
|
||||||
|
m_FillMethod: 4
|
||||||
|
m_FillAmount: 1
|
||||||
|
m_FillClockwise: 1
|
||||||
|
m_FillOrigin: 0
|
||||||
|
m_UseSpriteMesh: 0
|
||||||
|
m_PixelsPerUnitMultiplier: 1
|
||||||
|
--- !u!1 &2684456491627517692
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 5979605283862889698}
|
||||||
|
- component: {fileID: 2596722772224466705}
|
||||||
|
- component: {fileID: 9112606524210455842}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Primary
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &5979605283862889698
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2684456491627517692}
|
||||||
|
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: 3965394324223510559}
|
||||||
|
m_RootOrder: 1
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 1, y: 1}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 0, y: 0}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &2596722772224466705
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2684456491627517692}
|
||||||
|
m_CullTransparentMesh: 0
|
||||||
|
--- !u!114 &9112606524210455842
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2684456491627517692}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_RaycastTarget: 1
|
||||||
|
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_Sprite: {fileID: 21300000, guid: 4aeefb11e15b4471798b5b76eca3d4e8, type: 3}
|
||||||
|
m_Type: 0
|
||||||
|
m_PreserveAspect: 0
|
||||||
|
m_FillCenter: 1
|
||||||
|
m_FillMethod: 4
|
||||||
|
m_FillAmount: 1
|
||||||
|
m_FillClockwise: 1
|
||||||
|
m_FillOrigin: 0
|
||||||
|
m_UseSpriteMesh: 0
|
||||||
|
m_PixelsPerUnitMultiplier: 1
|
||||||
|
--- !u!1 &3965394324223510556
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 3965394324223510559}
|
||||||
|
- component: {fileID: 3965394324223510552}
|
||||||
|
- component: {fileID: 3965394324223510558}
|
||||||
|
- component: {fileID: 114418215014950898}
|
||||||
|
- component: {fileID: 114877752753692514}
|
||||||
|
- component: {fileID: 114023816492044268}
|
||||||
|
- component: {fileID: 114867715374746712}
|
||||||
|
- component: {fileID: 114319046893274842}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: CalenderButton
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &3965394324223510559
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3965394324223510556}
|
||||||
|
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: 3244997764918590192}
|
||||||
|
- {fileID: 5979605283862889698}
|
||||||
|
- {fileID: 3965394324698099412}
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 0, y: 0}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 0, y: 0}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &3965394324223510552
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3965394324223510556}
|
||||||
|
m_CullTransparentMesh: 0
|
||||||
|
--- !u!114 &3965394324223510558
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3965394324223510556}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 6367b2a9e388249eaa7ad70209051527, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_ButtonText: {fileID: 2148684627228542155}
|
||||||
|
m_ButtonPrimaryImage: {fileID: 9112606524210455842}
|
||||||
|
m_ButtonSecondaryImage: {fileID: 1157848042937354081}
|
||||||
|
m_NormalState: {fileID: 114418215014950898}
|
||||||
|
m_SelectedState: {fileID: 114023816492044268}
|
||||||
|
m_HoverState: {fileID: 114877752753692514}
|
||||||
|
m_HighlightedState: {fileID: 114867715374746712}
|
||||||
|
m_DisabledState: {fileID: 114319046893274842}
|
||||||
|
--- !u!114 &114418215014950898
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3965394324223510556}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: e456cc388e88a4371be4c3688e8fa6fe, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_BtnImageColor:
|
||||||
|
serializedVersion: 2
|
||||||
|
rgba: 4294967295
|
||||||
|
m_BtnTextColor:
|
||||||
|
serializedVersion: 2
|
||||||
|
rgba: 4281874488
|
||||||
|
m_Btn_ImageColor_NotInMonth:
|
||||||
|
serializedVersion: 2
|
||||||
|
rgba: 4294967295
|
||||||
|
m_Btn_TextColor_NotInMonth:
|
||||||
|
serializedVersion: 2
|
||||||
|
rgba: 842545208
|
||||||
|
--- !u!114 &114877752753692514
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3965394324223510556}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 488e8e5ffe36649a4bea689cce6afa2d, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_BtnImageColor:
|
||||||
|
serializedVersion: 2
|
||||||
|
rgba: 4287221021
|
||||||
|
m_BtnTextColor:
|
||||||
|
serializedVersion: 2
|
||||||
|
rgba: 4294967295
|
||||||
|
--- !u!114 &114023816492044268
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3965394324223510556}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: eeafa67c690664539bc6b9ecc446523f, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_BtnImageColor:
|
||||||
|
serializedVersion: 2
|
||||||
|
rgba: 4287221021
|
||||||
|
m_BtnTextColor:
|
||||||
|
serializedVersion: 2
|
||||||
|
rgba: 4294967295
|
||||||
|
--- !u!114 &114867715374746712
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3965394324223510556}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 97bc0f2fe435e4363ae1d19951bfbc46, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_FirstSelectionDate_HighlightSprite: {fileID: 21300000, guid: 51bcd696195bd457cb17aaf20b0f2ee3, type: 3}
|
||||||
|
m_InBetween_Dates_HighlightSprite: {fileID: 21300000, guid: 7ae9bf0f40b8645789df112f2576400a, type: 3}
|
||||||
|
m_LastSelectionDate_HighlightSprite: {fileID: 21300000, guid: efcdc93ca6c2a485cbd892c3e4941922, type: 3}
|
||||||
|
m_Highlight_Image_Color:
|
||||||
|
serializedVersion: 2
|
||||||
|
rgba: 847891741
|
||||||
|
--- !u!114 &114319046893274842
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3965394324223510556}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 00d95f725a9bc4909a37a5325ddc40f8, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
--- !u!1 &3965394324698099413
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 3965394324698099412}
|
||||||
|
- component: {fileID: 3965394324698099414}
|
||||||
|
- component: {fileID: 2861965092648538287}
|
||||||
|
- component: {fileID: 2148684627228542155}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Text
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &3965394324698099412
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3965394324698099413}
|
||||||
|
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: 3965394324223510559}
|
||||||
|
m_RootOrder: 2
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 1, y: 1}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 0, y: -4.4}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &3965394324698099414
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3965394324698099413}
|
||||||
|
m_CullTransparentMesh: 0
|
||||||
|
--- !u!114 &2861965092648538287
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3965394324698099413}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 5ecf0704b4a60fa43a8d6fbee03f1c5d, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
--- !u!114 &2148684627228542155
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3965394324698099413}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_RaycastTarget: 1
|
||||||
|
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_text: 27
|
||||||
|
m_isRightToLeft: 0
|
||||||
|
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
|
||||||
|
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
|
||||||
|
m_fontSharedMaterials: []
|
||||||
|
m_fontMaterial: {fileID: 0}
|
||||||
|
m_fontMaterials: []
|
||||||
|
m_fontColor32:
|
||||||
|
serializedVersion: 2
|
||||||
|
rgba: 4281874488
|
||||||
|
m_fontColor: {r: 0.21960786, g: 0.21960786, b: 0.21960786, a: 1}
|
||||||
|
m_enableVertexGradient: 0
|
||||||
|
m_colorMode: 3
|
||||||
|
m_fontColorGradient:
|
||||||
|
topLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
topRight: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
bottomRight: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_fontColorGradientPreset: {fileID: 0}
|
||||||
|
m_spriteAsset: {fileID: 0}
|
||||||
|
m_tintAllSprites: 0
|
||||||
|
m_StyleSheet: {fileID: 0}
|
||||||
|
m_TextStyleHashCode: -1183493901
|
||||||
|
m_overrideHtmlColors: 0
|
||||||
|
m_faceColor:
|
||||||
|
serializedVersion: 2
|
||||||
|
rgba: 4294967295
|
||||||
|
m_fontSize: 12
|
||||||
|
m_fontSizeBase: 12
|
||||||
|
m_fontWeight: 400
|
||||||
|
m_enableAutoSizing: 0
|
||||||
|
m_fontSizeMin: 18
|
||||||
|
m_fontSizeMax: 72
|
||||||
|
m_fontStyle: 0
|
||||||
|
m_HorizontalAlignment: 1
|
||||||
|
m_VerticalAlignment: 512
|
||||||
|
m_textAlignment: 65535
|
||||||
|
m_characterSpacing: 0
|
||||||
|
m_wordSpacing: 0
|
||||||
|
m_lineSpacing: 0
|
||||||
|
m_lineSpacingMax: 0
|
||||||
|
m_paragraphSpacing: 0
|
||||||
|
m_charWidthMaxAdj: 0
|
||||||
|
m_enableWordWrapping: 1
|
||||||
|
m_wordWrappingRatios: 0.4
|
||||||
|
m_overflowMode: 0
|
||||||
|
m_linkedTextComponent: {fileID: 0}
|
||||||
|
parentLinkedComponent: {fileID: 0}
|
||||||
|
m_enableKerning: 1
|
||||||
|
m_enableExtraPadding: 0
|
||||||
|
checkPaddingRequired: 0
|
||||||
|
m_isRichText: 1
|
||||||
|
m_parseCtrlCharacters: 1
|
||||||
|
m_isOrthographic: 1
|
||||||
|
m_isCullingEnabled: 0
|
||||||
|
m_horizontalMapping: 0
|
||||||
|
m_verticalMapping: 0
|
||||||
|
m_uvLineOffset: 0
|
||||||
|
m_geometrySortingOrder: 0
|
||||||
|
m_IsTextObjectScaleStatic: 0
|
||||||
|
m_VertexBufferAutoSizeReduction: 0
|
||||||
|
m_useMaxVisibleDescender: 1
|
||||||
|
m_pageToDisplay: 1
|
||||||
|
m_margin: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_isUsingLegacyAnimationComponent: 0
|
||||||
|
m_isVolumetricText: 0
|
||||||
|
m_hasFontAssetChanged: 0
|
||||||
|
m_baseMaterial: {fileID: 0}
|
||||||
|
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 3532de14aa3d944789e9dd237f4946eb
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1ceca557817634736a573c095f2b2e4d
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 319b3274983304476b141f3a80b70d47
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 5589e92101a854ecb9aad2815097817d
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: fa61da735eed248d49bb5817ed91f20a
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ecb6ee7528fc3420481cfda349e87f7c
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 41b94a664ddfe2648b03f82112d7422e
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b4b96a1e703bb41c8b887f1e16913fe8
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c83657a7decbe45c18fe6bdf9daa370c
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1be9216cab2ec4a72a45f0a2957dd188
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2a3e2fd96e9ed4aa698a7ea5ab9dfa00
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 863b5a8f4ace14ed7bea67941e0e0463
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 6750c470d4f8a4e1b8ff2c4d059e28c4
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: cd54ba8d589f74f35a94243a49c7eb94
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,138 @@
|
||||||
|
|
||||||
|
using UnityEngine;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
using System.Globalization;
|
||||||
|
using TMPro;
|
||||||
|
|
||||||
|
public delegate void OnPointerEnter(CalenderButton button, Calender calender);
|
||||||
|
public delegate void OnPointerDown(CalenderButton button, DateTime calenderDate, Calender calender);
|
||||||
|
public delegate void OnPointerExit(CalenderButton button, Calender calender);
|
||||||
|
/// <summary>
|
||||||
|
/// Called when setup was called() and is in the process of updating/iterating over each button state, good for highlighting selected dates
|
||||||
|
/// of a calender button - Setup is generally called when a calender has changed month or year and needs to be refreshed,
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="calenderButton"></param>
|
||||||
|
/// <param name="calenderButton"></param>
|
||||||
|
public delegate void OnCalenderRefreshed(DateTime calenderDate, CalenderButton calenderButton, DateTime buttonDate);
|
||||||
|
|
||||||
|
public class Calender : MonoBehaviour
|
||||||
|
{
|
||||||
|
public DateTime Date;
|
||||||
|
private DayOfWeek m_FirstDayOfWeek;
|
||||||
|
|
||||||
|
[Header("References")]
|
||||||
|
public List<CalenderButton> CalenderButtons;
|
||||||
|
[SerializeField] TextMeshProUGUI m_DateLabel;
|
||||||
|
[SerializeField] List<TextMeshProUGUI> m_DaysOfWeekLabels;
|
||||||
|
private bool m_ShowDatesInOtherMonths = false;
|
||||||
|
|
||||||
|
public OnPointerEnter PointerEnter;
|
||||||
|
public OnPointerDown PointerDown;
|
||||||
|
public OnPointerExit PointerExit;
|
||||||
|
public OnCalenderRefreshed CalenderRefreshed;
|
||||||
|
|
||||||
|
public void Setup(int year, int month, DayOfWeek firstDayOfWeek, bool showDaysInOtherMonths, DateTime? startDate, DateTime? endDate, UITweenManager uiTweenManager)
|
||||||
|
{
|
||||||
|
Date = new DateTime(year, month, 1);
|
||||||
|
m_FirstDayOfWeek = firstDayOfWeek;
|
||||||
|
m_ShowDatesInOtherMonths = showDaysInOtherMonths;
|
||||||
|
|
||||||
|
// Time to setup all the buttons! :)
|
||||||
|
// create current month starting from 1
|
||||||
|
DateTime currentDate;
|
||||||
|
currentDate = (DateTime)StartDate();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// update main date heading
|
||||||
|
string monthHeading = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(Date.Month);
|
||||||
|
m_DateLabel.text = monthHeading.ToUpper() + " " + Date.Year;
|
||||||
|
|
||||||
|
//used for mon-sun labels
|
||||||
|
int startingIndex = (int)m_FirstDayOfWeek;
|
||||||
|
|
||||||
|
for (int i = 0; i < 42; i++)
|
||||||
|
{
|
||||||
|
|
||||||
|
// update days of weeks labels
|
||||||
|
if (i < 7)
|
||||||
|
{
|
||||||
|
m_DaysOfWeekLabels[i].text = ((DayOfWeek)startingIndex).ToString().Remove(1).ToUpper();
|
||||||
|
|
||||||
|
startingIndex++;
|
||||||
|
|
||||||
|
if (startingIndex > 6)
|
||||||
|
startingIndex = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// update buttons
|
||||||
|
|
||||||
|
CalenderButtons[i].Setup(this, currentDate, currentDate.Day.ToString(), m_ShowDatesInOtherMonths, uiTweenManager);
|
||||||
|
|
||||||
|
if(CalenderRefreshed != null)
|
||||||
|
{
|
||||||
|
CalenderRefreshed(Date, CalenderButtons[i], currentDate);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
currentDate = currentDate.AddDays(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private bool DateIsInCalenderMonth(DateTime chosenDate, DateTime calenderDate)
|
||||||
|
{
|
||||||
|
if (calenderDate.Month == chosenDate.Month)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DateTime? StartDate()
|
||||||
|
{
|
||||||
|
DateTime currentDate = new DateTime(Date.Year, Date.Month, 1);
|
||||||
|
|
||||||
|
DayOfWeek firstDayOfMonth = currentDate.DayOfWeek;
|
||||||
|
|
||||||
|
|
||||||
|
if (firstDayOfMonth < m_FirstDayOfWeek)
|
||||||
|
{
|
||||||
|
|
||||||
|
// start current date based upon start day of week
|
||||||
|
// this is used to show previous dates before
|
||||||
|
int dayIndex = (int)m_FirstDayOfWeek;
|
||||||
|
int daysBehind = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < 6; i++)
|
||||||
|
{
|
||||||
|
dayIndex++;
|
||||||
|
daysBehind++;
|
||||||
|
|
||||||
|
if (dayIndex > 6)
|
||||||
|
{
|
||||||
|
dayIndex = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dayIndex == (int)firstDayOfMonth)
|
||||||
|
{
|
||||||
|
return currentDate = currentDate.AddDays(-daysBehind);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// start current date based upon start day of week
|
||||||
|
return currentDate = currentDate.AddDays(-(firstDayOfMonth - m_FirstDayOfWeek));
|
||||||
|
}
|
||||||
|
|
||||||
|
Debug.LogError("Something went wrong, should not be getting here.");
|
||||||
|
return null;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ba1ca574d789a4a45b9b23aac9378972
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,116 @@
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using TMPro;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.EventSystems;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
|
||||||
|
public class CalenderButton : MonoBehaviour, IPointerEnterHandler, IPointerDownHandler, IPointerExitHandler
|
||||||
|
{
|
||||||
|
public enum State
|
||||||
|
{
|
||||||
|
Normal,
|
||||||
|
Hover,
|
||||||
|
Selected,
|
||||||
|
Highlighted,
|
||||||
|
Disabled,
|
||||||
|
}
|
||||||
|
|
||||||
|
[SerializeField] TextMeshProUGUI m_ButtonText;
|
||||||
|
|
||||||
|
private Dictionary<State, DisplayState> m_DisplayDictionary;
|
||||||
|
[SerializeField] Image m_ButtonPrimaryImage;
|
||||||
|
[SerializeField] Image m_ButtonSecondaryImage;
|
||||||
|
[SerializeField] DisplayState m_NormalState;
|
||||||
|
[SerializeField] DisplayState m_SelectedState;
|
||||||
|
[SerializeField] DisplayState m_HoverState;
|
||||||
|
[SerializeField] DisplayState m_HighlightedState;
|
||||||
|
[SerializeField] DisplayState m_DisabledState;
|
||||||
|
|
||||||
|
public State CurrentState { get; private set; }
|
||||||
|
|
||||||
|
private Calender m_Calender;
|
||||||
|
public DateTime Date { get; private set; }
|
||||||
|
|
||||||
|
private bool m_ShowDaysInOtherMonths;
|
||||||
|
|
||||||
|
public void Setup(Calender calender, DateTime buttonDate, string text, bool showDaysInOtherMonths, UITweenManager uiTweenManager)
|
||||||
|
{
|
||||||
|
if (m_ButtonText == null)
|
||||||
|
{
|
||||||
|
m_ButtonText = transform.Find("Text").GetComponent<TextMeshProUGUI>();
|
||||||
|
}
|
||||||
|
m_DisplayDictionary = new Dictionary<State, DisplayState>();
|
||||||
|
m_Calender = calender;
|
||||||
|
Date = buttonDate;
|
||||||
|
m_ButtonText.text = text;
|
||||||
|
m_ShowDaysInOtherMonths = showDaysInOtherMonths;
|
||||||
|
|
||||||
|
m_DisplayDictionary.Add(State.Normal, m_NormalState);
|
||||||
|
m_DisplayDictionary.Add(State.Hover, m_HoverState);
|
||||||
|
m_DisplayDictionary.Add(State.Selected, m_SelectedState);
|
||||||
|
|
||||||
|
if(m_HighlightedState != null)
|
||||||
|
{
|
||||||
|
m_DisplayDictionary.Add(State.Highlighted, m_HighlightedState);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.Log("WARNING there's not highlight script defined, if this is the case, no highlight will be shown");
|
||||||
|
}
|
||||||
|
|
||||||
|
m_DisplayDictionary.Add(State.Disabled, m_DisabledState);
|
||||||
|
|
||||||
|
foreach(KeyValuePair<State, DisplayState> displayState in m_DisplayDictionary)
|
||||||
|
{
|
||||||
|
displayState.Value.Setup(m_ButtonPrimaryImage, m_ButtonSecondaryImage, m_ButtonText, uiTweenManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!m_ShowDaysInOtherMonths && buttonDate.Month != calender.Date.Month)
|
||||||
|
{
|
||||||
|
UpdateState(State.Disabled, m_Calender.Date, null, null);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Force normal display script to trigger
|
||||||
|
UpdateState(State.Normal, m_Calender.Date, null, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ResetToOriginal()
|
||||||
|
{
|
||||||
|
if (!m_ShowDaysInOtherMonths && Date.Month != m_Calender.Date.Month)
|
||||||
|
{
|
||||||
|
UpdateState(State.Disabled, m_Calender.Date, null, null);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Force normal display script to trigger
|
||||||
|
UpdateState(State.Normal, m_Calender.Date, null, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void OnPointerEnter(PointerEventData eventData)
|
||||||
|
{
|
||||||
|
if (CurrentState != State.Disabled && m_Calender.PointerEnter != null )
|
||||||
|
m_Calender.PointerEnter(this, m_Calender);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnPointerDown(PointerEventData eventData)
|
||||||
|
{
|
||||||
|
if(CurrentState != State.Disabled && m_Calender.PointerDown != null)
|
||||||
|
m_Calender.PointerDown(this, Date, m_Calender);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnPointerExit(PointerEventData eventData)
|
||||||
|
{
|
||||||
|
if (CurrentState != State.Disabled && m_Calender.PointerExit != null)
|
||||||
|
m_Calender.PointerExit(this, m_Calender);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void UpdateState(State newState, DateTime? calenderDate, DateTime? selectedStartDate, DateTime? selectedEndDate)
|
||||||
|
{
|
||||||
|
CurrentState = newState;
|
||||||
|
m_DisplayDictionary[newState].UpdateState(Date, calenderDate, selectedStartDate, selectedEndDate);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 6367b2a9e388249eaa7ad70209051527
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,12 @@
|
||||||
|
using UnityEngine;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
public class DateRangePicker : MonoBehaviour
|
||||||
|
{
|
||||||
|
public delegate void CalenderUpdate(DateTime? selectedStartDate, DateTime? selectedEndDate);
|
||||||
|
public CalenderUpdate CalendersUpdated;
|
||||||
|
|
||||||
|
public virtual void Setup()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7fa390d6e188c43f2a8261443828eb41
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,48 @@
|
||||||
|
using System;
|
||||||
|
using TMPro;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
|
||||||
|
public class DateText : MonoBehaviour
|
||||||
|
{
|
||||||
|
[SerializeField] DateRangePicker m_DatePicker;
|
||||||
|
[SerializeField] TextMeshProUGUI m_DateText;
|
||||||
|
[SerializeField] TextMeshProUGUI m_TimeText;
|
||||||
|
bool first = true;
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
m_DatePicker.CalendersUpdated += CalenderUpdated;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void CalenderUpdated(DateTime? selectedStartDate, DateTime? selectedEndDate)
|
||||||
|
{
|
||||||
|
string text = "";
|
||||||
|
|
||||||
|
//if (selectedStartDate != null)
|
||||||
|
//{
|
||||||
|
// text += selectedStartDate.Value.ToShortDateString();
|
||||||
|
//}
|
||||||
|
|
||||||
|
//if (selectedEndDate != null)
|
||||||
|
//{
|
||||||
|
// text += " - " + selectedEndDate.Value.ToShortDateString();
|
||||||
|
//}
|
||||||
|
|
||||||
|
if (selectedStartDate != null)
|
||||||
|
{
|
||||||
|
text += selectedStartDate.Value.ToString("yyyy-MM-dd");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (selectedEndDate != null)
|
||||||
|
{
|
||||||
|
text += " - " + selectedEndDate.Value.ToString("yyyy-MM-dd");
|
||||||
|
}
|
||||||
|
|
||||||
|
m_DateText.text = text;
|
||||||
|
|
||||||
|
if (first)
|
||||||
|
{
|
||||||
|
m_TimeText.text = "00:00:00";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4f2ba0573c8c248e8bdd84ad35bd9466
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,69 @@
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Used to spawn calender buttons, which is generally used for styling, ideally should be doing this to prefabs that have been unpacked.
|
||||||
|
/// </summary>
|
||||||
|
[ExecuteInEditMode]
|
||||||
|
public class SpawnCalenderButtons : MonoBehaviour
|
||||||
|
{
|
||||||
|
[SerializeField] DateRangePicker m_DateRangePicker;
|
||||||
|
|
||||||
|
[SerializeField] CalenderButton m_CalenderButtonPrefab;
|
||||||
|
[SerializeField] List<CalenderData> m_Calenders;
|
||||||
|
[SerializeField] bool m_Spawn = false;
|
||||||
|
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
if(m_Spawn)
|
||||||
|
{
|
||||||
|
m_Spawn = false;
|
||||||
|
|
||||||
|
Spawn_CalenderButtons();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Spawn_CalenderButtons()
|
||||||
|
{
|
||||||
|
int currentRow = 0;
|
||||||
|
|
||||||
|
|
||||||
|
for (int i = 0; i < m_Calenders.Count; i++)
|
||||||
|
{
|
||||||
|
m_Calenders[i].Calender.CalenderButtons = new List<CalenderButton>();
|
||||||
|
|
||||||
|
if (m_Calenders[i] != null)
|
||||||
|
{
|
||||||
|
for (int j = 0; j < 42; j++)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (j % 7 == 0)
|
||||||
|
{
|
||||||
|
currentRow = j / 7;
|
||||||
|
|
||||||
|
// want to remove any buttons that exist
|
||||||
|
CalenderButton[] btns = m_Calenders[i].Rows[currentRow].GetComponentsInChildren<CalenderButton>();
|
||||||
|
|
||||||
|
for (int fw = 0; fw < btns.Length; fw++)
|
||||||
|
DestroyImmediate(btns[fw].gameObject);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
GameObject btnObj = Instantiate(m_CalenderButtonPrefab.gameObject, m_Calenders[i].Rows[currentRow].transform, false);
|
||||||
|
m_Calenders[i].Calender.CalenderButtons.Add(btnObj.GetComponent<CalenderButton>());
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
m_DateRangePicker.Setup();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[System.Serializable]
|
||||||
|
public class CalenderData
|
||||||
|
{
|
||||||
|
public Calender Calender;
|
||||||
|
public Transform[] Rows;
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f9257739379f54a479dda5de9a3c4438
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 474639de43941457e9641fbf836d902b
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,240 @@
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
public class Dual_DateRangePicker : DateRangePicker
|
||||||
|
{
|
||||||
|
// FW == First Window Calender
|
||||||
|
// SW == Second Window Calender
|
||||||
|
[SerializeField] DayOfWeek m_FirstDayOfWeek = DayOfWeek.Monday;
|
||||||
|
[SerializeField] bool m_ShowDaysInOtherMonths = false;
|
||||||
|
[SerializeField] bool m_CloseOnLastSelection = false;
|
||||||
|
[SerializeField] Calender FW_Calender;
|
||||||
|
[SerializeField] Calender SW_Calender;
|
||||||
|
[SerializeField] UITweenManager UITweenManager;
|
||||||
|
|
||||||
|
private DateTime? m_StartDate;
|
||||||
|
private CalenderButton m_StartDate_SelectedBTN;
|
||||||
|
private DateTime? m_EndDate;
|
||||||
|
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
Setup();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Setup()
|
||||||
|
{
|
||||||
|
FW_Calender.Date = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
|
||||||
|
SW_Calender.Date = FW_Calender.Date.AddMonths(1);
|
||||||
|
|
||||||
|
FW_Calender.PointerEnter += OnPointerEnter;
|
||||||
|
FW_Calender.PointerDown += OnPointerDown;
|
||||||
|
FW_Calender.PointerExit += OnPointerExit;
|
||||||
|
|
||||||
|
SW_Calender.PointerEnter += OnPointerEnter;
|
||||||
|
SW_Calender.PointerDown += OnPointerDown;
|
||||||
|
SW_Calender.PointerExit += OnPointerExit;
|
||||||
|
|
||||||
|
FW_Calender.CalenderRefreshed += OnCalenderRefreshed;
|
||||||
|
SW_Calender.CalenderRefreshed += OnCalenderRefreshed;
|
||||||
|
|
||||||
|
FW_Calender.Setup(DateTime.Now.Year, DateTime.Now.Month, m_FirstDayOfWeek, m_ShowDaysInOtherMonths, m_StartDate, m_EndDate, UITweenManager);
|
||||||
|
SW_Calender.Setup(DateTime.Now.Year, DateTime.Now.AddMonths(1).Month, m_FirstDayOfWeek, m_ShowDaysInOtherMonths, m_StartDate, m_EndDate, UITweenManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnPointerEnter(CalenderButton chosenCalenderButton, Calender calender)
|
||||||
|
{
|
||||||
|
if (chosenCalenderButton.CurrentState == CalenderButton.State.Normal && m_EndDate == null && DateIsInCalenderMonth(chosenCalenderButton.Date, calender.Date))
|
||||||
|
{
|
||||||
|
chosenCalenderButton.UpdateState(CalenderButton.State.Hover, calender.Date, m_StartDate, m_EndDate);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnPointerDown(CalenderButton chosenCalenderButton, DateTime chosenDate, Calender calender)
|
||||||
|
{
|
||||||
|
// clears selection
|
||||||
|
if (m_StartDate != null && m_EndDate != null)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < 42; i++)
|
||||||
|
{
|
||||||
|
FW_Calender.CalenderButtons[i].ResetToOriginal();
|
||||||
|
SW_Calender.CalenderButtons[i].ResetToOriginal();
|
||||||
|
}
|
||||||
|
|
||||||
|
m_StartDate = null;
|
||||||
|
m_EndDate = null;
|
||||||
|
|
||||||
|
// don't return on this one
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_StartDate == null && m_EndDate == null)
|
||||||
|
{
|
||||||
|
if (chosenCalenderButton.CurrentState != CalenderButton.State.Disabled)
|
||||||
|
{
|
||||||
|
m_StartDate = chosenDate;
|
||||||
|
m_StartDate_SelectedBTN = chosenCalenderButton;
|
||||||
|
|
||||||
|
CalendersUpdated?.Invoke(m_StartDate, m_EndDate);
|
||||||
|
chosenCalenderButton.UpdateState(CalenderButton.State.Selected, chosenDate, m_StartDate, m_EndDate);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// revert, if second date is selected is less that the first chosen ddate
|
||||||
|
if (m_StartDate != null && chosenDate <= m_StartDate && m_EndDate == null)
|
||||||
|
{
|
||||||
|
if (chosenCalenderButton.CurrentState != CalenderButton.State.Disabled)
|
||||||
|
{
|
||||||
|
// revert previous selected start date
|
||||||
|
m_StartDate_SelectedBTN.ResetToOriginal();
|
||||||
|
|
||||||
|
m_StartDate = chosenDate;
|
||||||
|
m_StartDate_SelectedBTN = chosenCalenderButton;
|
||||||
|
|
||||||
|
CalendersUpdated?.Invoke(m_StartDate, m_EndDate);
|
||||||
|
chosenCalenderButton.UpdateState(CalenderButton.State.Selected, chosenDate, m_StartDate, m_EndDate);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_StartDate != null && m_EndDate == null)
|
||||||
|
{
|
||||||
|
m_EndDate = chosenDate;
|
||||||
|
|
||||||
|
// select end button
|
||||||
|
chosenCalenderButton.UpdateState(CalenderButton.State.Selected, chosenDate, m_StartDate, m_EndDate);
|
||||||
|
|
||||||
|
DateTime date = m_StartDate.Value;
|
||||||
|
|
||||||
|
for (int i = 0; i < (m_EndDate - m_StartDate).Value.TotalDays + 1; i++)
|
||||||
|
{
|
||||||
|
|
||||||
|
CalenderButton fw_CalenderBTN = null;
|
||||||
|
CalenderButton sw_CalenderBTN = null;
|
||||||
|
|
||||||
|
fw_CalenderBTN = FW_Calender.CalenderButtons.Where(x => x.Date == date && x.CurrentState != CalenderButton.State.Disabled).FirstOrDefault();
|
||||||
|
sw_CalenderBTN = SW_Calender.CalenderButtons.Where(x => x.Date == date && x.CurrentState != CalenderButton.State.Disabled).FirstOrDefault();
|
||||||
|
|
||||||
|
if (fw_CalenderBTN != null && DateIsInCalenderMonth(date, FW_Calender.Date))
|
||||||
|
{
|
||||||
|
fw_CalenderBTN.UpdateState(CalenderButton.State.Highlighted, date, m_StartDate, m_EndDate);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sw_CalenderBTN != null && DateIsInCalenderMonth(date, SW_Calender.Date))
|
||||||
|
{
|
||||||
|
sw_CalenderBTN.UpdateState(CalenderButton.State.Highlighted, date, m_StartDate, m_EndDate);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
date = date.AddDays(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
CalendersUpdated?.Invoke(m_StartDate, m_EndDate);
|
||||||
|
|
||||||
|
if(m_CloseOnLastSelection)
|
||||||
|
{
|
||||||
|
FW_Calender.gameObject.SetActive(false);
|
||||||
|
SW_Calender.gameObject.SetActive(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnCalenderRefreshed(DateTime calenderDate, CalenderButton calenderButton, DateTime buttonDate)
|
||||||
|
{
|
||||||
|
if (DateIsInCalenderMonth(calenderDate, buttonDate))
|
||||||
|
{
|
||||||
|
// single selection
|
||||||
|
if (m_StartDate != null && m_StartDate == buttonDate && m_EndDate == null)
|
||||||
|
{
|
||||||
|
calenderButton.UpdateState(CalenderButton.State.Selected, buttonDate, m_StartDate, m_EndDate);
|
||||||
|
}
|
||||||
|
// single selection but we also need to show highlight
|
||||||
|
else if (m_StartDate != null && m_StartDate == buttonDate)
|
||||||
|
{
|
||||||
|
calenderButton.UpdateState(CalenderButton.State.Selected, buttonDate, m_StartDate, m_EndDate);
|
||||||
|
calenderButton.UpdateState(CalenderButton.State.Highlighted, buttonDate, m_StartDate, m_EndDate);
|
||||||
|
}
|
||||||
|
// single 'end' selection
|
||||||
|
else if (m_EndDate != null && m_EndDate == buttonDate && m_StartDate != null)
|
||||||
|
{
|
||||||
|
calenderButton.UpdateState(CalenderButton.State.Selected, buttonDate, m_StartDate, m_EndDate);
|
||||||
|
calenderButton.UpdateState(CalenderButton.State.Highlighted, buttonDate, m_StartDate, m_EndDate);
|
||||||
|
}
|
||||||
|
else if (m_EndDate != null && m_EndDate == buttonDate)
|
||||||
|
{
|
||||||
|
calenderButton.UpdateState(CalenderButton.State.Selected, buttonDate, m_StartDate, m_EndDate);
|
||||||
|
}
|
||||||
|
else if (m_StartDate != null && m_EndDate != null && buttonDate >= m_StartDate && buttonDate <= m_EndDate)
|
||||||
|
{
|
||||||
|
calenderButton.UpdateState(CalenderButton.State.Highlighted, buttonDate, m_StartDate, m_EndDate);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool DateIsInCalenderMonth(DateTime chosenDate, DateTime calenderDate)
|
||||||
|
{
|
||||||
|
if(calenderDate.Month == chosenDate.Month)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void OnPointerExit(CalenderButton chosenCalenderButton, Calender calender)
|
||||||
|
{
|
||||||
|
if (chosenCalenderButton.CurrentState == CalenderButton.State.Hover)
|
||||||
|
{
|
||||||
|
if (chosenCalenderButton.CurrentState != CalenderButton.State.Disabled)
|
||||||
|
chosenCalenderButton.UpdateState(CalenderButton.State.Normal, calender.Date, m_StartDate, m_EndDate);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnClick_NextCalenderMonth()
|
||||||
|
{
|
||||||
|
FW_Calender.Date = FW_Calender.Date.AddMonths(1);
|
||||||
|
SW_Calender.Date = SW_Calender.Date.AddMonths(1);
|
||||||
|
|
||||||
|
FW_Calender.Setup(FW_Calender.Date.Year, FW_Calender.Date.Month, m_FirstDayOfWeek, m_ShowDaysInOtherMonths, m_StartDate, m_EndDate, UITweenManager);
|
||||||
|
SW_Calender.Setup(SW_Calender.Date.Year, SW_Calender.Date.Month, m_FirstDayOfWeek, m_ShowDaysInOtherMonths, m_StartDate, m_EndDate, UITweenManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnClick_NextCalenderYear()
|
||||||
|
{
|
||||||
|
FW_Calender.Date = FW_Calender.Date.AddYears(1);
|
||||||
|
SW_Calender.Date = SW_Calender.Date.AddYears(1);
|
||||||
|
|
||||||
|
FW_Calender.Setup(FW_Calender.Date.Year, FW_Calender.Date.Month, m_FirstDayOfWeek, m_ShowDaysInOtherMonths, m_StartDate, m_EndDate, UITweenManager);
|
||||||
|
SW_Calender.Setup(SW_Calender.Date.Year, SW_Calender.Date.Month, m_FirstDayOfWeek, m_ShowDaysInOtherMonths, m_StartDate, m_EndDate, UITweenManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnClick_PreviousCalenderMonth()
|
||||||
|
{
|
||||||
|
FW_Calender.Date = FW_Calender.Date.AddMonths(-1);
|
||||||
|
SW_Calender.Date = SW_Calender.Date.AddMonths(-1);
|
||||||
|
|
||||||
|
FW_Calender.Setup(FW_Calender.Date.Year, FW_Calender.Date.Month, m_FirstDayOfWeek, m_ShowDaysInOtherMonths, m_StartDate, m_EndDate, UITweenManager);
|
||||||
|
SW_Calender.Setup(SW_Calender.Date.Year, SW_Calender.Date.Month, m_FirstDayOfWeek, m_ShowDaysInOtherMonths, m_StartDate, m_EndDate, UITweenManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnClick_PreviousCalenderYear()
|
||||||
|
{
|
||||||
|
FW_Calender.Date = FW_Calender.Date.AddYears(-1);
|
||||||
|
SW_Calender.Date = SW_Calender.Date.AddYears(-1);
|
||||||
|
|
||||||
|
FW_Calender.Setup(FW_Calender.Date.Year, FW_Calender.Date.Month, m_FirstDayOfWeek, m_ShowDaysInOtherMonths, m_StartDate, m_EndDate, UITweenManager);
|
||||||
|
SW_Calender.Setup(SW_Calender.Date.Year, SW_Calender.Date.Month, m_FirstDayOfWeek, m_ShowDaysInOtherMonths, m_StartDate, m_EndDate, UITweenManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnClick_ToggleCalenders()
|
||||||
|
{
|
||||||
|
FW_Calender.gameObject.SetActive(!FW_Calender.gameObject.activeInHierarchy);
|
||||||
|
SW_Calender.gameObject.SetActive(!SW_Calender.gameObject.activeInHierarchy);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 20abaff1cf16c492491a5ed49e3c0efc
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,239 @@
|
||||||
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public enum PickType
|
||||||
|
{
|
||||||
|
ONE_DAY,
|
||||||
|
TWO_DAY,
|
||||||
|
}
|
||||||
|
public class Single_DateRangePicker : DateRangePicker
|
||||||
|
{
|
||||||
|
[SerializeField] PickType m_PickType = PickType.ONE_DAY;
|
||||||
|
[SerializeField] DayOfWeek m_FirstDayOfWeek = DayOfWeek.Monday;
|
||||||
|
|
||||||
|
[SerializeField] UITweenManager UITweenManager;
|
||||||
|
[SerializeField] bool m_ShowDaysInOtherMonths = false;
|
||||||
|
[SerializeField] bool m_CloseOnLastSelection = false;
|
||||||
|
|
||||||
|
[SerializeField] Calender m_Calender;
|
||||||
|
|
||||||
|
private DateTime? m_StartDate;
|
||||||
|
private CalenderButton m_StartDate_SelectedBTN;
|
||||||
|
private DateTime? m_EndDate;
|
||||||
|
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
Setup();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Setup()
|
||||||
|
{
|
||||||
|
m_Calender.PointerEnter = OnPointerEnter;
|
||||||
|
m_Calender.PointerDown = OnPointerDown;
|
||||||
|
m_Calender.PointerExit = OnPointerExit;
|
||||||
|
m_Calender.CalenderRefreshed = OnCalenderRefreshed;
|
||||||
|
m_Calender.Setup(DateTime.Now.Year, DateTime.Now.Month, m_FirstDayOfWeek, m_ShowDaysInOtherMonths, m_StartDate, m_EndDate, UITweenManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnPointerEnter(CalenderButton chosenCalenderButton, Calender calender)
|
||||||
|
{
|
||||||
|
if (chosenCalenderButton.CurrentState == CalenderButton.State.Normal && m_EndDate == null)
|
||||||
|
{
|
||||||
|
chosenCalenderButton.UpdateState(CalenderButton.State.Hover, calender.Date, m_StartDate, m_EndDate);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnPointerDown(CalenderButton chosenCalenderButton, DateTime chosenDate, Calender calender)
|
||||||
|
{
|
||||||
|
switch (m_PickType)
|
||||||
|
{
|
||||||
|
case PickType.ONE_DAY:
|
||||||
|
if (m_StartDate != null)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < 42; i++)
|
||||||
|
m_Calender.CalenderButtons[i].ResetToOriginal();
|
||||||
|
|
||||||
|
m_StartDate = null;
|
||||||
|
|
||||||
|
// don't return on this one
|
||||||
|
}
|
||||||
|
m_StartDate_SelectedBTN = chosenCalenderButton;
|
||||||
|
m_StartDate_SelectedBTN.ResetToOriginal();
|
||||||
|
|
||||||
|
m_StartDate = chosenDate;
|
||||||
|
//m_StartDate_SelectedBTN = chosenCalenderButton;
|
||||||
|
|
||||||
|
CalendersUpdated?.Invoke(m_StartDate, m_EndDate);
|
||||||
|
chosenCalenderButton.UpdateState(CalenderButton.State.Selected, chosenDate, m_StartDate, m_EndDate);
|
||||||
|
|
||||||
|
|
||||||
|
break;
|
||||||
|
case PickType.TWO_DAY:
|
||||||
|
// clears selection
|
||||||
|
if (m_StartDate != null && m_EndDate != null)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < 42; i++)
|
||||||
|
m_Calender.CalenderButtons[i].ResetToOriginal();
|
||||||
|
|
||||||
|
m_StartDate = null;
|
||||||
|
m_EndDate = null;
|
||||||
|
|
||||||
|
// don't return on this one
|
||||||
|
}
|
||||||
|
|
||||||
|
// intiate first click
|
||||||
|
if (m_StartDate == null && m_EndDate == null)
|
||||||
|
{
|
||||||
|
if (chosenCalenderButton.CurrentState != CalenderButton.State.Disabled)
|
||||||
|
{
|
||||||
|
m_StartDate = chosenDate;
|
||||||
|
m_StartDate_SelectedBTN = chosenCalenderButton;
|
||||||
|
|
||||||
|
CalendersUpdated?.Invoke(m_StartDate, m_EndDate);
|
||||||
|
chosenCalenderButton.UpdateState(CalenderButton.State.Selected, chosenDate, m_StartDate, m_EndDate);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_StartDate != null && chosenDate <= m_StartDate && m_EndDate == null)
|
||||||
|
{
|
||||||
|
if (chosenCalenderButton.CurrentState != CalenderButton.State.Disabled)
|
||||||
|
{
|
||||||
|
// revert previous selected start date
|
||||||
|
m_StartDate_SelectedBTN.ResetToOriginal();
|
||||||
|
|
||||||
|
m_StartDate = chosenDate;
|
||||||
|
m_StartDate_SelectedBTN = chosenCalenderButton;
|
||||||
|
|
||||||
|
CalendersUpdated?.Invoke(m_StartDate, m_EndDate);
|
||||||
|
chosenCalenderButton.UpdateState(CalenderButton.State.Selected, chosenDate, m_StartDate, m_EndDate);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// initiate second click
|
||||||
|
if (m_StartDate != null && m_EndDate == null)
|
||||||
|
{
|
||||||
|
m_EndDate = chosenDate;
|
||||||
|
|
||||||
|
// select end button
|
||||||
|
chosenCalenderButton.UpdateState(CalenderButton.State.Selected, chosenDate, m_StartDate, m_EndDate);
|
||||||
|
|
||||||
|
DateTime date = m_StartDate.Value;
|
||||||
|
|
||||||
|
for (int i = 0; i < (m_EndDate - m_StartDate).Value.TotalDays + 1; i++)
|
||||||
|
{
|
||||||
|
|
||||||
|
CalenderButton calenderButton;
|
||||||
|
|
||||||
|
calenderButton = m_Calender.CalenderButtons.Where(x => x.Date == date && x.CurrentState != CalenderButton.State.Disabled).FirstOrDefault();
|
||||||
|
|
||||||
|
|
||||||
|
if (calenderButton != null)
|
||||||
|
{
|
||||||
|
calenderButton.UpdateState(CalenderButton.State.Highlighted, date, m_StartDate, m_EndDate);
|
||||||
|
}
|
||||||
|
|
||||||
|
date = date.AddDays(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
CalendersUpdated?.Invoke(m_StartDate, m_EndDate);
|
||||||
|
|
||||||
|
if (m_CloseOnLastSelection)
|
||||||
|
{
|
||||||
|
m_Calender.gameObject.SetActive(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Generally called when the next month is shown on a calender
|
||||||
|
/// </summary>
|
||||||
|
public void OnCalenderRefreshed(DateTime calenderDate, CalenderButton calenderButton, DateTime buttonDate)
|
||||||
|
{
|
||||||
|
// single selection
|
||||||
|
if (m_StartDate != null && m_StartDate == buttonDate && m_EndDate == null)
|
||||||
|
{
|
||||||
|
calenderButton.UpdateState(CalenderButton.State.Selected, buttonDate, m_StartDate, m_EndDate);
|
||||||
|
}
|
||||||
|
// single selection but we also need to show highlight
|
||||||
|
else if (m_StartDate != null && m_StartDate == buttonDate)
|
||||||
|
{
|
||||||
|
calenderButton.UpdateState(CalenderButton.State.Selected, buttonDate, m_StartDate, m_EndDate);
|
||||||
|
calenderButton.UpdateState(CalenderButton.State.Highlighted, buttonDate, m_StartDate, m_EndDate);
|
||||||
|
}
|
||||||
|
// single 'end' selection
|
||||||
|
else if (m_EndDate != null && m_EndDate == buttonDate && m_StartDate != null)
|
||||||
|
{
|
||||||
|
calenderButton.UpdateState(CalenderButton.State.Selected, buttonDate, m_StartDate, m_EndDate);
|
||||||
|
calenderButton.UpdateState(CalenderButton.State.Highlighted, buttonDate, m_StartDate, m_EndDate);
|
||||||
|
}
|
||||||
|
else if (m_EndDate != null && m_EndDate == buttonDate)
|
||||||
|
{
|
||||||
|
calenderButton.UpdateState(CalenderButton.State.Selected, buttonDate, m_StartDate, m_EndDate);
|
||||||
|
}
|
||||||
|
else if (m_StartDate != null && m_EndDate != null && buttonDate >= m_StartDate && buttonDate <= m_EndDate)
|
||||||
|
{
|
||||||
|
calenderButton.UpdateState(CalenderButton.State.Highlighted, buttonDate, m_StartDate, m_EndDate);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnPointerExit(CalenderButton chosenCalenderButton, Calender calender)
|
||||||
|
{
|
||||||
|
if (chosenCalenderButton.CurrentState == CalenderButton.State.Hover)
|
||||||
|
{
|
||||||
|
if (chosenCalenderButton.CurrentState != CalenderButton.State.Disabled)
|
||||||
|
chosenCalenderButton.UpdateState(CalenderButton.State.Normal, calender.Date, m_StartDate, m_EndDate);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool DateIsInCalenderMonth(DateTime chosenDate, DateTime calenderDate)
|
||||||
|
{
|
||||||
|
if (calenderDate.Month == chosenDate.Month)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnClick_NextCalenderMonth()
|
||||||
|
{
|
||||||
|
m_Calender.Date = m_Calender.Date.AddMonths(1);
|
||||||
|
|
||||||
|
m_Calender.Setup(m_Calender.Date.Year, m_Calender.Date.Month, m_FirstDayOfWeek, m_ShowDaysInOtherMonths, m_StartDate, m_EndDate, UITweenManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnClick_NextCalenderYear()
|
||||||
|
{
|
||||||
|
m_Calender.Date = m_Calender.Date.AddYears(1);
|
||||||
|
|
||||||
|
m_Calender.Setup(m_Calender.Date.Year, m_Calender.Date.Month, m_FirstDayOfWeek, m_ShowDaysInOtherMonths, m_StartDate, m_EndDate, UITweenManager);
|
||||||
|
m_Calender.Setup(m_Calender.Date.Year, m_Calender.Date.Month, m_FirstDayOfWeek, m_ShowDaysInOtherMonths, m_StartDate, m_EndDate, UITweenManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnClick_PreviousCalenderMonth()
|
||||||
|
{
|
||||||
|
m_Calender.Date = m_Calender.Date.AddMonths(-1);
|
||||||
|
m_Calender.Setup(m_Calender.Date.Year, m_Calender.Date.Month, m_FirstDayOfWeek, m_ShowDaysInOtherMonths, m_StartDate, m_EndDate, UITweenManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnClick_PreviousCalenderYear()
|
||||||
|
{
|
||||||
|
m_Calender.Date = m_Calender.Date.AddYears(-1);
|
||||||
|
m_Calender.Setup(m_Calender.Date.Year, m_Calender.Date.Month, m_FirstDayOfWeek, m_ShowDaysInOtherMonths, m_StartDate, m_EndDate, UITweenManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnClick_ToggleCalenders()
|
||||||
|
{
|
||||||
|
m_Calender.gameObject.SetActive(!m_Calender.gameObject.activeInHierarchy);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1aa8eff758fb541f596ec995f29789f5
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,212 @@
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
public class nh_Dual_DateRangePicker : DateRangePicker
|
||||||
|
{
|
||||||
|
// FW == First Window Calender
|
||||||
|
// SW == Second Window Calender
|
||||||
|
[SerializeField] DayOfWeek m_FirstDayOfWeek = DayOfWeek.Monday;
|
||||||
|
[SerializeField] bool m_ShowDaysInOtherMonths = false;
|
||||||
|
[SerializeField] bool m_CloseOnLastSelection = false;
|
||||||
|
[SerializeField] Calender FW_Calender;
|
||||||
|
[SerializeField] Calender SW_Calender;
|
||||||
|
[SerializeField] UITweenManager UITweenManager;
|
||||||
|
|
||||||
|
private DateTime? m_StartDate;
|
||||||
|
private CalenderButton m_StartDate_SelectedBTN;
|
||||||
|
private DateTime? m_EndDate;
|
||||||
|
private CalenderButton m_EndDate_SelectedBTN;
|
||||||
|
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
Setup();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Setup()
|
||||||
|
{
|
||||||
|
FW_Calender.Date = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
|
||||||
|
SW_Calender.Date = FW_Calender.Date.AddMonths(1);
|
||||||
|
|
||||||
|
FW_Calender.PointerEnter += OnPointerEnter;
|
||||||
|
FW_Calender.PointerDown += OnPointerDown;
|
||||||
|
FW_Calender.PointerExit += OnPointerExit;
|
||||||
|
|
||||||
|
SW_Calender.PointerEnter += OnPointerEnter;
|
||||||
|
SW_Calender.PointerDown += OnPointerDown;
|
||||||
|
SW_Calender.PointerExit += OnPointerExit;
|
||||||
|
|
||||||
|
FW_Calender.CalenderRefreshed += OnCalenderRefreshed;
|
||||||
|
SW_Calender.CalenderRefreshed += OnCalenderRefreshed;
|
||||||
|
|
||||||
|
FW_Calender.Setup(DateTime.Now.Year, DateTime.Now.Month, m_FirstDayOfWeek, m_ShowDaysInOtherMonths, m_StartDate, m_EndDate, UITweenManager);
|
||||||
|
SW_Calender.Setup(DateTime.Now.Year, DateTime.Now.AddMonths(1).Month, m_FirstDayOfWeek, m_ShowDaysInOtherMonths, m_StartDate, m_EndDate, UITweenManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnPointerEnter(CalenderButton chosenCalenderButton, Calender calender)
|
||||||
|
{
|
||||||
|
if (chosenCalenderButton.CurrentState == CalenderButton.State.Normal && m_EndDate == null)
|
||||||
|
{
|
||||||
|
chosenCalenderButton.UpdateState(CalenderButton.State.Hover, calender.Date, m_StartDate, m_EndDate);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnPointerDown(CalenderButton chosenCalenderButton, DateTime chosenDate, Calender calender)
|
||||||
|
{
|
||||||
|
// clears selection
|
||||||
|
if (m_StartDate != null && m_EndDate != null)
|
||||||
|
{
|
||||||
|
m_StartDate_SelectedBTN.ResetToOriginal();
|
||||||
|
m_EndDate_SelectedBTN.ResetToOriginal();
|
||||||
|
|
||||||
|
m_StartDate = null;
|
||||||
|
m_EndDate = null;
|
||||||
|
|
||||||
|
// don't return on this one
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_StartDate == null && m_EndDate == null)
|
||||||
|
{
|
||||||
|
if (chosenCalenderButton.CurrentState != CalenderButton.State.Disabled)
|
||||||
|
{
|
||||||
|
m_StartDate = chosenDate;
|
||||||
|
m_StartDate_SelectedBTN = chosenCalenderButton;
|
||||||
|
|
||||||
|
CalendersUpdated?.Invoke(m_StartDate, m_EndDate);
|
||||||
|
chosenCalenderButton.UpdateState(CalenderButton.State.Selected, chosenDate, m_StartDate, m_EndDate);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// revert, if second date is selected is less that the first chosen ddate
|
||||||
|
if (m_StartDate != null && chosenDate <= m_StartDate && m_EndDate == null)
|
||||||
|
{
|
||||||
|
if (chosenCalenderButton.CurrentState != CalenderButton.State.Disabled)
|
||||||
|
{
|
||||||
|
// revert previous selected start date
|
||||||
|
m_StartDate_SelectedBTN.ResetToOriginal();
|
||||||
|
|
||||||
|
m_StartDate = chosenDate;
|
||||||
|
m_StartDate_SelectedBTN = chosenCalenderButton;
|
||||||
|
|
||||||
|
CalendersUpdated?.Invoke(m_StartDate, m_EndDate);
|
||||||
|
chosenCalenderButton.UpdateState(CalenderButton.State.Selected, chosenDate, m_StartDate, m_EndDate);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_StartDate != null && m_EndDate == null)
|
||||||
|
{
|
||||||
|
m_EndDate = chosenDate;
|
||||||
|
|
||||||
|
// select end button
|
||||||
|
chosenCalenderButton.UpdateState(CalenderButton.State.Selected, chosenDate, m_StartDate, m_EndDate);
|
||||||
|
|
||||||
|
m_EndDate_SelectedBTN = chosenCalenderButton;
|
||||||
|
|
||||||
|
CalendersUpdated?.Invoke(m_StartDate, m_EndDate);
|
||||||
|
|
||||||
|
if (m_CloseOnLastSelection)
|
||||||
|
{
|
||||||
|
FW_Calender.gameObject.SetActive(false);
|
||||||
|
SW_Calender.gameObject.SetActive(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnPointerExit(CalenderButton chosenCalenderButton, Calender calender)
|
||||||
|
{
|
||||||
|
if (chosenCalenderButton.CurrentState == CalenderButton.State.Hover)
|
||||||
|
{
|
||||||
|
if (chosenCalenderButton.CurrentState != CalenderButton.State.Disabled)
|
||||||
|
chosenCalenderButton.UpdateState(CalenderButton.State.Normal, calender.Date, m_StartDate, m_EndDate);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnCalenderRefreshed(DateTime calenderDate, CalenderButton calenderButton, DateTime buttonDate)
|
||||||
|
{
|
||||||
|
if (DateIsInCalenderMonth(calenderDate, buttonDate))
|
||||||
|
{
|
||||||
|
// single selection
|
||||||
|
if (m_StartDate != null && m_StartDate == buttonDate && m_EndDate == null)
|
||||||
|
{
|
||||||
|
m_StartDate_SelectedBTN = calenderButton;
|
||||||
|
calenderButton.UpdateState(CalenderButton.State.Selected, buttonDate, m_StartDate, m_EndDate);
|
||||||
|
}
|
||||||
|
// single selection but we also need to show highlight
|
||||||
|
else if (m_StartDate != null && m_StartDate == buttonDate)
|
||||||
|
{
|
||||||
|
m_StartDate_SelectedBTN = calenderButton;
|
||||||
|
calenderButton.UpdateState(CalenderButton.State.Selected, buttonDate, m_StartDate, m_EndDate);
|
||||||
|
}
|
||||||
|
// single 'end' selection
|
||||||
|
else if (m_EndDate != null && m_EndDate == buttonDate && m_StartDate != null)
|
||||||
|
{
|
||||||
|
m_EndDate_SelectedBTN = calenderButton;
|
||||||
|
calenderButton.UpdateState(CalenderButton.State.Selected, buttonDate, m_StartDate, m_EndDate);
|
||||||
|
}
|
||||||
|
else if (m_EndDate != null && m_EndDate == buttonDate)
|
||||||
|
{
|
||||||
|
m_EndDate_SelectedBTN = calenderButton;
|
||||||
|
calenderButton.UpdateState(CalenderButton.State.Selected, buttonDate, m_StartDate, m_EndDate);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool DateIsInCalenderMonth(DateTime chosenDate, DateTime calenderDate)
|
||||||
|
{
|
||||||
|
if (calenderDate.Month == chosenDate.Month)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void OnClick_NextCalenderMonth()
|
||||||
|
{
|
||||||
|
FW_Calender.Date = FW_Calender.Date.AddMonths(1);
|
||||||
|
SW_Calender.Date = SW_Calender.Date.AddMonths(1);
|
||||||
|
|
||||||
|
FW_Calender.Setup(FW_Calender.Date.Year, FW_Calender.Date.Month, m_FirstDayOfWeek, m_ShowDaysInOtherMonths, m_StartDate, m_EndDate, UITweenManager);
|
||||||
|
SW_Calender.Setup(SW_Calender.Date.Year, SW_Calender.Date.Month, m_FirstDayOfWeek, m_ShowDaysInOtherMonths, m_StartDate, m_EndDate, UITweenManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnClick_NextCalenderYear()
|
||||||
|
{
|
||||||
|
FW_Calender.Date = FW_Calender.Date.AddYears(1);
|
||||||
|
SW_Calender.Date = SW_Calender.Date.AddYears(1);
|
||||||
|
|
||||||
|
FW_Calender.Setup(FW_Calender.Date.Year, FW_Calender.Date.Month, m_FirstDayOfWeek, m_ShowDaysInOtherMonths, m_StartDate, m_EndDate, UITweenManager);
|
||||||
|
SW_Calender.Setup(SW_Calender.Date.Year, SW_Calender.Date.Month, m_FirstDayOfWeek, m_ShowDaysInOtherMonths, m_StartDate, m_EndDate, UITweenManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnClick_PreviousCalenderMonth()
|
||||||
|
{
|
||||||
|
FW_Calender.Date = FW_Calender.Date.AddMonths(-1);
|
||||||
|
SW_Calender.Date = SW_Calender.Date.AddMonths(-1);
|
||||||
|
|
||||||
|
FW_Calender.Setup(FW_Calender.Date.Year, FW_Calender.Date.Month, m_FirstDayOfWeek, m_ShowDaysInOtherMonths, m_StartDate, m_EndDate, UITweenManager);
|
||||||
|
SW_Calender.Setup(SW_Calender.Date.Year, SW_Calender.Date.Month, m_FirstDayOfWeek, m_ShowDaysInOtherMonths, m_StartDate, m_EndDate, UITweenManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnClick_PreviousCalenderYear()
|
||||||
|
{
|
||||||
|
FW_Calender.Date = FW_Calender.Date.AddYears(-1);
|
||||||
|
SW_Calender.Date = SW_Calender.Date.AddYears(-1);
|
||||||
|
|
||||||
|
FW_Calender.Setup(FW_Calender.Date.Year, FW_Calender.Date.Month, m_FirstDayOfWeek, m_ShowDaysInOtherMonths, m_StartDate, m_EndDate, UITweenManager);
|
||||||
|
SW_Calender.Setup(SW_Calender.Date.Year, SW_Calender.Date.Month, m_FirstDayOfWeek, m_ShowDaysInOtherMonths, m_StartDate, m_EndDate, UITweenManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnClick_ToggleCalenders()
|
||||||
|
{
|
||||||
|
FW_Calender.gameObject.SetActive(!FW_Calender.gameObject.activeInHierarchy);
|
||||||
|
SW_Calender.gameObject.SetActive(!SW_Calender.gameObject.activeInHierarchy);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 83d7ecc101cae4c4ea257b1922a3b9d0
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,172 @@
|
||||||
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// nh - no highlight date picker
|
||||||
|
/// </summary>
|
||||||
|
public class nh_Single_DateRangePicker : DateRangePicker
|
||||||
|
{
|
||||||
|
[SerializeField] DayOfWeek m_FirstDayOfWeek = DayOfWeek.Monday;
|
||||||
|
|
||||||
|
[SerializeField] UITweenManager UITweenManager;
|
||||||
|
[SerializeField] bool m_ShowDaysInOtherMonths = false;
|
||||||
|
[SerializeField] bool m_CloseOnLastSelection = false;
|
||||||
|
|
||||||
|
[SerializeField] Calender m_Calender;
|
||||||
|
|
||||||
|
private DateTime? m_StartDate;
|
||||||
|
private CalenderButton m_StartDate_SelectedBTN;
|
||||||
|
private DateTime? m_EndDate;
|
||||||
|
private CalenderButton m_EndDate_SelectedBTN;
|
||||||
|
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
Setup();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Setup()
|
||||||
|
{
|
||||||
|
m_Calender.PointerEnter = OnPointerEnter;
|
||||||
|
m_Calender.PointerDown = OnPointerDown;
|
||||||
|
m_Calender.PointerExit = OnPointerExit;
|
||||||
|
m_Calender.CalenderRefreshed = OnCalenderRefreshed;
|
||||||
|
m_Calender.Setup(DateTime.Now.Year, DateTime.Now.Month, m_FirstDayOfWeek, m_ShowDaysInOtherMonths, m_StartDate, m_EndDate, UITweenManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnPointerEnter(CalenderButton chosenCalenderButton, Calender calender)
|
||||||
|
{
|
||||||
|
if (chosenCalenderButton.CurrentState == CalenderButton.State.Normal && m_EndDate == null)
|
||||||
|
{
|
||||||
|
chosenCalenderButton.UpdateState(CalenderButton.State.Hover, calender.Date, m_StartDate, m_EndDate);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnPointerDown(CalenderButton chosenCalenderButton, DateTime chosenDate, Calender calender)
|
||||||
|
{
|
||||||
|
// clears selection
|
||||||
|
if (m_StartDate != null && m_EndDate != null)
|
||||||
|
{
|
||||||
|
m_StartDate_SelectedBTN.ResetToOriginal();
|
||||||
|
m_EndDate_SelectedBTN.ResetToOriginal();
|
||||||
|
|
||||||
|
m_StartDate = null;
|
||||||
|
m_EndDate = null;
|
||||||
|
|
||||||
|
// don't return on this one
|
||||||
|
}
|
||||||
|
|
||||||
|
// intiate first click
|
||||||
|
if (m_StartDate == null && m_EndDate == null)
|
||||||
|
{
|
||||||
|
if (chosenCalenderButton.CurrentState != CalenderButton.State.Disabled)
|
||||||
|
{
|
||||||
|
m_StartDate = chosenDate;
|
||||||
|
m_StartDate_SelectedBTN = chosenCalenderButton;
|
||||||
|
|
||||||
|
CalendersUpdated?.Invoke(m_StartDate, m_EndDate);
|
||||||
|
chosenCalenderButton.UpdateState(CalenderButton.State.Selected, chosenDate, m_StartDate, m_EndDate);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_StartDate != null && chosenDate <= m_StartDate && m_EndDate == null)
|
||||||
|
{
|
||||||
|
if (chosenCalenderButton.CurrentState != CalenderButton.State.Disabled)
|
||||||
|
{
|
||||||
|
// revert previous selected start date
|
||||||
|
m_StartDate_SelectedBTN.ResetToOriginal();
|
||||||
|
|
||||||
|
m_StartDate = chosenDate;
|
||||||
|
m_StartDate_SelectedBTN = chosenCalenderButton;
|
||||||
|
|
||||||
|
CalendersUpdated?.Invoke(m_StartDate, m_EndDate);
|
||||||
|
chosenCalenderButton.UpdateState(CalenderButton.State.Selected, chosenDate, m_StartDate, m_EndDate);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// initiate second click
|
||||||
|
if (m_StartDate != null && m_EndDate == null)
|
||||||
|
{
|
||||||
|
m_EndDate = chosenDate;
|
||||||
|
m_EndDate_SelectedBTN = chosenCalenderButton;
|
||||||
|
// select end button
|
||||||
|
chosenCalenderButton.UpdateState(CalenderButton.State.Selected, chosenDate, m_StartDate, m_EndDate);
|
||||||
|
|
||||||
|
CalendersUpdated?.Invoke(m_StartDate, m_EndDate);
|
||||||
|
|
||||||
|
if (m_CloseOnLastSelection)
|
||||||
|
{
|
||||||
|
m_Calender.gameObject.SetActive(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnPointerExit(CalenderButton chosenCalenderButton, Calender calender)
|
||||||
|
{
|
||||||
|
if (chosenCalenderButton.CurrentState == CalenderButton.State.Hover)
|
||||||
|
{
|
||||||
|
if (chosenCalenderButton.CurrentState != CalenderButton.State.Disabled)
|
||||||
|
chosenCalenderButton.UpdateState(CalenderButton.State.Normal, calender.Date, m_StartDate, m_EndDate);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnCalenderRefreshed(DateTime calenderDate, CalenderButton calenderButton, DateTime buttonDate)
|
||||||
|
{
|
||||||
|
// single selection
|
||||||
|
if (m_StartDate != null && m_StartDate == buttonDate && m_EndDate == null)
|
||||||
|
{
|
||||||
|
calenderButton.UpdateState(CalenderButton.State.Selected, buttonDate, m_StartDate, m_EndDate);
|
||||||
|
}
|
||||||
|
// single selection but we also need to show highlight
|
||||||
|
else if (m_StartDate != null && m_StartDate == buttonDate)
|
||||||
|
{
|
||||||
|
calenderButton.UpdateState(CalenderButton.State.Selected, buttonDate, m_StartDate, m_EndDate);
|
||||||
|
}
|
||||||
|
// single 'end' selection
|
||||||
|
else if (m_EndDate != null && m_EndDate == buttonDate && m_StartDate != null)
|
||||||
|
{
|
||||||
|
calenderButton.UpdateState(CalenderButton.State.Selected, buttonDate, m_StartDate, m_EndDate);
|
||||||
|
}
|
||||||
|
else if (m_EndDate != null && m_EndDate == buttonDate)
|
||||||
|
{
|
||||||
|
calenderButton.UpdateState(CalenderButton.State.Selected, buttonDate, m_StartDate, m_EndDate);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnClick_NextCalenderMonth()
|
||||||
|
{
|
||||||
|
m_Calender.Date = m_Calender.Date.AddMonths(1);
|
||||||
|
|
||||||
|
m_Calender.Setup(m_Calender.Date.Year, m_Calender.Date.Month, m_FirstDayOfWeek, m_ShowDaysInOtherMonths, m_StartDate, m_EndDate, UITweenManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnClick_NextCalenderYear()
|
||||||
|
{
|
||||||
|
m_Calender.Date = m_Calender.Date.AddYears(1);
|
||||||
|
|
||||||
|
m_Calender.Setup(m_Calender.Date.Year, m_Calender.Date.Month, m_FirstDayOfWeek, m_ShowDaysInOtherMonths, m_StartDate, m_EndDate, UITweenManager);
|
||||||
|
m_Calender.Setup(m_Calender.Date.Year, m_Calender.Date.Month, m_FirstDayOfWeek, m_ShowDaysInOtherMonths, m_StartDate, m_EndDate, UITweenManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnClick_PreviousCalenderMonth()
|
||||||
|
{
|
||||||
|
m_Calender.Date = m_Calender.Date.AddMonths(-1);
|
||||||
|
m_Calender.Setup(m_Calender.Date.Year, m_Calender.Date.Month, m_FirstDayOfWeek, m_ShowDaysInOtherMonths, m_StartDate, m_EndDate, UITweenManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnClick_PreviousCalenderYear()
|
||||||
|
{
|
||||||
|
m_Calender.Date = m_Calender.Date.AddYears(-1);
|
||||||
|
m_Calender.Setup(m_Calender.Date.Year, m_Calender.Date.Month, m_FirstDayOfWeek, m_ShowDaysInOtherMonths, m_StartDate, m_EndDate, UITweenManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnClick_ToggleCalenders()
|
||||||
|
{
|
||||||
|
m_Calender.gameObject.SetActive(!m_Calender.gameObject.activeInHierarchy);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0b61848c7a50b46ee914a5c840feeae0
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8aad7807a4d2d479bb6c3c6627cc6aa9
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,12 @@
|
||||||
|
using System;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class DisableDisplayState : DisplayState
|
||||||
|
{
|
||||||
|
public override void UpdateState(DateTime? buttonDate, DateTime? calenderDate, DateTime? selectedStartDate, DateTime? selectedEndDate)
|
||||||
|
{
|
||||||
|
UITweenManager.ForceTween(PrimaryImage, Color.clear, null, 0f);
|
||||||
|
UITweenManager.ForceTween(ButtonText, Color.clear, null, 0f);
|
||||||
|
UITweenManager.ForceTween(SecondaryImage, Color.clear, null, 0f);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 00d95f725a9bc4909a37a5325ddc40f8
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,28 @@
|
||||||
|
using System;
|
||||||
|
using TMPro;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
public class DisplayState : MonoBehaviour
|
||||||
|
{
|
||||||
|
protected Image PrimaryImage { get; private set; }
|
||||||
|
protected Image SecondaryImage { get; private set; }
|
||||||
|
protected TextMeshProUGUI ButtonText { get; private set; }
|
||||||
|
protected UITweenManager UITweenManager { get; private set; }
|
||||||
|
|
||||||
|
public virtual void Setup(Image primaryImage, Image secondaryImage, TextMeshProUGUI buttonText, UITweenManager uitweenManager)
|
||||||
|
{
|
||||||
|
PrimaryImage = primaryImage;
|
||||||
|
SecondaryImage = secondaryImage;
|
||||||
|
ButtonText = buttonText;
|
||||||
|
UITweenManager = uitweenManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="dayInMonth">Is the current calender button, in the current calender date? Or does it need to be greyed out</param>
|
||||||
|
public virtual void UpdateState(DateTime? buttonDate, DateTime? calenderDate, DateTime? selectedStartDate, DateTime? selectedEndDate)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b44ccd99a54604291b70c647ed4452c7
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,30 @@
|
||||||
|
using UnityEngine;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
public class HighlightedDisplayState : DisplayState
|
||||||
|
{
|
||||||
|
[SerializeField] Sprite m_FirstSelectionDate_HighlightSprite;
|
||||||
|
[SerializeField] Sprite m_InBetween_Dates_HighlightSprite;
|
||||||
|
[SerializeField] Sprite m_LastSelectionDate_HighlightSprite;
|
||||||
|
|
||||||
|
[SerializeField] Color32 m_Highlight_Image_Color;
|
||||||
|
|
||||||
|
public override void UpdateState(DateTime? buttonDate, DateTime? calenderDate, DateTime? selectedStartDate, DateTime? selectedEndDate)
|
||||||
|
{
|
||||||
|
if(buttonDate == selectedStartDate)
|
||||||
|
{
|
||||||
|
SecondaryImage.sprite = m_FirstSelectionDate_HighlightSprite;
|
||||||
|
}
|
||||||
|
else if(buttonDate > selectedStartDate && buttonDate < selectedEndDate)
|
||||||
|
{
|
||||||
|
SecondaryImage.sprite = m_InBetween_Dates_HighlightSprite;
|
||||||
|
PrimaryImage.color = Color.clear;
|
||||||
|
}
|
||||||
|
else if(buttonDate == selectedEndDate)
|
||||||
|
{
|
||||||
|
SecondaryImage.sprite = m_LastSelectionDate_HighlightSprite;
|
||||||
|
}
|
||||||
|
|
||||||
|
SecondaryImage.color = m_Highlight_Image_Color;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 97bc0f2fe435e4363ae1d19951bfbc46
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,14 @@
|
||||||
|
using UnityEngine;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
public class HoverDisplayState : DisplayState
|
||||||
|
{
|
||||||
|
[SerializeField] Color32 m_BtnImageColor;
|
||||||
|
[SerializeField] Color32 m_BtnTextColor;
|
||||||
|
|
||||||
|
public override void UpdateState(DateTime? buttonDate, DateTime? calenderDate, DateTime? selectedStartDate, DateTime? selectedEndDate)
|
||||||
|
{
|
||||||
|
UITweenManager.ForceTween(PrimaryImage, m_BtnImageColor, null, 0f);
|
||||||
|
UITweenManager.ForceTween(ButtonText, m_BtnTextColor, null, 0f);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 488e8e5ffe36649a4bea689cce6afa2d
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,35 @@
|
||||||
|
using System;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class NormalDisplayState : DisplayState
|
||||||
|
{
|
||||||
|
[SerializeField] Color32 m_BtnImageColor;
|
||||||
|
[SerializeField] Color32 m_BtnTextColor;
|
||||||
|
|
||||||
|
[Header("Is current day, is not in month & days in month are displayed")]
|
||||||
|
[SerializeField] Color32 m_Btn_ImageColor_NotInMonth;
|
||||||
|
[SerializeField] Color32 m_Btn_TextColor_NotInMonth;
|
||||||
|
|
||||||
|
public override void UpdateState(DateTime? buttonDate, DateTime? calenderDate, DateTime? selectedStartDate, DateTime? selectedEndDate)
|
||||||
|
{
|
||||||
|
SecondaryImage.color = Color.clear;
|
||||||
|
|
||||||
|
if (buttonDate != null && calenderDate != null)
|
||||||
|
{
|
||||||
|
if (buttonDate.Value.Month == calenderDate.Value.Month)
|
||||||
|
{
|
||||||
|
UITweenManager.ForceTween(PrimaryImage, m_BtnImageColor, null, 0f);
|
||||||
|
UITweenManager.ForceTween(ButtonText, m_BtnTextColor, null, 0f);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
UITweenManager.ForceTween(PrimaryImage, m_Btn_ImageColor_NotInMonth, null, 0f);
|
||||||
|
UITweenManager.ForceTween(ButtonText, m_Btn_TextColor_NotInMonth, null, 0f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.LogError("UHOH: buttonDate or calenderDate == null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e456cc388e88a4371be4c3688e8fa6fe
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,14 @@
|
||||||
|
using UnityEngine;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
public class SelectedDisplayState : DisplayState
|
||||||
|
{
|
||||||
|
[SerializeField] Color32 m_BtnImageColor;
|
||||||
|
[SerializeField] Color32 m_BtnTextColor;
|
||||||
|
|
||||||
|
public override void UpdateState(DateTime? buttonDate, DateTime? calenderDate, DateTime? selectedStartDate, DateTime? selectedEndDate)
|
||||||
|
{
|
||||||
|
UITweenManager.ForceTween(PrimaryImage, m_BtnImageColor, null, .1f);
|
||||||
|
UITweenManager.ForceTween(ButtonText, m_BtnTextColor, null, .1f);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: eeafa67c690664539bc6b9ecc446523f
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 6240952cbc1b94a45ab24def4922a2b4
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Binary file not shown.
After ![]() (image error) Size: 2.5 KiB |
|
@ -0,0 +1,88 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a78e3d77370b14785a616aed9b23c29f
|
||||||
|
TextureImporter:
|
||||||
|
fileIDToRecycleName: {}
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 9
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 0
|
||||||
|
sRGBTexture: 1
|
||||||
|
linearTexture: 0
|
||||||
|
fadeOut: 0
|
||||||
|
borderMipMap: 0
|
||||||
|
mipMapsPreserveCoverage: 0
|
||||||
|
alphaTestReferenceValue: 0.5
|
||||||
|
mipMapFadeDistanceStart: 1
|
||||||
|
mipMapFadeDistanceEnd: 3
|
||||||
|
bumpmap:
|
||||||
|
convertToNormalMap: 0
|
||||||
|
externalNormalMap: 0
|
||||||
|
heightScale: 0.25
|
||||||
|
normalMapFilter: 0
|
||||||
|
isReadable: 0
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 6
|
||||||
|
cubemapConvolution: 0
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: 1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
filterMode: -1
|
||||||
|
aniso: -1
|
||||||
|
mipBias: -100
|
||||||
|
wrapU: 1
|
||||||
|
wrapV: 1
|
||||||
|
wrapW: 1
|
||||||
|
nPOTScale: 0
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 1
|
||||||
|
spriteExtrude: 1
|
||||||
|
spriteMeshType: 1
|
||||||
|
alignment: 0
|
||||||
|
spritePivot: {x: 0.5, y: 0.5}
|
||||||
|
spritePixelsToUnits: 100
|
||||||
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
|
alphaUsage: 1
|
||||||
|
alphaIsTransparency: 1
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 8
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 2
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites: []
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 3d755b18b2b344f2d9c78f07f9005a8e
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
spritePackingTag:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
pSDShowRemoveMatteOption: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Binary file not shown.
After ![]() (image error) Size: 2.1 KiB |
|
@ -0,0 +1,88 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4ce4c08bac5e741cf9759db73740ac95
|
||||||
|
TextureImporter:
|
||||||
|
fileIDToRecycleName: {}
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 9
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 0
|
||||||
|
sRGBTexture: 1
|
||||||
|
linearTexture: 0
|
||||||
|
fadeOut: 0
|
||||||
|
borderMipMap: 0
|
||||||
|
mipMapsPreserveCoverage: 0
|
||||||
|
alphaTestReferenceValue: 0.5
|
||||||
|
mipMapFadeDistanceStart: 1
|
||||||
|
mipMapFadeDistanceEnd: 3
|
||||||
|
bumpmap:
|
||||||
|
convertToNormalMap: 0
|
||||||
|
externalNormalMap: 0
|
||||||
|
heightScale: 0.25
|
||||||
|
normalMapFilter: 0
|
||||||
|
isReadable: 0
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 6
|
||||||
|
cubemapConvolution: 0
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: 1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
filterMode: -1
|
||||||
|
aniso: -1
|
||||||
|
mipBias: -100
|
||||||
|
wrapU: 1
|
||||||
|
wrapV: 1
|
||||||
|
wrapW: 1
|
||||||
|
nPOTScale: 0
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 1
|
||||||
|
spriteExtrude: 1
|
||||||
|
spriteMeshType: 1
|
||||||
|
alignment: 0
|
||||||
|
spritePivot: {x: 0.5, y: 0.5}
|
||||||
|
spritePixelsToUnits: 100
|
||||||
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
|
alphaUsage: 1
|
||||||
|
alphaIsTransparency: 1
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 8
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 2
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites: []
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 92ce88db5b11a4a4582ea5b759419ab8
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
spritePackingTag:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
pSDShowRemoveMatteOption: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Binary file not shown.
|
@ -0,0 +1,88 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4aeefb11e15b4471798b5b76eca3d4e8
|
||||||
|
TextureImporter:
|
||||||
|
fileIDToRecycleName: {}
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 9
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 0
|
||||||
|
sRGBTexture: 1
|
||||||
|
linearTexture: 0
|
||||||
|
fadeOut: 0
|
||||||
|
borderMipMap: 0
|
||||||
|
mipMapsPreserveCoverage: 0
|
||||||
|
alphaTestReferenceValue: 0.5
|
||||||
|
mipMapFadeDistanceStart: 1
|
||||||
|
mipMapFadeDistanceEnd: 3
|
||||||
|
bumpmap:
|
||||||
|
convertToNormalMap: 0
|
||||||
|
externalNormalMap: 0
|
||||||
|
heightScale: 0.25
|
||||||
|
normalMapFilter: 0
|
||||||
|
isReadable: 0
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 6
|
||||||
|
cubemapConvolution: 0
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: 1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
filterMode: -1
|
||||||
|
aniso: -1
|
||||||
|
mipBias: -100
|
||||||
|
wrapU: 1
|
||||||
|
wrapV: 1
|
||||||
|
wrapW: 1
|
||||||
|
nPOTScale: 0
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 1
|
||||||
|
spriteExtrude: 1
|
||||||
|
spriteMeshType: 1
|
||||||
|
alignment: 0
|
||||||
|
spritePivot: {x: 0.5, y: 0.5}
|
||||||
|
spritePixelsToUnits: 100
|
||||||
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
|
alphaUsage: 1
|
||||||
|
alphaIsTransparency: 1
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 8
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 2
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites: []
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 095aeadda0ae4447fa23dfa987333226
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
spritePackingTag:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
pSDShowRemoveMatteOption: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Binary file not shown.
After ![]() (image error) Size: 4.2 KiB |
|
@ -0,0 +1,92 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ad591f29b014b4fdb85e39a7b76e631d
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 11
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 0
|
||||||
|
sRGBTexture: 1
|
||||||
|
linearTexture: 0
|
||||||
|
fadeOut: 0
|
||||||
|
borderMipMap: 0
|
||||||
|
mipMapsPreserveCoverage: 0
|
||||||
|
alphaTestReferenceValue: 0.5
|
||||||
|
mipMapFadeDistanceStart: 1
|
||||||
|
mipMapFadeDistanceEnd: 3
|
||||||
|
bumpmap:
|
||||||
|
convertToNormalMap: 0
|
||||||
|
externalNormalMap: 0
|
||||||
|
heightScale: 0.25
|
||||||
|
normalMapFilter: 0
|
||||||
|
isReadable: 0
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 6
|
||||||
|
cubemapConvolution: 0
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: 1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
filterMode: -1
|
||||||
|
aniso: -1
|
||||||
|
mipBias: -100
|
||||||
|
wrapU: 1
|
||||||
|
wrapV: 1
|
||||||
|
wrapW: 1
|
||||||
|
nPOTScale: 0
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 1
|
||||||
|
spriteExtrude: 1
|
||||||
|
spriteMeshType: 1
|
||||||
|
alignment: 0
|
||||||
|
spritePivot: {x: 0.5, y: 0.5}
|
||||||
|
spritePixelsToUnits: 100
|
||||||
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
|
alphaUsage: 1
|
||||||
|
alphaIsTransparency: 1
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 8
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites: []
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 5e97eb03825dee720800000000000000
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spritePackingTag:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
pSDShowRemoveMatteOption: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Binary file not shown.
After ![]() (image error) Size: 3.0 KiB |
|
@ -0,0 +1,92 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7ae9bf0f40b8645789df112f2576400a
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 11
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 0
|
||||||
|
sRGBTexture: 1
|
||||||
|
linearTexture: 0
|
||||||
|
fadeOut: 0
|
||||||
|
borderMipMap: 0
|
||||||
|
mipMapsPreserveCoverage: 0
|
||||||
|
alphaTestReferenceValue: 0.5
|
||||||
|
mipMapFadeDistanceStart: 1
|
||||||
|
mipMapFadeDistanceEnd: 3
|
||||||
|
bumpmap:
|
||||||
|
convertToNormalMap: 0
|
||||||
|
externalNormalMap: 0
|
||||||
|
heightScale: 0.25
|
||||||
|
normalMapFilter: 0
|
||||||
|
isReadable: 0
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 6
|
||||||
|
cubemapConvolution: 0
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: 1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
filterMode: -1
|
||||||
|
aniso: -1
|
||||||
|
mipBias: -100
|
||||||
|
wrapU: 1
|
||||||
|
wrapV: 1
|
||||||
|
wrapW: 1
|
||||||
|
nPOTScale: 0
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 1
|
||||||
|
spriteExtrude: 1
|
||||||
|
spriteMeshType: 1
|
||||||
|
alignment: 0
|
||||||
|
spritePivot: {x: 0.5, y: 0.5}
|
||||||
|
spritePixelsToUnits: 100
|
||||||
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
|
alphaUsage: 1
|
||||||
|
alphaIsTransparency: 1
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 8
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites: []
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 5e97eb03825dee720800000000000000
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spritePackingTag:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
pSDShowRemoveMatteOption: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Binary file not shown.
After ![]() (image error) Size: 3.0 KiB |
|
@ -0,0 +1,92 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 51bcd696195bd457cb17aaf20b0f2ee3
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 11
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 0
|
||||||
|
sRGBTexture: 1
|
||||||
|
linearTexture: 0
|
||||||
|
fadeOut: 0
|
||||||
|
borderMipMap: 0
|
||||||
|
mipMapsPreserveCoverage: 0
|
||||||
|
alphaTestReferenceValue: 0.5
|
||||||
|
mipMapFadeDistanceStart: 1
|
||||||
|
mipMapFadeDistanceEnd: 3
|
||||||
|
bumpmap:
|
||||||
|
convertToNormalMap: 0
|
||||||
|
externalNormalMap: 0
|
||||||
|
heightScale: 0.25
|
||||||
|
normalMapFilter: 0
|
||||||
|
isReadable: 0
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 6
|
||||||
|
cubemapConvolution: 0
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: 1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
filterMode: -1
|
||||||
|
aniso: -1
|
||||||
|
mipBias: -100
|
||||||
|
wrapU: 1
|
||||||
|
wrapV: 1
|
||||||
|
wrapW: 1
|
||||||
|
nPOTScale: 0
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 1
|
||||||
|
spriteExtrude: 1
|
||||||
|
spriteMeshType: 1
|
||||||
|
alignment: 0
|
||||||
|
spritePivot: {x: 0.5, y: 0.5}
|
||||||
|
spritePixelsToUnits: 100
|
||||||
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
|
alphaUsage: 1
|
||||||
|
alphaIsTransparency: 1
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 8
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites: []
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 5e97eb03825dee720800000000000000
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spritePackingTag:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
pSDShowRemoveMatteOption: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Binary file not shown.
After ![]() (image error) Size: 3.0 KiB |
|
@ -0,0 +1,92 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: efcdc93ca6c2a485cbd892c3e4941922
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 11
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 0
|
||||||
|
sRGBTexture: 1
|
||||||
|
linearTexture: 0
|
||||||
|
fadeOut: 0
|
||||||
|
borderMipMap: 0
|
||||||
|
mipMapsPreserveCoverage: 0
|
||||||
|
alphaTestReferenceValue: 0.5
|
||||||
|
mipMapFadeDistanceStart: 1
|
||||||
|
mipMapFadeDistanceEnd: 3
|
||||||
|
bumpmap:
|
||||||
|
convertToNormalMap: 0
|
||||||
|
externalNormalMap: 0
|
||||||
|
heightScale: 0.25
|
||||||
|
normalMapFilter: 0
|
||||||
|
isReadable: 0
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 6
|
||||||
|
cubemapConvolution: 0
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: 1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
filterMode: -1
|
||||||
|
aniso: -1
|
||||||
|
mipBias: -100
|
||||||
|
wrapU: 1
|
||||||
|
wrapV: 1
|
||||||
|
wrapW: 1
|
||||||
|
nPOTScale: 0
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 1
|
||||||
|
spriteExtrude: 1
|
||||||
|
spriteMeshType: 1
|
||||||
|
alignment: 0
|
||||||
|
spritePivot: {x: 0.5, y: 0.5}
|
||||||
|
spritePixelsToUnits: 100
|
||||||
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
|
alphaUsage: 1
|
||||||
|
alphaIsTransparency: 1
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 8
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites: []
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 5e97eb03825dee720800000000000000
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spritePackingTag:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
pSDShowRemoveMatteOption: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4a684ea551fd34a03aaf68792b3b4243
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 44f23ab20b87c4ecdb1342f3dae04f17
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,222 @@
|
||||||
|
using UnityEngine;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
using UnityEngine.Events;
|
||||||
|
using TMPro;
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// This must in scene in order for tweening to work
|
||||||
|
/// </summary>
|
||||||
|
public class UITweenManager : MonoBehaviour
|
||||||
|
{
|
||||||
|
private List<UIItem> m_TweeningItems = new List<UIItem>();
|
||||||
|
|
||||||
|
public void Tween(TextMeshProUGUI textComponent, Color32 to, UnityAction onComplete, float duration = 1)
|
||||||
|
{
|
||||||
|
int instanceId = textComponent.GetInstanceID();
|
||||||
|
|
||||||
|
if(!IsItemCurrentlyTweening(instanceId))
|
||||||
|
{
|
||||||
|
m_TweeningItems.Add(new UITextItem(textComponent.color, to, textComponent, () =>
|
||||||
|
{
|
||||||
|
m_TweeningItems.RemoveAll(x => x.InstanceID == instanceId);
|
||||||
|
|
||||||
|
onComplete?.Invoke();
|
||||||
|
},
|
||||||
|
duration));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.Log("Item is already tweening");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Tween(Image imageComponent, Color32 to, UnityAction onComplete, float duration = 1)
|
||||||
|
{
|
||||||
|
int instanceId = imageComponent.GetInstanceID();
|
||||||
|
|
||||||
|
if (!IsItemCurrentlyTweening(instanceId))
|
||||||
|
{
|
||||||
|
m_TweeningItems.Add(new UIImageItem(imageComponent.color, to, imageComponent, () =>
|
||||||
|
{
|
||||||
|
m_TweeningItems.RemoveAll(x => x.InstanceID == instanceId);
|
||||||
|
|
||||||
|
onComplete?.Invoke();
|
||||||
|
},
|
||||||
|
duration));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.Log("Item is already tweening");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// If current component is listed for tweening, it will be cancelled and new tween will take place
|
||||||
|
/// </summary>
|
||||||
|
public void ForceTween(TextMeshProUGUI textComponent, Color32 to, UnityAction onComplete, float duration = 1)
|
||||||
|
{
|
||||||
|
int instanceId = textComponent.GetInstanceID();
|
||||||
|
|
||||||
|
if (IsItemCurrentlyTweening(instanceId))
|
||||||
|
CancelTween(instanceId);
|
||||||
|
|
||||||
|
if(duration == 0)
|
||||||
|
{
|
||||||
|
textComponent.color = to;
|
||||||
|
onComplete?.Invoke();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_TweeningItems.Add(new UITextItem(textComponent.color, to, textComponent, () =>
|
||||||
|
{
|
||||||
|
m_TweeningItems.RemoveAll(x => x.InstanceID == instanceId);
|
||||||
|
|
||||||
|
onComplete?.Invoke();
|
||||||
|
},
|
||||||
|
duration));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// If current component is listed for tweening, it will be cancelled and new tween will take place
|
||||||
|
/// </summary>
|
||||||
|
public void ForceTween(Image imageComponent, Color32 to, UnityAction onComplete, float duration = 1)
|
||||||
|
{
|
||||||
|
int instanceId = imageComponent.GetInstanceID();
|
||||||
|
|
||||||
|
if (IsItemCurrentlyTweening(instanceId))
|
||||||
|
CancelTween(instanceId);
|
||||||
|
|
||||||
|
if(duration == 0)
|
||||||
|
{
|
||||||
|
imageComponent.color = to;
|
||||||
|
onComplete?.Invoke();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_TweeningItems.Add(new UIImageItem(imageComponent.color, to, imageComponent, () =>
|
||||||
|
{
|
||||||
|
m_TweeningItems.RemoveAll(x => x.InstanceID == instanceId);
|
||||||
|
|
||||||
|
onComplete?.Invoke();
|
||||||
|
},
|
||||||
|
duration));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void CancelTween(int instanceId, UnityAction onComplete = null)
|
||||||
|
{
|
||||||
|
m_TweeningItems.RemoveAll(x => x.InstanceID == instanceId);
|
||||||
|
|
||||||
|
onComplete?.Invoke();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool IsItemCurrentlyTweening(int instanceId)
|
||||||
|
{
|
||||||
|
foreach(UIItem item in m_TweeningItems)
|
||||||
|
{
|
||||||
|
if(item.InstanceID == instanceId)
|
||||||
|
{
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
if(m_TweeningItems != null)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < m_TweeningItems.Count; i++)
|
||||||
|
{
|
||||||
|
m_TweeningItems[i].Update(Time.deltaTime);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class UITextItem : UIItem
|
||||||
|
{
|
||||||
|
public TextMeshProUGUI Text { get; private set; }
|
||||||
|
|
||||||
|
public UITextItem(Color32 from, Color32 to, TextMeshProUGUI textComponent, UnityAction onComplete, float duration = 1)
|
||||||
|
: base(textComponent.GetInstanceID(), from, to, onComplete, duration)
|
||||||
|
{
|
||||||
|
Text = textComponent;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Update(float deltaTime)
|
||||||
|
{
|
||||||
|
base.Update(deltaTime);
|
||||||
|
Text.color = CurrentColor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class UIImageItem : UIItem
|
||||||
|
{
|
||||||
|
public Image Image { get; private set; }
|
||||||
|
|
||||||
|
public UIImageItem(Color32 from, Color32 to, Image imageComponent, UnityAction onComplete, float duration = 1)
|
||||||
|
: base(imageComponent.GetInstanceID(), from, to, onComplete, duration)
|
||||||
|
{
|
||||||
|
Image = imageComponent;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Update(float deltaTime)
|
||||||
|
{
|
||||||
|
base.Update(deltaTime);
|
||||||
|
Image.color = CurrentColor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract class UIItem
|
||||||
|
{
|
||||||
|
public enum State
|
||||||
|
{
|
||||||
|
Tweening,
|
||||||
|
Sleep,
|
||||||
|
}
|
||||||
|
|
||||||
|
public int InstanceID { get; private set; }
|
||||||
|
private State m_CurrentState;
|
||||||
|
private Color32 m_FromColor;
|
||||||
|
private Color32 m_TargetColor;
|
||||||
|
protected Color32 CurrentColor;
|
||||||
|
private float m_Time = 0.0f;
|
||||||
|
|
||||||
|
private UnityAction m_OnCompleteCallback;
|
||||||
|
private float m_Duration;
|
||||||
|
|
||||||
|
public UIItem(int instanceId, Color32 from, Color32 to, UnityAction onComplete, float duration = 1)
|
||||||
|
{
|
||||||
|
InstanceID = instanceId;
|
||||||
|
m_FromColor = from;
|
||||||
|
m_TargetColor = to;
|
||||||
|
m_OnCompleteCallback = onComplete;
|
||||||
|
m_CurrentState = State.Tweening;
|
||||||
|
m_Time = 0.0f;
|
||||||
|
m_Duration = duration;
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual void Update(float deltaTime)
|
||||||
|
{
|
||||||
|
if(m_CurrentState == State.Tweening)
|
||||||
|
{
|
||||||
|
m_Time += deltaTime / m_Duration;
|
||||||
|
|
||||||
|
CurrentColor = Color32.Lerp(m_FromColor, m_TargetColor, m_Time);
|
||||||
|
|
||||||
|
if(m_Time >= 1f)
|
||||||
|
{
|
||||||
|
m_CurrentState = State.Sleep;
|
||||||
|
m_OnCompleteCallback?.Invoke();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 5d1a497fe0d8d425182df5d6dd7f8a3f
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1bfbbf325d48b674ba6a79761030db79
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Binary file not shown.
|
@ -0,0 +1,92 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 544254c1339e04932b784967aebaa1d7
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 11
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 0
|
||||||
|
sRGBTexture: 1
|
||||||
|
linearTexture: 0
|
||||||
|
fadeOut: 0
|
||||||
|
borderMipMap: 0
|
||||||
|
mipMapsPreserveCoverage: 0
|
||||||
|
alphaTestReferenceValue: 0.5
|
||||||
|
mipMapFadeDistanceStart: 1
|
||||||
|
mipMapFadeDistanceEnd: 3
|
||||||
|
bumpmap:
|
||||||
|
convertToNormalMap: 0
|
||||||
|
externalNormalMap: 0
|
||||||
|
heightScale: 0.25
|
||||||
|
normalMapFilter: 0
|
||||||
|
isReadable: 0
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 6
|
||||||
|
cubemapConvolution: 0
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: 1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
filterMode: -1
|
||||||
|
aniso: -1
|
||||||
|
mipBias: -100
|
||||||
|
wrapU: 1
|
||||||
|
wrapV: 1
|
||||||
|
wrapW: 1
|
||||||
|
nPOTScale: 0
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 1
|
||||||
|
spriteExtrude: 1
|
||||||
|
spriteMeshType: 1
|
||||||
|
alignment: 0
|
||||||
|
spritePivot: {x: 0.5, y: 0.5}
|
||||||
|
spritePixelsToUnits: 100
|
||||||
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
|
alphaUsage: 1
|
||||||
|
alphaIsTransparency: 1
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 8
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites: []
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 5e97eb03825dee720800000000000000
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spritePackingTag:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
pSDShowRemoveMatteOption: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Binary file not shown.
|
@ -0,0 +1,92 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: dc94ab512ebec45028d7b49b74dd6c87
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 11
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 0
|
||||||
|
sRGBTexture: 1
|
||||||
|
linearTexture: 0
|
||||||
|
fadeOut: 0
|
||||||
|
borderMipMap: 0
|
||||||
|
mipMapsPreserveCoverage: 0
|
||||||
|
alphaTestReferenceValue: 0.5
|
||||||
|
mipMapFadeDistanceStart: 1
|
||||||
|
mipMapFadeDistanceEnd: 3
|
||||||
|
bumpmap:
|
||||||
|
convertToNormalMap: 0
|
||||||
|
externalNormalMap: 0
|
||||||
|
heightScale: 0.25
|
||||||
|
normalMapFilter: 0
|
||||||
|
isReadable: 0
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 6
|
||||||
|
cubemapConvolution: 0
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: 1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
filterMode: -1
|
||||||
|
aniso: -1
|
||||||
|
mipBias: -100
|
||||||
|
wrapU: 1
|
||||||
|
wrapV: 1
|
||||||
|
wrapW: 1
|
||||||
|
nPOTScale: 0
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 1
|
||||||
|
spriteExtrude: 1
|
||||||
|
spriteMeshType: 1
|
||||||
|
alignment: 0
|
||||||
|
spritePivot: {x: 0.5, y: 0.5}
|
||||||
|
spritePixelsToUnits: 100
|
||||||
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
|
alphaUsage: 1
|
||||||
|
alphaIsTransparency: 1
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 8
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites: []
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 5e97eb03825dee720800000000000000
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spritePackingTag:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
pSDShowRemoveMatteOption: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Binary file not shown.
|
@ -0,0 +1,92 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b7e53227f9fbe49bf9c00a2804c8322f
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 11
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 0
|
||||||
|
sRGBTexture: 1
|
||||||
|
linearTexture: 0
|
||||||
|
fadeOut: 0
|
||||||
|
borderMipMap: 0
|
||||||
|
mipMapsPreserveCoverage: 0
|
||||||
|
alphaTestReferenceValue: 0.5
|
||||||
|
mipMapFadeDistanceStart: 1
|
||||||
|
mipMapFadeDistanceEnd: 3
|
||||||
|
bumpmap:
|
||||||
|
convertToNormalMap: 0
|
||||||
|
externalNormalMap: 0
|
||||||
|
heightScale: 0.25
|
||||||
|
normalMapFilter: 0
|
||||||
|
isReadable: 0
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 6
|
||||||
|
cubemapConvolution: 0
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: 1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
filterMode: -1
|
||||||
|
aniso: -1
|
||||||
|
mipBias: -100
|
||||||
|
wrapU: 1
|
||||||
|
wrapV: 1
|
||||||
|
wrapW: 1
|
||||||
|
nPOTScale: 0
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 1
|
||||||
|
spriteExtrude: 1
|
||||||
|
spriteMeshType: 1
|
||||||
|
alignment: 0
|
||||||
|
spritePivot: {x: 0.5, y: 0.5}
|
||||||
|
spritePixelsToUnits: 100
|
||||||
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
|
alphaUsage: 1
|
||||||
|
alphaIsTransparency: 1
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 8
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites: []
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 5e97eb03825dee720800000000000000
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spritePackingTag:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
pSDShowRemoveMatteOption: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,98 @@
|
||||||
|
using UnityEditor;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
#if UNITY_EDITOR
|
||||||
|
public class uGUITools : MonoBehaviour {
|
||||||
|
[MenuItem("uGUI/Anchors to Corners %[")]
|
||||||
|
static void AnchorsToCorners(){
|
||||||
|
foreach(Transform transform in Selection.transforms){
|
||||||
|
RectTransform t = transform as RectTransform;
|
||||||
|
RectTransform pt = Selection.activeTransform.parent as RectTransform;
|
||||||
|
|
||||||
|
if(t == null || pt == null) return;
|
||||||
|
|
||||||
|
Vector2 newAnchorsMin = new Vector2(t.anchorMin.x + t.offsetMin.x / pt.rect.width,
|
||||||
|
t.anchorMin.y + t.offsetMin.y / pt.rect.height);
|
||||||
|
Vector2 newAnchorsMax = new Vector2(t.anchorMax.x + t.offsetMax.x / pt.rect.width,
|
||||||
|
t.anchorMax.y + t.offsetMax.y / pt.rect.height);
|
||||||
|
|
||||||
|
t.anchorMin = newAnchorsMin;
|
||||||
|
t.anchorMax = newAnchorsMax;
|
||||||
|
t.offsetMin = t.offsetMax = new Vector2(0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[MenuItem("uGUI/Corners to Anchors %]")]
|
||||||
|
static void CornersToAnchors(){
|
||||||
|
foreach(Transform transform in Selection.transforms){
|
||||||
|
RectTransform t = transform as RectTransform;
|
||||||
|
|
||||||
|
if(t == null) return;
|
||||||
|
|
||||||
|
t.offsetMin = t.offsetMax = new Vector2(0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[MenuItem("uGUI/Mirror Horizontally Around Anchors %;")]
|
||||||
|
static void MirrorHorizontallyAnchors(){
|
||||||
|
MirrorHorizontally(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
[MenuItem("uGUI/Mirror Horizontally Around Parent Center %:")]
|
||||||
|
static void MirrorHorizontallyParent(){
|
||||||
|
MirrorHorizontally(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void MirrorHorizontally(bool mirrorAnchors){
|
||||||
|
foreach(Transform transform in Selection.transforms){
|
||||||
|
RectTransform t = transform as RectTransform;
|
||||||
|
RectTransform pt = Selection.activeTransform.parent as RectTransform;
|
||||||
|
|
||||||
|
if(t == null || pt == null) return;
|
||||||
|
|
||||||
|
if(mirrorAnchors){
|
||||||
|
Vector2 oldAnchorMin = t.anchorMin;
|
||||||
|
t.anchorMin = new Vector2(1 - t.anchorMax.x, t.anchorMin.y);
|
||||||
|
t.anchorMax = new Vector2(1 - oldAnchorMin.x, t.anchorMax.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
Vector2 oldOffsetMin = t.offsetMin;
|
||||||
|
t.offsetMin = new Vector2(-t.offsetMax.x, t.offsetMin.y);
|
||||||
|
t.offsetMax = new Vector2(-oldOffsetMin.x, t.offsetMax.y);
|
||||||
|
|
||||||
|
t.localScale = new Vector3(-t.localScale.x, t.localScale.y, t.localScale.z);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[MenuItem("uGUI/Mirror Vertically Around Anchors %'")]
|
||||||
|
static void MirrorVerticallyAnchors(){
|
||||||
|
MirrorVertically(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
[MenuItem("uGUI/Mirror Vertically Around Parent Center %\"")]
|
||||||
|
static void MirrorVerticallyParent(){
|
||||||
|
MirrorVertically(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void MirrorVertically(bool mirrorAnchors){
|
||||||
|
foreach(Transform transform in Selection.transforms){
|
||||||
|
RectTransform t = transform as RectTransform;
|
||||||
|
RectTransform pt = Selection.activeTransform.parent as RectTransform;
|
||||||
|
|
||||||
|
if(t == null || pt == null) return;
|
||||||
|
|
||||||
|
if(mirrorAnchors){
|
||||||
|
Vector2 oldAnchorMin = t.anchorMin;
|
||||||
|
t.anchorMin = new Vector2(t.anchorMin.x, 1 - t.anchorMax.y);
|
||||||
|
t.anchorMax = new Vector2(t.anchorMax.x, 1 - oldAnchorMin.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
Vector2 oldOffsetMin = t.offsetMin;
|
||||||
|
t.offsetMin = new Vector2(t.offsetMin.x, -t.offsetMax.y);
|
||||||
|
t.offsetMax = new Vector2(t.offsetMax.x, -oldOffsetMin.y);
|
||||||
|
|
||||||
|
t.localScale = new Vector3(t.localScale.x, -t.localScale.y, t.localScale.z);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b66134ef387b4426894470ae7fe91c97
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f1155dccfcd56fb479ac4a3a8a927b00
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: dac58325ef0165b4d9637dfdfcf4519b
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue