Commit c468ac1e authored by Mahmoud Aglan's avatar Mahmoud Aglan

test

parent c5759834
# Default ignored files
/shelf/
/workspace.xml
# Rider ignored files
/contentModel.xml
/modules.xml
/projectSettingsUpdater.xml
/.idea.My project.iml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding" addBOMForNewFiles="with BOM under Windows, with no BOM otherwise" />
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="UserContentModel">
<attachedFolders />
<explicitIncludes />
<explicitExcludes />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="MaterialThemeProjectNewConfig">
<option name="metadata">
<MTProjectMetadataState>
<option name="userId" value="26d35fb6:199b48bb24f:-7fff" />
</MTProjectMetadataState>
</option>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/.." vcs="Git" />
</component>
</project>
\ No newline at end of file
fileFormatVersion: 2
guid: 8bdd24772367c4eab9095baa28f7f53d
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 636b6cb26ff364cae97fed5c404063a5
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
using UnityEngine;
namespace ALArcade.ArabicTMP
{
/// <summary>
/// Static class providing character sets for Arabic font creation
/// </summary>
public static class ArabicCharsets
{
/// <summary>
/// Returns the complete Arabic character set for font asset creation
/// </summary>
public static string GetCompleteArabicCharset()
{
return
"0600-06FF\n" + // Arabic Basic
"0750-077F\n" + // Arabic Supplement
"08A0-08FF\n" + // Arabic Extended-A
"FB50-FDFF\n" + // Arabic Presentation Forms-A
"FE70-FEFF\n" + // Arabic Presentation Forms-B
"0020-007F\n"; // Basic Latin for mixed text
}
/// <summary>
/// Returns the basic Arabic character set for font asset creation (less comprehensive)
/// </summary>
public static string GetBasicArabicCharset()
{
return
"0600-06FF\n" + // Arabic Basic
"FE70-FEFF\n" + // Arabic Presentation Forms-B
"0020-007F\n"; // Basic Latin for mixed text
}
/// <summary>
/// Returns the essential Persian characters (چ پ ژ گ) to add to an Arabic font
/// </summary>
public static string GetPersianCharset()
{
return "067E, 0686, 0698, 06AF\n"; // Persian letters پ چ ژ گ
}
}
}
\ No newline at end of file
fileFormatVersion: 2
guid: 33cf026253e634291b2071b76a8e3e63
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
This diff is collapsed.
fileFormatVersion: 2
guid: c717d64c270b1469f9b32a6110e7eb26
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
using TMPro;
using UnityEngine;
using UnityEngine.EventSystems;
namespace ALArcade.ArabicTMP
{
[AddComponentMenu("UI/Arabic TextMeshPro - Input Field", 12)]
public class ArabicTMPInputField : TMP_InputField
{
[SerializeField] private bool m_ShowTashkeel = true;
[SerializeField] private bool m_PreserveNumbers = true;
[SerializeField] private bool m_FixTags = true;
[SerializeField] private bool m_ForceRTL = true; // FIXED: Default to true for better Arabic support
private string m_OriginalText = "";
private bool m_ProcessingInternalChange = false;
// Shadow the base .text property
public new string text
{
get => m_OriginalText;
set
{
if (m_OriginalText == value)
return;
m_OriginalText = value;
m_ProcessingInternalChange = true;
var processed = ArabicSupport.Fix(value, m_ShowTashkeel, m_PreserveNumbers, m_FixTags, m_ForceRTL);
base.SetTextWithoutNotify(processed);
m_ProcessingInternalChange = false;
}
}
protected override void Awake()
{
base.Awake();
if (textComponent != null)
{
// FIXED: Ensure text component is properly set up for RTL
textComponent.isRightToLeftText = true;
textComponent.alignment = TextAlignmentOptions.Right;
}
// Ensure text viewport has correct layout for RTL
if (textViewport != null)
{
// Adjust padding to make sure text appears correctly aligned
textComponent.margin = new Vector4(0, 0, 5, 0); // Add right margin for RTL text
}
}
protected override void Start()
{
base.Start();
onValueChanged.AddListener(OnValueChangedHandler);
if (!string.IsNullOrEmpty(m_OriginalText))
text = m_OriginalText;
}
private void OnValueChangedHandler(string value)
{
// Only update our stored original if this wasn't triggered by our own setText
if (!m_ProcessingInternalChange)
{
m_OriginalText = value;
}
}
public override void OnSelect(BaseEventData eventData)
{
base.OnSelect(eventData);
// When selected, ensure caretPosition is at the proper end for RTL
if (caretPosition == 0 && m_OriginalText.Length > 0)
{
caretPosition = 0; // For RTL, visual position 0 is at the right side
}
}
public override void OnDeselect(BaseEventData eventData)
{
base.OnDeselect(eventData);
// Ensure text is properly formatted on deselection
text = m_OriginalText;
}
// Override LateUpdate to re-process text before each frame render
protected override void LateUpdate()
{
base.LateUpdate();
// Apply Arabic shaping if the text changed and we're not in the middle of our own change
if (!m_ProcessingInternalChange)
{
var processed = ArabicSupport.Fix(m_OriginalText, m_ShowTashkeel, m_PreserveNumbers, m_FixTags, m_ForceRTL);
if (base.text != processed)
{
m_ProcessingInternalChange = true;
base.SetTextWithoutNotify(processed);
m_ProcessingInternalChange = false;
}
}
}
#if UNITY_EDITOR
protected override void OnValidate()
{
base.OnValidate();
if (!string.IsNullOrEmpty(m_OriginalText))
{
m_ProcessingInternalChange = true;
var processed = ArabicSupport.Fix(m_OriginalText, m_ShowTashkeel, m_PreserveNumbers, m_FixTags, m_ForceRTL);
base.SetTextWithoutNotify(processed);
m_ProcessingInternalChange = false;
}
if (textComponent != null)
{
textComponent.isRightToLeftText = true;
textComponent.alignment = TextAlignmentOptions.Right;
}
}
#endif
}
}
\ No newline at end of file
fileFormatVersion: 2
guid: 31f53d7c2368d4ca298130e8d6951abb
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
using TMPro;
using UnityEngine;
namespace ALArcade.ArabicTMP
{
/// <summary>
/// Arabic-enabled TextMeshPro component for 3D/World space
/// </summary>
[AddComponentMenu("Text/Arabic TextMeshPro - Text", 10)]
public class ArabicTextMeshPro : TextMeshPro
{
// Original (editable) Arabic text
[SerializeField] private string m_ArabicText;
// Plugin options
[Tooltip("Show Arabic diacritics (tashkeel)")]
[SerializeField] private bool m_ShowTashkeel = true;
[Tooltip("Keep Western digits (123) as-is instead of converting to Eastern Arabic")]
[SerializeField] private bool m_PreserveNumbers = true;
[Tooltip("Process rich text tags (color, bold, etc.)")]
[SerializeField] private bool m_FixTags = true;
[Tooltip("Force RTL even if text starts with Latin letters")]
[SerializeField] private bool m_ForceRTL = true; // FIXED: Default to true for better Arabic support
/// <summary>
/// The original Arabic text (not fixed for rendering)
/// </summary>
public string arabicText
{
get { return m_ArabicText; }
set
{
if (m_ArabicText == value)
return;
m_ArabicText = value;
// Apply Arabic text processing and update TMP text
text = ArabicSupport.Fix(m_ArabicText, m_ShowTashkeel, m_PreserveNumbers, m_FixTags, m_ForceRTL);
}
}
/// <summary>
/// Show or hide Arabic diacritics (tashkeel)
/// </summary>
public bool showTashkeel
{
get { return m_ShowTashkeel; }
set
{
if (m_ShowTashkeel == value)
return;
m_ShowTashkeel = value;
// Re-process text with new setting
if (!string.IsNullOrEmpty(m_ArabicText))
text = ArabicSupport.Fix(m_ArabicText, m_ShowTashkeel, m_PreserveNumbers, m_FixTags, m_ForceRTL);
}
}
/// <summary>
/// Preserve Western digits (123) as-is
/// </summary>
public bool preserveNumbers
{
get { return m_PreserveNumbers; }
set
{
if (m_PreserveNumbers == value)
return;
m_PreserveNumbers = value;
// Re-process text with new setting
if (!string.IsNullOrEmpty(m_ArabicText))
text = ArabicSupport.Fix(m_ArabicText, m_ShowTashkeel, m_PreserveNumbers, m_FixTags, m_ForceRTL);
}
}
/// <summary>
/// Process rich text tags (color, bold, etc.)
/// </summary>
public bool fixTags
{
get { return m_FixTags; }
set
{
if (m_FixTags == value)
return;
m_FixTags = value;
// Re-process text with new setting
if (!string.IsNullOrEmpty(m_ArabicText))
text = ArabicSupport.Fix(m_ArabicText, m_ShowTashkeel, m_PreserveNumbers, m_FixTags, m_ForceRTL);
}
}
/// <summary>
/// Force RTL even if text starts with Latin letters
/// </summary>
public bool forceRTL
{
get { return m_ForceRTL; }
set
{
if (m_ForceRTL == value)
return;
m_ForceRTL = value;
// Re-process text with new setting
if (!string.IsNullOrEmpty(m_ArabicText))
text = ArabicSupport.Fix(m_ArabicText, m_ShowTashkeel, m_PreserveNumbers, m_FixTags, m_ForceRTL);
}
}
#if UNITY_EDITOR
protected override void OnValidate()
{
base.OnValidate();
// Update displayed text whenever properties change in the editor
if (!string.IsNullOrEmpty(m_ArabicText))
{
text = ArabicSupport.Fix(m_ArabicText, m_ShowTashkeel, m_PreserveNumbers, m_FixTags, m_ForceRTL);
}
// Set alignment to right by default for Arabic text
if (alignment == TextAlignmentOptions.TopLeft ||
alignment == TextAlignmentOptions.Left ||
alignment == TextAlignmentOptions.BottomLeft)
{
alignment = TextAlignmentOptions.Right;
}
}
#endif
protected override void Awake()
{
base.Awake();
// Initialize with proper alignment for RTL text
if (alignment == TextAlignmentOptions.TopLeft)
alignment = TextAlignmentOptions.TopRight;
else if (alignment == TextAlignmentOptions.Left)
alignment = TextAlignmentOptions.Right;
else if (alignment == TextAlignmentOptions.BottomLeft)
alignment = TextAlignmentOptions.BottomRight;
// Set RTL flag (for TMP's own RTL awareness)
isRightToLeftText = true;
// Initial text processing
if (!string.IsNullOrEmpty(m_ArabicText))
{
text = ArabicSupport.Fix(m_ArabicText, m_ShowTashkeel, m_PreserveNumbers, m_FixTags, m_ForceRTL);
}
}
}
}
\ No newline at end of file
fileFormatVersion: 2
guid: 6288886329a3741578473981df735c34
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
using TMPro;
using UnityEngine;
namespace ALArcade.ArabicTMP
{
[AddComponentMenu("UI/Arabic TextMeshPro - Text (UI)", 11)]
public class ArabicTextMeshProUGUI : TextMeshProUGUI
{
[Header("Arabic Settings")]
[SerializeField] private string m_ArabicText = "";
[SerializeField] private bool m_ShowTashkeel = true;
[SerializeField] private bool m_PreserveNumbers = true;
[SerializeField] private bool m_FixTags = true;
[SerializeField] private bool m_ForceRTL = true;
public string arabicText
{
get => m_ArabicText;
set
{
if (m_ArabicText == value) return;
m_ArabicText = value;
UpdateDisplayText();
}
}
public bool showTashkeel
{
get => m_ShowTashkeel;
set
{
if (m_ShowTashkeel == value) return;
m_ShowTashkeel = value;
UpdateDisplayText();
}
}
public bool preserveNumbers
{
get => m_PreserveNumbers;
set
{
if (m_PreserveNumbers == value) return;
m_PreserveNumbers = value;
UpdateDisplayText();
}
}
public bool fixTags
{
get => m_FixTags;
set
{
if (m_FixTags == value) return;
m_FixTags = value;
UpdateDisplayText();
}
}
public bool forceRTL
{
get => m_ForceRTL;
set
{
if (m_ForceRTL == value) return;
m_ForceRTL = value;
UpdateDisplayText();
}
}
private void UpdateDisplayText()
{
if (!string.IsNullOrEmpty(m_ArabicText))
{
text = ArabicSupport.Fix(m_ArabicText, m_ShowTashkeel, m_PreserveNumbers, m_FixTags, m_ForceRTL);
}
}
protected override void Awake()
{
base.Awake();
// Set RTL properties
isRightToLeftText = true;
// Set default alignment for Arabic
if (alignment == TextAlignmentOptions.TopLeft)
alignment = TextAlignmentOptions.TopRight;
else if (alignment == TextAlignmentOptions.Left)
alignment = TextAlignmentOptions.Right;
else if (alignment == TextAlignmentOptions.BottomLeft)
alignment = TextAlignmentOptions.BottomRight;
UpdateDisplayText();
}
#if UNITY_EDITOR
protected override void OnValidate()
{
base.OnValidate();
UpdateDisplayText();
}
#endif
}
}
\ No newline at end of file
fileFormatVersion: 2
guid: 0e20cc1eab1d04e7c9515c000ca5ba22
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: d384d57467e8841c89e614799f272161
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
using TMPro;
using TMPro.EditorUtilities;
using System.IO;
using System.Text;
namespace ALArcade.ArabicTMP.Editor
{
public class ArabicFontAssetCreator : EditorWindow
{
private Font sourceFont;
private string savePath = "Assets/";
private string saveFileName = "New Arabic Font Asset";
private int samplingPointSize = 90;
private int atlasPadding = 9;
private int atlasWidth = 1024;
private int atlasHeight = 1024;
private bool includeArabicBasic = true;
private bool includeArabicSupplement = true;
private bool includeArabicExtendedA = true;
private bool includeArabicPresentationA = true;
private bool includeArabicPresentationB = true;
private bool includePersian = true;
private TMP_FontAsset createdFontAsset;
private readonly string[] arabicRanges = new string[] {
// Basic Arabic
"0600-06FF",
// Arabic Supplement
"0750-077F",
// Arabic Extended-A
"08A0-08FF",
// Arabic Presentation Forms-A
"FB50-FDFF",
// Arabic Presentation Forms-B
"FE70-FEFF",
// Persian Characters
"067E, 0686, 0698, 06AF"
};
[MenuItem("Window/AL-Arcade/Arabic TMP/Font Asset Creator")]
public static void ShowWindow()
{
EditorWindow.GetWindow<ArabicFontAssetCreator>("Arabic Font Asset Creator");
}
private void OnGUI()
{
GUILayout.Label("Create Arabic TextMeshPro Font Asset", EditorStyles.boldLabel);
EditorGUILayout.Space();
// Source font selection
sourceFont = (Font)EditorGUILayout.ObjectField("Source Font File", sourceFont, typeof(Font), false);
// Atlas settings
EditorGUILayout.Space();
EditorGUILayout.LabelField("Atlas Settings", EditorStyles.boldLabel);
samplingPointSize = EditorGUILayout.IntField("Sampling Point Size", samplingPointSize);
atlasPadding = EditorGUILayout.IntField("Atlas Padding", atlasPadding);
atlasWidth = EditorGUILayout.IntField("Atlas Width", atlasWidth);
atlasHeight = EditorGUILayout.IntField("Atlas Height", atlasHeight);
// Character sets
EditorGUILayout.Space();
EditorGUILayout.LabelField("Character Sets to Include", EditorStyles.boldLabel);
includeArabicBasic = EditorGUILayout.Toggle("Arabic Basic (0600-06FF)", includeArabicBasic);
includeArabicSupplement = EditorGUILayout.Toggle("Arabic Supplement (0750-077F)", includeArabicSupplement);
includeArabicExtendedA = EditorGUILayout.Toggle("Arabic Extended-A (08A0-08FF)", includeArabicExtendedA);
includeArabicPresentationA = EditorGUILayout.Toggle("Arabic Presentation Forms-A (FB50-FDFF)", includeArabicPresentationA);
includeArabicPresentationB = EditorGUILayout.Toggle("Arabic Presentation Forms-B (FE70-FEFF)", includeArabicPresentationB);
includePersian = EditorGUILayout.Toggle("Persian Letters (پ چ ژ گ)", includePersian);
// Save settings
EditorGUILayout.Space();
EditorGUILayout.LabelField("Save Settings", EditorStyles.boldLabel);
savePath = EditorGUILayout.TextField("Save Path", savePath);
saveFileName = EditorGUILayout.TextField("Asset Name", saveFileName);
// Create button
EditorGUILayout.Space();
if (sourceFont == null)
{
EditorGUILayout.HelpBox("A Source Font File is required to create a font asset.", MessageType.Error);
}
EditorGUI.BeginDisabledGroup(sourceFont == null);
if (GUILayout.Button("Create Font Asset"))
{
GenerateFontAsset();
}
EditorGUI.EndDisabledGroup();
// Show the created font asset
EditorGUILayout.Space();
if (createdFontAsset != null)
{
EditorGUILayout.ObjectField("Created Font Asset", createdFontAsset, typeof(TMP_FontAsset), false);
}
// Help box
EditorGUILayout.Space();
EditorGUILayout.HelpBox(
"This utility creates a TextMeshPro Font Asset with all necessary Arabic Unicode ranges.\n\n" +
"1. Select a source font that contains Arabic glyphs.\n" +
"2. Choose which character sets to include.\n" +
"3. Set the save location and asset name.\n" +
"4. Click 'Create Font Asset'.\n\n" +
"The created asset will be ready for use with the Arabic TMP components.",
MessageType.Info);
}
private void GenerateFontAsset()
{
if (sourceFont == null)
{
EditorUtility.DisplayDialog("Error", "A Source Font File is required to create a font asset.", "OK");
return;
}
// Generate the character set string for TMP Font Asset Creator
StringBuilder charSetBuilder = new StringBuilder();
// Add selected character ranges
if (includeArabicBasic) charSetBuilder.Append(arabicRanges[0] + "\n");
if (includeArabicSupplement) charSetBuilder.Append(arabicRanges[1] + "\n");
if (includeArabicExtendedA) charSetBuilder.Append(arabicRanges[2] + "\n");
if (includeArabicPresentationA) charSetBuilder.Append(arabicRanges[3] + "\n");
if (includeArabicPresentationB) charSetBuilder.Append(arabicRanges[4] + "\n");
if (includePersian) charSetBuilder.Append(arabicRanges[5] + "\n");
// Add basic Latin range for mixed text
charSetBuilder.Append("0020-007F\n"); // Basic Latin
string characterSet = charSetBuilder.ToString();
// Create temp file with character set
string tempFilePath = Path.Combine(Path.GetTempPath(), "ArabicCharSet.txt");
File.WriteAllText(tempFilePath, characterSet);
// Ensure the save path exists
if (!Directory.Exists(savePath))
{
Directory.CreateDirectory(savePath);
}
// Generate the font asset using TMP_FontAsset.CreateFontAsset
string fullPath = Path.Combine(savePath, saveFileName + ".asset");
// Create the font asset
TMP_FontAsset fontAsset = TMP_FontAsset.CreateFontAsset(
sourceFont,
samplingPointSize,
atlasPadding,
UnityEngine.TextCore.LowLevel.GlyphRenderMode.SDFAA,
atlasWidth,
atlasHeight,
TMPro.AtlasPopulationMode.Dynamic,
true);
// Initialize character table with our character set
fontAsset.ReadFontAssetDefinition();
// Save the created font asset
AssetDatabase.CreateAsset(fontAsset, fullPath);
// Save the material as a sub-asset
fontAsset.material.name = saveFileName + " Material";
AssetDatabase.AddObjectToAsset(fontAsset.material, fontAsset);
// Update atlas texture and add it as sub-asset
if (fontAsset.atlasTexture != null)
{
fontAsset.atlasTexture.name = saveFileName + " Atlas";
AssetDatabase.AddObjectToAsset(fontAsset.atlasTexture, fontAsset);
}
// The following is a workaround to "load" character set into the font
// In practice, this will set these characters to be loaded when needed
string sampleText = "السلام عليكم مرحبا بكم في يونيتي";
fontAsset.TryAddCharacters(sampleText);
// Save all assets
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();
// Store the created font asset reference
createdFontAsset = fontAsset;
EditorUtility.DisplayDialog("Success", "Arabic font asset created successfully at:\n" + fullPath, "OK");
// Clean up temp file
try
{
File.Delete(tempFilePath);
}
catch
{
// Ignore cleanup errors
}
// Select the created asset
EditorGUIUtility.PingObject(fontAsset);
}
}
}
#endif
\ No newline at end of file
fileFormatVersion: 2
guid: c0cd9abaf612f42b39a5bdafbba6d610
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
using TMPro;
using ALArcade.ArabicTMP;
namespace ALArcade.ArabicTMP.Editor {
[CustomEditor(typeof(ArabicTMPInputField)), CanEditMultipleObjects]
public class ArabicTMPInputFieldEditor : TMPro.EditorUtilities.TMP_InputFieldEditor {
// SerializedProperties for Arabic input field options
SerializedProperty m_ShowTashkeelProp;
SerializedProperty m_PreserveNumbersProp;
SerializedProperty m_FixTagsProp;
SerializedProperty m_ForceRTLProp;
protected override void OnEnable() {
base.OnEnable();
// Get references to serialized properties
m_ShowTashkeelProp = serializedObject.FindProperty("m_ShowTashkeel");
m_PreserveNumbersProp = serializedObject.FindProperty("m_PreserveNumbers");
m_FixTagsProp = serializedObject.FindProperty("m_FixTags");
m_ForceRTLProp = serializedObject.FindProperty("m_ForceRTL");
}
public override void OnInspectorGUI() {
serializedObject.Update();
// Draw the Arabic options before the base inspector
EditorGUILayout.LabelField("Arabic Input Options", EditorStyles.boldLabel);
EditorGUILayout.PropertyField(m_ShowTashkeelProp, new GUIContent("Show Diacritics (Tashkeel)", "Display Arabic diacritic marks"));
EditorGUILayout.PropertyField(m_PreserveNumbersProp, new GUIContent("Preserve Numbers", "Keep Western numerals (123) as-is"));
EditorGUILayout.PropertyField(m_FixTagsProp, new GUIContent("Fix Rich Text Tags", "Process rich text tags like <color> properly"));
EditorGUILayout.PropertyField(m_ForceRTLProp, new GUIContent("Force RTL", "Force right-to-left rendering even if text starts with Latin characters"));
EditorGUILayout.Space();
// Call the base class's OnInspectorGUI
base.OnInspectorGUI();
serializedObject.ApplyModifiedProperties();
// Show helpful notes for first-time users
EditorGUILayout.Space();
EditorGUILayout.HelpBox("This component works best with an ArabicTextMeshProUGUI as the text component.", MessageType.Info);
}
}
}
#endif
\ No newline at end of file
fileFormatVersion: 2
guid: 3f229dce16e154883bb9eca9f8c5ef0c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
This diff is collapsed.
fileFormatVersion: 2
guid: 4d5aca6a679854ad287e5f80e22df0e3
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
using TMPro;
using ALArcade.ArabicTMP;
namespace ALArcade.ArabicTMP.Editor {
[CustomEditor(typeof(ArabicTextMeshPro)), CanEditMultipleObjects]
public class ArabicTextMeshProEditor : TMPro.EditorUtilities.TMP_EditorPanelUI {
// SerializedProperties for Arabic text component
SerializedProperty m_ArabicTextProp;
SerializedProperty m_ShowTashkeelProp;
SerializedProperty m_PreserveNumbersProp;
SerializedProperty m_FixTagsProp;
SerializedProperty m_ForceRTLProp;
protected override void OnEnable() {
base.OnEnable();
// Get references to serialized properties
m_ArabicTextProp = serializedObject.FindProperty("m_ArabicText");
m_ShowTashkeelProp = serializedObject.FindProperty("m_ShowTashkeel");
m_PreserveNumbersProp = serializedObject.FindProperty("m_PreserveNumbers");
m_FixTagsProp = serializedObject.FindProperty("m_FixTags");
m_ForceRTLProp = serializedObject.FindProperty("m_ForceRTL");
}
public override void OnInspectorGUI() {
if (target == null)
return;
serializedObject.Update();
// Draw Arabic text input field
EditorGUILayout.LabelField("Arabic Text", EditorStyles.boldLabel);
EditorGUI.BeginChangeCheck();
string newText = EditorGUILayout.TextArea(m_ArabicTextProp.stringValue, GUILayout.MinHeight(80));
if (EditorGUI.EndChangeCheck()) {
m_ArabicTextProp.stringValue = newText;
// Ensure immediate update in editor
foreach (var obj in targets) {
if (obj is ArabicTextMeshPro arabicText) {
arabicText.arabicText = newText;
}
}
}
// Draw options section
EditorGUILayout.Space();
EditorGUILayout.LabelField("Arabic Options", EditorStyles.boldLabel);
EditorGUILayout.PropertyField(m_ShowTashkeelProp, new GUIContent("Show Diacritics (Tashkeel)", "Display Arabic diacritic marks"));
EditorGUILayout.PropertyField(m_PreserveNumbersProp, new GUIContent("Preserve Numbers", "Keep Western numerals (123) as-is"));
EditorGUILayout.PropertyField(m_FixTagsProp, new GUIContent("Fix Rich Text Tags", "Process rich text tags like <color> properly"));
EditorGUILayout.PropertyField(m_ForceRTLProp, new GUIContent("Force RTL", "Force right-to-left rendering even if text starts with Latin characters"));
EditorGUILayout.Space();
// Draw default TMP properties
EditorGUILayout.LabelField("TextMeshPro Settings", EditorStyles.boldLabel);
// Hide the original text property since we're using our custom one
SerializedProperty prop = serializedObject.FindProperty("m_text");
if (prop != null) {
// Make the TMP text field read-only to prevent editing it directly
GUI.enabled = false;
EditorGUILayout.PropertyField(prop, new GUIContent("Processed Text (Read Only)"));
GUI.enabled = true;
}
DrawMainSettings();
DrawExtraSettings();
serializedObject.ApplyModifiedProperties();
// Show helpful notes for first-time users
EditorGUILayout.Space();
EditorGUILayout.HelpBox("Enter Arabic text in the 'Arabic Text' field above. It will be automatically shaped and displayed correctly.", MessageType.Info);
}
}
}
#endif
\ No newline at end of file
fileFormatVersion: 2
guid: 870f69856c80f48a59fe7ebc1f74dde8
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
using TMPro;
using ALArcade.ArabicTMP;
namespace ALArcade.ArabicTMP.Editor {
[CustomEditor(typeof(ArabicTextMeshProUGUI)), CanEditMultipleObjects]
public class ArabicTextMeshProUGUIEditor : TMPro.EditorUtilities.TMP_EditorPanelUI {
// SerializedProperties for Arabic text component
SerializedProperty m_ArabicTextProp;
SerializedProperty m_ShowTashkeelProp;
SerializedProperty m_PreserveNumbersProp;
SerializedProperty m_FixTagsProp;
SerializedProperty m_ForceRTLProp;
protected override void OnEnable() {
base.OnEnable();
// Get references to serialized properties
m_ArabicTextProp = serializedObject.FindProperty("m_ArabicText");
m_ShowTashkeelProp = serializedObject.FindProperty("m_ShowTashkeel");
m_PreserveNumbersProp = serializedObject.FindProperty("m_PreserveNumbers");
m_FixTagsProp = serializedObject.FindProperty("m_FixTags");
m_ForceRTLProp = serializedObject.FindProperty("m_ForceRTL");
}
public override void OnInspectorGUI() {
if (target == null)
return;
serializedObject.Update();
// Draw Arabic text input field
EditorGUILayout.LabelField("Arabic Text", EditorStyles.boldLabel);
EditorGUI.BeginChangeCheck();
string newText = EditorGUILayout.TextArea(m_ArabicTextProp.stringValue, GUILayout.MinHeight(80));
if (EditorGUI.EndChangeCheck()) {
m_ArabicTextProp.stringValue = newText;
// Ensure immediate update in editor
foreach (var obj in targets) {
if (obj is ArabicTextMeshProUGUI arabicText) {
arabicText.arabicText = newText;
}
}
}
// Draw options section
EditorGUILayout.Space();
EditorGUILayout.LabelField("Arabic Options", EditorStyles.boldLabel);
EditorGUILayout.PropertyField(m_ShowTashkeelProp, new GUIContent("Show Diacritics (Tashkeel)", "Display Arabic diacritic marks"));
EditorGUILayout.PropertyField(m_PreserveNumbersProp, new GUIContent("Preserve Numbers", "Keep Western numerals (123) as-is"));
EditorGUILayout.PropertyField(m_FixTagsProp, new GUIContent("Fix Rich Text Tags", "Process rich text tags like <color> properly"));
EditorGUILayout.PropertyField(m_ForceRTLProp, new GUIContent("Force RTL", "Force right-to-left rendering even if text starts with Latin characters"));
EditorGUILayout.Space();
// Draw default TMP properties
EditorGUILayout.LabelField("TextMeshPro Settings", EditorStyles.boldLabel);
// Hide the original text property since we're using our custom one
SerializedProperty prop = serializedObject.FindProperty("m_text");
if (prop != null) {
// Make the TMP text field read-only to prevent editing it directly
GUI.enabled = false;
EditorGUILayout.PropertyField(prop, new GUIContent("Processed Text (Read Only)"));
GUI.enabled = true;
}
DrawMainSettings();
DrawExtraSettings();
serializedObject.ApplyModifiedProperties();
// Show helpful notes for first-time users
EditorGUILayout.Space();
EditorGUILayout.HelpBox("Enter Arabic text in the 'Arabic Text' field above. It will be automatically shaped and displayed correctly.", MessageType.Info);
}
}
}
#endif
\ No newline at end of file
fileFormatVersion: 2
guid: a0c1457171b094e90af03f669b460a4d
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
This diff is collapsed.
fileFormatVersion: 2
guid: 08904ba87113e4fe19e9996bfbc88242
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
This diff is collapsed.
fileFormatVersion: 2
guid: 26b3aa44ee4404ecaa3e6659fc8e4a86
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
This diff is collapsed.
fileFormatVersion: 2
guid: 052faaac586de48259a63d0c4782560b
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 8404be70184654265930450def6a9037, type: 3}
generateWrapperCode: 0
wrapperCodePath:
wrapperClassName:
wrapperCodeNamespace:
fileFormatVersion: 2
guid: 75e635cae6ff74fe39555f97b784884c
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 31abdccfae8b64678b92674ace1e5b91
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: a50bd9a009c8dfc4ebd88cc8101225a7
labels:
- Tween
- Tweening
- Animation
- HOTween
- Paths
- iTween
- DFTween
- LeanTween
- Ease
- Easing
- Shake
- Punch
- 2DToolkit
- TextMeshPro
- Text
folderAsset: yes
DefaultImporter:
userData:
This diff is collapsed.
fileFormatVersion: 2
guid: 34192c5e0d14aee43a0e86cc4823268a
TextScriptImporter:
userData:
AssetOrigin:
serializedVersion: 1
productId: 27676
packageName: DOTween (HOTween v2)
packageVersion: 1.2.825
assetPath: Assets/Plugins/Demigiant/DOTween/DOTween.XML
uploadId: 862444
fileFormatVersion: 2
guid: 4f007001a22b3d24dae350342c4d19c8
DefaultImporter:
userData:
AssetOrigin:
serializedVersion: 1
productId: 27676
packageName: DOTween (HOTween v2)
packageVersion: 1.2.825
assetPath: Assets/Plugins/Demigiant/DOTween/DOTween.dll.mdb
uploadId: 862444
fileFormatVersion: 2
guid: a811bde74b26b53498b4f6d872b09b6d
PluginImporter:
serializedVersion: 1
iconMap: {}
executionOrder: {}
isPreloaded: 0
platformData:
Any:
enabled: 1
settings: {}
Editor:
enabled: 0
settings:
DefaultValueInitialized: true
WindowsStoreApps:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 27676
packageName: DOTween (HOTween v2)
packageVersion: 1.2.825
assetPath: Assets/Plugins/Demigiant/DOTween/DOTween.dll
uploadId: 862444
fileFormatVersion: 2
guid: b27f58ae5d5c33a4bb2d1f4f34bd036d
folderAsset: yes
DefaultImporter:
userData:
<?xml version="1.0"?>
<doc>
<assembly>
<name>DOTweenEditor</name>
</assembly>
<members>
<member name="T:DG.DOTweenEditor.EditorCompatibilityUtils">
<summary>
Contains compatibility methods taken from DemiEditor (for when DOTween is without it)
</summary>
</member>
<member name="M:DG.DOTweenEditor.EditorCompatibilityUtils.FindObjectOfType``1(System.Boolean)">
<summary>
Warning: some versions of this method don't have the includeInactive parameter so it won't be taken into account
</summary>
</member>
<member name="M:DG.DOTweenEditor.EditorCompatibilityUtils.FindObjectOfType(System.Type,System.Boolean)">
<summary>
Warning: some versions of this method don't have the includeInactive parameter so it won't be taken into account
</summary>
</member>
<member name="M:DG.DOTweenEditor.EditorCompatibilityUtils.FindObjectsOfType``1(System.Boolean)">
<summary>
Warning: some versions of this method don't have the includeInactive parameter so it won't be taken into account
</summary>
</member>
<member name="M:DG.DOTweenEditor.EditorCompatibilityUtils.FindObjectsOfType(System.Type,System.Boolean)">
<summary>
Warning: some versions of this method don't have the includeInactive parameter so it won't be taken into account
</summary>
</member>
<member name="M:DG.DOTweenEditor.DOTweenEditorPreview.Start(System.Action)">
<summary>
Starts the update loop of tween in the editor. Has no effect during playMode.
</summary>
<param name="onPreviewUpdated">Eventual callback to call after every update</param>
</member>
<member name="M:DG.DOTweenEditor.DOTweenEditorPreview.Stop(System.Boolean,System.Boolean)">
<summary>
Stops the update loop and clears the onPreviewUpdated callback.
</summary>
<param name="resetTweenTargets">If TRUE also resets the tweened objects to their original state.
Note that this works by calling Rewind on all tweens, so it will work correctly
only if you have a single tween type per object and it wasn't killed</param>
<param name="clearTweens">If TRUE also kills any cached tween</param>
</member>
<member name="M:DG.DOTweenEditor.DOTweenEditorPreview.PrepareTweenForPreview(DG.Tweening.Tween,System.Boolean,System.Boolean,System.Boolean)">
<summary>
Readies the tween for editor preview by setting its UpdateType to Manual plus eventual extra settings.
</summary>
<param name="t">The tween to ready</param>
<param name="clearCallbacks">If TRUE (recommended) removes all callbacks (OnComplete/Rewind/etc)</param>
<param name="preventAutoKill">If TRUE prevents the tween from being auto-killed at completion</param>
<param name="andPlay">If TRUE starts playing the tween immediately</param>
</member>
<member name="F:DG.DOTweenEditor.EditorVersion.Version">
<summary>Full major version + first minor version (ex: 2018.1f)</summary>
</member>
<member name="F:DG.DOTweenEditor.EditorVersion.MajorVersion">
<summary>Major version</summary>
</member>
<member name="F:DG.DOTweenEditor.EditorVersion.MinorVersion">
<summary>First minor version (ex: in 2018.1 it would be 1)</summary>
</member>
<member name="M:DG.DOTweenEditor.EditorUtils.SetEditorTexture(UnityEngine.Texture2D,UnityEngine.FilterMode,System.Int32)">
<summary>
Checks that the given editor texture use the correct import settings,
and applies them if they're incorrect.
</summary>
</member>
<member name="M:DG.DOTweenEditor.EditorUtils.DOTweenSetupRequired">
<summary>
Returns TRUE if setup is required
</summary>
</member>
<member name="M:DG.DOTweenEditor.EditorUtils.AssetExists(System.String)">
<summary>
Returns TRUE if the file/directory at the given path exists.
</summary>
<param name="adbPath">Path, relative to Unity's project folder</param>
<returns></returns>
</member>
<member name="M:DG.DOTweenEditor.EditorUtils.ADBPathToFullPath(System.String)">
<summary>
Converts the given project-relative path to a full path,
with backward (\) slashes).
</summary>
</member>
<member name="M:DG.DOTweenEditor.EditorUtils.FullPathToADBPath(System.String)">
<summary>
Converts the given full path to a path usable with AssetDatabase methods
(relative to Unity's project folder, and with the correct Unity forward (/) slashes).
</summary>
</member>
<member name="M:DG.DOTweenEditor.EditorUtils.ConnectToSourceAsset``1(System.String,System.Boolean)">
<summary>
Connects to a <see cref="T:UnityEngine.ScriptableObject"/> asset.
If the asset already exists at the given path, loads it and returns it.
Otherwise, either returns NULL or automatically creates it before loading and returning it
(depending on the given parameters).
</summary>
<typeparam name="T">Asset type</typeparam>
<param name="adbFilePath">File path (relative to Unity's project folder)</param>
<param name="createIfMissing">If TRUE and the requested asset doesn't exist, forces its creation</param>
</member>
<member name="M:DG.DOTweenEditor.EditorUtils.GetAssemblyFilePath(System.Reflection.Assembly)">
<summary>
Full path for the given loaded assembly, assembly file included
</summary>
</member>
<member name="M:DG.DOTweenEditor.EditorUtils.AddGlobalDefine(System.String)">
<summary>
Adds the given global define if it's not already present
</summary>
</member>
<member name="M:DG.DOTweenEditor.EditorUtils.RemoveGlobalDefine(System.String)">
<summary>
Removes the given global define if it's present
</summary>
</member>
<member name="M:DG.DOTweenEditor.EditorUtils.HasGlobalDefine(System.String,System.Nullable{UnityEditor.BuildTargetGroup})">
<summary>
Returns TRUE if the given global define is present in all the <see cref="T:UnityEditor.BuildTargetGroup"/>
or only in the given <see cref="T:UnityEditor.BuildTargetGroup"/>, depending on passed parameters.<para/>
</summary>
<param name="id"></param>
<param name="buildTargetGroup"><see cref="T:UnityEditor.BuildTargetGroup"/>to use. Leave NULL to check in all of them.</param>
</member>
<member name="T:DG.DOTweenEditor.DOTweenDefines">
<summary>
Not used as menu item anymore, but as a utility function
</summary>
</member>
<member name="M:DG.DOTweenEditor.DOTweenDefines.RefreshDOTweenSettings(DG.Tweening.Core.DOTweenSettings)">
<summary>Sets the modules bool values to the current defines state</summary>
</member>
<member name="M:DG.DOTweenEditor.DOTweenDefines.RefreshAll">
<summary>Refreshes the enabled state of all defines</summary>
</member>
<member name="M:DG.DOTweenEditor.DOTweenDefines.ApplyGUIEnabledToAll">
<summary>Applies the guiEnabled value state to each define, adding or removing them based on that</summary>
</member>
<member name="M:DG.DOTweenEditor.DOTweenDefines.RemoveAll">
<summary>Removes all DOTween defines including the ones for external assets</summary>
</member>
<member name="M:DG.DOTweenEditor.DOTweenDefines.RemoveAllLegacy">
<summary>Removes all legacy defines</summary>
</member>
<member name="M:DG.DOTweenEditor.DOTweenDefines.Def.Remove">
<summary>Removes the define if present</summary>
</member>
<member name="M:DG.DOTweenEditor.DOTweenDefines.Def.Add">
<summary>Adds the define if it's not already present</summary>
</member>
<member name="F:DG.DOTweenEditor.UnityEditorVersion.Version">
<summary>Full major version + first minor version (ex: 2018.1f)</summary>
</member>
<member name="F:DG.DOTweenEditor.UnityEditorVersion.MajorVersion">
<summary>Major version</summary>
</member>
<member name="F:DG.DOTweenEditor.UnityEditorVersion.MinorVersion">
<summary>First minor version (ex: in 2018.1 it would be 1)</summary>
</member>
</members>
</doc>
fileFormatVersion: 2
guid: 2e2c6224d345d9249acfa6e8ef40bb2d
TextScriptImporter:
userData:
AssetOrigin:
serializedVersion: 1
productId: 27676
packageName: DOTween (HOTween v2)
packageVersion: 1.2.825
assetPath: Assets/Plugins/Demigiant/DOTween/Editor/DOTweenEditor.XML
uploadId: 862444
fileFormatVersion: 2
guid: 8f46310a8b0a8f04a92993c37c713243
DefaultImporter:
userData:
AssetOrigin:
serializedVersion: 1
productId: 27676
packageName: DOTween (HOTween v2)
packageVersion: 1.2.825
assetPath: Assets/Plugins/Demigiant/DOTween/Editor/DOTweenEditor.dll.mdb
uploadId: 862444
fileFormatVersion: 2
guid: 45d5034162d6cf04dbe46da84fc7d074
PluginImporter:
serializedVersion: 1
iconMap: {}
executionOrder: {}
isPreloaded: 0
platformData:
Any:
enabled: 0
settings: {}
Editor:
enabled: 1
settings:
DefaultValueInitialized: true
WindowsStoreApps:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 27676
packageName: DOTween (HOTween v2)
packageVersion: 1.2.825
assetPath: Assets/Plugins/Demigiant/DOTween/Editor/DOTweenEditor.dll
uploadId: 862444
fileFormatVersion: 2
guid: 0034ebae0c2a9344e897db1160d71b6d
folderAsset: yes
DefaultImporter:
userData:
fileFormatVersion: 2
guid: 8da095e39e9b4df488dfd436f81116d6
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 128
textureSettings:
filterMode: 1
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
AssetOrigin:
serializedVersion: 1
productId: 27676
packageName: DOTween (HOTween v2)
packageVersion: 1.2.825
assetPath: Assets/Plugins/Demigiant/DOTween/Editor/Imgs/DOTweenIcon.png
uploadId: 862444
fileFormatVersion: 2
guid: 61521df2e071645488ba3d05e49289ae
timeCreated: 1602317874
licenseType: Store
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 4
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
filterMode: -1
aniso: -1
mipBias: -1
wrapMode: -1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 27676
packageName: DOTween (HOTween v2)
packageVersion: 1.2.825
assetPath: Assets/Plugins/Demigiant/DOTween/Editor/Imgs/DOTweenMiniIcon.png
uploadId: 862444
fileFormatVersion: 2
guid: 7051dba417b3d53409f2918f1ea4938d
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 256
textureSettings:
filterMode: 1
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
AssetOrigin:
serializedVersion: 1
productId: 27676
packageName: DOTween (HOTween v2)
packageVersion: 1.2.825
assetPath: Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Footer.png
uploadId: 862444
fileFormatVersion: 2
guid: 519694efe2bb2914788b151fbd8c01f4
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 1
linearTexture: 0
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
seamlessCubemap: 0
textureFormat: -1
maxTextureSize: 1024
textureSettings:
filterMode: -1
aniso: -1
mipBias: -1
wrapMode: -1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 0
textureType: -1
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
AssetOrigin:
serializedVersion: 1
productId: 27676
packageName: DOTween (HOTween v2)
packageVersion: 1.2.825
assetPath: Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Footer_dark.png
uploadId: 862444
fileFormatVersion: 2
guid: 78a59ca99f8987941adb61f9e14a06a7
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 512
textureSettings:
filterMode: 1
aniso: 1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 2
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
AssetOrigin:
serializedVersion: 1
productId: 27676
packageName: DOTween (HOTween v2)
packageVersion: 1.2.825
assetPath: Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Header.jpg
uploadId: 862444
fileFormatVersion: 2
guid: 143604b8bad857d47a6f7cc7a533e2dc
folderAsset: yes
DefaultImporter:
userData:
// Author: Daniele Giardini - http://www.demigiant.com
// Created: 2018/07/13
#if !DOTWEEN_NOAUDIO // MODULE_MARKER
using System;
using DG.Tweening.Core;
using DG.Tweening.Plugins.Options;
using UnityEngine;
using UnityEngine.Audio; // Required for AudioMixer
#pragma warning disable 1591
namespace DG.Tweening
{
public static class DOTweenModuleAudio
{
#region Shortcuts
#region Audio
/// <summary>Tweens an AudioSource's volume to the given value.
/// Also stores the AudioSource as the tween's target so it can be used for filtered operations</summary>
/// <param name="endValue">The end value to reach (0 to 1)</param><param name="duration">The duration of the tween</param>
public static TweenerCore<float, float, FloatOptions> DOFade(this AudioSource target, float endValue, float duration)
{
if (endValue < 0) endValue = 0;
else if (endValue > 1) endValue = 1;
TweenerCore<float, float, FloatOptions> t = DOTween.To(() => target.volume, x => target.volume = x, endValue, duration);
t.SetTarget(target);
return t;
}
/// <summary>Tweens an AudioSource's pitch to the given value.
/// Also stores the AudioSource as the tween's target so it can be used for filtered operations</summary>
/// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
public static TweenerCore<float, float, FloatOptions> DOPitch(this AudioSource target, float endValue, float duration)
{
TweenerCore<float, float, FloatOptions> t = DOTween.To(() => target.pitch, x => target.pitch = x, endValue, duration);
t.SetTarget(target);
return t;
}
#endregion
#region AudioMixer
/// <summary>Tweens an AudioMixer's exposed float to the given value.
/// Also stores the AudioMixer as the tween's target so it can be used for filtered operations.
/// Note that you need to manually expose a float in an AudioMixerGroup in order to be able to tween it from an AudioMixer.</summary>
/// <param name="floatName">Name given to the exposed float to set</param>
/// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
public static TweenerCore<float, float, FloatOptions> DOSetFloat(this AudioMixer target, string floatName, float endValue, float duration)
{
TweenerCore<float, float, FloatOptions> t = DOTween.To(()=> {
float currVal;
target.GetFloat(floatName, out currVal);
return currVal;
}, x=> target.SetFloat(floatName, x), endValue, duration);
t.SetTarget(target);
return t;
}
#region Operation Shortcuts
/// <summary>
/// Completes all tweens that have this target as a reference
/// (meaning tweens that were started from this target, or that had this target added as an Id)
/// and returns the total number of tweens completed
/// (meaning the tweens that don't have infinite loops and were not already complete)
/// </summary>
/// <param name="withCallbacks">For Sequences only: if TRUE also internal Sequence callbacks will be fired,
/// otherwise they will be ignored</param>
public static int DOComplete(this AudioMixer target, bool withCallbacks = false)
{
return DOTween.Complete(target, withCallbacks);
}
/// <summary>
/// Kills all tweens that have this target as a reference
/// (meaning tweens that were started from this target, or that had this target added as an Id)
/// and returns the total number of tweens killed.
/// </summary>
/// <param name="complete">If TRUE completes the tween before killing it</param>
public static int DOKill(this AudioMixer target, bool complete = false)
{
return DOTween.Kill(target, complete);
}
/// <summary>
/// Flips the direction (backwards if it was going forward or viceversa) of all tweens that have this target as a reference
/// (meaning tweens that were started from this target, or that had this target added as an Id)
/// and returns the total number of tweens flipped.
/// </summary>
public static int DOFlip(this AudioMixer target)
{
return DOTween.Flip(target);
}
/// <summary>
/// Sends to the given position all tweens that have this target as a reference
/// (meaning tweens that were started from this target, or that had this target added as an Id)
/// and returns the total number of tweens involved.
/// </summary>
/// <param name="to">Time position to reach
/// (if higher than the whole tween duration the tween will simply reach its end)</param>
/// <param name="andPlay">If TRUE will play the tween after reaching the given position, otherwise it will pause it</param>
public static int DOGoto(this AudioMixer target, float to, bool andPlay = false)
{
return DOTween.Goto(target, to, andPlay);
}
/// <summary>
/// Pauses all tweens that have this target as a reference
/// (meaning tweens that were started from this target, or that had this target added as an Id)
/// and returns the total number of tweens paused.
/// </summary>
public static int DOPause(this AudioMixer target)
{
return DOTween.Pause(target);
}
/// <summary>
/// Plays all tweens that have this target as a reference
/// (meaning tweens that were started from this target, or that had this target added as an Id)
/// and returns the total number of tweens played.
/// </summary>
public static int DOPlay(this AudioMixer target)
{
return DOTween.Play(target);
}
/// <summary>
/// Plays backwards all tweens that have this target as a reference
/// (meaning tweens that were started from this target, or that had this target added as an Id)
/// and returns the total number of tweens played.
/// </summary>
public static int DOPlayBackwards(this AudioMixer target)
{
return DOTween.PlayBackwards(target);
}
/// <summary>
/// Plays forward all tweens that have this target as a reference
/// (meaning tweens that were started from this target, or that had this target added as an Id)
/// and returns the total number of tweens played.
/// </summary>
public static int DOPlayForward(this AudioMixer target)
{
return DOTween.PlayForward(target);
}
/// <summary>
/// Restarts all tweens that have this target as a reference
/// (meaning tweens that were started from this target, or that had this target added as an Id)
/// and returns the total number of tweens restarted.
/// </summary>
public static int DORestart(this AudioMixer target)
{
return DOTween.Restart(target);
}
/// <summary>
/// Rewinds all tweens that have this target as a reference
/// (meaning tweens that were started from this target, or that had this target added as an Id)
/// and returns the total number of tweens rewinded.
/// </summary>
public static int DORewind(this AudioMixer target)
{
return DOTween.Rewind(target);
}
/// <summary>
/// Smoothly rewinds all tweens that have this target as a reference
/// (meaning tweens that were started from this target, or that had this target added as an Id)
/// and returns the total number of tweens rewinded.
/// </summary>
public static int DOSmoothRewind(this AudioMixer target)
{
return DOTween.SmoothRewind(target);
}
/// <summary>
/// Toggles the paused state (plays if it was paused, pauses if it was playing) of all tweens that have this target as a reference
/// (meaning tweens that were started from this target, or that had this target added as an Id)
/// and returns the total number of tweens involved.
/// </summary>
public static int DOTogglePause(this AudioMixer target)
{
return DOTween.TogglePause(target);
}
#endregion
#endregion
#endregion
}
}
#endif
fileFormatVersion: 2
guid: b766d08851589514b97afb23c6f30a70
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
AssetOrigin:
serializedVersion: 1
productId: 27676
packageName: DOTween (HOTween v2)
packageVersion: 1.2.825
assetPath: Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleAudio.cs
uploadId: 862444
using UnityEngine;
#if DOTWEEN_EPO || EPO_DOTWEEN // MODULE_MARKER
using EPOOutline;
using DG.Tweening.Plugins.Options;
using DG.Tweening;
using DG.Tweening.Core;
namespace DG.Tweening
{
public static class DOTweenModuleEPOOutline
{
public static int DOKill(this SerializedPass target, bool complete)
{
return DOTween.Kill(target, complete);
}
public static TweenerCore<float, float, FloatOptions> DOFloat(this SerializedPass target, string propertyName, float endValue, float duration)
{
var tweener = DOTween.To(() => target.GetFloat(propertyName), x => target.SetFloat(propertyName, x), endValue, duration);
tweener.SetOptions(true).SetTarget(target);
return tweener;
}
public static TweenerCore<Color, Color, ColorOptions> DOFade(this SerializedPass target, string propertyName, float endValue, float duration)
{
var tweener = DOTween.ToAlpha(() => target.GetColor(propertyName), x => target.SetColor(propertyName, x), endValue, duration);
tweener.SetOptions(true).SetTarget(target);
return tweener;
}
public static TweenerCore<Color, Color, ColorOptions> DOColor(this SerializedPass target, string propertyName, Color endValue, float duration)
{
var tweener = DOTween.To(() => target.GetColor(propertyName), x => target.SetColor(propertyName, x), endValue, duration);
tweener.SetOptions(false).SetTarget(target);
return tweener;
}
public static TweenerCore<Vector4, Vector4, VectorOptions> DOVector(this SerializedPass target, string propertyName, Vector4 endValue, float duration)
{
var tweener = DOTween.To(() => target.GetVector(propertyName), x => target.SetVector(propertyName, x), endValue, duration);
tweener.SetOptions(false).SetTarget(target);
return tweener;
}
public static TweenerCore<float, float, FloatOptions> DOFloat(this SerializedPass target, int propertyId, float endValue, float duration)
{
var tweener = DOTween.To(() => target.GetFloat(propertyId), x => target.SetFloat(propertyId, x), endValue, duration);
tweener.SetOptions(true).SetTarget(target);
return tweener;
}
public static TweenerCore<Color, Color, ColorOptions> DOFade(this SerializedPass target, int propertyId, float endValue, float duration)
{
var tweener = DOTween.ToAlpha(() => target.GetColor(propertyId), x => target.SetColor(propertyId, x), endValue, duration);
tweener.SetOptions(true).SetTarget(target);
return tweener;
}
public static TweenerCore<Color, Color, ColorOptions> DOColor(this SerializedPass target, int propertyId, Color endValue, float duration)
{
var tweener = DOTween.To(() => target.GetColor(propertyId), x => target.SetColor(propertyId, x), endValue, duration);
tweener.SetOptions(false).SetTarget(target);
return tweener;
}
public static TweenerCore<Vector4, Vector4, VectorOptions> DOVector(this SerializedPass target, int propertyId, Vector4 endValue, float duration)
{
var tweener = DOTween.To(() => target.GetVector(propertyId), x => target.SetVector(propertyId, x), endValue, duration);
tweener.SetOptions(false).SetTarget(target);
return tweener;
}
public static int DOKill(this Outlinable.OutlineProperties target, bool complete = false)
{
return DOTween.Kill(target, complete);
}
public static int DOKill(this Outliner target, bool complete = false)
{
return DOTween.Kill(target, complete);
}
/// <summary>
/// Controls the alpha (transparency) of the outline
/// </summary>
public static TweenerCore<Color, Color, ColorOptions> DOFade(this Outlinable.OutlineProperties target, float endValue, float duration)
{
var tweener = DOTween.ToAlpha(() => target.Color, x => target.Color = x, endValue, duration);
tweener.SetOptions(true).SetTarget(target);
return tweener;
}
/// <summary>
/// Controls the color of the outline
/// </summary>
public static TweenerCore<Color, Color, ColorOptions> DOColor(this Outlinable.OutlineProperties target, Color endValue, float duration)
{
var tweener = DOTween.To(() => target.Color, x => target.Color = x, endValue, duration);
tweener.SetOptions(false).SetTarget(target);
return tweener;
}
/// <summary>
/// Controls the amount of blur applied to the outline
/// </summary>
public static TweenerCore<float, float, FloatOptions> DOBlurShift(this Outlinable.OutlineProperties target, float endValue, float duration, bool snapping = false)
{
var tweener = DOTween.To(() => target.BlurShift, x => target.BlurShift = x, endValue, duration);
tweener.SetOptions(snapping).SetTarget(target);
return tweener;
}
/// <summary>
/// Controls the amount of blur applied to the outline
/// </summary>
public static TweenerCore<float, float, FloatOptions> DOBlurShift(this Outliner target, float endValue, float duration, bool snapping = false)
{
var tweener = DOTween.To(() => target.BlurShift, x => target.BlurShift = x, endValue, duration);
tweener.SetOptions(snapping).SetTarget(target);
return tweener;
}
/// <summary>
/// Controls the amount of dilation applied to the outline
/// </summary>
public static TweenerCore<float, float, FloatOptions> DODilateShift(this Outlinable.OutlineProperties target, float endValue, float duration, bool snapping = false)
{
var tweener = DOTween.To(() => target.DilateShift, x => target.DilateShift = x, endValue, duration);
tweener.SetOptions(snapping).SetTarget(target);
return tweener;
}
/// <summary>
/// Controls the amount of dilation applied to the outline
/// </summary>
public static TweenerCore<float, float, FloatOptions> DODilateShift(this Outliner target, float endValue, float duration, bool snapping = false)
{
var tweener = DOTween.To(() => target.DilateShift, x => target.DilateShift = x, endValue, duration);
tweener.SetOptions(snapping).SetTarget(target);
return tweener;
}
}
}
#endif
fileFormatVersion: 2
guid: e944529dcaee98f4e9498d80e541d93e
timeCreated: 1602593330
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 27676
packageName: DOTween (HOTween v2)
packageVersion: 1.2.825
assetPath: Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleEPOOutline.cs
uploadId: 862444
fileFormatVersion: 2
guid: dae9aa560b4242648a3affa2bfabc365
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
AssetOrigin:
serializedVersion: 1
productId: 27676
packageName: DOTween (HOTween v2)
packageVersion: 1.2.825
assetPath: Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics.cs
uploadId: 862444
fileFormatVersion: 2
guid: 230fe34542e175245ba74b4659dae700
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
AssetOrigin:
serializedVersion: 1
productId: 27676
packageName: DOTween (HOTween v2)
packageVersion: 1.2.825
assetPath: Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics2D.cs
uploadId: 862444
// Author: Daniele Giardini - http://www.demigiant.com
// Created: 2018/07/13
#if !DOTWEEN_NOSPRITES // MODULE_MARKER
using System;
using UnityEngine;
using DG.Tweening.Core;
using DG.Tweening.Plugins.Options;
#pragma warning disable 1591
namespace DG.Tweening
{
public static class DOTweenModuleSprite
{
#region Shortcuts
#region SpriteRenderer
/// <summary>Tweens a SpriteRenderer's color to the given value.
/// Also stores the spriteRenderer as the tween's target so it can be used for filtered operations</summary>
/// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
public static TweenerCore<Color, Color, ColorOptions> DOColor(this SpriteRenderer target, Color endValue, float duration)
{
TweenerCore<Color, Color, ColorOptions> t = DOTween.To(() => target.color, x => target.color = x, endValue, duration);
t.SetTarget(target);
return t;
}
/// <summary>Tweens a Material's alpha color to the given value.
/// Also stores the spriteRenderer as the tween's target so it can be used for filtered operations</summary>
/// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
public static TweenerCore<Color, Color, ColorOptions> DOFade(this SpriteRenderer target, float endValue, float duration)
{
TweenerCore<Color, Color, ColorOptions> t = DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration);
t.SetTarget(target);
return t;
}
/// <summary>Tweens a SpriteRenderer's color using the given gradient
/// (NOTE 1: only uses the colors of the gradient, not the alphas - NOTE 2: creates a Sequence, not a Tweener).
/// Also stores the image as the tween's target so it can be used for filtered operations</summary>
/// <param name="gradient">The gradient to use</param><param name="duration">The duration of the tween</param>
public static Sequence DOGradientColor(this SpriteRenderer target, Gradient gradient, float duration)
{
Sequence s = DOTween.Sequence();
GradientColorKey[] colors = gradient.colorKeys;
int len = colors.Length;
for (int i = 0; i < len; ++i) {
GradientColorKey c = colors[i];
if (i == 0 && c.time <= 0) {
target.color = c.color;
continue;
}
float colorDuration = i == len - 1
? duration - s.Duration(false) // Verifies that total duration is correct
: duration * (i == 0 ? c.time : c.time - colors[i - 1].time);
s.Append(target.DOColor(c.color, colorDuration).SetEase(Ease.Linear));
}
s.SetTarget(target);
return s;
}
#endregion
#region Blendables
#region SpriteRenderer
/// <summary>Tweens a SpriteRenderer's color to the given value,
/// in a way that allows other DOBlendableColor tweens to work together on the same target,
/// instead than fight each other as multiple DOColor would do.
/// Also stores the SpriteRenderer as the tween's target so it can be used for filtered operations</summary>
/// <param name="endValue">The value to tween to</param><param name="duration">The duration of the tween</param>
public static Tweener DOBlendableColor(this SpriteRenderer target, Color endValue, float duration)
{
endValue = endValue - target.color;
Color to = new Color(0, 0, 0, 0);
return DOTween.To(() => to, x => {
Color diff = x - to;
to = x;
target.color += diff;
}, endValue, duration)
.Blendable().SetTarget(target);
}
#endregion
#endregion
#endregion
}
}
#endif
fileFormatVersion: 2
guid: 188918ab119d93148aa0de59ccf5286b
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
AssetOrigin:
serializedVersion: 1
productId: 27676
packageName: DOTween (HOTween v2)
packageVersion: 1.2.825
assetPath: Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs
uploadId: 862444
fileFormatVersion: 2
guid: a060394c03331a64392db53a10e7f2d1
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
AssetOrigin:
serializedVersion: 1
productId: 27676
packageName: DOTween (HOTween v2)
packageVersion: 1.2.825
assetPath: Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUI.cs
uploadId: 862444
fileFormatVersion: 2
guid: 0c0a6d2683fb84e4193f2aa968264881
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 27676
packageName: DOTween (HOTween v2)
packageVersion: 1.2.825
assetPath: Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUIToolkit.cs
uploadId: 862444
fileFormatVersion: 2
guid: 63c02322328255542995bd02b47b0457
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
AssetOrigin:
serializedVersion: 1
productId: 27676
packageName: DOTween (HOTween v2)
packageVersion: 1.2.825
assetPath: Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUnityVersion.cs
uploadId: 862444
fileFormatVersion: 2
guid: 7bcaf917d9cf5b84090421a5a2abe42e
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
AssetOrigin:
serializedVersion: 1
productId: 27676
packageName: DOTween (HOTween v2)
packageVersion: 1.2.825
assetPath: Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUtils.cs
uploadId: 862444
DOTween and DOTween Pro are copyright (c) 2014-2018 Daniele Giardini - Demigiant
// IMPORTANT!!! /////////////////////////////////////////////
// Upgrading DOTween from versions older than 1.2.000 ///////
// (or DOTween Pro older than 1.0.000) //////////////////////
-------------------------------------------------------------
If you're upgrading your project from a version of DOTween older than 1.2.000 (or DOTween Pro older than 1.0.000) please follow these instructions carefully.
1) Import the new version in the same folder as the previous one, overwriting old files. A lot of errors will appear but don't worry
2) Close and reopen Unity (and your project). This is fundamental: skipping this step will cause a bloodbath
3) Open DOTween's Utility Panel (Tools > Demigiant > DOTween Utility Panel) if it doesn't open automatically, then press "Setup DOTween...": this will run the upgrade setup
4) From the Add/Remove Modules panel that opens, activate/deactivate Modules for Unity systems and for external assets (Pro version only)
// GET STARTED //////////////////////////////////////////////
- After importing a new DOTween update, select DOTween's Utility Panel from the "Tools/Demigiant" menu (if it doesn't open automatically) and press the "Setup DOTween..." button to activate/deactivate Modules. You can also access a Preferences Tab from there to choose default settings for DOTween.
- In your code, add "using DG.Tweening" to each class where you want to use DOTween.
- You're ready to tween. Check out the links below for full documentation and license info.
// LINKS ///////////////////////////////////////////////////////
DOTween website (documentation, examples, etc): http://dotween.demigiant.com
DOTween license: http://dotween.demigiant.com/license.php
DOTween repository (Google Code): https://code.google.com/p/dotween/
Demigiant website (documentation, examples, etc): http://www.demigiant.com
// NOTES //////////////////////////////////////////////////////
- DOTween's Utility Panel can be found under "Tools > Demigiant > DOTween Utility Panel" and also contains other useful options, plus a tab to set DOTween's preferences
\ No newline at end of file
fileFormatVersion: 2
guid: fccfc62abf2eb0a4db614853430894fd
TextScriptImporter:
userData:
AssetOrigin:
serializedVersion: 1
productId: 27676
packageName: DOTween (HOTween v2)
packageVersion: 1.2.825
assetPath: Assets/Plugins/Demigiant/DOTween/readme.txt
uploadId: 862444
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fcf7219bab7fe46a1ad266029b2fee19, type: 3}
m_Name: Readme
m_EditorClassIdentifier:
icon: {fileID: 2800000, guid: 727a75301c3d24613a3ebcec4a24c2c8, type: 3}
title: URP Empty Template
sections:
- heading: Welcome to the Universal Render Pipeline
text: This template includes the settings and assets you need to start creating with the Universal Render Pipeline.
linkText:
url:
- heading: URP Documentation
text:
linkText: Read more about URP
url: https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@latest
- heading: Forums
text:
linkText: Get answers and support
url: https://forum.unity.com/forums/universal-render-pipeline.383/
- heading: Report bugs
text:
linkText: Submit a report
url: https://unity3d.com/unity/qa/bug-reporting
loadedLayout: 1
fileFormatVersion: 2
guid: 8105016687592461f977c054a80ce2f2
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 0
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 068f53a6cb072450690551e57f80ef25
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
This diff is collapsed.
fileFormatVersion: 2
guid: 4bc09d4e41075403aa45e4baa5697b24
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: cbc5027bc6bb84d298597f6af3b5ddce
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
fileFormatVersion: 2
guid: ff15d4662a2694e4a8fb8b145be15321
\ No newline at end of file
This diff is collapsed.
fileFormatVersion: 2
guid: 92dffc13bcf5344afba1caa114783955
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment