init assets and filemgt
This commit is contained in:
Binary file not shown.
|
Before Width: | Height: | Size: 40 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 19 KiB |
@@ -1,64 +0,0 @@
|
||||
%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: 89305aa391d1c5141bbe1628d930a2c5, type: 3}
|
||||
m_Name: VRTutorialContainer
|
||||
m_EditorClassIdentifier:
|
||||
Modified:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
ParentContainer: {fileID: 0}
|
||||
OrderInView: 0
|
||||
BackgroundImage: {fileID: 2800000, guid: 6eaf09dd6cc8a49708bf60691e32bebf, type: 3}
|
||||
Title:
|
||||
m_Untranslated: Virtual Reality Template
|
||||
Subtitle:
|
||||
m_Untranslated:
|
||||
Description:
|
||||
m_Untranslated:
|
||||
ProjectLayout: {fileID: 102900000, guid: eabc9546105bf4accac1fd62a63e88e6, type: 3}
|
||||
Sections:
|
||||
- OrderInView: 0
|
||||
Heading:
|
||||
m_Untranslated: 'Documentation '
|
||||
Text:
|
||||
m_Untranslated:
|
||||
Metadata:
|
||||
Url: https://docs.unity3d.com/Packages/com.unity.template.vr@latest
|
||||
Image: {fileID: 2800000, guid: caa22bb026fa84979ba1be2779739367, type: 3}
|
||||
Tutorial: {fileID: 0}
|
||||
- OrderInView: 2
|
||||
Heading:
|
||||
m_Untranslated: Forums
|
||||
Text:
|
||||
m_Untranslated:
|
||||
Metadata:
|
||||
Url: https://forum.unity.com/forums/ar-vr-xr-discussion.80/
|
||||
Image: {fileID: 2800000, guid: caa22bb026fa84979ba1be2779739367, type: 3}
|
||||
Tutorial: {fileID: 0}
|
||||
- OrderInView: 4
|
||||
Heading:
|
||||
m_Untranslated: Bug Reporting
|
||||
Text:
|
||||
m_Untranslated:
|
||||
Metadata:
|
||||
Url: https://unity3d.com/unity/qa/bug-reporting
|
||||
Image: {fileID: 2800000, guid: caa22bb026fa84979ba1be2779739367, type: 3}
|
||||
Tutorial: {fileID: 0}
|
||||
- OrderInView: 6
|
||||
Heading:
|
||||
m_Untranslated: Template Feedback
|
||||
Text:
|
||||
m_Untranslated:
|
||||
Metadata:
|
||||
Url: 'https://unitysoftware.co1.qualtrics.com/jfe/form/SV_b8GWOIYxi4l6PDE?templatename=vr '
|
||||
Image: {fileID: 2800000, guid: caa22bb026fa84979ba1be2779739367, type: 3}
|
||||
Tutorial: {fileID: 0}
|
||||
@@ -1,36 +0,0 @@
|
||||
%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: 579f019eb5d26450982c6ae506c6c3ff, type: 3}
|
||||
m_Name: VRTutorialProjectSettings
|
||||
m_EditorClassIdentifier:
|
||||
m_WelcomePage: {fileID: 11400000, guid: 3bf5c60804f704e11826afa05a7e2152, type: 2}
|
||||
m_InitialScene: {fileID: 102900000, guid: 9fc0d4010bbf28b4594072e72b8655ab, type: 3}
|
||||
m_InitialCameraSettings:
|
||||
m_CameraMode: 0
|
||||
m_FocusMode: 0
|
||||
m_Orthographic: 0
|
||||
m_Size: 0
|
||||
m_Pivot: {x: 0, y: 0, z: 0}
|
||||
m_Rotation: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_FrameObject:
|
||||
m_SceneGuid:
|
||||
m_GameObjectGuid:
|
||||
m_SerializedComponentType:
|
||||
m_TypeName:
|
||||
m_ComponentIndex: 0
|
||||
m_AssetObject: {fileID: 0}
|
||||
m_Prefab: {fileID: 0}
|
||||
m_Enabled: 0
|
||||
m_RestoreDefaultAssetsOnTutorialReload: 0
|
||||
m_UseLegacyStartupBehavior: 0
|
||||
m_StartupTutorial: {fileID: 0}
|
||||
m_TutorialStyle: {fileID: 11400000, guid: 148a9beb0fa9a4026a837fad3a14e6a4, type: 2}
|
||||
@@ -1,27 +0,0 @@
|
||||
%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: a385a00f03d2f4d1aa06e69dc6fdeea4, type: 3}
|
||||
m_Name: VRTutorialStyle
|
||||
m_EditorClassIdentifier:
|
||||
m_Skin: {fileID: 0}
|
||||
m_OrderedListDelimiter: .
|
||||
m_UnorderedListBullet: "\u2022"
|
||||
m_MaskingColor: {r: 0, g: 0.15686275, b: 0.20784314, a: 0.8}
|
||||
m_HighlightColor: {r: 0, g: 0.7764706, b: 0.8745098, a: 1}
|
||||
m_BlockedInteractionColor: {r: 1, g: 1, b: 1, a: 0.5}
|
||||
m_HighlightThickness: 3
|
||||
m_HighlightAnimationSpeed: 1.5
|
||||
m_HighlightAnimationDelay: 5
|
||||
TextColorMainDarkSkin: {r: 1, g: 1, b: 1, a: 1}
|
||||
TextColorMainLightSkin: {r: 0, g: 0, b: 0, a: 1}
|
||||
TextColorSecondaryDarkSkin: {r: 0.66, g: 0.66, b: 0.66, a: 1}
|
||||
TextColorSecondaryLightSkin: {r: 0.33, g: 0.33, b: 0.33, a: 1}
|
||||
@@ -1,44 +0,0 @@
|
||||
%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: b0885f594ab85594caa28e1a96cbe0d8, type: 3}
|
||||
m_Name: VRTutorialWelcomePage
|
||||
m_EditorClassIdentifier:
|
||||
m_Image: {fileID: 2800000, guid: 11e34d76fce7843be984510eca5c9139, type: 3}
|
||||
m_WindowTitle:
|
||||
m_Untranslated: VR Project Template
|
||||
m_Title:
|
||||
m_Untranslated: Welcome to the VR Template Project!
|
||||
m_Description:
|
||||
m_Untranslated: "Before you begin, go to Edit > Project Settings > XR Plug-in
|
||||
Management and select the platform(s) you plan to deploy to. If you don\u2019t
|
||||
see your platform listed, make sure you have the right build targets installed
|
||||
in Unity Hub. For more information on the content and settings used in this
|
||||
template, you can refer to the documentation <a href=\"https://docs.unity3d.com/2019.4/Documentation/Manual/xr-template-vr.html\">here</a>."
|
||||
m_Buttons:
|
||||
- Text:
|
||||
m_Untranslated: Close
|
||||
Tooltip:
|
||||
m_Untranslated:
|
||||
OnClick:
|
||||
m_PersistentCalls:
|
||||
m_Calls:
|
||||
- m_Target: {fileID: 11400000}
|
||||
m_MethodName: CloseCurrentModalDialog
|
||||
m_Mode: 1
|
||||
m_Arguments:
|
||||
m_ObjectArgument: {fileID: 0}
|
||||
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
|
||||
m_IntArgument: 0
|
||||
m_FloatArgument: 0
|
||||
m_StringArgument:
|
||||
m_BoolArgument: 0
|
||||
m_CallState: 1
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 83b7bbecd9fac4db9824039903a1eea8
|
||||
guid: 2cabd60463067d64490494b77db19899
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
Binary file not shown.
@@ -0,0 +1,4 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 76eb8c3227c13420dbdad96b618ad6f8
|
||||
DefaultImporter:
|
||||
userData:
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4aa865ce879c443d3b970d28b0499121
|
||||
guid: d6631c29777f237439511e9ad558ee20
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
@@ -0,0 +1,75 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &100000
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
serializedVersion: 4
|
||||
m_Component:
|
||||
- 4: {fileID: 400000}
|
||||
- 120: {fileID: 12000000}
|
||||
m_Layer: 0
|
||||
m_Name: GestureOnScreen
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &400000
|
||||
Transform:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 100000}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 0
|
||||
--- !u!120 &12000000
|
||||
LineRenderer:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 100000}
|
||||
m_Enabled: 1
|
||||
m_CastShadows: 1
|
||||
m_ReceiveShadows: 1
|
||||
m_LightmapIndex: 255
|
||||
m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0}
|
||||
m_Materials:
|
||||
- {fileID: 10754, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_SubsetIndices:
|
||||
m_StaticBatchRoot: {fileID: 0}
|
||||
m_UseLightProbes: 0
|
||||
m_LightProbeAnchor: {fileID: 0}
|
||||
m_ScaleInLightmap: 1
|
||||
m_SortingLayerID: 0
|
||||
m_SortingOrder: 0
|
||||
m_Positions:
|
||||
- {x: 0, y: 0, z: 0}
|
||||
- {x: 0, y: 0, z: 1}
|
||||
m_Parameters:
|
||||
startWidth: .100000001
|
||||
endWidth: .100000001
|
||||
m_StartColor:
|
||||
serializedVersion: 2
|
||||
rgba: 4294967295
|
||||
m_EndColor:
|
||||
serializedVersion: 2
|
||||
rgba: 4294967295
|
||||
m_UseWorldSpace: 1
|
||||
--- !u!1001 &100100000
|
||||
Prefab:
|
||||
m_ObjectHideFlags: 1
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
m_TransformParent: {fileID: 0}
|
||||
m_Modifications: []
|
||||
m_RemovedComponents: []
|
||||
m_ParentPrefab: {fileID: 0}
|
||||
m_RootGameObject: {fileID: 100000}
|
||||
m_IsPrefabParent: 1
|
||||
m_IsExploded: 1
|
||||
@@ -0,0 +1,4 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 971129baafd304455a111daa5207b8a1
|
||||
NativeFormatImporter:
|
||||
userData:
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8e9214df9da5b4a17af52339d5d82789
|
||||
guid: add9c31d262552a49b7a77af0f7032c7
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 43e6a097becbc2d4890759e16db9e5e9
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f4439aa673024dd42b71e601c3a911b3
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,76 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<Gesture Name="D~01" Subject="10" InputType="stylus" Speed="MEDIUM" NumPts="69">
|
||||
<Stroke index="1">
|
||||
<Point X="68" Y="55" T="1302126477123" Pressure="128" />
|
||||
<Point X="64" Y="44" T="1302126477123" Pressure="128" />
|
||||
<Point X="60" Y="53" T="1302126477123" Pressure="128" />
|
||||
<Point X="58" Y="60" T="1302126477139" Pressure="128" />
|
||||
<Point X="58" Y="64" T="1302126477139" Pressure="128" />
|
||||
<Point X="57" Y="68" T="1302126477154" Pressure="128" />
|
||||
<Point X="57" Y="72" T="1302126477154" Pressure="128" />
|
||||
<Point X="56" Y="77" T="1302126477154" Pressure="128" />
|
||||
<Point X="56" Y="81" T="1302126477170" Pressure="128" />
|
||||
<Point X="56" Y="86" T="1302126477185" Pressure="128" />
|
||||
<Point X="55" Y="91" T="1302126477185" Pressure="128" />
|
||||
<Point X="55" Y="96" T="1302126477185" Pressure="128" />
|
||||
<Point X="55" Y="101" T="1302126477201" Pressure="128" />
|
||||
<Point X="55" Y="105" T="1302126477201" Pressure="128" />
|
||||
<Point X="54" Y="110" T="1302126477217" Pressure="128" />
|
||||
<Point X="54" Y="114" T="1302126477232" Pressure="128" />
|
||||
<Point X="54" Y="117" T="1302126477232" Pressure="128" />
|
||||
<Point X="54" Y="121" T="1302126477232" Pressure="128" />
|
||||
<Point X="53" Y="124" T="1302126477248" Pressure="128" />
|
||||
<Point X="53" Y="126" T="1302126477248" Pressure="128" />
|
||||
<Point X="53" Y="129" T="1302126477263" Pressure="128" />
|
||||
<Point X="52" Y="130" T="1302126477279" Pressure="128" />
|
||||
<Point X="52" Y="132" T="1302126477279" Pressure="128" />
|
||||
<Point X="52" Y="132" T="1302126477279" Pressure="128" />
|
||||
</Stroke>
|
||||
<Stroke index="2">
|
||||
<Point X="46" Y="91" T="1302126477482" Pressure="128" />
|
||||
<Point X="49" Y="61" T="1302126477482" Pressure="128" />
|
||||
<Point X="54" Y="56" T="1302126477482" Pressure="128" />
|
||||
<Point X="57" Y="54" T="1302126477497" Pressure="128" />
|
||||
<Point X="60" Y="53" T="1302126477497" Pressure="128" />
|
||||
<Point X="64" Y="51" T="1302126477513" Pressure="128" />
|
||||
<Point X="68" Y="50" T="1302126477513" Pressure="128" />
|
||||
<Point X="73" Y="49" T="1302126477529" Pressure="128" />
|
||||
<Point X="78" Y="49" T="1302126477529" Pressure="128" />
|
||||
<Point X="83" Y="49" T="1302126477528" Pressure="128" />
|
||||
<Point X="88" Y="49" T="1302126477544" Pressure="128" />
|
||||
<Point X="94" Y="50" T="1302126477544" Pressure="128" />
|
||||
<Point X="99" Y="52" T="1302126477560" Pressure="128" />
|
||||
<Point X="105" Y="54" T="1302126477575" Pressure="128" />
|
||||
<Point X="110" Y="56" T="1302126477575" Pressure="128" />
|
||||
<Point X="115" Y="59" T="1302126477575" Pressure="128" />
|
||||
<Point X="119" Y="62" T="1302126477591" Pressure="128" />
|
||||
<Point X="123" Y="66" T="1302126477591" Pressure="128" />
|
||||
<Point X="127" Y="70" T="1302126477607" Pressure="128" />
|
||||
<Point X="129" Y="74" T="1302126477607" Pressure="128" />
|
||||
<Point X="131" Y="79" T="1302126477622" Pressure="128" />
|
||||
<Point X="133" Y="84" T="1302126477622" Pressure="128" />
|
||||
<Point X="134" Y="89" T="1302126477638" Pressure="128" />
|
||||
<Point X="134" Y="93" T="1302126477653" Pressure="128" />
|
||||
<Point X="133" Y="98" T="1302126477653" Pressure="128" />
|
||||
<Point X="132" Y="103" T="1302126477653" Pressure="128" />
|
||||
<Point X="131" Y="107" T="1302126477669" Pressure="128" />
|
||||
<Point X="129" Y="112" T="1302126477669" Pressure="128" />
|
||||
<Point X="126" Y="116" T="1302126477685" Pressure="128" />
|
||||
<Point X="122" Y="120" T="1302126477700" Pressure="128" />
|
||||
<Point X="118" Y="124" T="1302126477700" Pressure="128" />
|
||||
<Point X="114" Y="127" T="1302126477700" Pressure="128" />
|
||||
<Point X="109" Y="130" T="1302126477716" Pressure="128" />
|
||||
<Point X="104" Y="133" T="1302126477716" Pressure="128" />
|
||||
<Point X="99" Y="136" T="1302126477731" Pressure="128" />
|
||||
<Point X="93" Y="138" T="1302126477731" Pressure="128" />
|
||||
<Point X="88" Y="140" T="1302126477747" Pressure="128" />
|
||||
<Point X="82" Y="142" T="1302126477747" Pressure="128" />
|
||||
<Point X="77" Y="143" T="1302126477763" Pressure="128" />
|
||||
<Point X="72" Y="144" T="1302126477763" Pressure="128" />
|
||||
<Point X="68" Y="145" T="1302126477763" Pressure="128" />
|
||||
<Point X="63" Y="146" T="1302126477778" Pressure="128" />
|
||||
<Point X="59" Y="146" T="1302126477778" Pressure="128" />
|
||||
<Point X="55" Y="146" T="1302126477794" Pressure="128" />
|
||||
<Point X="55" Y="146" T="1302126477809" Pressure="128" />
|
||||
</Stroke>
|
||||
</Gesture>
|
||||
@@ -0,0 +1,4 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ebe877a3144a24b62bc443122a18189a
|
||||
TextScriptImporter:
|
||||
userData:
|
||||
@@ -0,0 +1,63 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<Gesture Name="H~01" Subject="10" InputType="stylus" Speed="MEDIUM" NumPts="54">
|
||||
<Stroke index="1">
|
||||
<Point X="55" Y="30" T="1302126483082" Pressure="128" />
|
||||
<Point X="49" Y="58" T="1302126483082" Pressure="128" />
|
||||
<Point X="48" Y="68" T="1302126483082" Pressure="128" />
|
||||
<Point X="47" Y="74" T="1302126483082" Pressure="128" />
|
||||
<Point X="47" Y="79" T="1302126483098" Pressure="128" />
|
||||
<Point X="46" Y="84" T="1302126483098" Pressure="128" />
|
||||
<Point X="45" Y="89" T="1302126483113" Pressure="128" />
|
||||
<Point X="45" Y="95" T="1302126483113" Pressure="128" />
|
||||
<Point X="44" Y="100" T="1302126483129" Pressure="128" />
|
||||
<Point X="44" Y="104" T="1302126483129" Pressure="128" />
|
||||
<Point X="43" Y="109" T="1302126483145" Pressure="128" />
|
||||
<Point X="43" Y="113" T="1302126483145" Pressure="128" />
|
||||
<Point X="42" Y="118" T="1302126483145" Pressure="128" />
|
||||
<Point X="42" Y="121" T="1302126483160" Pressure="128" />
|
||||
<Point X="42" Y="125" T="1302126483160" Pressure="128" />
|
||||
<Point X="41" Y="128" T="1302126483176" Pressure="128" />
|
||||
<Point X="41" Y="130" T="1302126483191" Pressure="128" />
|
||||
<Point X="41" Y="133" T="1302126483191" Pressure="128" />
|
||||
<Point X="40" Y="134" T="1302126483191" Pressure="128" />
|
||||
<Point X="40" Y="136" T="1302126483207" Pressure="128" />
|
||||
<Point X="40" Y="136" T="1302126483207" Pressure="128" />
|
||||
</Stroke>
|
||||
<Stroke index="2">
|
||||
<Point X="38" Y="99" T="1302126483441" Pressure="128" />
|
||||
<Point X="59" Y="90" T="1302126483441" Pressure="128" />
|
||||
<Point X="69" Y="88" T="1302126483457" Pressure="128" />
|
||||
<Point X="74" Y="88" T="1302126483472" Pressure="128" />
|
||||
<Point X="79" Y="87" T="1302126483472" Pressure="128" />
|
||||
<Point X="84" Y="86" T="1302126483472" Pressure="128" />
|
||||
<Point X="89" Y="86" T="1302126483488" Pressure="128" />
|
||||
<Point X="94" Y="85" T="1302126483488" Pressure="128" />
|
||||
<Point X="99" Y="84" T="1302126483503" Pressure="128" />
|
||||
<Point X="104" Y="84" T="1302126483503" Pressure="128" />
|
||||
<Point X="108" Y="83" T="1302126483519" Pressure="128" />
|
||||
<Point X="108" Y="83" T="1302126483519" Pressure="128" />
|
||||
</Stroke>
|
||||
<Stroke index="3">
|
||||
<Point X="116" Y="36" T="1302126483815" Pressure="128" />
|
||||
<Point X="116" Y="28" T="1302126483815" Pressure="128" />
|
||||
<Point X="111" Y="59" T="1302126483815" Pressure="128" />
|
||||
<Point X="109" Y="71" T="1302126483815" Pressure="128" />
|
||||
<Point X="108" Y="76" T="1302126483815" Pressure="128" />
|
||||
<Point X="107" Y="82" T="1302126483831" Pressure="128" />
|
||||
<Point X="107" Y="87" T="1302126483847" Pressure="128" />
|
||||
<Point X="106" Y="93" T="1302126483847" Pressure="128" />
|
||||
<Point X="105" Y="98" T="1302126483847" Pressure="128" />
|
||||
<Point X="104" Y="104" T="1302126483862" Pressure="128" />
|
||||
<Point X="103" Y="109" T="1302126483862" Pressure="128" />
|
||||
<Point X="102" Y="114" T="1302126483878" Pressure="128" />
|
||||
<Point X="101" Y="119" T="1302126483893" Pressure="128" />
|
||||
<Point X="100" Y="123" T="1302126483893" Pressure="128" />
|
||||
<Point X="99" Y="128" T="1302126483893" Pressure="128" />
|
||||
<Point X="98" Y="132" T="1302126483909" Pressure="128" />
|
||||
<Point X="97" Y="136" T="1302126483909" Pressure="128" />
|
||||
<Point X="96" Y="139" T="1302126483925" Pressure="128" />
|
||||
<Point X="95" Y="143" T="1302126483925" Pressure="128" />
|
||||
<Point X="94" Y="146" T="1302126483940" Pressure="128" />
|
||||
<Point X="94" Y="146" T="1302126483940" Pressure="128" />
|
||||
</Stroke>
|
||||
</Gesture>
|
||||
@@ -0,0 +1,4 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8467414919406403682db70aee517c33
|
||||
TextScriptImporter:
|
||||
userData:
|
||||
@@ -0,0 +1,85 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<Gesture Name="I~01" Subject="10" InputType="stylus" Speed="MEDIUM" NumPts="76">
|
||||
<Stroke index="1">
|
||||
<Point X="65" Y="14" T="1302126485344" Pressure="128" />
|
||||
<Point X="60" Y="13" T="1302126485344" Pressure="128" />
|
||||
<Point X="78" Y="12" T="1302126485344" Pressure="128" />
|
||||
<Point X="88" Y="12" T="1302126485360" Pressure="128" />
|
||||
<Point X="94" Y="12" T="1302126485360" Pressure="128" />
|
||||
<Point X="100" Y="12" T="1302126485360" Pressure="128" />
|
||||
<Point X="106" Y="12" T="1302126485375" Pressure="128" />
|
||||
<Point X="112" Y="12" T="1302126485391" Pressure="128" />
|
||||
<Point X="118" Y="12" T="1302126485391" Pressure="128" />
|
||||
<Point X="123" Y="12" T="1302126485391" Pressure="128" />
|
||||
<Point X="128" Y="11" T="1302126485407" Pressure="128" />
|
||||
<Point X="133" Y="11" T="1302126485407" Pressure="128" />
|
||||
<Point X="138" Y="11" T="1302126485422" Pressure="128" />
|
||||
<Point X="141" Y="11" T="1302126485438" Pressure="128" />
|
||||
<Point X="144" Y="11" T="1302126485438" Pressure="128" />
|
||||
<Point X="146" Y="11" T="1302126485438" Pressure="128" />
|
||||
<Point X="148" Y="12" T="1302126485453" Pressure="128" />
|
||||
<Point X="149" Y="12" T="1302126485453" Pressure="128" />
|
||||
<Point X="149" Y="12" T="1302126485469" Pressure="128" />
|
||||
</Stroke>
|
||||
<Stroke index="2">
|
||||
<Point X="110" Y="24" T="1302126485750" Pressure="128" />
|
||||
<Point X="105" Y="57" T="1302126485750" Pressure="128" />
|
||||
<Point X="104" Y="64" T="1302126485750" Pressure="128" />
|
||||
<Point X="104" Y="68" T="1302126485750" Pressure="128" />
|
||||
<Point X="103" Y="72" T="1302126485765" Pressure="128" />
|
||||
<Point X="103" Y="76" T="1302126485781" Pressure="128" />
|
||||
<Point X="103" Y="80" T="1302126485781" Pressure="128" />
|
||||
<Point X="103" Y="84" T="1302126485781" Pressure="128" />
|
||||
<Point X="103" Y="87" T="1302126485797" Pressure="128" />
|
||||
<Point X="103" Y="91" T="1302126485797" Pressure="128" />
|
||||
<Point X="103" Y="94" T="1302126485812" Pressure="128" />
|
||||
<Point X="102" Y="97" T="1302126485828" Pressure="128" />
|
||||
<Point X="102" Y="100" T="1302126485828" Pressure="128" />
|
||||
<Point X="102" Y="103" T="1302126485828" Pressure="128" />
|
||||
<Point X="102" Y="105" T="1302126485843" Pressure="128" />
|
||||
<Point X="101" Y="108" T="1302126485843" Pressure="128" />
|
||||
<Point X="101" Y="111" T="1302126485859" Pressure="128" />
|
||||
<Point X="101" Y="113" T="1302126485859" Pressure="128" />
|
||||
<Point X="101" Y="115" T="1302126485875" Pressure="128" />
|
||||
<Point X="100" Y="118" T="1302126485875" Pressure="128" />
|
||||
<Point X="100" Y="120" T="1302126485890" Pressure="128" />
|
||||
<Point X="100" Y="122" T="1302126485906" Pressure="128" />
|
||||
<Point X="99" Y="124" T="1302126485906" Pressure="128" />
|
||||
<Point X="99" Y="126" T="1302126485906" Pressure="128" />
|
||||
<Point X="99" Y="128" T="1302126485921" Pressure="128" />
|
||||
<Point X="99" Y="128" T="1302126485921" Pressure="128" />
|
||||
</Stroke>
|
||||
<Stroke index="3">
|
||||
<Point X="80" Y="144" T="1302126486187" Pressure="128" />
|
||||
<Point X="64" Y="145" T="1302126486187" Pressure="128" />
|
||||
<Point X="56" Y="144" T="1302126486187" Pressure="128" />
|
||||
<Point X="58" Y="144" T="1302126486187" Pressure="128" />
|
||||
<Point X="63" Y="143" T="1302126486187" Pressure="128" />
|
||||
<Point X="67" Y="143" T="1302126486202" Pressure="128" />
|
||||
<Point X="71" Y="143" T="1302126486202" Pressure="128" />
|
||||
<Point X="76" Y="142" T="1302126486202" Pressure="128" />
|
||||
<Point X="82" Y="142" T="1302126486218" Pressure="128" />
|
||||
<Point X="88" Y="141" T="1302126486218" Pressure="128" />
|
||||
<Point X="95" Y="140" T="1302126486233" Pressure="128" />
|
||||
<Point X="102" Y="140" T="1302126486249" Pressure="128" />
|
||||
<Point X="109" Y="139" T="1302126486249" Pressure="128" />
|
||||
<Point X="117" Y="138" T="1302126486249" Pressure="128" />
|
||||
<Point X="124" Y="137" T="1302126486265" Pressure="128" />
|
||||
<Point X="131" Y="137" T="1302126486265" Pressure="128" />
|
||||
<Point X="138" Y="136" T="1302126486280" Pressure="128" />
|
||||
<Point X="145" Y="135" T="1302126486296" Pressure="128" />
|
||||
<Point X="151" Y="135" T="1302126486296" Pressure="128" />
|
||||
<Point X="157" Y="134" T="1302126486296" Pressure="128" />
|
||||
<Point X="162" Y="134" T="1302126486311" Pressure="128" />
|
||||
<Point X="166" Y="134" T="1302126486311" Pressure="128" />
|
||||
<Point X="170" Y="133" T="1302126486327" Pressure="128" />
|
||||
<Point X="174" Y="133" T="1302126486327" Pressure="128" />
|
||||
<Point X="177" Y="133" T="1302126486343" Pressure="128" />
|
||||
<Point X="179" Y="133" T="1302126486343" Pressure="128" />
|
||||
<Point X="181" Y="133" T="1302126486358" Pressure="128" />
|
||||
<Point X="182" Y="133" T="1302126486358" Pressure="128" />
|
||||
<Point X="183" Y="133" T="1302126486358" Pressure="128" />
|
||||
<Point X="184" Y="133" T="1302126486374" Pressure="128" />
|
||||
<Point X="184" Y="133" T="1302126486405" Pressure="128" />
|
||||
</Stroke>
|
||||
</Gesture>
|
||||
@@ -0,0 +1,4 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f2e2612249e934989ba4eba4b6861c85
|
||||
TextScriptImporter:
|
||||
userData:
|
||||
@@ -0,0 +1,70 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<Gesture Name="N~01" Subject="10" InputType="stylus" Speed="MEDIUM" NumPts="61">
|
||||
<Stroke index="1">
|
||||
<Point X="56" Y="54" T="1302126475064" Pressure="128" />
|
||||
<Point X="53" Y="53" T="1302126475064" Pressure="128" />
|
||||
<Point X="52" Y="87" T="1302126475079" Pressure="128" />
|
||||
<Point X="51" Y="91" T="1302126475079" Pressure="128" />
|
||||
<Point X="51" Y="95" T="1302126475095" Pressure="128" />
|
||||
<Point X="51" Y="98" T="1302126475095" Pressure="128" />
|
||||
<Point X="51" Y="102" T="1302126475095" Pressure="128" />
|
||||
<Point X="50" Y="106" T="1302126475111" Pressure="128" />
|
||||
<Point X="50" Y="109" T="1302126475111" Pressure="128" />
|
||||
<Point X="49" Y="112" T="1302126475126" Pressure="128" />
|
||||
<Point X="48" Y="115" T="1302126475142" Pressure="128" />
|
||||
<Point X="47" Y="117" T="1302126475142" Pressure="128" />
|
||||
<Point X="45" Y="119" T="1302126475142" Pressure="128" />
|
||||
<Point X="44" Y="121" T="1302126475157" Pressure="128" />
|
||||
<Point X="43" Y="122" T="1302126475173" Pressure="128" />
|
||||
<Point X="42" Y="123" T="1302126475173" Pressure="128" />
|
||||
<Point X="41" Y="123" T="1302126475173" Pressure="128" />
|
||||
<Point X="40" Y="123" T="1302126475189" Pressure="128" />
|
||||
<Point X="40" Y="123" T="1302126475189" Pressure="128" />
|
||||
</Stroke>
|
||||
<Stroke index="2">
|
||||
<Point X="41" Y="66" T="1302126475438" Pressure="128" />
|
||||
<Point X="62" Y="76" T="1302126475438" Pressure="128" />
|
||||
<Point X="70" Y="81" T="1302126475454" Pressure="128" />
|
||||
<Point X="74" Y="84" T="1302126475454" Pressure="128" />
|
||||
<Point X="79" Y="87" T="1302126475454" Pressure="128" />
|
||||
<Point X="83" Y="90" T="1302126475469" Pressure="128" />
|
||||
<Point X="88" Y="93" T="1302126475469" Pressure="128" />
|
||||
<Point X="92" Y="97" T="1302126475485" Pressure="128" />
|
||||
<Point X="96" Y="100" T="1302126475485" Pressure="128" />
|
||||
<Point X="100" Y="103" T="1302126475501" Pressure="128" />
|
||||
<Point X="104" Y="107" T="1302126475501" Pressure="128" />
|
||||
<Point X="108" Y="110" T="1302126475516" Pressure="128" />
|
||||
<Point X="112" Y="113" T="1302126475516" Pressure="128" />
|
||||
<Point X="116" Y="116" T="1302126475516" Pressure="128" />
|
||||
<Point X="119" Y="118" T="1302126475532" Pressure="128" />
|
||||
<Point X="122" Y="120" T="1302126475532" Pressure="128" />
|
||||
<Point X="125" Y="122" T="1302126475547" Pressure="128" />
|
||||
<Point X="127" Y="124" T="1302126475563" Pressure="128" />
|
||||
<Point X="129" Y="125" T="1302126475563" Pressure="128" />
|
||||
<Point X="131" Y="126" T="1302126475563" Pressure="128" />
|
||||
<Point X="133" Y="126" T="1302126475579" Pressure="128" />
|
||||
<Point X="133" Y="126" T="1302126475579" Pressure="128" />
|
||||
</Stroke>
|
||||
<Stroke index="3">
|
||||
<Point X="124" Y="29" T="1302126475906" Pressure="128" />
|
||||
<Point X="126" Y="23" T="1302126475906" Pressure="128" />
|
||||
<Point X="125" Y="51" T="1302126475922" Pressure="128" />
|
||||
<Point X="124" Y="60" T="1302126475922" Pressure="128" />
|
||||
<Point X="124" Y="65" T="1302126475922" Pressure="128" />
|
||||
<Point X="123" Y="70" T="1302126475937" Pressure="128" />
|
||||
<Point X="123" Y="75" T="1302126475953" Pressure="128" />
|
||||
<Point X="123" Y="80" T="1302126475953" Pressure="128" />
|
||||
<Point X="122" Y="86" T="1302126475969" Pressure="128" />
|
||||
<Point X="122" Y="91" T="1302126475969" Pressure="128" />
|
||||
<Point X="121" Y="96" T="1302126475984" Pressure="128" />
|
||||
<Point X="121" Y="100" T="1302126475984" Pressure="128" />
|
||||
<Point X="121" Y="105" T="1302126475984" Pressure="128" />
|
||||
<Point X="120" Y="109" T="1302126476000" Pressure="128" />
|
||||
<Point X="120" Y="113" T="1302126476000" Pressure="128" />
|
||||
<Point X="119" Y="117" T="1302126476015" Pressure="128" />
|
||||
<Point X="119" Y="121" T="1302126476031" Pressure="128" />
|
||||
<Point X="118" Y="124" T="1302126476031" Pressure="128" />
|
||||
<Point X="118" Y="127" T="1302126476031" Pressure="128" />
|
||||
<Point X="118" Y="127" T="1302126476047" Pressure="128" />
|
||||
</Stroke>
|
||||
</Gesture>
|
||||
@@ -0,0 +1,4 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0bcff93ff7f3942cca925493d8a87c3e
|
||||
TextScriptImporter:
|
||||
userData:
|
||||
@@ -0,0 +1,71 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<Gesture Name="P~01" Subject="10" InputType="stylus" Speed="MEDIUM" NumPts="64">
|
||||
<Stroke index="1">
|
||||
<Point X="69" Y="19" T="1302126479603" Pressure="128" />
|
||||
<Point X="70" Y="34" T="1302126479603" Pressure="128" />
|
||||
<Point X="71" Y="46" T="1302126479603" Pressure="128" />
|
||||
<Point X="71" Y="55" T="1302126479603" Pressure="128" />
|
||||
<Point X="71" Y="60" T="1302126479619" Pressure="128" />
|
||||
<Point X="70" Y="65" T="1302126479619" Pressure="128" />
|
||||
<Point X="70" Y="70" T="1302126479635" Pressure="128" />
|
||||
<Point X="69" Y="76" T="1302126479635" Pressure="128" />
|
||||
<Point X="69" Y="81" T="1302126479635" Pressure="128" />
|
||||
<Point X="69" Y="86" T="1302126479650" Pressure="128" />
|
||||
<Point X="68" Y="91" T="1302126479666" Pressure="128" />
|
||||
<Point X="68" Y="95" T="1302126479666" Pressure="128" />
|
||||
<Point X="67" Y="100" T="1302126479666" Pressure="128" />
|
||||
<Point X="67" Y="104" T="1302126479681" Pressure="128" />
|
||||
<Point X="66" Y="109" T="1302126479697" Pressure="128" />
|
||||
<Point X="66" Y="112" T="1302126479697" Pressure="128" />
|
||||
<Point X="65" Y="116" T="1302126479697" Pressure="128" />
|
||||
<Point X="65" Y="119" T="1302126479713" Pressure="128" />
|
||||
<Point X="64" Y="122" T="1302126479713" Pressure="128" />
|
||||
<Point X="63" Y="125" T="1302126479728" Pressure="128" />
|
||||
<Point X="62" Y="128" T="1302126479744" Pressure="128" />
|
||||
<Point X="61" Y="130" T="1302126479744" Pressure="128" />
|
||||
<Point X="60" Y="132" T="1302126479744" Pressure="128" />
|
||||
<Point X="59" Y="134" T="1302126479759" Pressure="128" />
|
||||
<Point X="58" Y="135" T="1302126479759" Pressure="128" />
|
||||
<Point X="58" Y="135" T="1302126479775" Pressure="128" />
|
||||
</Stroke>
|
||||
<Stroke index="2">
|
||||
<Point X="68" Y="56" T="1302126480040" Pressure="128" />
|
||||
<Point X="72" Y="27" T="1302126480040" Pressure="128" />
|
||||
<Point X="77" Y="24" T="1302126480056" Pressure="128" />
|
||||
<Point X="81" Y="23" T="1302126480056" Pressure="128" />
|
||||
<Point X="84" Y="22" T="1302126480056" Pressure="128" />
|
||||
<Point X="89" Y="21" T="1302126480071" Pressure="128" />
|
||||
<Point X="93" Y="21" T="1302126480087" Pressure="128" />
|
||||
<Point X="98" Y="21" T="1302126480087" Pressure="128" />
|
||||
<Point X="102" Y="21" T="1302126480087" Pressure="128" />
|
||||
<Point X="107" Y="22" T="1302126480103" Pressure="128" />
|
||||
<Point X="112" Y="23" T="1302126480103" Pressure="128" />
|
||||
<Point X="117" Y="25" T="1302126480118" Pressure="128" />
|
||||
<Point X="121" Y="27" T="1302126480134" Pressure="128" />
|
||||
<Point X="125" Y="29" T="1302126480134" Pressure="128" />
|
||||
<Point X="129" Y="31" T="1302126480134" Pressure="128" />
|
||||
<Point X="132" Y="34" T="1302126480149" Pressure="128" />
|
||||
<Point X="135" Y="37" T="1302126480149" Pressure="128" />
|
||||
<Point X="137" Y="40" T="1302126480165" Pressure="128" />
|
||||
<Point X="138" Y="43" T="1302126480181" Pressure="128" />
|
||||
<Point X="139" Y="47" T="1302126480181" Pressure="128" />
|
||||
<Point X="139" Y="50" T="1302126480181" Pressure="128" />
|
||||
<Point X="139" Y="54" T="1302126480196" Pressure="128" />
|
||||
<Point X="137" Y="57" T="1302126480212" Pressure="128" />
|
||||
<Point X="136" Y="60" T="1302126480212" Pressure="128" />
|
||||
<Point X="133" Y="64" T="1302126480212" Pressure="128" />
|
||||
<Point X="130" Y="67" T="1302126480227" Pressure="128" />
|
||||
<Point X="126" Y="70" T="1302126480227" Pressure="128" />
|
||||
<Point X="121" Y="73" T="1302126480243" Pressure="128" />
|
||||
<Point X="117" Y="75" T="1302126480243" Pressure="128" />
|
||||
<Point X="112" Y="78" T="1302126480244" Pressure="128" />
|
||||
<Point X="107" Y="79" T="1302126480259" Pressure="128" />
|
||||
<Point X="102" Y="81" T="1302126480274" Pressure="128" />
|
||||
<Point X="98" Y="82" T="1302126480274" Pressure="128" />
|
||||
<Point X="94" Y="83" T="1302126480290" Pressure="128" />
|
||||
<Point X="91" Y="83" T="1302126480290" Pressure="128" />
|
||||
<Point X="88" Y="84" T="1302126480290" Pressure="128" />
|
||||
<Point X="85" Y="84" T="1302126480305" Pressure="128" />
|
||||
<Point X="85" Y="84" T="1302126480321" Pressure="128" />
|
||||
</Stroke>
|
||||
</Gesture>
|
||||
@@ -0,0 +1,4 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3d7a0dff3da8147a0b99046091d540b4
|
||||
TextScriptImporter:
|
||||
userData:
|
||||
@@ -0,0 +1,63 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<Gesture Name="T~01" Subject="10" InputType="stylus" Speed="MEDIUM" NumPts="56">
|
||||
<Stroke index="1">
|
||||
<Point X="60" Y="13" T="1302126473535" Pressure="128" />
|
||||
<Point X="46" Y="14" T="1302126473535" Pressure="128" />
|
||||
<Point X="51" Y="14" T="1302126473535" Pressure="128" />
|
||||
<Point X="57" Y="14" T="1302126473551" Pressure="128" />
|
||||
<Point X="61" Y="14" T="1302126473551" Pressure="128" />
|
||||
<Point X="65" Y="13" T="1302126473551" Pressure="128" />
|
||||
<Point X="70" Y="13" T="1302126473566" Pressure="128" />
|
||||
<Point X="76" Y="13" T="1302126473566" Pressure="128" />
|
||||
<Point X="81" Y="12" T="1302126473582" Pressure="128" />
|
||||
<Point X="88" Y="12" T="1302126473597" Pressure="128" />
|
||||
<Point X="94" Y="11" T="1302126473597" Pressure="128" />
|
||||
<Point X="101" Y="11" T="1302126473597" Pressure="128" />
|
||||
<Point X="108" Y="10" T="1302126473613" Pressure="128" />
|
||||
<Point X="114" Y="10" T="1302126473613" Pressure="128" />
|
||||
<Point X="121" Y="9" T="1302126473629" Pressure="128" />
|
||||
<Point X="126" Y="9" T="1302126473629" Pressure="128" />
|
||||
<Point X="132" Y="8" T="1302126473628" Pressure="128" />
|
||||
<Point X="137" Y="8" T="1302126473644" Pressure="128" />
|
||||
<Point X="141" Y="8" T="1302126473660" Pressure="128" />
|
||||
<Point X="145" Y="7" T="1302126473660" Pressure="128" />
|
||||
<Point X="148" Y="7" T="1302126473660" Pressure="128" />
|
||||
<Point X="150" Y="7" T="1302126473675" Pressure="128" />
|
||||
<Point X="152" Y="7" T="1302126473675" Pressure="128" />
|
||||
<Point X="153" Y="7" T="1302126473691" Pressure="128" />
|
||||
<Point X="153" Y="7" T="1302126473707" Pressure="128" />
|
||||
</Stroke>
|
||||
<Stroke index="2">
|
||||
<Point X="106" Y="15" T="1302126473972" Pressure="128" />
|
||||
<Point X="101" Y="19" T="1302126473972" Pressure="128" />
|
||||
<Point X="104" Y="43" T="1302126473972" Pressure="128" />
|
||||
<Point X="104" Y="51" T="1302126473987" Pressure="128" />
|
||||
<Point X="104" Y="55" T="1302126473987" Pressure="128" />
|
||||
<Point X="104" Y="59" T="1302126473987" Pressure="128" />
|
||||
<Point X="104" Y="64" T="1302126474003" Pressure="128" />
|
||||
<Point X="104" Y="68" T="1302126474003" Pressure="128" />
|
||||
<Point X="104" Y="73" T="1302126474019" Pressure="128" />
|
||||
<Point X="104" Y="77" T="1302126474019" Pressure="128" />
|
||||
<Point X="104" Y="82" T="1302126474019" Pressure="128" />
|
||||
<Point X="104" Y="86" T="1302126474034" Pressure="128" />
|
||||
<Point X="104" Y="91" T="1302126474050" Pressure="128" />
|
||||
<Point X="103" Y="95" T="1302126474050" Pressure="128" />
|
||||
<Point X="103" Y="99" T="1302126474050" Pressure="128" />
|
||||
<Point X="102" Y="104" T="1302126474065" Pressure="128" />
|
||||
<Point X="102" Y="108" T="1302126474081" Pressure="128" />
|
||||
<Point X="102" Y="112" T="1302126474081" Pressure="128" />
|
||||
<Point X="101" Y="116" T="1302126474097" Pressure="128" />
|
||||
<Point X="101" Y="120" T="1302126474097" Pressure="128" />
|
||||
<Point X="100" Y="124" T="1302126474097" Pressure="128" />
|
||||
<Point X="100" Y="127" T="1302126474112" Pressure="128" />
|
||||
<Point X="100" Y="131" T="1302126474128" Pressure="128" />
|
||||
<Point X="100" Y="134" T="1302126474128" Pressure="128" />
|
||||
<Point X="99" Y="137" T="1302126474128" Pressure="128" />
|
||||
<Point X="99" Y="139" T="1302126474143" Pressure="128" />
|
||||
<Point X="99" Y="142" T="1302126474143" Pressure="128" />
|
||||
<Point X="99" Y="144" T="1302126474159" Pressure="128" />
|
||||
<Point X="98" Y="146" T="1302126474175" Pressure="128" />
|
||||
<Point X="98" Y="147" T="1302126474175" Pressure="128" />
|
||||
<Point X="98" Y="147" T="1302126474175" Pressure="128" />
|
||||
</Stroke>
|
||||
</Gesture>
|
||||
@@ -0,0 +1,4 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 76e8ca433f690498685aa493d7dc25df
|
||||
TextScriptImporter:
|
||||
userData:
|
||||
@@ -0,0 +1,51 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<Gesture Name="X~01" Subject="10" InputType="stylus" Speed="MEDIUM" NumPts="44">
|
||||
<Stroke index="1">
|
||||
<Point X="103" Y="40" T="1302126481460" Pressure="128" />
|
||||
<Point X="108" Y="32" T="1302126481460" Pressure="128" />
|
||||
<Point X="96" Y="51" T="1302126481460" Pressure="128" />
|
||||
<Point X="90" Y="61" T="1302126481460" Pressure="128" />
|
||||
<Point X="87" Y="65" T="1302126481475" Pressure="128" />
|
||||
<Point X="83" Y="70" T="1302126481475" Pressure="128" />
|
||||
<Point X="80" Y="75" T="1302126481491" Pressure="128" />
|
||||
<Point X="76" Y="80" T="1302126481491" Pressure="128" />
|
||||
<Point X="73" Y="84" T="1302126481491" Pressure="128" />
|
||||
<Point X="69" Y="89" T="1302126481507" Pressure="128" />
|
||||
<Point X="66" Y="93" T="1302126481522" Pressure="128" />
|
||||
<Point X="63" Y="98" T="1302126481522" Pressure="128" />
|
||||
<Point X="60" Y="101" T="1302126481522" Pressure="128" />
|
||||
<Point X="57" Y="105" T="1302126481538" Pressure="128" />
|
||||
<Point X="54" Y="108" T="1302126481538" Pressure="128" />
|
||||
<Point X="52" Y="111" T="1302126481553" Pressure="128" />
|
||||
<Point X="50" Y="114" T="1302126481569" Pressure="128" />
|
||||
<Point X="48" Y="116" T="1302126481569" Pressure="128" />
|
||||
<Point X="46" Y="118" T="1302126481569" Pressure="128" />
|
||||
<Point X="45" Y="119" T="1302126481585" Pressure="128" />
|
||||
<Point X="45" Y="119" T="1302126481600" Pressure="128" />
|
||||
</Stroke>
|
||||
<Stroke index="2">
|
||||
<Point X="49" Y="53" T="1302126481881" Pressure="128" />
|
||||
<Point X="68" Y="56" T="1302126481882" Pressure="128" />
|
||||
<Point X="75" Y="62" T="1302126481882" Pressure="128" />
|
||||
<Point X="79" Y="65" T="1302126481897" Pressure="128" />
|
||||
<Point X="83" Y="68" T="1302126481912" Pressure="128" />
|
||||
<Point X="87" Y="71" T="1302126481912" Pressure="128" />
|
||||
<Point X="91" Y="75" T="1302126481928" Pressure="128" />
|
||||
<Point X="96" Y="79" T="1302126481928" Pressure="128" />
|
||||
<Point X="100" Y="83" T="1302126481943" Pressure="128" />
|
||||
<Point X="105" Y="87" T="1302126481943" Pressure="128" />
|
||||
<Point X="109" Y="91" T="1302126481943" Pressure="128" />
|
||||
<Point X="114" Y="94" T="1302126481959" Pressure="128" />
|
||||
<Point X="119" Y="98" T="1302126481959" Pressure="128" />
|
||||
<Point X="124" Y="102" T="1302126481975" Pressure="128" />
|
||||
<Point X="128" Y="106" T="1302126481990" Pressure="128" />
|
||||
<Point X="133" Y="109" T="1302126481990" Pressure="128" />
|
||||
<Point X="137" Y="112" T="1302126481990" Pressure="128" />
|
||||
<Point X="141" Y="116" T="1302126482006" Pressure="128" />
|
||||
<Point X="145" Y="118" T="1302126482006" Pressure="128" />
|
||||
<Point X="148" Y="121" T="1302126482021" Pressure="128" />
|
||||
<Point X="151" Y="123" T="1302126482037" Pressure="128" />
|
||||
<Point X="153" Y="126" T="1302126482037" Pressure="128" />
|
||||
<Point X="153" Y="126" T="1302126482037" Pressure="128" />
|
||||
</Stroke>
|
||||
</Gesture>
|
||||
@@ -0,0 +1,4 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 33c458013c8974ca88f4b104ca7c0ea4
|
||||
TextScriptImporter:
|
||||
userData:
|
||||
+86
@@ -0,0 +1,86 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<Gesture Name="arrowhead~01" Subject="10" InputType="stylus" Speed="MEDIUM" NumPts="79">
|
||||
<Stroke index="1">
|
||||
<Point X="40" Y="82" T="1302126506966" Pressure="128" />
|
||||
<Point X="35" Y="81" T="1302126506966" Pressure="128" />
|
||||
<Point X="50" Y="82" T="1302126506966" Pressure="128" />
|
||||
<Point X="60" Y="82" T="1302126506966" Pressure="128" />
|
||||
<Point X="65" Y="82" T="1302126506966" Pressure="128" />
|
||||
<Point X="71" Y="82" T="1302126506981" Pressure="128" />
|
||||
<Point X="77" Y="82" T="1302126506997" Pressure="128" />
|
||||
<Point X="83" Y="82" T="1302126506997" Pressure="128" />
|
||||
<Point X="90" Y="82" T="1302126506997" Pressure="128" />
|
||||
<Point X="96" Y="81" T="1302126507013" Pressure="128" />
|
||||
<Point X="102" Y="81" T="1302126507013" Pressure="128" />
|
||||
<Point X="108" Y="81" T="1302126507028" Pressure="128" />
|
||||
<Point X="114" Y="81" T="1302126507044" Pressure="128" />
|
||||
<Point X="119" Y="81" T="1302126507044" Pressure="128" />
|
||||
<Point X="123" Y="81" T="1302126507044" Pressure="128" />
|
||||
<Point X="127" Y="80" T="1302126507059" Pressure="128" />
|
||||
<Point X="130" Y="80" T="1302126507059" Pressure="128" />
|
||||
<Point X="133" Y="80" T="1302126507075" Pressure="128" />
|
||||
<Point X="135" Y="80" T="1302126507075" Pressure="128" />
|
||||
<Point X="136" Y="80" T="1302126507091" Pressure="128" />
|
||||
<Point X="137" Y="80" T="1302126507091" Pressure="128" />
|
||||
<Point X="138" Y="80" T="1302126507106" Pressure="128" />
|
||||
<Point X="138" Y="79" T="1302126507106" Pressure="128" />
|
||||
<Point X="138" Y="79" T="1302126507122" Pressure="128" />
|
||||
</Stroke>
|
||||
<Stroke index="2">
|
||||
<Point X="102" Y="47" T="1302126507512" Pressure="128" />
|
||||
<Point X="90" Y="43" T="1302126507512" Pressure="128" />
|
||||
<Point X="102" Y="49" T="1302126507512" Pressure="128" />
|
||||
<Point X="109" Y="51" T="1302126507512" Pressure="128" />
|
||||
<Point X="113" Y="52" T="1302126507527" Pressure="128" />
|
||||
<Point X="116" Y="53" T="1302126507527" Pressure="128" />
|
||||
<Point X="120" Y="54" T="1302126507543" Pressure="128" />
|
||||
<Point X="124" Y="56" T="1302126507543" Pressure="128" />
|
||||
<Point X="128" Y="57" T="1302126507559" Pressure="128" />
|
||||
<Point X="131" Y="58" T="1302126507559" Pressure="128" />
|
||||
<Point X="135" Y="59" T="1302126507574" Pressure="128" />
|
||||
<Point X="138" Y="59" T="1302126507574" Pressure="128" />
|
||||
<Point X="141" Y="60" T="1302126507574" Pressure="128" />
|
||||
<Point X="144" Y="61" T="1302126507590" Pressure="128" />
|
||||
<Point X="147" Y="61" T="1302126507590" Pressure="128" />
|
||||
<Point X="149" Y="62" T="1302126507605" Pressure="128" />
|
||||
<Point X="151" Y="63" T="1302126507621" Pressure="128" />
|
||||
<Point X="153" Y="63" T="1302126507621" Pressure="128" />
|
||||
<Point X="154" Y="64" T="1302126507621" Pressure="128" />
|
||||
<Point X="155" Y="65" T="1302126507637" Pressure="128" />
|
||||
<Point X="155" Y="66" T="1302126507652" Pressure="128" />
|
||||
<Point X="155" Y="67" T="1302126507668" Pressure="128" />
|
||||
<Point X="154" Y="68" T="1302126507668" Pressure="128" />
|
||||
<Point X="153" Y="69" T="1302126507668" Pressure="128" />
|
||||
<Point X="152" Y="70" T="1302126507683" Pressure="128" />
|
||||
<Point X="150" Y="71" T="1302126507683" Pressure="128" />
|
||||
<Point X="148" Y="73" T="1302126507699" Pressure="128" />
|
||||
<Point X="146" Y="75" T="1302126507699" Pressure="128" />
|
||||
<Point X="143" Y="76" T="1302126507715" Pressure="128" />
|
||||
<Point X="141" Y="78" T="1302126507715" Pressure="128" />
|
||||
<Point X="138" Y="81" T="1302126507730" Pressure="128" />
|
||||
<Point X="135" Y="83" T="1302126507746" Pressure="128" />
|
||||
<Point X="133" Y="85" T="1302126507746" Pressure="128" />
|
||||
<Point X="130" Y="87" T="1302126507746" Pressure="128" />
|
||||
<Point X="128" Y="90" T="1302126507761" Pressure="128" />
|
||||
<Point X="126" Y="92" T="1302126507761" Pressure="128" />
|
||||
<Point X="124" Y="94" T="1302126507777" Pressure="128" />
|
||||
<Point X="122" Y="96" T="1302126507777" Pressure="128" />
|
||||
<Point X="120" Y="98" T="1302126507777" Pressure="128" />
|
||||
<Point X="118" Y="100" T="1302126507793" Pressure="128" />
|
||||
<Point X="116" Y="102" T="1302126507808" Pressure="128" />
|
||||
<Point X="114" Y="103" T="1302126507808" Pressure="128" />
|
||||
<Point X="113" Y="105" T="1302126507808" Pressure="128" />
|
||||
<Point X="111" Y="107" T="1302126507824" Pressure="128" />
|
||||
<Point X="110" Y="108" T="1302126507824" Pressure="128" />
|
||||
<Point X="109" Y="109" T="1302126507839" Pressure="128" />
|
||||
<Point X="108" Y="111" T="1302126507855" Pressure="128" />
|
||||
<Point X="107" Y="112" T="1302126507855" Pressure="128" />
|
||||
<Point X="106" Y="113" T="1302126507855" Pressure="128" />
|
||||
<Point X="105" Y="114" T="1302126507871" Pressure="128" />
|
||||
<Point X="105" Y="115" T="1302126507886" Pressure="128" />
|
||||
<Point X="104" Y="115" T="1302126507902" Pressure="128" />
|
||||
<Point X="104" Y="116" T="1302126507902" Pressure="128" />
|
||||
<Point X="104" Y="117" T="1302126507933" Pressure="128" />
|
||||
<Point X="104" Y="117" T="1302126507949" Pressure="128" />
|
||||
</Stroke>
|
||||
</Gesture>
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1c401923d63e24ec0b2b9239ba99ea38
|
||||
TextScriptImporter:
|
||||
userData:
|
||||
+106
@@ -0,0 +1,106 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<Gesture Name="asterisk~01" Subject="10" InputType="stylus" Speed="MEDIUM" NumPts="97">
|
||||
<Stroke index="1">
|
||||
<Point X="98" Y="41" T="1302126526903" Pressure="128" />
|
||||
<Point X="105" Y="34" T="1302126526903" Pressure="128" />
|
||||
<Point X="94" Y="43" T="1302126526903" Pressure="128" />
|
||||
<Point X="86" Y="52" T="1302126526903" Pressure="128" />
|
||||
<Point X="82" Y="57" T="1302126526903" Pressure="128" />
|
||||
<Point X="78" Y="62" T="1302126526918" Pressure="128" />
|
||||
<Point X="74" Y="67" T="1302126526934" Pressure="128" />
|
||||
<Point X="69" Y="72" T="1302126526934" Pressure="128" />
|
||||
<Point X="65" Y="78" T="1302126526934" Pressure="128" />
|
||||
<Point X="60" Y="83" T="1302126526950" Pressure="128" />
|
||||
<Point X="56" Y="87" T="1302126526965" Pressure="128" />
|
||||
<Point X="52" Y="92" T="1302126526965" Pressure="128" />
|
||||
<Point X="48" Y="96" T="1302126526981" Pressure="128" />
|
||||
<Point X="44" Y="100" T="1302126526981" Pressure="128" />
|
||||
<Point X="40" Y="104" T="1302126526981" Pressure="128" />
|
||||
<Point X="37" Y="107" T="1302126526996" Pressure="128" />
|
||||
<Point X="35" Y="109" T="1302126527012" Pressure="128" />
|
||||
<Point X="32" Y="112" T="1302126527012" Pressure="128" />
|
||||
<Point X="30" Y="114" T="1302126527012" Pressure="128" />
|
||||
<Point X="29" Y="115" T="1302126527028" Pressure="128" />
|
||||
<Point X="28" Y="116" T="1302126527028" Pressure="128" />
|
||||
<Point X="27" Y="116" T="1302126527043" Pressure="128" />
|
||||
<Point X="26" Y="116" T="1302126527059" Pressure="128" />
|
||||
<Point X="26" Y="116" T="1302126527059" Pressure="128" />
|
||||
</Stroke>
|
||||
<Stroke index="2">
|
||||
<Point X="32" Y="47" T="1302126527386" Pressure="128" />
|
||||
<Point X="29" Y="42" T="1302126527386" Pressure="128" />
|
||||
<Point X="48" Y="58" T="1302126527386" Pressure="128" />
|
||||
<Point X="55" Y="64" T="1302126527402" Pressure="128" />
|
||||
<Point X="59" Y="67" T="1302126527402" Pressure="128" />
|
||||
<Point X="63" Y="70" T="1302126527402" Pressure="128" />
|
||||
<Point X="67" Y="74" T="1302126527418" Pressure="128" />
|
||||
<Point X="71" Y="78" T="1302126527418" Pressure="128" />
|
||||
<Point X="76" Y="81" T="1302126527433" Pressure="128" />
|
||||
<Point X="80" Y="85" T="1302126527449" Pressure="128" />
|
||||
<Point X="84" Y="89" T="1302126527449" Pressure="128" />
|
||||
<Point X="89" Y="93" T="1302126527449" Pressure="128" />
|
||||
<Point X="93" Y="96" T="1302126527464" Pressure="128" />
|
||||
<Point X="97" Y="100" T="1302126527464" Pressure="128" />
|
||||
<Point X="101" Y="103" T="1302126527480" Pressure="128" />
|
||||
<Point X="105" Y="107" T="1302126527480" Pressure="128" />
|
||||
<Point X="108" Y="110" T="1302126527496" Pressure="128" />
|
||||
<Point X="111" Y="113" T="1302126527496" Pressure="128" />
|
||||
<Point X="114" Y="116" T="1302126527511" Pressure="128" />
|
||||
<Point X="116" Y="119" T="1302126527527" Pressure="128" />
|
||||
<Point X="118" Y="121" T="1302126527527" Pressure="128" />
|
||||
<Point X="120" Y="124" T="1302126527527" Pressure="128" />
|
||||
<Point X="121" Y="125" T="1302126527542" Pressure="128" />
|
||||
<Point X="123" Y="127" T="1302126527542" Pressure="128" />
|
||||
<Point X="124" Y="128" T="1302126527558" Pressure="128" />
|
||||
<Point X="124" Y="130" T="1302126527558" Pressure="128" />
|
||||
<Point X="125" Y="130" T="1302126527574" Pressure="128" />
|
||||
<Point X="125" Y="131" T="1302126527574" Pressure="128" />
|
||||
<Point X="125" Y="131" T="1302126527589" Pressure="128" />
|
||||
</Stroke>
|
||||
<Stroke index="3">
|
||||
<Point X="63" Y="31" T="1302126535374" Pressure="128" />
|
||||
<Point X="65" Y="27" T="1302126535374" Pressure="128" />
|
||||
<Point X="65" Y="29" T="1302126535373" Pressure="128" />
|
||||
<Point X="64" Y="36" T="1302126535389" Pressure="128" />
|
||||
<Point X="64" Y="41" T="1302126535389" Pressure="128" />
|
||||
<Point X="64" Y="46" T="1302126535405" Pressure="128" />
|
||||
<Point X="63" Y="51" T="1302126535420" Pressure="128" />
|
||||
<Point X="63" Y="57" T="1302126535420" Pressure="128" />
|
||||
<Point X="63" Y="63" T="1302126535420" Pressure="128" />
|
||||
<Point X="64" Y="68" T="1302126535436" Pressure="128" />
|
||||
<Point X="64" Y="74" T="1302126535436" Pressure="128" />
|
||||
<Point X="64" Y="79" T="1302126535452" Pressure="128" />
|
||||
<Point X="65" Y="84" T="1302126535467" Pressure="128" />
|
||||
<Point X="65" Y="89" T="1302126535467" Pressure="128" />
|
||||
<Point X="65" Y="94" T="1302126535467" Pressure="128" />
|
||||
<Point X="66" Y="98" T="1302126535483" Pressure="128" />
|
||||
<Point X="66" Y="102" T="1302126535483" Pressure="128" />
|
||||
<Point X="66" Y="106" T="1302126535498" Pressure="128" />
|
||||
<Point X="66" Y="110" T="1302126535498" Pressure="128" />
|
||||
<Point X="66" Y="114" T="1302126535498" Pressure="128" />
|
||||
<Point X="65" Y="117" T="1302126535514" Pressure="128" />
|
||||
<Point X="65" Y="119" T="1302126535530" Pressure="128" />
|
||||
<Point X="65" Y="122" T="1302126535530" Pressure="128" />
|
||||
<Point X="65" Y="124" T="1302126535530" Pressure="128" />
|
||||
<Point X="65" Y="127" T="1302126535545" Pressure="128" />
|
||||
<Point X="65" Y="129" T="1302126535561" Pressure="128" />
|
||||
<Point X="64" Y="131" T="1302126535561" Pressure="128" />
|
||||
<Point X="64" Y="133" T="1302126535576" Pressure="128" />
|
||||
<Point X="64" Y="134" T="1302126535576" Pressure="128" />
|
||||
<Point X="64" Y="136" T="1302126535576" Pressure="128" />
|
||||
<Point X="63" Y="138" T="1302126535592" Pressure="128" />
|
||||
<Point X="63" Y="139" T="1302126535608" Pressure="128" />
|
||||
<Point X="63" Y="141" T="1302126535608" Pressure="128" />
|
||||
<Point X="63" Y="142" T="1302126535608" Pressure="128" />
|
||||
<Point X="63" Y="143" T="1302126535623" Pressure="128" />
|
||||
<Point X="62" Y="143" T="1302126535623" Pressure="128" />
|
||||
<Point X="62" Y="144" T="1302126535639" Pressure="128" />
|
||||
<Point X="62" Y="145" T="1302126535654" Pressure="128" />
|
||||
<Point X="62" Y="146" T="1302126535654" Pressure="128" />
|
||||
<Point X="63" Y="146" T="1302126535670" Pressure="128" />
|
||||
<Point X="63" Y="147" T="1302126535670" Pressure="128" />
|
||||
<Point X="63" Y="148" T="1302126535701" Pressure="128" />
|
||||
<Point X="64" Y="147" T="1302126535764" Pressure="128" />
|
||||
<Point X="64" Y="147" T="1302126535764" Pressure="128" />
|
||||
</Stroke>
|
||||
</Gesture>
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 52e82a603042a4803b75a4faf1ece3c7
|
||||
TextScriptImporter:
|
||||
userData:
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<Gesture Name="exclamation_point~01" Subject="10" InputType="stylus" Speed="MEDIUM" NumPts="29">
|
||||
<Stroke index="1">
|
||||
<Point X="95" Y="11" T="1302126487653" Pressure="128" />
|
||||
<Point X="90" Y="9" T="1302126487653" Pressure="128" />
|
||||
<Point X="87" Y="28" T="1302126487653" Pressure="128" />
|
||||
<Point X="86" Y="37" T="1302126487653" Pressure="128" />
|
||||
<Point X="85" Y="42" T="1302126487669" Pressure="128" />
|
||||
<Point X="84" Y="47" T="1302126487669" Pressure="128" />
|
||||
<Point X="84" Y="52" T="1302126487684" Pressure="128" />
|
||||
<Point X="83" Y="57" T="1302126487684" Pressure="128" />
|
||||
<Point X="83" Y="62" T="1302126487684" Pressure="128" />
|
||||
<Point X="82" Y="67" T="1302126487700" Pressure="128" />
|
||||
<Point X="82" Y="72" T="1302126487715" Pressure="128" />
|
||||
<Point X="81" Y="77" T="1302126487715" Pressure="128" />
|
||||
<Point X="81" Y="82" T="1302126487715" Pressure="128" />
|
||||
<Point X="81" Y="86" T="1302126487731" Pressure="128" />
|
||||
<Point X="80" Y="90" T="1302126487731" Pressure="128" />
|
||||
<Point X="80" Y="94" T="1302126487747" Pressure="128" />
|
||||
<Point X="79" Y="98" T="1302126487762" Pressure="128" />
|
||||
<Point X="78" Y="101" T="1302126487762" Pressure="128" />
|
||||
<Point X="77" Y="105" T="1302126487762" Pressure="128" />
|
||||
<Point X="77" Y="107" T="1302126487778" Pressure="128" />
|
||||
<Point X="76" Y="110" T="1302126487778" Pressure="128" />
|
||||
<Point X="75" Y="112" T="1302126487793" Pressure="128" />
|
||||
<Point X="74" Y="114" T="1302126487793" Pressure="128" />
|
||||
<Point X="74" Y="116" T="1302126487809" Pressure="128" />
|
||||
<Point X="73" Y="118" T="1302126487809" Pressure="128" />
|
||||
<Point X="73" Y="118" T="1302126487825" Pressure="128" />
|
||||
</Stroke>
|
||||
<Stroke index="2">
|
||||
<Point X="66" Y="141" T="1302126488043" Pressure="128" />
|
||||
<Point X="65" Y="142" T="1302126488043" Pressure="128" />
|
||||
<Point X="65" Y="142" T="1302126488043" Pressure="128" />
|
||||
</Stroke>
|
||||
</Gesture>
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 01da6dc2a4935421ebc881ad8c25e9f5
|
||||
TextScriptImporter:
|
||||
userData:
|
||||
+172
@@ -0,0 +1,172 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<Gesture Name="five_point_star~01" Subject="10" InputType="stylus" Speed="MEDIUM" NumPts="167">
|
||||
<Stroke index="1">
|
||||
<Point X="57" Y="105" T="1302126491771" Pressure="128" />
|
||||
<Point X="73" Y="84" T="1302126491771" Pressure="128" />
|
||||
<Point X="75" Y="80" T="1302126491771" Pressure="128" />
|
||||
<Point X="80" Y="73" T="1302126491787" Pressure="128" />
|
||||
<Point X="82" Y="69" T="1302126491787" Pressure="128" />
|
||||
<Point X="84" Y="65" T="1302126491787" Pressure="128" />
|
||||
<Point X="86" Y="61" T="1302126491803" Pressure="128" />
|
||||
<Point X="88" Y="57" T="1302126491803" Pressure="128" />
|
||||
<Point X="90" Y="53" T="1302126491818" Pressure="128" />
|
||||
<Point X="91" Y="49" T="1302126491834" Pressure="128" />
|
||||
<Point X="93" Y="45" T="1302126491834" Pressure="128" />
|
||||
<Point X="95" Y="41" T="1302126491834" Pressure="128" />
|
||||
<Point X="96" Y="38" T="1302126491849" Pressure="128" />
|
||||
<Point X="98" Y="34" T="1302126491849" Pressure="128" />
|
||||
<Point X="100" Y="31" T="1302126491865" Pressure="128" />
|
||||
<Point X="101" Y="28" T="1302126491865" Pressure="128" />
|
||||
<Point X="103" Y="25" T="1302126491866" Pressure="128" />
|
||||
<Point X="104" Y="22" T="1302126491881" Pressure="128" />
|
||||
<Point X="106" Y="20" T="1302126491896" Pressure="128" />
|
||||
<Point X="107" Y="18" T="1302126491896" Pressure="128" />
|
||||
<Point X="109" Y="17" T="1302126491896" Pressure="128" />
|
||||
<Point X="111" Y="16" T="1302126491912" Pressure="128" />
|
||||
<Point X="113" Y="15" T="1302126491912" Pressure="128" />
|
||||
<Point X="114" Y="15" T="1302126491927" Pressure="128" />
|
||||
<Point X="116" Y="15" T="1302126491943" Pressure="128" />
|
||||
<Point X="118" Y="16" T="1302126491943" Pressure="128" />
|
||||
<Point X="120" Y="17" T="1302126491943" Pressure="128" />
|
||||
<Point X="122" Y="19" T="1302126491959" Pressure="128" />
|
||||
<Point X="123" Y="21" T="1302126491959" Pressure="128" />
|
||||
<Point X="125" Y="24" T="1302126491974" Pressure="128" />
|
||||
<Point X="126" Y="27" T="1302126491990" Pressure="128" />
|
||||
<Point X="128" Y="31" T="1302126491990" Pressure="128" />
|
||||
<Point X="129" Y="34" T="1302126491990" Pressure="128" />
|
||||
<Point X="131" Y="39" T="1302126492005" Pressure="128" />
|
||||
<Point X="132" Y="43" T="1302126492021" Pressure="128" />
|
||||
<Point X="133" Y="48" T="1302126492021" Pressure="128" />
|
||||
<Point X="134" Y="53" T="1302126492021" Pressure="128" />
|
||||
<Point X="135" Y="58" T="1302126492037" Pressure="128" />
|
||||
<Point X="136" Y="63" T="1302126492037" Pressure="128" />
|
||||
<Point X="137" Y="69" T="1302126492052" Pressure="128" />
|
||||
<Point X="137" Y="74" T="1302126492052" Pressure="128" />
|
||||
<Point X="138" Y="80" T="1302126492068" Pressure="128" />
|
||||
<Point X="139" Y="85" T="1302126492068" Pressure="128" />
|
||||
<Point X="139" Y="91" T="1302126492083" Pressure="128" />
|
||||
<Point X="140" Y="96" T="1302126492083" Pressure="128" />
|
||||
<Point X="141" Y="101" T="1302126492099" Pressure="128" />
|
||||
<Point X="141" Y="106" T="1302126492099" Pressure="128" />
|
||||
<Point X="142" Y="111" T="1302126492099" Pressure="128" />
|
||||
<Point X="143" Y="116" T="1302126492115" Pressure="128" />
|
||||
<Point X="143" Y="120" T="1302126492130" Pressure="128" />
|
||||
<Point X="144" Y="124" T="1302126492130" Pressure="128" />
|
||||
<Point X="145" Y="128" T="1302126492130" Pressure="128" />
|
||||
<Point X="145" Y="131" T="1302126492146" Pressure="128" />
|
||||
<Point X="146" Y="134" T="1302126492146" Pressure="128" />
|
||||
<Point X="146" Y="136" T="1302126492161" Pressure="128" />
|
||||
<Point X="146" Y="138" T="1302126492177" Pressure="128" />
|
||||
<Point X="146" Y="139" T="1302126492177" Pressure="128" />
|
||||
<Point X="146" Y="140" T="1302126492177" Pressure="128" />
|
||||
<Point X="145" Y="139" T="1302126492208" Pressure="128" />
|
||||
<Point X="145" Y="138" T="1302126492208" Pressure="128" />
|
||||
<Point X="144" Y="136" T="1302126492224" Pressure="128" />
|
||||
<Point X="143" Y="134" T="1302126492224" Pressure="128" />
|
||||
<Point X="142" Y="132" T="1302126492239" Pressure="128" />
|
||||
<Point X="140" Y="129" T="1302126492239" Pressure="128" />
|
||||
<Point X="139" Y="125" T="1302126492255" Pressure="128" />
|
||||
<Point X="137" Y="122" T="1302126492255" Pressure="128" />
|
||||
<Point X="135" Y="118" T="1302126492271" Pressure="128" />
|
||||
<Point X="132" Y="114" T="1302126492271" Pressure="128" />
|
||||
<Point X="129" Y="110" T="1302126492286" Pressure="128" />
|
||||
<Point X="126" Y="106" T="1302126492286" Pressure="128" />
|
||||
<Point X="122" Y="101" T="1302126492302" Pressure="128" />
|
||||
<Point X="118" Y="97" T="1302126492302" Pressure="128" />
|
||||
<Point X="113" Y="93" T="1302126492317" Pressure="128" />
|
||||
<Point X="108" Y="89" T="1302126492317" Pressure="128" />
|
||||
<Point X="103" Y="85" T="1302126492333" Pressure="128" />
|
||||
<Point X="97" Y="81" T="1302126492333" Pressure="128" />
|
||||
<Point X="91" Y="78" T="1302126492333" Pressure="128" />
|
||||
<Point X="85" Y="75" T="1302126492349" Pressure="128" />
|
||||
<Point X="80" Y="72" T="1302126492364" Pressure="128" />
|
||||
<Point X="74" Y="69" T="1302126492364" Pressure="128" />
|
||||
<Point X="68" Y="67" T="1302126492364" Pressure="128" />
|
||||
<Point X="63" Y="65" T="1302126492380" Pressure="128" />
|
||||
<Point X="58" Y="63" T="1302126492380" Pressure="128" />
|
||||
<Point X="53" Y="62" T="1302126492395" Pressure="128" />
|
||||
<Point X="49" Y="61" T="1302126492411" Pressure="128" />
|
||||
<Point X="45" Y="60" T="1302126492411" Pressure="128" />
|
||||
<Point X="43" Y="60" T="1302126492411" Pressure="128" />
|
||||
<Point X="41" Y="59" T="1302126492427" Pressure="128" />
|
||||
<Point X="38" Y="59" T="1302126492442" Pressure="128" />
|
||||
<Point X="36" Y="59" T="1302126492458" Pressure="128" />
|
||||
<Point X="35" Y="59" T="1302126492458" Pressure="128" />
|
||||
<Point X="37" Y="59" T="1302126492473" Pressure="128" />
|
||||
<Point X="40" Y="59" T="1302126492489" Pressure="128" />
|
||||
<Point X="44" Y="59" T="1302126492489" Pressure="128" />
|
||||
<Point X="48" Y="58" T="1302126492505" Pressure="128" />
|
||||
<Point X="54" Y="57" T="1302126492520" Pressure="128" />
|
||||
<Point X="60" Y="56" T="1302126492520" Pressure="128" />
|
||||
<Point X="67" Y="55" T="1302126492536" Pressure="128" />
|
||||
<Point X="74" Y="54" T="1302126492536" Pressure="128" />
|
||||
<Point X="82" Y="52" T="1302126492536" Pressure="128" />
|
||||
<Point X="90" Y="50" T="1302126492551" Pressure="128" />
|
||||
<Point X="98" Y="49" T="1302126492551" Pressure="128" />
|
||||
<Point X="107" Y="47" T="1302126492567" Pressure="128" />
|
||||
<Point X="115" Y="45" T="1302126492567" Pressure="128" />
|
||||
<Point X="124" Y="43" T="1302126492583" Pressure="128" />
|
||||
<Point X="132" Y="41" T="1302126492598" Pressure="128" />
|
||||
<Point X="139" Y="39" T="1302126492598" Pressure="128" />
|
||||
<Point X="147" Y="37" T="1302126492598" Pressure="128" />
|
||||
<Point X="153" Y="36" T="1302126492614" Pressure="128" />
|
||||
<Point X="159" Y="34" T="1302126492614" Pressure="128" />
|
||||
<Point X="165" Y="32" T="1302126492629" Pressure="128" />
|
||||
<Point X="170" Y="31" T="1302126492645" Pressure="128" />
|
||||
<Point X="174" Y="29" T="1302126492645" Pressure="128" />
|
||||
<Point X="178" Y="28" T="1302126492645" Pressure="128" />
|
||||
<Point X="181" Y="27" T="1302126492661" Pressure="128" />
|
||||
<Point X="183" Y="26" T="1302126492661" Pressure="128" />
|
||||
<Point X="185" Y="26" T="1302126492676" Pressure="128" />
|
||||
<Point X="186" Y="25" T="1302126492676" Pressure="128" />
|
||||
<Point X="187" Y="25" T="1302126492692" Pressure="128" />
|
||||
<Point X="186" Y="25" T="1302126492707" Pressure="128" />
|
||||
<Point X="185" Y="26" T="1302126492707" Pressure="128" />
|
||||
<Point X="183" Y="27" T="1302126492707" Pressure="128" />
|
||||
<Point X="181" Y="28" T="1302126492723" Pressure="128" />
|
||||
<Point X="179" Y="29" T="1302126492723" Pressure="128" />
|
||||
<Point X="176" Y="30" T="1302126492739" Pressure="128" />
|
||||
<Point X="173" Y="32" T="1302126492754" Pressure="128" />
|
||||
<Point X="169" Y="34" T="1302126492754" Pressure="128" />
|
||||
<Point X="165" Y="37" T="1302126492754" Pressure="128" />
|
||||
<Point X="161" Y="39" T="1302126492770" Pressure="128" />
|
||||
<Point X="157" Y="42" T="1302126492770" Pressure="128" />
|
||||
<Point X="153" Y="45" T="1302126492785" Pressure="128" />
|
||||
<Point X="148" Y="49" T="1302126492785" Pressure="128" />
|
||||
<Point X="143" Y="52" T="1302126492801" Pressure="128" />
|
||||
<Point X="138" Y="56" T="1302126492801" Pressure="128" />
|
||||
<Point X="133" Y="59" T="1302126492817" Pressure="128" />
|
||||
<Point X="128" Y="63" T="1302126492832" Pressure="128" />
|
||||
<Point X="123" Y="67" T="1302126492832" Pressure="128" />
|
||||
<Point X="117" Y="71" T="1302126492832" Pressure="128" />
|
||||
<Point X="112" Y="75" T="1302126492848" Pressure="128" />
|
||||
<Point X="107" Y="79" T="1302126492848" Pressure="128" />
|
||||
<Point X="102" Y="82" T="1302126492863" Pressure="128" />
|
||||
<Point X="98" Y="86" T="1302126492879" Pressure="128" />
|
||||
<Point X="93" Y="90" T="1302126492879" Pressure="128" />
|
||||
<Point X="88" Y="93" T="1302126492879" Pressure="128" />
|
||||
<Point X="84" Y="97" T="1302126492895" Pressure="128" />
|
||||
<Point X="81" Y="101" T="1302126492895" Pressure="128" />
|
||||
<Point X="77" Y="104" T="1302126492910" Pressure="128" />
|
||||
<Point X="73" Y="107" T="1302126492910" Pressure="128" />
|
||||
<Point X="70" Y="110" T="1302126492910" Pressure="128" />
|
||||
<Point X="67" Y="113" T="1302126492926" Pressure="128" />
|
||||
<Point X="65" Y="116" T="1302126492941" Pressure="128" />
|
||||
<Point X="62" Y="119" T="1302126492941" Pressure="128" />
|
||||
<Point X="60" Y="121" T="1302126492941" Pressure="128" />
|
||||
<Point X="57" Y="123" T="1302126492957" Pressure="128" />
|
||||
<Point X="55" Y="125" T="1302126492957" Pressure="128" />
|
||||
<Point X="54" Y="126" T="1302126492973" Pressure="128" />
|
||||
<Point X="52" Y="128" T="1302126492988" Pressure="128" />
|
||||
<Point X="50" Y="129" T="1302126492988" Pressure="128" />
|
||||
<Point X="49" Y="130" T="1302126492988" Pressure="128" />
|
||||
<Point X="48" Y="131" T="1302126493004" Pressure="128" />
|
||||
<Point X="46" Y="132" T="1302126493004" Pressure="128" />
|
||||
<Point X="45" Y="133" T="1302126493019" Pressure="128" />
|
||||
<Point X="44" Y="133" T="1302126493035" Pressure="128" />
|
||||
<Point X="44" Y="134" T="1302126493035" Pressure="128" />
|
||||
<Point X="43" Y="133" T="1302126493051" Pressure="128" />
|
||||
<Point X="44" Y="133" T="1302126493051" Pressure="128" />
|
||||
<Point X="44" Y="133" T="1302126493066" Pressure="128" />
|
||||
</Stroke>
|
||||
</Gesture>
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
fileFormatVersion: 2
|
||||
guid: aadae271546eb4eb299980ec3f298e26
|
||||
TextScriptImporter:
|
||||
userData:
|
||||
+83
@@ -0,0 +1,83 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<Gesture Name="half_note~01" Subject="10" InputType="stylus" Speed="MEDIUM" NumPts="76">
|
||||
<Stroke index="1">
|
||||
<Point X="115" Y="8" T="1302126537136" Pressure="128" />
|
||||
<Point X="116" Y="-3" T="1302126537136" Pressure="128" />
|
||||
<Point X="116" Y="4" T="1302126537136" Pressure="128" />
|
||||
<Point X="116" Y="14" T="1302126537136" Pressure="128" />
|
||||
<Point X="116" Y="19" T="1302126537152" Pressure="128" />
|
||||
<Point X="116" Y="25" T="1302126537152" Pressure="128" />
|
||||
<Point X="116" Y="31" T="1302126537152" Pressure="128" />
|
||||
<Point X="116" Y="37" T="1302126537168" Pressure="128" />
|
||||
<Point X="116" Y="43" T="1302126537168" Pressure="128" />
|
||||
<Point X="115" Y="49" T="1302126537183" Pressure="128" />
|
||||
<Point X="115" Y="54" T="1302126537199" Pressure="128" />
|
||||
<Point X="115" Y="59" T="1302126537199" Pressure="128" />
|
||||
<Point X="114" Y="63" T="1302126537199" Pressure="128" />
|
||||
<Point X="114" Y="67" T="1302126537214" Pressure="128" />
|
||||
<Point X="114" Y="71" T="1302126537214" Pressure="128" />
|
||||
<Point X="113" Y="75" T="1302126537230" Pressure="128" />
|
||||
<Point X="113" Y="78" T="1302126537246" Pressure="128" />
|
||||
<Point X="113" Y="81" T="1302126537246" Pressure="128" />
|
||||
<Point X="112" Y="83" T="1302126537246" Pressure="128" />
|
||||
<Point X="112" Y="85" T="1302126537261" Pressure="128" />
|
||||
<Point X="112" Y="86" T="1302126537261" Pressure="128" />
|
||||
<Point X="111" Y="87" T="1302126537277" Pressure="128" />
|
||||
<Point X="111" Y="88" T="1302126537277" Pressure="128" />
|
||||
<Point X="110" Y="89" T="1302126537292" Pressure="128" />
|
||||
<Point X="109" Y="89" T="1302126537308" Pressure="128" />
|
||||
<Point X="108" Y="89" T="1302126537308" Pressure="128" />
|
||||
<Point X="108" Y="89" T="1302126537324" Pressure="128" />
|
||||
</Stroke>
|
||||
<Stroke index="2">
|
||||
<Point X="101" Y="98" T="1302126537589" Pressure="128" />
|
||||
<Point X="88" Y="97" T="1302126537589" Pressure="128" />
|
||||
<Point X="82" Y="98" T="1302126537589" Pressure="128" />
|
||||
<Point X="76" Y="99" T="1302126537604" Pressure="128" />
|
||||
<Point X="73" Y="101" T="1302126537604" Pressure="128" />
|
||||
<Point X="71" Y="102" T="1302126537620" Pressure="128" />
|
||||
<Point X="68" Y="104" T="1302126537620" Pressure="128" />
|
||||
<Point X="67" Y="106" T="1302126537636" Pressure="128" />
|
||||
<Point X="65" Y="109" T="1302126537636" Pressure="128" />
|
||||
<Point X="64" Y="111" T="1302126537651" Pressure="128" />
|
||||
<Point X="64" Y="115" T="1302126537667" Pressure="128" />
|
||||
<Point X="64" Y="118" T="1302126537667" Pressure="128" />
|
||||
<Point X="64" Y="121" T="1302126537667" Pressure="128" />
|
||||
<Point X="65" Y="124" T="1302126537682" Pressure="128" />
|
||||
<Point X="66" Y="127" T="1302126537682" Pressure="128" />
|
||||
<Point X="67" Y="130" T="1302126537698" Pressure="128" />
|
||||
<Point X="69" Y="132" T="1302126537698" Pressure="128" />
|
||||
<Point X="71" Y="134" T="1302126537714" Pressure="128" />
|
||||
<Point X="73" Y="135" T="1302126537714" Pressure="128" />
|
||||
<Point X="76" Y="137" T="1302126537729" Pressure="128" />
|
||||
<Point X="79" Y="137" T="1302126537729" Pressure="128" />
|
||||
<Point X="82" Y="138" T="1302126537745" Pressure="128" />
|
||||
<Point X="85" Y="138" T="1302126537745" Pressure="128" />
|
||||
<Point X="88" Y="137" T="1302126537745" Pressure="128" />
|
||||
<Point X="92" Y="136" T="1302126537760" Pressure="128" />
|
||||
<Point X="95" Y="135" T="1302126537776" Pressure="128" />
|
||||
<Point X="99" Y="133" T="1302126537776" Pressure="128" />
|
||||
<Point X="102" Y="130" T="1302126537776" Pressure="128" />
|
||||
<Point X="105" Y="128" T="1302126537792" Pressure="128" />
|
||||
<Point X="109" Y="125" T="1302126537792" Pressure="128" />
|
||||
<Point X="112" Y="122" T="1302126537807" Pressure="128" />
|
||||
<Point X="114" Y="118" T="1302126537823" Pressure="128" />
|
||||
<Point X="117" Y="114" T="1302126537823" Pressure="128" />
|
||||
<Point X="118" Y="110" T="1302126537823" Pressure="128" />
|
||||
<Point X="120" Y="107" T="1302126537838" Pressure="128" />
|
||||
<Point X="120" Y="103" T="1302126537838" Pressure="128" />
|
||||
<Point X="120" Y="99" T="1302126537854" Pressure="128" />
|
||||
<Point X="120" Y="96" T="1302126537854" Pressure="128" />
|
||||
<Point X="119" Y="94" T="1302126537870" Pressure="128" />
|
||||
<Point X="117" Y="92" T="1302126537870" Pressure="128" />
|
||||
<Point X="115" Y="91" T="1302126537885" Pressure="128" />
|
||||
<Point X="113" Y="90" T="1302126537901" Pressure="128" />
|
||||
<Point X="111" Y="89" T="1302126537901" Pressure="128" />
|
||||
<Point X="110" Y="89" T="1302126537901" Pressure="128" />
|
||||
<Point X="108" Y="90" T="1302126537916" Pressure="128" />
|
||||
<Point X="106" Y="90" T="1302126537916" Pressure="128" />
|
||||
<Point X="105" Y="91" T="1302126537932" Pressure="128" />
|
||||
<Point X="104" Y="91" T="1302126537932" Pressure="128" />
|
||||
<Point X="104" Y="91" T="1302126537948" Pressure="128" />
|
||||
</Stroke>
|
||||
</Gesture>
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0eeeab0f2e59045608d94e07d3de60a0
|
||||
TextScriptImporter:
|
||||
userData:
|
||||
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<Gesture Name="line~01" Subject="10" InputType="stylus" Speed="MEDIUM" NumPts="30">
|
||||
<Stroke index="1">
|
||||
<Point X="28" Y="72" T="1302126489291" Pressure="128" />
|
||||
<Point X="46" Y="73" T="1302126489291" Pressure="128" />
|
||||
<Point X="54" Y="73" T="1302126489291" Pressure="128" />
|
||||
<Point X="63" Y="74" T="1302126489307" Pressure="128" />
|
||||
<Point X="68" Y="74" T="1302126489307" Pressure="128" />
|
||||
<Point X="73" Y="74" T="1302126489322" Pressure="128" />
|
||||
<Point X="78" Y="75" T="1302126489322" Pressure="128" />
|
||||
<Point X="84" Y="75" T="1302126489338" Pressure="128" />
|
||||
<Point X="90" Y="75" T="1302126489353" Pressure="128" />
|
||||
<Point X="96" Y="76" T="1302126489353" Pressure="128" />
|
||||
<Point X="103" Y="76" T="1302126489353" Pressure="128" />
|
||||
<Point X="110" Y="76" T="1302126489369" Pressure="128" />
|
||||
<Point X="117" Y="76" T="1302126489369" Pressure="128" />
|
||||
<Point X="124" Y="76" T="1302126489385" Pressure="128" />
|
||||
<Point X="130" Y="76" T="1302126489385" Pressure="128" />
|
||||
<Point X="137" Y="76" T="1302126489400" Pressure="128" />
|
||||
<Point X="144" Y="75" T="1302126489400" Pressure="128" />
|
||||
<Point X="150" Y="75" T="1302126489416" Pressure="128" />
|
||||
<Point X="155" Y="75" T="1302126489416" Pressure="128" />
|
||||
<Point X="161" Y="75" T="1302126489416" Pressure="128" />
|
||||
<Point X="166" Y="75" T="1302126489431" Pressure="128" />
|
||||
<Point X="171" Y="74" T="1302126489431" Pressure="128" />
|
||||
<Point X="175" Y="74" T="1302126489447" Pressure="128" />
|
||||
<Point X="179" Y="74" T="1302126489463" Pressure="128" />
|
||||
<Point X="182" Y="74" T="1302126489463" Pressure="128" />
|
||||
<Point X="184" Y="74" T="1302126489463" Pressure="128" />
|
||||
<Point X="186" Y="74" T="1302126489478" Pressure="128" />
|
||||
<Point X="187" Y="74" T="1302126489478" Pressure="128" />
|
||||
<Point X="188" Y="74" T="1302126489494" Pressure="128" />
|
||||
<Point X="188" Y="74" T="1302126489509" Pressure="128" />
|
||||
</Stroke>
|
||||
</Gesture>
|
||||
@@ -0,0 +1,4 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b54ba9dc73783487dabe1c0a9673fee0
|
||||
TextScriptImporter:
|
||||
userData:
|
||||
@@ -0,0 +1,123 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<Gesture Name="null~01" Subject="10" InputType="stylus" Speed="MEDIUM" NumPts="116">
|
||||
<Stroke index="1">
|
||||
<Point X="130" Y="38" T="1302126495172" Pressure="128" />
|
||||
<Point X="141" Y="11" T="1302126495172" Pressure="128" />
|
||||
<Point X="138" Y="14" T="1302126495172" Pressure="128" />
|
||||
<Point X="135" Y="19" T="1302126495188" Pressure="128" />
|
||||
<Point X="132" Y="23" T="1302126495203" Pressure="128" />
|
||||
<Point X="130" Y="27" T="1302126495203" Pressure="128" />
|
||||
<Point X="127" Y="31" T="1302126495203" Pressure="128" />
|
||||
<Point X="125" Y="36" T="1302126495219" Pressure="128" />
|
||||
<Point X="122" Y="41" T="1302126495219" Pressure="128" />
|
||||
<Point X="119" Y="46" T="1302126495235" Pressure="128" />
|
||||
<Point X="116" Y="51" T="1302126495235" Pressure="128" />
|
||||
<Point X="114" Y="56" T="1302126495250" Pressure="128" />
|
||||
<Point X="111" Y="62" T="1302126495250" Pressure="128" />
|
||||
<Point X="109" Y="68" T="1302126495266" Pressure="128" />
|
||||
<Point X="106" Y="74" T="1302126495266" Pressure="128" />
|
||||
<Point X="104" Y="80" T="1302126495266" Pressure="128" />
|
||||
<Point X="101" Y="86" T="1302126495281" Pressure="128" />
|
||||
<Point X="98" Y="92" T="1302126495281" Pressure="128" />
|
||||
<Point X="96" Y="98" T="1302126495297" Pressure="128" />
|
||||
<Point X="93" Y="103" T="1302126495313" Pressure="128" />
|
||||
<Point X="90" Y="108" T="1302126495313" Pressure="128" />
|
||||
<Point X="88" Y="114" T="1302126495313" Pressure="128" />
|
||||
<Point X="85" Y="119" T="1302126495328" Pressure="128" />
|
||||
<Point X="83" Y="124" T="1302126495328" Pressure="128" />
|
||||
<Point X="80" Y="128" T="1302126495344" Pressure="128" />
|
||||
<Point X="78" Y="133" T="1302126495344" Pressure="128" />
|
||||
<Point X="76" Y="137" T="1302126495359" Pressure="128" />
|
||||
<Point X="73" Y="141" T="1302126495359" Pressure="128" />
|
||||
<Point X="71" Y="145" T="1302126495375" Pressure="128" />
|
||||
<Point X="69" Y="148" T="1302126495375" Pressure="128" />
|
||||
<Point X="67" Y="151" T="1302126495391" Pressure="128" />
|
||||
<Point X="65" Y="154" T="1302126495391" Pressure="128" />
|
||||
<Point X="63" Y="157" T="1302126495406" Pressure="128" />
|
||||
<Point X="62" Y="159" T="1302126495406" Pressure="128" />
|
||||
<Point X="61" Y="161" T="1302126495422" Pressure="128" />
|
||||
<Point X="60" Y="163" T="1302126495422" Pressure="128" />
|
||||
<Point X="59" Y="164" T="1302126495437" Pressure="128" />
|
||||
<Point X="58" Y="166" T="1302126495437" Pressure="128" />
|
||||
<Point X="58" Y="167" T="1302126495453" Pressure="128" />
|
||||
<Point X="57" Y="168" T="1302126495453" Pressure="128" />
|
||||
<Point X="56" Y="168" T="1302126495469" Pressure="128" />
|
||||
<Point X="55" Y="169" T="1302126495469" Pressure="128" />
|
||||
<Point X="54" Y="169" T="1302126495469" Pressure="128" />
|
||||
<Point X="54" Y="169" T="1302126495500" Pressure="128" />
|
||||
</Stroke>
|
||||
<Stroke index="2">
|
||||
<Point X="118" Y="52" T="1302126504439" Pressure="128" />
|
||||
<Point X="118" Y="49" T="1302126504439" Pressure="128" />
|
||||
<Point X="100" Y="46" T="1302126504439" Pressure="128" />
|
||||
<Point X="93" Y="47" T="1302126504439" Pressure="128" />
|
||||
<Point X="90" Y="48" T="1302126504439" Pressure="128" />
|
||||
<Point X="86" Y="49" T="1302126504454" Pressure="128" />
|
||||
<Point X="83" Y="51" T="1302126504454" Pressure="128" />
|
||||
<Point X="79" Y="52" T="1302126504470" Pressure="128" />
|
||||
<Point X="75" Y="54" T="1302126504485" Pressure="128" />
|
||||
<Point X="71" Y="56" T="1302126504485" Pressure="128" />
|
||||
<Point X="68" Y="58" T="1302126504485" Pressure="128" />
|
||||
<Point X="64" Y="61" T="1302126504501" Pressure="128" />
|
||||
<Point X="61" Y="63" T="1302126504501" Pressure="128" />
|
||||
<Point X="58" Y="66" T="1302126504517" Pressure="128" />
|
||||
<Point X="56" Y="69" T="1302126504532" Pressure="128" />
|
||||
<Point X="53" Y="73" T="1302126504532" Pressure="128" />
|
||||
<Point X="51" Y="76" T="1302126504532" Pressure="128" />
|
||||
<Point X="50" Y="80" T="1302126504548" Pressure="128" />
|
||||
<Point X="49" Y="83" T="1302126504548" Pressure="128" />
|
||||
<Point X="48" Y="87" T="1302126504563" Pressure="128" />
|
||||
<Point X="48" Y="90" T="1302126504563" Pressure="128" />
|
||||
<Point X="48" Y="94" T="1302126504579" Pressure="128" />
|
||||
<Point X="48" Y="98" T="1302126504579" Pressure="128" />
|
||||
<Point X="49" Y="101" T="1302126504595" Pressure="128" />
|
||||
<Point X="50" Y="105" T="1302126504595" Pressure="128" />
|
||||
<Point X="52" Y="108" T="1302126504595" Pressure="128" />
|
||||
<Point X="54" Y="111" T="1302126504610" Pressure="128" />
|
||||
<Point X="57" Y="114" T="1302126504626" Pressure="128" />
|
||||
<Point X="60" Y="117" T="1302126504626" Pressure="128" />
|
||||
<Point X="64" Y="120" T="1302126504641" Pressure="128" />
|
||||
<Point X="68" Y="122" T="1302126504641" Pressure="128" />
|
||||
<Point X="72" Y="124" T="1302126504657" Pressure="128" />
|
||||
<Point X="76" Y="125" T="1302126504657" Pressure="128" />
|
||||
<Point X="81" Y="126" T="1302126504673" Pressure="128" />
|
||||
<Point X="86" Y="127" T="1302126504673" Pressure="128" />
|
||||
<Point X="91" Y="128" T="1302126504673" Pressure="128" />
|
||||
<Point X="97" Y="128" T="1302126504688" Pressure="128" />
|
||||
<Point X="102" Y="128" T="1302126504688" Pressure="128" />
|
||||
<Point X="107" Y="128" T="1302126504704" Pressure="128" />
|
||||
<Point X="112" Y="127" T="1302126504719" Pressure="128" />
|
||||
<Point X="117" Y="126" T="1302126504719" Pressure="128" />
|
||||
<Point X="121" Y="124" T="1302126504719" Pressure="128" />
|
||||
<Point X="126" Y="123" T="1302126504735" Pressure="128" />
|
||||
<Point X="129" Y="121" T="1302126504735" Pressure="128" />
|
||||
<Point X="133" Y="119" T="1302126504751" Pressure="128" />
|
||||
<Point X="136" Y="116" T="1302126504766" Pressure="128" />
|
||||
<Point X="139" Y="113" T="1302126504766" Pressure="128" />
|
||||
<Point X="141" Y="110" T="1302126504766" Pressure="128" />
|
||||
<Point X="143" Y="107" T="1302126504782" Pressure="128" />
|
||||
<Point X="144" Y="104" T="1302126504782" Pressure="128" />
|
||||
<Point X="146" Y="100" T="1302126504797" Pressure="128" />
|
||||
<Point X="146" Y="97" T="1302126504797" Pressure="128" />
|
||||
<Point X="147" Y="93" T="1302126504797" Pressure="128" />
|
||||
<Point X="147" Y="89" T="1302126504813" Pressure="128" />
|
||||
<Point X="147" Y="85" T="1302126504829" Pressure="128" />
|
||||
<Point X="146" Y="81" T="1302126504829" Pressure="128" />
|
||||
<Point X="145" Y="78" T="1302126504829" Pressure="128" />
|
||||
<Point X="144" Y="74" T="1302126504844" Pressure="128" />
|
||||
<Point X="142" Y="70" T="1302126504860" Pressure="128" />
|
||||
<Point X="140" Y="67" T="1302126504860" Pressure="128" />
|
||||
<Point X="138" Y="64" T="1302126504860" Pressure="128" />
|
||||
<Point X="135" Y="61" T="1302126504875" Pressure="128" />
|
||||
<Point X="132" Y="58" T="1302126504875" Pressure="128" />
|
||||
<Point X="128" Y="55" T="1302126504891" Pressure="128" />
|
||||
<Point X="125" Y="53" T="1302126504907" Pressure="128" />
|
||||
<Point X="122" Y="51" T="1302126504907" Pressure="128" />
|
||||
<Point X="118" Y="49" T="1302126504907" Pressure="128" />
|
||||
<Point X="115" Y="48" T="1302126504922" Pressure="128" />
|
||||
<Point X="112" Y="47" T="1302126504922" Pressure="128" />
|
||||
<Point X="109" Y="46" T="1302126504938" Pressure="128" />
|
||||
<Point X="106" Y="45" T="1302126504953" Pressure="128" />
|
||||
<Point X="106" Y="45" T="1302126504953" Pressure="128" />
|
||||
</Stroke>
|
||||
</Gesture>
|
||||
@@ -0,0 +1,4 @@
|
||||
fileFormatVersion: 2
|
||||
guid: aec1a61ec5f734129871518507ab3606
|
||||
TextScriptImporter:
|
||||
userData:
|
||||
+85
@@ -0,0 +1,85 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<Gesture Name="pitchfork~01" Subject="10" InputType="stylus" Speed="MEDIUM" NumPts="78">
|
||||
<Stroke index="1">
|
||||
<Point X="68" Y="23" T="1302126510694" Pressure="128" />
|
||||
<Point X="68" Y="46" T="1302126510694" Pressure="128" />
|
||||
<Point X="70" Y="54" T="1302126510694" Pressure="128" />
|
||||
<Point X="72" Y="58" T="1302126510710" Pressure="128" />
|
||||
<Point X="74" Y="61" T="1302126510710" Pressure="128" />
|
||||
<Point X="76" Y="65" T="1302126510710" Pressure="128" />
|
||||
<Point X="78" Y="69" T="1302126510725" Pressure="128" />
|
||||
<Point X="81" Y="72" T="1302126510725" Pressure="128" />
|
||||
<Point X="84" Y="74" T="1302126510741" Pressure="128" />
|
||||
<Point X="87" Y="77" T="1302126510757" Pressure="128" />
|
||||
<Point X="90" Y="79" T="1302126510757" Pressure="128" />
|
||||
<Point X="93" Y="80" T="1302126510757" Pressure="128" />
|
||||
<Point X="97" Y="81" T="1302126510772" Pressure="128" />
|
||||
<Point X="101" Y="82" T="1302126510772" Pressure="128" />
|
||||
<Point X="104" Y="81" T="1302126510788" Pressure="128" />
|
||||
<Point X="108" Y="81" T="1302126510803" Pressure="128" />
|
||||
<Point X="112" Y="79" T="1302126510803" Pressure="128" />
|
||||
<Point X="116" Y="78" T="1302126510803" Pressure="128" />
|
||||
<Point X="119" Y="76" T="1302126510819" Pressure="128" />
|
||||
<Point X="122" Y="73" T="1302126510819" Pressure="128" />
|
||||
<Point X="125" Y="70" T="1302126510835" Pressure="128" />
|
||||
<Point X="128" Y="67" T="1302126510835" Pressure="128" />
|
||||
<Point X="130" Y="63" T="1302126510850" Pressure="128" />
|
||||
<Point X="131" Y="59" T="1302126510850" Pressure="128" />
|
||||
<Point X="133" Y="55" T="1302126510866" Pressure="128" />
|
||||
<Point X="134" Y="51" T="1302126510866" Pressure="128" />
|
||||
<Point X="135" Y="47" T="1302126510866" Pressure="128" />
|
||||
<Point X="135" Y="43" T="1302126510881" Pressure="128" />
|
||||
<Point X="136" Y="39" T="1302126510881" Pressure="128" />
|
||||
<Point X="136" Y="36" T="1302126510897" Pressure="128" />
|
||||
<Point X="136" Y="32" T="1302126510913" Pressure="128" />
|
||||
<Point X="136" Y="29" T="1302126510913" Pressure="128" />
|
||||
<Point X="136" Y="26" T="1302126510913" Pressure="128" />
|
||||
<Point X="135" Y="24" T="1302126510928" Pressure="128" />
|
||||
<Point X="135" Y="21" T="1302126510928" Pressure="128" />
|
||||
<Point X="134" Y="19" T="1302126510944" Pressure="128" />
|
||||
<Point X="133" Y="18" T="1302126510944" Pressure="128" />
|
||||
<Point X="133" Y="16" T="1302126510959" Pressure="128" />
|
||||
<Point X="132" Y="16" T="1302126510959" Pressure="128" />
|
||||
<Point X="132" Y="15" T="1302126510975" Pressure="128" />
|
||||
<Point X="132" Y="14" T="1302126510991" Pressure="128" />
|
||||
<Point X="131" Y="14" T="1302126510991" Pressure="128" />
|
||||
<Point X="131" Y="14" T="1302126511006" Pressure="128" />
|
||||
</Stroke>
|
||||
<Stroke index="2">
|
||||
<Point X="100" Y="28" T="1302126511334" Pressure="128" />
|
||||
<Point X="101" Y="39" T="1302126511334" Pressure="128" />
|
||||
<Point X="99" Y="49" T="1302126511349" Pressure="128" />
|
||||
<Point X="98" Y="57" T="1302126511349" Pressure="128" />
|
||||
<Point X="97" Y="61" T="1302126511349" Pressure="128" />
|
||||
<Point X="96" Y="66" T="1302126511365" Pressure="128" />
|
||||
<Point X="96" Y="71" T="1302126511381" Pressure="128" />
|
||||
<Point X="95" Y="75" T="1302126511381" Pressure="128" />
|
||||
<Point X="95" Y="80" T="1302126511381" Pressure="128" />
|
||||
<Point X="94" Y="85" T="1302126511396" Pressure="128" />
|
||||
<Point X="94" Y="90" T="1302126511412" Pressure="128" />
|
||||
<Point X="93" Y="95" T="1302126511412" Pressure="128" />
|
||||
<Point X="93" Y="100" T="1302126511412" Pressure="128" />
|
||||
<Point X="93" Y="104" T="1302126511427" Pressure="128" />
|
||||
<Point X="93" Y="109" T="1302126511427" Pressure="128" />
|
||||
<Point X="93" Y="113" T="1302126511443" Pressure="128" />
|
||||
<Point X="92" Y="118" T="1302126511443" Pressure="128" />
|
||||
<Point X="92" Y="122" T="1302126511459" Pressure="128" />
|
||||
<Point X="92" Y="126" T="1302126511459" Pressure="128" />
|
||||
<Point X="92" Y="130" T="1302126511459" Pressure="128" />
|
||||
<Point X="92" Y="134" T="1302126511474" Pressure="128" />
|
||||
<Point X="93" Y="137" T="1302126511490" Pressure="128" />
|
||||
<Point X="93" Y="140" T="1302126511490" Pressure="128" />
|
||||
<Point X="93" Y="144" T="1302126511505" Pressure="128" />
|
||||
<Point X="93" Y="146" T="1302126511505" Pressure="128" />
|
||||
<Point X="93" Y="149" T="1302126511521" Pressure="128" />
|
||||
<Point X="93" Y="152" T="1302126511521" Pressure="128" />
|
||||
<Point X="92" Y="154" T="1302126511521" Pressure="128" />
|
||||
<Point X="92" Y="155" T="1302126511537" Pressure="128" />
|
||||
<Point X="92" Y="157" T="1302126511537" Pressure="128" />
|
||||
<Point X="91" Y="158" T="1302126511552" Pressure="128" />
|
||||
<Point X="91" Y="159" T="1302126511568" Pressure="128" />
|
||||
<Point X="90" Y="160" T="1302126511568" Pressure="128" />
|
||||
<Point X="90" Y="161" T="1302126511568" Pressure="128" />
|
||||
<Point X="90" Y="161" T="1302126511583" Pressure="128" />
|
||||
</Stroke>
|
||||
</Gesture>
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7add5aba12bde4453936b4666e09630f
|
||||
TextScriptImporter:
|
||||
userData:
|
||||
+204
@@ -0,0 +1,204 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<Gesture Name="six_point_star~01" Subject="10" InputType="stylus" Speed="MEDIUM" NumPts="197">
|
||||
<Stroke index="1">
|
||||
<Point X="111" Y="29" T="1302126513268" Pressure="128" />
|
||||
<Point X="115" Y="21" T="1302126513268" Pressure="128" />
|
||||
<Point X="112" Y="22" T="1302126513268" Pressure="128" />
|
||||
<Point X="107" Y="28" T="1302126513268" Pressure="128" />
|
||||
<Point X="105" Y="32" T="1302126513268" Pressure="128" />
|
||||
<Point X="102" Y="36" T="1302126513284" Pressure="128" />
|
||||
<Point X="100" Y="40" T="1302126513299" Pressure="128" />
|
||||
<Point X="97" Y="45" T="1302126513299" Pressure="128" />
|
||||
<Point X="94" Y="50" T="1302126513315" Pressure="128" />
|
||||
<Point X="90" Y="54" T="1302126513315" Pressure="128" />
|
||||
<Point X="87" Y="59" T="1302126513315" Pressure="128" />
|
||||
<Point X="83" Y="64" T="1302126513331" Pressure="128" />
|
||||
<Point X="79" Y="69" T="1302126513331" Pressure="128" />
|
||||
<Point X="75" Y="74" T="1302126513346" Pressure="128" />
|
||||
<Point X="72" Y="79" T="1302126513346" Pressure="128" />
|
||||
<Point X="68" Y="84" T="1302126513362" Pressure="128" />
|
||||
<Point X="64" Y="89" T="1302126513362" Pressure="128" />
|
||||
<Point X="61" Y="93" T="1302126513377" Pressure="128" />
|
||||
<Point X="58" Y="97" T="1302126513393" Pressure="128" />
|
||||
<Point X="55" Y="101" T="1302126513393" Pressure="128" />
|
||||
<Point X="52" Y="104" T="1302126513393" Pressure="128" />
|
||||
<Point X="49" Y="108" T="1302126513409" Pressure="128" />
|
||||
<Point X="47" Y="111" T="1302126513409" Pressure="128" />
|
||||
<Point X="44" Y="113" T="1302126513424" Pressure="128" />
|
||||
<Point X="42" Y="116" T="1302126513424" Pressure="128" />
|
||||
<Point X="41" Y="118" T="1302126513440" Pressure="128" />
|
||||
<Point X="40" Y="120" T="1302126513440" Pressure="128" />
|
||||
<Point X="39" Y="121" T="1302126513455" Pressure="128" />
|
||||
<Point X="38" Y="123" T="1302126513455" Pressure="128" />
|
||||
<Point X="38" Y="124" T="1302126513455" Pressure="128" />
|
||||
<Point X="39" Y="125" T="1302126513471" Pressure="128" />
|
||||
<Point X="41" Y="126" T="1302126513487" Pressure="128" />
|
||||
<Point X="43" Y="126" T="1302126513502" Pressure="128" />
|
||||
<Point X="45" Y="126" T="1302126513502" Pressure="128" />
|
||||
<Point X="48" Y="127" T="1302126513502" Pressure="128" />
|
||||
<Point X="51" Y="127" T="1302126513518" Pressure="128" />
|
||||
<Point X="55" Y="127" T="1302126513518" Pressure="128" />
|
||||
<Point X="60" Y="126" T="1302126513533" Pressure="128" />
|
||||
<Point X="65" Y="126" T="1302126513533" Pressure="128" />
|
||||
<Point X="71" Y="126" T="1302126513549" Pressure="128" />
|
||||
<Point X="77" Y="126" T="1302126513549" Pressure="128" />
|
||||
<Point X="83" Y="126" T="1302126513565" Pressure="128" />
|
||||
<Point X="89" Y="125" T="1302126513580" Pressure="128" />
|
||||
<Point X="96" Y="125" T="1302126513580" Pressure="128" />
|
||||
<Point X="102" Y="125" T="1302126513580" Pressure="128" />
|
||||
<Point X="109" Y="125" T="1302126513596" Pressure="128" />
|
||||
<Point X="116" Y="125" T="1302126513596" Pressure="128" />
|
||||
<Point X="122" Y="125" T="1302126513611" Pressure="128" />
|
||||
<Point X="128" Y="124" T="1302126513627" Pressure="128" />
|
||||
<Point X="134" Y="124" T="1302126513627" Pressure="128" />
|
||||
<Point X="140" Y="124" T="1302126513627" Pressure="128" />
|
||||
<Point X="145" Y="123" T="1302126513643" Pressure="128" />
|
||||
<Point X="150" Y="123" T="1302126513643" Pressure="128" />
|
||||
<Point X="154" Y="122" T="1302126513658" Pressure="128" />
|
||||
<Point X="158" Y="122" T="1302126513658" Pressure="128" />
|
||||
<Point X="161" Y="121" T="1302126513674" Pressure="128" />
|
||||
<Point X="164" Y="120" T="1302126513674" Pressure="128" />
|
||||
<Point X="166" Y="119" T="1302126513689" Pressure="128" />
|
||||
<Point X="168" Y="118" T="1302126513689" Pressure="128" />
|
||||
<Point X="169" Y="117" T="1302126513689" Pressure="128" />
|
||||
<Point X="169" Y="115" T="1302126513705" Pressure="128" />
|
||||
<Point X="169" Y="113" T="1302126513705" Pressure="128" />
|
||||
<Point X="169" Y="111" T="1302126513721" Pressure="128" />
|
||||
<Point X="168" Y="108" T="1302126513736" Pressure="128" />
|
||||
<Point X="167" Y="106" T="1302126513736" Pressure="128" />
|
||||
<Point X="165" Y="103" T="1302126513736" Pressure="128" />
|
||||
<Point X="164" Y="99" T="1302126513752" Pressure="128" />
|
||||
<Point X="162" Y="96" T="1302126513752" Pressure="128" />
|
||||
<Point X="159" Y="92" T="1302126513767" Pressure="128" />
|
||||
<Point X="157" Y="88" T="1302126513783" Pressure="128" />
|
||||
<Point X="155" Y="84" T="1302126513783" Pressure="128" />
|
||||
<Point X="152" Y="80" T="1302126513783" Pressure="128" />
|
||||
<Point X="150" Y="76" T="1302126513799" Pressure="128" />
|
||||
<Point X="147" Y="72" T="1302126513799" Pressure="128" />
|
||||
<Point X="145" Y="68" T="1302126513814" Pressure="128" />
|
||||
<Point X="143" Y="64" T="1302126513814" Pressure="128" />
|
||||
<Point X="140" Y="61" T="1302126513830" Pressure="128" />
|
||||
<Point X="138" Y="57" T="1302126513830" Pressure="128" />
|
||||
<Point X="136" Y="53" T="1302126513845" Pressure="128" />
|
||||
<Point X="134" Y="50" T="1302126513861" Pressure="128" />
|
||||
<Point X="132" Y="47" T="1302126513861" Pressure="128" />
|
||||
<Point X="130" Y="44" T="1302126513861" Pressure="128" />
|
||||
<Point X="129" Y="42" T="1302126513877" Pressure="128" />
|
||||
<Point X="127" Y="39" T="1302126513877" Pressure="128" />
|
||||
<Point X="125" Y="37" T="1302126513892" Pressure="128" />
|
||||
<Point X="124" Y="35" T="1302126513892" Pressure="128" />
|
||||
<Point X="123" Y="33" T="1302126513908" Pressure="128" />
|
||||
<Point X="121" Y="32" T="1302126513908" Pressure="128" />
|
||||
<Point X="121" Y="30" T="1302126513923" Pressure="128" />
|
||||
<Point X="120" Y="29" T="1302126513923" Pressure="128" />
|
||||
<Point X="120" Y="28" T="1302126513923" Pressure="128" />
|
||||
<Point X="119" Y="27" T="1302126513939" Pressure="128" />
|
||||
<Point X="119" Y="26" T="1302126513955" Pressure="128" />
|
||||
<Point X="119" Y="26" T="1302126513970" Pressure="128" />
|
||||
</Stroke>
|
||||
<Stroke index="2">
|
||||
<Point X="74" Y="39" T="1302126524532" Pressure="128" />
|
||||
<Point X="73" Y="35" T="1302126524532" Pressure="128" />
|
||||
<Point X="86" Y="65" T="1302126524532" Pressure="128" />
|
||||
<Point X="89" Y="73" T="1302126524532" Pressure="128" />
|
||||
<Point X="90" Y="77" T="1302126524547" Pressure="128" />
|
||||
<Point X="92" Y="81" T="1302126524547" Pressure="128" />
|
||||
<Point X="94" Y="86" T="1302126524563" Pressure="128" />
|
||||
<Point X="95" Y="90" T="1302126524578" Pressure="128" />
|
||||
<Point X="97" Y="95" T="1302126524578" Pressure="128" />
|
||||
<Point X="99" Y="100" T="1302126524594" Pressure="128" />
|
||||
<Point X="101" Y="104" T="1302126524594" Pressure="128" />
|
||||
<Point X="102" Y="109" T="1302126524610" Pressure="128" />
|
||||
<Point X="104" Y="113" T="1302126524610" Pressure="128" />
|
||||
<Point X="106" Y="117" T="1302126524610" Pressure="128" />
|
||||
<Point X="107" Y="121" T="1302126524625" Pressure="128" />
|
||||
<Point X="109" Y="126" T="1302126524625" Pressure="128" />
|
||||
<Point X="110" Y="130" T="1302126524641" Pressure="128" />
|
||||
<Point X="111" Y="133" T="1302126524656" Pressure="128" />
|
||||
<Point X="113" Y="137" T="1302126524656" Pressure="128" />
|
||||
<Point X="114" Y="140" T="1302126524656" Pressure="128" />
|
||||
<Point X="115" Y="143" T="1302126524672" Pressure="128" />
|
||||
<Point X="115" Y="146" T="1302126524672" Pressure="128" />
|
||||
<Point X="116" Y="149" T="1302126524688" Pressure="128" />
|
||||
<Point X="117" Y="152" T="1302126524703" Pressure="128" />
|
||||
<Point X="117" Y="154" T="1302126524703" Pressure="128" />
|
||||
<Point X="118" Y="156" T="1302126524703" Pressure="128" />
|
||||
<Point X="118" Y="158" T="1302126524719" Pressure="128" />
|
||||
<Point X="119" Y="160" T="1302126524719" Pressure="128" />
|
||||
<Point X="119" Y="162" T="1302126524734" Pressure="128" />
|
||||
<Point X="119" Y="163" T="1302126524734" Pressure="128" />
|
||||
<Point X="120" Y="164" T="1302126524734" Pressure="128" />
|
||||
<Point X="121" Y="165" T="1302126524750" Pressure="128" />
|
||||
<Point X="121" Y="166" T="1302126524766" Pressure="128" />
|
||||
<Point X="122" Y="166" T="1302126524766" Pressure="128" />
|
||||
<Point X="123" Y="166" T="1302126524766" Pressure="128" />
|
||||
<Point X="124" Y="165" T="1302126524781" Pressure="128" />
|
||||
<Point X="125" Y="164" T="1302126524797" Pressure="128" />
|
||||
<Point X="127" Y="162" T="1302126524797" Pressure="128" />
|
||||
<Point X="128" Y="160" T="1302126524812" Pressure="128" />
|
||||
<Point X="130" Y="157" T="1302126524812" Pressure="128" />
|
||||
<Point X="132" Y="154" T="1302126524812" Pressure="128" />
|
||||
<Point X="134" Y="150" T="1302126524828" Pressure="128" />
|
||||
<Point X="136" Y="146" T="1302126524828" Pressure="128" />
|
||||
<Point X="138" Y="141" T="1302126524844" Pressure="128" />
|
||||
<Point X="140" Y="136" T="1302126524844" Pressure="128" />
|
||||
<Point X="142" Y="131" T="1302126524859" Pressure="128" />
|
||||
<Point X="144" Y="126" T="1302126524859" Pressure="128" />
|
||||
<Point X="145" Y="121" T="1302126524875" Pressure="128" />
|
||||
<Point X="147" Y="115" T="1302126524890" Pressure="128" />
|
||||
<Point X="148" Y="109" T="1302126524890" Pressure="128" />
|
||||
<Point X="150" Y="104" T="1302126524890" Pressure="128" />
|
||||
<Point X="151" Y="98" T="1302126524906" Pressure="128" />
|
||||
<Point X="153" Y="93" T="1302126524906" Pressure="128" />
|
||||
<Point X="154" Y="87" T="1302126524922" Pressure="128" />
|
||||
<Point X="155" Y="82" T="1302126524921" Pressure="128" />
|
||||
<Point X="157" Y="77" T="1302126524937" Pressure="128" />
|
||||
<Point X="158" Y="73" T="1302126524937" Pressure="128" />
|
||||
<Point X="159" Y="68" T="1302126524953" Pressure="128" />
|
||||
<Point X="160" Y="64" T="1302126524953" Pressure="128" />
|
||||
<Point X="162" Y="60" T="1302126524968" Pressure="128" />
|
||||
<Point X="163" Y="57" T="1302126524968" Pressure="128" />
|
||||
<Point X="164" Y="53" T="1302126524968" Pressure="128" />
|
||||
<Point X="165" Y="50" T="1302126524984" Pressure="128" />
|
||||
<Point X="166" Y="47" T="1302126525000" Pressure="128" />
|
||||
<Point X="167" Y="45" T="1302126525000" Pressure="128" />
|
||||
<Point X="168" Y="42" T="1302126525000" Pressure="128" />
|
||||
<Point X="169" Y="41" T="1302126525015" Pressure="128" />
|
||||
<Point X="170" Y="39" T="1302126525015" Pressure="128" />
|
||||
<Point X="170" Y="37" T="1302126525031" Pressure="128" />
|
||||
<Point X="171" Y="36" T="1302126525046" Pressure="128" />
|
||||
<Point X="170" Y="35" T="1302126525046" Pressure="128" />
|
||||
<Point X="170" Y="34" T="1302126525046" Pressure="128" />
|
||||
<Point X="169" Y="33" T="1302126525062" Pressure="128" />
|
||||
<Point X="168" Y="33" T="1302126525062" Pressure="128" />
|
||||
<Point X="166" Y="33" T="1302126525078" Pressure="128" />
|
||||
<Point X="164" Y="32" T="1302126525078" Pressure="128" />
|
||||
<Point X="161" Y="32" T="1302126525093" Pressure="128" />
|
||||
<Point X="158" Y="32" T="1302126525093" Pressure="128" />
|
||||
<Point X="155" Y="32" T="1302126525109" Pressure="128" />
|
||||
<Point X="151" Y="32" T="1302126525109" Pressure="128" />
|
||||
<Point X="147" Y="32" T="1302126525124" Pressure="128" />
|
||||
<Point X="143" Y="32" T="1302126525124" Pressure="128" />
|
||||
<Point X="138" Y="32" T="1302126525140" Pressure="128" />
|
||||
<Point X="133" Y="32" T="1302126525140" Pressure="128" />
|
||||
<Point X="128" Y="33" T="1302126525156" Pressure="128" />
|
||||
<Point X="123" Y="33" T="1302126525156" Pressure="128" />
|
||||
<Point X="118" Y="33" T="1302126525171" Pressure="128" />
|
||||
<Point X="113" Y="33" T="1302126525171" Pressure="128" />
|
||||
<Point X="107" Y="33" T="1302126525187" Pressure="128" />
|
||||
<Point X="102" Y="33" T="1302126525187" Pressure="128" />
|
||||
<Point X="97" Y="34" T="1302126525187" Pressure="128" />
|
||||
<Point X="92" Y="34" T="1302126525202" Pressure="128" />
|
||||
<Point X="88" Y="34" T="1302126525202" Pressure="128" />
|
||||
<Point X="83" Y="34" T="1302126525218" Pressure="128" />
|
||||
<Point X="79" Y="34" T="1302126525234" Pressure="128" />
|
||||
<Point X="76" Y="34" T="1302126525234" Pressure="128" />
|
||||
<Point X="72" Y="34" T="1302126525234" Pressure="128" />
|
||||
<Point X="69" Y="35" T="1302126525249" Pressure="128" />
|
||||
<Point X="67" Y="35" T="1302126525249" Pressure="128" />
|
||||
<Point X="65" Y="36" T="1302126525265" Pressure="128" />
|
||||
<Point X="64" Y="36" T="1302126525280" Pressure="128" />
|
||||
<Point X="62" Y="37" T="1302126525280" Pressure="128" />
|
||||
<Point X="62" Y="37" T="1302126525296" Pressure="128" />
|
||||
</Stroke>
|
||||
</Gesture>
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d119cba6442ba48df84c708066ff08a5
|
||||
TextScriptImporter:
|
||||
userData:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 936a681079645854e86492246433c71f
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,174 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!29 &1
|
||||
SceneSettings:
|
||||
m_ObjectHideFlags: 0
|
||||
m_PVSData:
|
||||
m_PVSObjectsArray: []
|
||||
m_PVSPortalsArray: []
|
||||
m_OcclusionBakeSettings:
|
||||
smallestOccluder: 5
|
||||
smallestHole: .25
|
||||
backfaceThreshold: 100
|
||||
--- !u!104 &2
|
||||
RenderSettings:
|
||||
m_Fog: 0
|
||||
m_FogColor: {r: .5, g: .5, b: .5, a: 1}
|
||||
m_FogMode: 3
|
||||
m_FogDensity: .00999999978
|
||||
m_LinearFogStart: 0
|
||||
m_LinearFogEnd: 300
|
||||
m_AmbientLight: {r: .200000003, g: .200000003, b: .200000003, a: 1}
|
||||
m_SkyboxMaterial: {fileID: 0}
|
||||
m_HaloStrength: .5
|
||||
m_FlareStrength: 1
|
||||
m_FlareFadeSpeed: 3
|
||||
m_HaloTexture: {fileID: 0}
|
||||
m_SpotCookie: {fileID: 0}
|
||||
m_ObjectHideFlags: 0
|
||||
--- !u!127 &3
|
||||
LevelGameManager:
|
||||
m_ObjectHideFlags: 0
|
||||
--- !u!157 &4
|
||||
LightmapSettings:
|
||||
m_ObjectHideFlags: 0
|
||||
m_LightProbes: {fileID: 0}
|
||||
m_Lightmaps: []
|
||||
m_LightmapsMode: 1
|
||||
m_BakedColorSpace: 0
|
||||
m_UseDualLightmapsInForward: 0
|
||||
m_LightmapEditorSettings:
|
||||
m_Resolution: 50
|
||||
m_LastUsedResolution: 0
|
||||
m_TextureWidth: 1024
|
||||
m_TextureHeight: 1024
|
||||
m_BounceBoost: 1
|
||||
m_BounceIntensity: 1
|
||||
m_SkyLightColor: {r: .860000014, g: .930000007, b: 1, a: 1}
|
||||
m_SkyLightIntensity: 0
|
||||
m_Quality: 0
|
||||
m_Bounces: 1
|
||||
m_FinalGatherRays: 1000
|
||||
m_FinalGatherContrastThreshold: .0500000007
|
||||
m_FinalGatherGradientThreshold: 0
|
||||
m_FinalGatherInterpolationPoints: 15
|
||||
m_AOAmount: 0
|
||||
m_AOMaxDistance: .100000001
|
||||
m_AOContrast: 1
|
||||
m_LODSurfaceMappingDistance: 1
|
||||
m_Padding: 0
|
||||
m_TextureCompression: 0
|
||||
m_LockAtlas: 0
|
||||
--- !u!196 &5
|
||||
NavMeshSettings:
|
||||
m_ObjectHideFlags: 0
|
||||
m_BuildSettings:
|
||||
agentRadius: .5
|
||||
agentHeight: 2
|
||||
agentSlope: 45
|
||||
agentClimb: .400000006
|
||||
ledgeDropHeight: 0
|
||||
maxJumpAcrossDistance: 0
|
||||
accuratePlacement: 0
|
||||
minRegionArea: 2
|
||||
widthInaccuracy: 16.666666
|
||||
heightInaccuracy: 10
|
||||
m_NavMesh: {fileID: 0}
|
||||
--- !u!1 &1907031143
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
serializedVersion: 4
|
||||
m_Component:
|
||||
- 4: {fileID: 1907031148}
|
||||
- 20: {fileID: 1907031147}
|
||||
- 92: {fileID: 1907031146}
|
||||
- 124: {fileID: 1907031145}
|
||||
- 81: {fileID: 1907031144}
|
||||
- 114: {fileID: 1907031149}
|
||||
m_Layer: 0
|
||||
m_Name: Main Camera
|
||||
m_TagString: MainCamera
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!81 &1907031144
|
||||
AudioListener:
|
||||
m_ObjectHideFlags: 0
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_GameObject: {fileID: 1907031143}
|
||||
m_Enabled: 1
|
||||
--- !u!124 &1907031145
|
||||
Behaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_GameObject: {fileID: 1907031143}
|
||||
m_Enabled: 1
|
||||
--- !u!92 &1907031146
|
||||
Behaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_GameObject: {fileID: 1907031143}
|
||||
m_Enabled: 1
|
||||
--- !u!20 &1907031147
|
||||
Camera:
|
||||
m_ObjectHideFlags: 0
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_GameObject: {fileID: 1907031143}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
m_ClearFlags: 1
|
||||
m_BackGroundColor: {r: .192156866, g: .301960796, b: .474509805, a: .0196078438}
|
||||
m_NormalizedViewPortRect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 1
|
||||
height: 1
|
||||
near clip plane: .300000012
|
||||
far clip plane: 1000
|
||||
field of view: 60
|
||||
orthographic: 0
|
||||
orthographic size: 5
|
||||
m_Depth: -1
|
||||
m_CullingMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 4294967295
|
||||
m_RenderingPath: -1
|
||||
m_TargetTexture: {fileID: 0}
|
||||
m_TargetDisplay: 0
|
||||
m_HDR: 0
|
||||
m_OcclusionCulling: 1
|
||||
m_StereoConvergence: 10
|
||||
m_StereoSeparation: .0219999999
|
||||
--- !u!4 &1907031148
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_GameObject: {fileID: 1907031143}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 1, z: -10}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 0
|
||||
--- !u!114 &1907031149
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_GameObject: {fileID: 1907031143}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 63465958d7bcc403e89a14826c19f7bc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
gestureOnScreenPrefab: {fileID: 400000, guid: 971129baafd304455a111daa5207b8a1,
|
||||
type: 2}
|
||||
@@ -0,0 +1,4 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bacf025fd0d5b485e9ae059c8dd4eae6
|
||||
DefaultImporter:
|
||||
userData:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2c4358cb80f86c44fac62434b1543143
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,131 @@
|
||||
using UnityEngine;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
|
||||
using PDollarGestureRecognizer;
|
||||
|
||||
public class Demo : MonoBehaviour {
|
||||
|
||||
public Transform gestureOnScreenPrefab;
|
||||
|
||||
private List<Gesture> trainingSet = new List<Gesture>();
|
||||
|
||||
private List<Point> points = new List<Point>();
|
||||
private int strokeId = -1;
|
||||
|
||||
private Vector3 virtualKeyPosition = Vector2.zero;
|
||||
private Rect drawArea;
|
||||
|
||||
private RuntimePlatform platform;
|
||||
private int vertexCount = 0;
|
||||
|
||||
private List<LineRenderer> gestureLinesRenderer = new List<LineRenderer>();
|
||||
private LineRenderer currentGestureLineRenderer;
|
||||
|
||||
//GUI
|
||||
private string message;
|
||||
private bool recognized;
|
||||
private string newGestureName = "";
|
||||
|
||||
void Start () {
|
||||
|
||||
platform = Application.platform;
|
||||
drawArea = new Rect(0, 0, Screen.width - Screen.width / 3, Screen.height);
|
||||
|
||||
//Load pre-made gestures
|
||||
TextAsset[] gesturesXml = Resources.LoadAll<TextAsset>("GestureSet/10-stylus-MEDIUM/");
|
||||
foreach (TextAsset gestureXml in gesturesXml)
|
||||
trainingSet.Add(GestureIO.ReadGestureFromXML(gestureXml.text));
|
||||
|
||||
//Load user custom gestures
|
||||
string[] filePaths = Directory.GetFiles(Application.persistentDataPath, "*.xml");
|
||||
foreach (string filePath in filePaths)
|
||||
trainingSet.Add(GestureIO.ReadGestureFromFile(filePath));
|
||||
}
|
||||
|
||||
void Update () {
|
||||
|
||||
if (platform == RuntimePlatform.Android || platform == RuntimePlatform.IPhonePlayer) {
|
||||
if (Input.touchCount > 0) {
|
||||
virtualKeyPosition = new Vector3(Input.GetTouch(0).position.x, Input.GetTouch(0).position.y);
|
||||
}
|
||||
} else {
|
||||
if (Input.GetMouseButton(0)) {
|
||||
virtualKeyPosition = new Vector3(Input.mousePosition.x, Input.mousePosition.y);
|
||||
}
|
||||
}
|
||||
|
||||
if (drawArea.Contains(virtualKeyPosition)) {
|
||||
|
||||
if (Input.GetMouseButtonDown(0)) {
|
||||
|
||||
if (recognized) {
|
||||
|
||||
recognized = false;
|
||||
strokeId = -1;
|
||||
|
||||
points.Clear();
|
||||
|
||||
foreach (LineRenderer lineRenderer in gestureLinesRenderer) {
|
||||
|
||||
lineRenderer.SetVertexCount(0);
|
||||
Destroy(lineRenderer.gameObject);
|
||||
}
|
||||
|
||||
gestureLinesRenderer.Clear();
|
||||
}
|
||||
|
||||
++strokeId;
|
||||
|
||||
Transform tmpGesture = Instantiate(gestureOnScreenPrefab, transform.position, transform.rotation) as Transform;
|
||||
currentGestureLineRenderer = tmpGesture.GetComponent<LineRenderer>();
|
||||
|
||||
gestureLinesRenderer.Add(currentGestureLineRenderer);
|
||||
|
||||
vertexCount = 0;
|
||||
}
|
||||
|
||||
if (Input.GetMouseButton(0)) {
|
||||
points.Add(new Point(virtualKeyPosition.x, -virtualKeyPosition.y, strokeId));
|
||||
|
||||
currentGestureLineRenderer.SetVertexCount(++vertexCount);
|
||||
currentGestureLineRenderer.SetPosition(vertexCount - 1, Camera.main.ScreenToWorldPoint(new Vector3(virtualKeyPosition.x, virtualKeyPosition.y, 10)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void OnGUI() {
|
||||
|
||||
GUI.Box(drawArea, "Draw Area");
|
||||
|
||||
GUI.Label(new Rect(10, Screen.height - 40, 500, 50), message);
|
||||
|
||||
if (GUI.Button(new Rect(Screen.width - 100, 10, 100, 30), "Recognize")) {
|
||||
|
||||
recognized = true;
|
||||
|
||||
Gesture candidate = new Gesture(points.ToArray());
|
||||
Result gestureResult = PointCloudRecognizer.Classify(candidate, trainingSet.ToArray());
|
||||
|
||||
message = gestureResult.GestureClass + " " + gestureResult.Score;
|
||||
}
|
||||
|
||||
GUI.Label(new Rect(Screen.width - 200, 150, 70, 30), "Add as: ");
|
||||
newGestureName = GUI.TextField(new Rect(Screen.width - 150, 150, 100, 30), newGestureName);
|
||||
|
||||
if (GUI.Button(new Rect(Screen.width - 50, 150, 50, 30), "Add") && points.Count > 0 && newGestureName != "") {
|
||||
|
||||
string fileName = String.Format("{0}/{1}-{2}.xml", Application.persistentDataPath, newGestureName, DateTime.Now.ToFileTime());
|
||||
|
||||
#if !UNITY_WEBPLAYER
|
||||
GestureIO.WriteGesture(points.ToArray(), newGestureName, fileName);
|
||||
#endif
|
||||
|
||||
trainingSet.Add(new Gesture(points.ToArray(), newGestureName));
|
||||
|
||||
newGestureName = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 63465958d7bcc403e89a14826c19f7bc
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c92918eb0fa65af4a93fdc9056b24297
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,82 @@
|
||||
/**
|
||||
* The $P Point-Cloud Recognizer (.NET Framework 4.0 C# version)
|
||||
*
|
||||
* Radu-Daniel Vatavu, Ph.D.
|
||||
* University Stefan cel Mare of Suceava
|
||||
* Suceava 720229, Romania
|
||||
* vatavu@eed.usv.ro
|
||||
*
|
||||
* Lisa Anthony, Ph.D.
|
||||
* UMBC
|
||||
* Information Systems Department
|
||||
* 1000 Hilltop Circle
|
||||
* Baltimore, MD 21250
|
||||
* lanthony@umbc.edu
|
||||
*
|
||||
* Jacob O. Wobbrock, Ph.D.
|
||||
* The Information School
|
||||
* University of Washington
|
||||
* Seattle, WA 98195-2840
|
||||
* wobbrock@uw.edu
|
||||
*
|
||||
* The academic publication for the $P recognizer, and what should be
|
||||
* used to cite it, is:
|
||||
*
|
||||
* Vatavu, R.-D., Anthony, L. and Wobbrock, J.O. (2012).
|
||||
* Gestures as point clouds: A $P recognizer for user interface
|
||||
* prototypes. Proceedings of the ACM Int'l Conference on
|
||||
* Multimodal Interfaces (ICMI '12). Santa Monica, California
|
||||
* (October 22-26, 2012). New York: ACM Press, pp. 273-280.
|
||||
*
|
||||
* This software is distributed under the "New BSD License" agreement:
|
||||
*
|
||||
* Copyright (c) 2012, Radu-Daniel Vatavu, Lisa Anthony, and
|
||||
* Jacob O. Wobbrock. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* * Neither the names of the University Stefan cel Mare of Suceava,
|
||||
* University of Washington, nor UMBC, nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
||||
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Radu-Daniel Vatavu OR Lisa Anthony
|
||||
* OR Jacob O. Wobbrock BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
**/
|
||||
using System;
|
||||
|
||||
namespace PDollarGestureRecognizer
|
||||
{
|
||||
public class Geometry
|
||||
{
|
||||
/// <summary>
|
||||
/// Computes the Squared Euclidean Distance between two points in 2D
|
||||
/// </summary>
|
||||
public static float SqrEuclideanDistance(Point a, Point b)
|
||||
{
|
||||
return (a.X - b.X) * (a.X - b.X) + (a.Y - b.Y) * (a.Y - b.Y);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Computes the Euclidean Distance between two points in 2D
|
||||
/// </summary>
|
||||
public static float EuclideanDistance(Point a, Point b)
|
||||
{
|
||||
return (float)Math.Sqrt(SqrEuclideanDistance(a, b));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4ffb6ac588cc947cebfda99d6eb54783
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
@@ -0,0 +1,208 @@
|
||||
/**
|
||||
* The $P Point-Cloud Recognizer (.NET Framework 4.0 C# version)
|
||||
*
|
||||
* Radu-Daniel Vatavu, Ph.D.
|
||||
* University Stefan cel Mare of Suceava
|
||||
* Suceava 720229, Romania
|
||||
* vatavu@eed.usv.ro
|
||||
*
|
||||
* Lisa Anthony, Ph.D.
|
||||
* UMBC
|
||||
* Information Systems Department
|
||||
* 1000 Hilltop Circle
|
||||
* Baltimore, MD 21250
|
||||
* lanthony@umbc.edu
|
||||
*
|
||||
* Jacob O. Wobbrock, Ph.D.
|
||||
* The Information School
|
||||
* University of Washington
|
||||
* Seattle, WA 98195-2840
|
||||
* wobbrock@uw.edu
|
||||
*
|
||||
* The academic publication for the $P recognizer, and what should be
|
||||
* used to cite it, is:
|
||||
*
|
||||
* Vatavu, R.-D., Anthony, L. and Wobbrock, J.O. (2012).
|
||||
* Gestures as point clouds: A $P recognizer for user interface
|
||||
* prototypes. Proceedings of the ACM Int'l Conference on
|
||||
* Multimodal Interfaces (ICMI '12). Santa Monica, California
|
||||
* (October 22-26, 2012). New York: ACM Press, pp. 273-280.
|
||||
*
|
||||
* This software is distributed under the "New BSD License" agreement:
|
||||
*
|
||||
* Copyright (c) 2012, Radu-Daniel Vatavu, Lisa Anthony, and
|
||||
* Jacob O. Wobbrock. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* * Neither the names of the University Stefan cel Mare of Suceava,
|
||||
* University of Washington, nor UMBC, nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
||||
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Radu-Daniel Vatavu OR Lisa Anthony
|
||||
* OR Jacob O. Wobbrock BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
**/
|
||||
using System;
|
||||
|
||||
namespace PDollarGestureRecognizer
|
||||
{
|
||||
/// <summary>
|
||||
/// Implements a gesture as a cloud of points (i.e., an unordered set of points).
|
||||
/// Gestures are normalized with respect to scale, translated to origin, and resampled into a fixed number of 32 points.
|
||||
/// </summary>
|
||||
public class Gesture
|
||||
{
|
||||
public Point[] Points = null; // gesture points (normalized)
|
||||
public string Name = ""; // gesture class
|
||||
private const int SAMPLING_RESOLUTION = 32;
|
||||
|
||||
/// <summary>
|
||||
/// Constructs a gesture from an array of points
|
||||
/// </summary>
|
||||
/// <param name="points"></param>
|
||||
public Gesture(Point[] points, string gestureName = "")
|
||||
{
|
||||
this.Name = gestureName;
|
||||
|
||||
// normalizes the array of points with respect to scale, origin, and number of points
|
||||
this.Points = Scale(points);
|
||||
this.Points = TranslateTo(Points, Centroid(Points));
|
||||
this.Points = Resample(Points, SAMPLING_RESOLUTION);
|
||||
}
|
||||
|
||||
#region gesture pre-processing steps: scale normalization, translation to origin, and resampling
|
||||
|
||||
/// <summary>
|
||||
/// Performs scale normalization with shape preservation into [0..1]x[0..1]
|
||||
/// </summary>
|
||||
/// <param name="points"></param>
|
||||
/// <returns></returns>
|
||||
private Point[] Scale(Point[] points)
|
||||
{
|
||||
float minx = float.MaxValue, miny = float.MaxValue, maxx = float.MinValue, maxy = float.MinValue;
|
||||
for (int i = 0; i < points.Length; i++)
|
||||
{
|
||||
if (minx > points[i].X) minx = points[i].X;
|
||||
if (miny > points[i].Y) miny = points[i].Y;
|
||||
if (maxx < points[i].X) maxx = points[i].X;
|
||||
if (maxy < points[i].Y) maxy = points[i].Y;
|
||||
}
|
||||
|
||||
Point[] newPoints = new Point[points.Length];
|
||||
float scale = Math.Max(maxx - minx, maxy - miny);
|
||||
for (int i = 0; i < points.Length; i++)
|
||||
newPoints[i] = new Point((points[i].X - minx) / scale, (points[i].Y - miny) / scale, points[i].StrokeID);
|
||||
return newPoints;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Translates the array of points by p
|
||||
/// </summary>
|
||||
/// <param name="points"></param>
|
||||
/// <param name="p"></param>
|
||||
/// <returns></returns>
|
||||
private Point[] TranslateTo(Point[] points, Point p)
|
||||
{
|
||||
Point[] newPoints = new Point[points.Length];
|
||||
for (int i = 0; i < points.Length; i++)
|
||||
newPoints[i] = new Point(points[i].X - p.X, points[i].Y - p.Y, points[i].StrokeID);
|
||||
return newPoints;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Computes the centroid for an array of points
|
||||
/// </summary>
|
||||
/// <param name="points"></param>
|
||||
/// <returns></returns>
|
||||
private Point Centroid(Point[] points)
|
||||
{
|
||||
float cx = 0, cy = 0;
|
||||
for (int i = 0; i < points.Length; i++)
|
||||
{
|
||||
cx += points[i].X;
|
||||
cy += points[i].Y;
|
||||
}
|
||||
return new Point(cx / points.Length, cy / points.Length, 0);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Resamples the array of points into n equally-distanced points
|
||||
/// </summary>
|
||||
/// <param name="points"></param>
|
||||
/// <param name="n"></param>
|
||||
/// <returns></returns>
|
||||
public Point[] Resample(Point[] points, int n)
|
||||
{
|
||||
Point[] newPoints = new Point[n];
|
||||
newPoints[0] = new Point(points[0].X, points[0].Y, points[0].StrokeID);
|
||||
int numPoints = 1;
|
||||
|
||||
float I = PathLength(points) / (n - 1); // computes interval length
|
||||
float D = 0;
|
||||
for (int i = 1; i < points.Length; i++)
|
||||
{
|
||||
if (points[i].StrokeID == points[i - 1].StrokeID)
|
||||
{
|
||||
float d = Geometry.EuclideanDistance(points[i - 1], points[i]);
|
||||
if (D + d >= I)
|
||||
{
|
||||
Point firstPoint = points[i - 1];
|
||||
while (D + d >= I)
|
||||
{
|
||||
// add interpolated point
|
||||
float t = Math.Min(Math.Max((I - D) / d, 0.0f), 1.0f);
|
||||
if (float.IsNaN(t)) t = 0.5f;
|
||||
newPoints[numPoints++] = new Point(
|
||||
(1.0f - t) * firstPoint.X + t * points[i].X,
|
||||
(1.0f - t) * firstPoint.Y + t * points[i].Y,
|
||||
points[i].StrokeID
|
||||
);
|
||||
|
||||
// update partial length
|
||||
d = D + d - I;
|
||||
D = 0;
|
||||
firstPoint = newPoints[numPoints - 1];
|
||||
}
|
||||
D = d;
|
||||
}
|
||||
else D += d;
|
||||
}
|
||||
}
|
||||
|
||||
if (numPoints == n - 1) // sometimes we fall a rounding-error short of adding the last point, so add it if so
|
||||
newPoints[numPoints++] = new Point(points[points.Length - 1].X, points[points.Length - 1].Y, points[points.Length - 1].StrokeID);
|
||||
return newPoints;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Computes the path length for an array of points
|
||||
/// </summary>
|
||||
/// <param name="points"></param>
|
||||
/// <returns></returns>
|
||||
private float PathLength(Point[] points)
|
||||
{
|
||||
float length = 0;
|
||||
for (int i = 1; i < points.Length; i++)
|
||||
if (points[i].StrokeID == points[i - 1].StrokeID)
|
||||
length += Geometry.EuclideanDistance(points[i - 1], points[i]);
|
||||
return length;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 315e77a99b01f483bac4a8055ae4bd44
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
@@ -0,0 +1,128 @@
|
||||
using System.IO;
|
||||
using System.Collections.Generic;
|
||||
using System.Xml;
|
||||
|
||||
using UnityEngine;
|
||||
|
||||
namespace PDollarGestureRecognizer
|
||||
{
|
||||
public class GestureIO
|
||||
{
|
||||
/// <summary>
|
||||
/// Reads a multistroke gesture from an XML file
|
||||
/// </summary>
|
||||
/// <param name="xml"></param>
|
||||
/// <returns></returns>
|
||||
public static Gesture ReadGestureFromXML(string xml) {
|
||||
|
||||
XmlTextReader xmlReader = null;
|
||||
Gesture gesture = null;
|
||||
|
||||
try {
|
||||
|
||||
xmlReader = new XmlTextReader(new StringReader(xml));
|
||||
gesture = ReadGesture(xmlReader);
|
||||
|
||||
} finally {
|
||||
|
||||
if (xmlReader != null)
|
||||
xmlReader.Close();
|
||||
}
|
||||
|
||||
return gesture;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Reads a multistroke gesture from an XML file
|
||||
/// </summary>
|
||||
/// <param name="fileName"></param>
|
||||
/// <returns></returns>
|
||||
public static Gesture ReadGestureFromFile(string fileName) {
|
||||
|
||||
XmlTextReader xmlReader = null;
|
||||
Gesture gesture = null;
|
||||
|
||||
try {
|
||||
|
||||
xmlReader = new XmlTextReader(File.OpenText(fileName));
|
||||
gesture = ReadGesture(xmlReader);
|
||||
|
||||
} finally {
|
||||
|
||||
if (xmlReader != null)
|
||||
xmlReader.Close();
|
||||
}
|
||||
|
||||
return gesture;
|
||||
}
|
||||
|
||||
private static Gesture ReadGesture(XmlTextReader xmlReader)
|
||||
{
|
||||
List<Point> points = new List<Point>();
|
||||
int currentStrokeIndex = -1;
|
||||
string gestureName = "";
|
||||
try
|
||||
{
|
||||
while (xmlReader.Read())
|
||||
{
|
||||
if (xmlReader.NodeType != XmlNodeType.Element) continue;
|
||||
switch (xmlReader.Name)
|
||||
{
|
||||
case "Gesture":
|
||||
gestureName = xmlReader["Name"];
|
||||
if (gestureName.Contains("~")) // '~' character is specific to the naming convention of the MMG set
|
||||
gestureName = gestureName.Substring(0, gestureName.LastIndexOf('~'));
|
||||
if (gestureName.Contains("_")) // '_' character is specific to the naming convention of the MMG set
|
||||
gestureName = gestureName.Replace('_', ' ');
|
||||
break;
|
||||
case "Stroke":
|
||||
currentStrokeIndex++;
|
||||
break;
|
||||
case "Point":
|
||||
points.Add(new Point(
|
||||
float.Parse(xmlReader["X"]),
|
||||
float.Parse(xmlReader["Y"]),
|
||||
currentStrokeIndex
|
||||
));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (xmlReader != null)
|
||||
xmlReader.Close();
|
||||
}
|
||||
return new Gesture(points.ToArray(), gestureName);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Writes a multistroke gesture to an XML file
|
||||
/// </summary>
|
||||
public static void WriteGesture(PDollarGestureRecognizer.Point[] points, string gestureName, string fileName)
|
||||
{
|
||||
using (StreamWriter sw = new StreamWriter(fileName))
|
||||
{
|
||||
sw.WriteLine("<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>");
|
||||
sw.WriteLine("<Gesture Name = \"{0}\">", gestureName);
|
||||
int currentStroke = -1;
|
||||
for (int i = 0; i < points.Length; i++)
|
||||
{
|
||||
if (points[i].StrokeID != currentStroke)
|
||||
{
|
||||
if (i > 0)
|
||||
sw.WriteLine("\t</Stroke>");
|
||||
sw.WriteLine("\t<Stroke>");
|
||||
currentStroke = points[i].StrokeID;
|
||||
}
|
||||
|
||||
sw.WriteLine("\t\t<Point X = \"{0}\" Y = \"{1}\" T = \"0\" Pressure = \"0\" />",
|
||||
points[i].X, points[i].Y
|
||||
);
|
||||
}
|
||||
sw.WriteLine("\t</Stroke>");
|
||||
sw.WriteLine("</Gesture>");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9d76c99c311504a75835d36abebaddee
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
@@ -0,0 +1,80 @@
|
||||
/**
|
||||
* The $P Point-Cloud Recognizer (.NET Framework 4.0 C# version)
|
||||
*
|
||||
* Radu-Daniel Vatavu, Ph.D.
|
||||
* University Stefan cel Mare of Suceava
|
||||
* Suceava 720229, Romania
|
||||
* vatavu@eed.usv.ro
|
||||
*
|
||||
* Lisa Anthony, Ph.D.
|
||||
* UMBC
|
||||
* Information Systems Department
|
||||
* 1000 Hilltop Circle
|
||||
* Baltimore, MD 21250
|
||||
* lanthony@umbc.edu
|
||||
*
|
||||
* Jacob O. Wobbrock, Ph.D.
|
||||
* The Information School
|
||||
* University of Washington
|
||||
* Seattle, WA 98195-2840
|
||||
* wobbrock@uw.edu
|
||||
*
|
||||
* The academic publication for the $P recognizer, and what should be
|
||||
* used to cite it, is:
|
||||
*
|
||||
* Vatavu, R.-D., Anthony, L. and Wobbrock, J.O. (2012).
|
||||
* Gestures as point clouds: A $P recognizer for user interface
|
||||
* prototypes. Proceedings of the ACM Int'l Conference on
|
||||
* Multimodal Interfaces (ICMI '12). Santa Monica, California
|
||||
* (October 22-26, 2012). New York: ACM Press, pp. 273-280.
|
||||
*
|
||||
* This software is distributed under the "New BSD License" agreement:
|
||||
*
|
||||
* Copyright (c) 2012, Radu-Daniel Vatavu, Lisa Anthony, and
|
||||
* Jacob O. Wobbrock. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* * Neither the names of the University Stefan cel Mare of Suceava,
|
||||
* University of Washington, nor UMBC, nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
||||
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Radu-Daniel Vatavu OR Lisa Anthony
|
||||
* OR Jacob O. Wobbrock BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
**/
|
||||
using System;
|
||||
|
||||
namespace PDollarGestureRecognizer
|
||||
{
|
||||
/// <summary>
|
||||
/// Implements a 2D Point that exposes X, Y, and StrokeID properties.
|
||||
/// StrokeID is the stroke index the point belongs to (e.g., 0, 1, 2, ...) that is filled by counting pen down/up events.
|
||||
/// </summary>
|
||||
public class Point
|
||||
{
|
||||
public float X, Y;
|
||||
public int StrokeID;
|
||||
|
||||
public Point(float x, float y, int strokeId)
|
||||
{
|
||||
this.X = x;
|
||||
this.Y = y;
|
||||
this.StrokeID = strokeId;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 27aaeb3219c2e4a3ea919281a1dfb8fa
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
@@ -0,0 +1,156 @@
|
||||
/**
|
||||
* The $P Point-Cloud Recognizer (.NET Framework 4.0 C# version)
|
||||
*
|
||||
* Radu-Daniel Vatavu, Ph.D.
|
||||
* University Stefan cel Mare of Suceava
|
||||
* Suceava 720229, Romania
|
||||
* vatavu@eed.usv.ro
|
||||
*
|
||||
* Lisa Anthony, Ph.D.
|
||||
* UMBC
|
||||
* Information Systems Department
|
||||
* 1000 Hilltop Circle
|
||||
* Baltimore, MD 21250
|
||||
* lanthony@umbc.edu
|
||||
*
|
||||
* Jacob O. Wobbrock, Ph.D.
|
||||
* The Information School
|
||||
* University of Washington
|
||||
* Seattle, WA 98195-2840
|
||||
* wobbrock@uw.edu
|
||||
*
|
||||
* The academic publication for the $P recognizer, and what should be
|
||||
* used to cite it, is:
|
||||
*
|
||||
* Vatavu, R.-D., Anthony, L. and Wobbrock, J.O. (2012).
|
||||
* Gestures as point clouds: A $P recognizer for user interface
|
||||
* prototypes. Proceedings of the ACM Int'l Conference on
|
||||
* Multimodal Interfaces (ICMI '12). Santa Monica, California
|
||||
* (October 22-26, 2012). New York: ACM Press, pp. 273-280.
|
||||
*
|
||||
* This software is distributed under the "New BSD License" agreement:
|
||||
*
|
||||
* Copyright (c) 2012, Radu-Daniel Vatavu, Lisa Anthony, and
|
||||
* Jacob O. Wobbrock. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* * Neither the names of the University Stefan cel Mare of Suceava,
|
||||
* University of Washington, nor UMBC, nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
||||
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Radu-Daniel Vatavu OR Lisa Anthony
|
||||
* OR Jacob O. Wobbrock BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
**/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using UnityEngine;
|
||||
|
||||
namespace PDollarGestureRecognizer
|
||||
{
|
||||
/// <summary>
|
||||
/// Implements the $P recognizer
|
||||
/// </summary>
|
||||
public class PointCloudRecognizer
|
||||
{
|
||||
/// <summary>
|
||||
/// Main function of the $P recognizer.
|
||||
/// Classifies a candidate gesture against a set of training samples.
|
||||
/// Returns the class of the closest neighbor in the training set.
|
||||
/// </summary>
|
||||
/// <param name="candidate"></param>
|
||||
/// <param name="trainingSet"></param>
|
||||
/// <returns></returns>
|
||||
public static Result Classify(Gesture candidate, Gesture[] trainingSet)
|
||||
{
|
||||
float minDistance = float.MaxValue;
|
||||
string gestureClass = "";
|
||||
foreach (Gesture template in trainingSet)
|
||||
{
|
||||
float dist = GreedyCloudMatch(candidate.Points, template.Points);
|
||||
if (dist < minDistance)
|
||||
{
|
||||
minDistance = dist;
|
||||
gestureClass = template.Name;
|
||||
}
|
||||
}
|
||||
|
||||
return gestureClass == "" ? new Result() {GestureClass = "No match", Score = 0.0f} : new Result() {GestureClass = gestureClass, Score = Mathf.Max((minDistance - 2.0f) / -2.0f, 0.0f)};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Implements greedy search for a minimum-distance matching between two point clouds
|
||||
/// </summary>
|
||||
/// <param name="points1"></param>
|
||||
/// <param name="points2"></param>
|
||||
/// <returns></returns>
|
||||
private static float GreedyCloudMatch(Point[] points1, Point[] points2)
|
||||
{
|
||||
int n = points1.Length; // the two clouds should have the same number of points by now
|
||||
float eps = 0.5f; // controls the number of greedy search trials (eps is in [0..1])
|
||||
int step = (int)Math.Floor(Math.Pow(n, 1.0f - eps));
|
||||
float minDistance = float.MaxValue;
|
||||
for (int i = 0; i < n; i += step)
|
||||
{
|
||||
float dist1 = CloudDistance(points1, points2, i); // match points1 --> points2 starting with index point i
|
||||
float dist2 = CloudDistance(points2, points1, i); // match points2 --> points1 starting with index point i
|
||||
minDistance = Math.Min(minDistance, Math.Min(dist1, dist2));
|
||||
}
|
||||
return minDistance;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Computes the distance between two point clouds by performing a minimum-distance greedy matching
|
||||
/// starting with point startIndex
|
||||
/// </summary>
|
||||
/// <param name="points1"></param>
|
||||
/// <param name="points2"></param>
|
||||
/// <param name="startIndex"></param>
|
||||
/// <returns></returns>
|
||||
private static float CloudDistance(Point[] points1, Point[] points2, int startIndex)
|
||||
{
|
||||
int n = points1.Length; // the two clouds should have the same number of points by now
|
||||
bool[] matched = new bool[n]; // matched[i] signals whether point i from the 2nd cloud has been already matched
|
||||
Array.Clear(matched, 0, n); // no points are matched at the beginning
|
||||
|
||||
float sum = 0; // computes the sum of distances between matched points (i.e., the distance between the two clouds)
|
||||
int i = startIndex;
|
||||
do
|
||||
{
|
||||
int index = -1;
|
||||
float minDistance = float.MaxValue;
|
||||
for(int j = 0; j < n; j++)
|
||||
if (!matched[j])
|
||||
{
|
||||
float dist = Geometry.SqrEuclideanDistance(points1[i], points2[j]); // use squared Euclidean distance to save some processing time
|
||||
if (dist < minDistance)
|
||||
{
|
||||
minDistance = dist;
|
||||
index = j;
|
||||
}
|
||||
}
|
||||
matched[index] = true; // point index from the 2nd cloud is matched to point i from the 1st cloud
|
||||
float weight = 1.0f - ((i - startIndex + n) % n) / (1.0f * n);
|
||||
sum += weight * minDistance; // weight each distance with a confidence coefficient that decreases from 1 to 0
|
||||
i = (i + 1) % n;
|
||||
} while (i != startIndex);
|
||||
return sum;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 52f14a9a2853942ce85ce3cc1b870fa7
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
@@ -0,0 +1,8 @@
|
||||
namespace PDollarGestureRecognizer {
|
||||
|
||||
public struct Result {
|
||||
|
||||
public string GestureClass;
|
||||
public float Score;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 62a02aa6ce62e44d08814ea5d80f92c6
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d43e103ab3e1fe24185f964edc310c85
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0184338127739aa46af2a3cd28ca1521
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0a9cc1229d9b9b349817f2802b9061d6
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: acc95159d37cb8b49be0ca5f0bdc7fbe
|
||||
folderAsset: yes
|
||||
timeCreated: 1544585017
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6019f1b4a095b0b4396f5561a51fee89
|
||||
timeCreated: 1544605028
|
||||
licenseType: Store
|
||||
NativeFormatImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: eccbae3cfc77ad245ade46e143aa3200
|
||||
timeCreated: 1544605040
|
||||
licenseType: Store
|
||||
NativeFormatImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cf357b5409b4ad54a82c45d7684564e1
|
||||
timeCreated: 1544607741
|
||||
licenseType: Store
|
||||
NativeFormatImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5d190d8211c88a64281f7b90c69f3eb3
|
||||
timeCreated: 1544605073
|
||||
licenseType: Store
|
||||
NativeFormatImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4a3671dbe6670524b8b6d9ad3664c179
|
||||
timeCreated: 1544607752
|
||||
licenseType: Store
|
||||
NativeFormatImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 30d4fe7af77240a44b9354aaed8e5beb
|
||||
timeCreated: 1544607757
|
||||
licenseType: Store
|
||||
NativeFormatImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1588532e68f51a040bda71c68cfab177
|
||||
timeCreated: 1544605085
|
||||
licenseType: Store
|
||||
NativeFormatImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b79ff7bb68348be479d3db6b7fe8a569
|
||||
timeCreated: 1544605090
|
||||
licenseType: Store
|
||||
NativeFormatImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9f0e03164414016409d28995a128ba98
|
||||
timeCreated: 1544605137
|
||||
licenseType: Store
|
||||
NativeFormatImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f0c8c1d913b359a428b42d53947d3e93
|
||||
timeCreated: 1544607284
|
||||
licenseType: Store
|
||||
NativeFormatImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6bef64b21e5592046bb2b13e7fa806ee
|
||||
folderAsset: yes
|
||||
timeCreated: 1544585023
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,563 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!91 &9100000
|
||||
AnimatorController:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: DogControl
|
||||
serializedVersion: 5
|
||||
m_AnimatorParameters: []
|
||||
m_AnimatorLayers:
|
||||
- serializedVersion: 5
|
||||
m_Name: Base Layer
|
||||
m_StateMachine: {fileID: 1107905649089028422}
|
||||
m_Mask: {fileID: 0}
|
||||
m_Motions: []
|
||||
m_Behaviours: []
|
||||
m_BlendingMode: 0
|
||||
m_SyncedLayerIndex: -1
|
||||
m_DefaultWeight: 0
|
||||
m_IKPass: 0
|
||||
m_SyncedLayerAffectsTiming: 0
|
||||
m_Controller: {fileID: 9100000}
|
||||
--- !u!1101 &1101025243568558234
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name:
|
||||
m_Conditions: []
|
||||
m_DstStateMachine: {fileID: 0}
|
||||
m_DstState: {fileID: 1102689691343913632}
|
||||
m_Solo: 0
|
||||
m_Mute: 0
|
||||
m_IsExit: 0
|
||||
serializedVersion: 3
|
||||
m_TransitionDuration: 0.2
|
||||
m_TransitionOffset: 0
|
||||
m_ExitTime: 1
|
||||
m_HasExitTime: 1
|
||||
m_HasFixedDuration: 1
|
||||
m_InterruptionSource: 0
|
||||
m_OrderedInterruption: 1
|
||||
m_CanTransitionToSelf: 1
|
||||
--- !u!1101 &1101072195810957972
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name:
|
||||
m_Conditions: []
|
||||
m_DstStateMachine: {fileID: 0}
|
||||
m_DstState: {fileID: 1102381193985536354}
|
||||
m_Solo: 0
|
||||
m_Mute: 0
|
||||
m_IsExit: 0
|
||||
serializedVersion: 3
|
||||
m_TransitionDuration: 0.25
|
||||
m_TransitionOffset: 0
|
||||
m_ExitTime: 3
|
||||
m_HasExitTime: 1
|
||||
m_HasFixedDuration: 1
|
||||
m_InterruptionSource: 0
|
||||
m_OrderedInterruption: 1
|
||||
m_CanTransitionToSelf: 1
|
||||
--- !u!1101 &1101141846149638978
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name:
|
||||
m_Conditions: []
|
||||
m_DstStateMachine: {fileID: 0}
|
||||
m_DstState: {fileID: 1102201852766415110}
|
||||
m_Solo: 0
|
||||
m_Mute: 0
|
||||
m_IsExit: 0
|
||||
serializedVersion: 3
|
||||
m_TransitionDuration: 0
|
||||
m_TransitionOffset: 0
|
||||
m_ExitTime: 3
|
||||
m_HasExitTime: 1
|
||||
m_HasFixedDuration: 1
|
||||
m_InterruptionSource: 0
|
||||
m_OrderedInterruption: 1
|
||||
m_CanTransitionToSelf: 1
|
||||
--- !u!1101 &1101494123869838964
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name:
|
||||
m_Conditions: []
|
||||
m_DstStateMachine: {fileID: 0}
|
||||
m_DstState: {fileID: 1102978981160464930}
|
||||
m_Solo: 0
|
||||
m_Mute: 0
|
||||
m_IsExit: 0
|
||||
serializedVersion: 3
|
||||
m_TransitionDuration: 0.11524987
|
||||
m_TransitionOffset: 0
|
||||
m_ExitTime: 3.8331482
|
||||
m_HasExitTime: 1
|
||||
m_HasFixedDuration: 1
|
||||
m_InterruptionSource: 0
|
||||
m_OrderedInterruption: 1
|
||||
m_CanTransitionToSelf: 1
|
||||
--- !u!1101 &1101643552029966614
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name:
|
||||
m_Conditions: []
|
||||
m_DstStateMachine: {fileID: 0}
|
||||
m_DstState: {fileID: 1102503426251137486}
|
||||
m_Solo: 0
|
||||
m_Mute: 0
|
||||
m_IsExit: 0
|
||||
serializedVersion: 3
|
||||
m_TransitionDuration: 0.25
|
||||
m_TransitionOffset: 0
|
||||
m_ExitTime: 3
|
||||
m_HasExitTime: 1
|
||||
m_HasFixedDuration: 1
|
||||
m_InterruptionSource: 0
|
||||
m_OrderedInterruption: 1
|
||||
m_CanTransitionToSelf: 1
|
||||
--- !u!1101 &1101676475510292630
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name:
|
||||
m_Conditions: []
|
||||
m_DstStateMachine: {fileID: 0}
|
||||
m_DstState: {fileID: 1102494443745526630}
|
||||
m_Solo: 0
|
||||
m_Mute: 0
|
||||
m_IsExit: 0
|
||||
serializedVersion: 3
|
||||
m_TransitionDuration: 0.2
|
||||
m_TransitionOffset: 0
|
||||
m_ExitTime: 3
|
||||
m_HasExitTime: 1
|
||||
m_HasFixedDuration: 1
|
||||
m_InterruptionSource: 0
|
||||
m_OrderedInterruption: 1
|
||||
m_CanTransitionToSelf: 1
|
||||
--- !u!1101 &1101807178245991928
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name:
|
||||
m_Conditions: []
|
||||
m_DstStateMachine: {fileID: 0}
|
||||
m_DstState: {fileID: 1102851807468560652}
|
||||
m_Solo: 0
|
||||
m_Mute: 0
|
||||
m_IsExit: 0
|
||||
serializedVersion: 3
|
||||
m_TransitionDuration: 0.25
|
||||
m_TransitionOffset: 0
|
||||
m_ExitTime: 4
|
||||
m_HasExitTime: 1
|
||||
m_HasFixedDuration: 1
|
||||
m_InterruptionSource: 0
|
||||
m_OrderedInterruption: 1
|
||||
m_CanTransitionToSelf: 1
|
||||
--- !u!1101 &1101912574661031958
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name:
|
||||
m_Conditions: []
|
||||
m_DstStateMachine: {fileID: 0}
|
||||
m_DstState: {fileID: 1102031868726192584}
|
||||
m_Solo: 0
|
||||
m_Mute: 0
|
||||
m_IsExit: 0
|
||||
serializedVersion: 3
|
||||
m_TransitionDuration: 0.25
|
||||
m_TransitionOffset: 0
|
||||
m_ExitTime: 8
|
||||
m_HasExitTime: 1
|
||||
m_HasFixedDuration: 1
|
||||
m_InterruptionSource: 0
|
||||
m_OrderedInterruption: 1
|
||||
m_CanTransitionToSelf: 1
|
||||
--- !u!1101 &1101969349459206822
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name:
|
||||
m_Conditions: []
|
||||
m_DstStateMachine: {fileID: 0}
|
||||
m_DstState: {fileID: 1102597142297889830}
|
||||
m_Solo: 0
|
||||
m_Mute: 0
|
||||
m_IsExit: 0
|
||||
serializedVersion: 3
|
||||
m_TransitionDuration: 0
|
||||
m_TransitionOffset: 0
|
||||
m_ExitTime: 4
|
||||
m_HasExitTime: 1
|
||||
m_HasFixedDuration: 1
|
||||
m_InterruptionSource: 0
|
||||
m_OrderedInterruption: 1
|
||||
m_CanTransitionToSelf: 1
|
||||
--- !u!1101 &1101985218390737874
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name:
|
||||
m_Conditions: []
|
||||
m_DstStateMachine: {fileID: 0}
|
||||
m_DstState: {fileID: 1102841285716856984}
|
||||
m_Solo: 0
|
||||
m_Mute: 0
|
||||
m_IsExit: 0
|
||||
serializedVersion: 3
|
||||
m_TransitionDuration: 0
|
||||
m_TransitionOffset: 0
|
||||
m_ExitTime: 4
|
||||
m_HasExitTime: 1
|
||||
m_HasFixedDuration: 1
|
||||
m_InterruptionSource: 0
|
||||
m_OrderedInterruption: 1
|
||||
m_CanTransitionToSelf: 1
|
||||
--- !u!1102 &1102031868726192584
|
||||
AnimatorState:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Idle_Battle
|
||||
m_Speed: 1
|
||||
m_CycleOffset: 0
|
||||
m_Transitions:
|
||||
- {fileID: 1101969349459206822}
|
||||
m_StateMachineBehaviours: []
|
||||
m_Position: {x: 50, y: 50, z: 0}
|
||||
m_IKOnFeet: 0
|
||||
m_WriteDefaultValues: 1
|
||||
m_Mirror: 0
|
||||
m_SpeedParameterActive: 0
|
||||
m_MirrorParameterActive: 0
|
||||
m_CycleOffsetParameterActive: 0
|
||||
m_TimeParameterActive: 0
|
||||
m_Motion: {fileID: 7400000, guid: b79ff7bb68348be479d3db6b7fe8a569, type: 2}
|
||||
m_Tag:
|
||||
m_SpeedParameter:
|
||||
m_MirrorParameter:
|
||||
m_CycleOffsetParameter:
|
||||
m_TimeParameter:
|
||||
--- !u!1102 &1102201852766415110
|
||||
AnimatorState:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: DieRecover
|
||||
m_Speed: 1
|
||||
m_CycleOffset: 0
|
||||
m_Transitions:
|
||||
- {fileID: 1101025243568558234}
|
||||
m_StateMachineBehaviours: []
|
||||
m_Position: {x: 50, y: 50, z: 0}
|
||||
m_IKOnFeet: 0
|
||||
m_WriteDefaultValues: 1
|
||||
m_Mirror: 0
|
||||
m_SpeedParameterActive: 0
|
||||
m_MirrorParameterActive: 0
|
||||
m_CycleOffsetParameterActive: 0
|
||||
m_TimeParameterActive: 0
|
||||
m_Motion: {fileID: 7400000, guid: 4a3671dbe6670524b8b6d9ad3664c179, type: 2}
|
||||
m_Tag:
|
||||
m_SpeedParameter:
|
||||
m_MirrorParameter:
|
||||
m_CycleOffsetParameter:
|
||||
m_TimeParameter:
|
||||
--- !u!1102 &1102381193985536354
|
||||
AnimatorState:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Dizzy
|
||||
m_Speed: 1
|
||||
m_CycleOffset: 0
|
||||
m_Transitions:
|
||||
- {fileID: 1101643552029966614}
|
||||
m_StateMachineBehaviours: []
|
||||
m_Position: {x: 50, y: 50, z: 0}
|
||||
m_IKOnFeet: 0
|
||||
m_WriteDefaultValues: 1
|
||||
m_Mirror: 0
|
||||
m_SpeedParameterActive: 0
|
||||
m_MirrorParameterActive: 0
|
||||
m_CycleOffsetParameterActive: 0
|
||||
m_TimeParameterActive: 0
|
||||
m_Motion: {fileID: 7400000, guid: 30d4fe7af77240a44b9354aaed8e5beb, type: 2}
|
||||
m_Tag:
|
||||
m_SpeedParameter:
|
||||
m_MirrorParameter:
|
||||
m_CycleOffsetParameter:
|
||||
m_TimeParameter:
|
||||
--- !u!1102 &1102494443745526630
|
||||
AnimatorState:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: GetHit
|
||||
m_Speed: 1
|
||||
m_CycleOffset: 0
|
||||
m_Transitions:
|
||||
- {fileID: 1101072195810957972}
|
||||
m_StateMachineBehaviours: []
|
||||
m_Position: {x: 50, y: 50, z: 0}
|
||||
m_IKOnFeet: 0
|
||||
m_WriteDefaultValues: 1
|
||||
m_Mirror: 0
|
||||
m_SpeedParameterActive: 0
|
||||
m_MirrorParameterActive: 0
|
||||
m_CycleOffsetParameterActive: 0
|
||||
m_TimeParameterActive: 0
|
||||
m_Motion: {fileID: 7400000, guid: 1588532e68f51a040bda71c68cfab177, type: 2}
|
||||
m_Tag:
|
||||
m_SpeedParameter:
|
||||
m_MirrorParameter:
|
||||
m_CycleOffsetParameter:
|
||||
m_TimeParameter:
|
||||
--- !u!1102 &1102503426251137486
|
||||
AnimatorState:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Die
|
||||
m_Speed: 1
|
||||
m_CycleOffset: 0
|
||||
m_Transitions:
|
||||
- {fileID: 1101141846149638978}
|
||||
m_StateMachineBehaviours: []
|
||||
m_Position: {x: 50, y: 50, z: 0}
|
||||
m_IKOnFeet: 0
|
||||
m_WriteDefaultValues: 1
|
||||
m_Mirror: 0
|
||||
m_SpeedParameterActive: 0
|
||||
m_MirrorParameterActive: 0
|
||||
m_CycleOffsetParameterActive: 0
|
||||
m_TimeParameterActive: 0
|
||||
m_Motion: {fileID: 7400000, guid: 5d190d8211c88a64281f7b90c69f3eb3, type: 2}
|
||||
m_Tag:
|
||||
m_SpeedParameter:
|
||||
m_MirrorParameter:
|
||||
m_CycleOffsetParameter:
|
||||
m_TimeParameter:
|
||||
--- !u!1102 &1102597142297889830
|
||||
AnimatorState:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Attack01
|
||||
m_Speed: 1.2
|
||||
m_CycleOffset: 0
|
||||
m_Transitions:
|
||||
- {fileID: 1101985218390737874}
|
||||
m_StateMachineBehaviours: []
|
||||
m_Position: {x: 50, y: 50, z: 0}
|
||||
m_IKOnFeet: 0
|
||||
m_WriteDefaultValues: 1
|
||||
m_Mirror: 0
|
||||
m_SpeedParameterActive: 0
|
||||
m_MirrorParameterActive: 0
|
||||
m_CycleOffsetParameterActive: 0
|
||||
m_TimeParameterActive: 0
|
||||
m_Motion: {fileID: 7400000, guid: 6019f1b4a095b0b4396f5561a51fee89, type: 2}
|
||||
m_Tag:
|
||||
m_SpeedParameter:
|
||||
m_MirrorParameter:
|
||||
m_CycleOffsetParameter:
|
||||
m_TimeParameter:
|
||||
--- !u!1102 &1102689691343913632
|
||||
AnimatorState:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: WalkForwardBattle
|
||||
m_Speed: 1.2
|
||||
m_CycleOffset: 0
|
||||
m_Transitions:
|
||||
- {fileID: 1101807178245991928}
|
||||
m_StateMachineBehaviours: []
|
||||
m_Position: {x: 50, y: 50, z: 0}
|
||||
m_IKOnFeet: 0
|
||||
m_WriteDefaultValues: 1
|
||||
m_Mirror: 0
|
||||
m_SpeedParameterActive: 0
|
||||
m_MirrorParameterActive: 0
|
||||
m_CycleOffsetParameterActive: 0
|
||||
m_TimeParameterActive: 0
|
||||
m_Motion: {fileID: 7400000, guid: f0c8c1d913b359a428b42d53947d3e93, type: 2}
|
||||
m_Tag:
|
||||
m_SpeedParameter:
|
||||
m_MirrorParameter:
|
||||
m_CycleOffsetParameter:
|
||||
m_TimeParameter:
|
||||
--- !u!1102 &1102841285716856984
|
||||
AnimatorState:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Attack02
|
||||
m_Speed: 1.2
|
||||
m_CycleOffset: 0
|
||||
m_Transitions:
|
||||
- {fileID: 1101494123869838964}
|
||||
m_StateMachineBehaviours: []
|
||||
m_Position: {x: 50, y: 50, z: 0}
|
||||
m_IKOnFeet: 0
|
||||
m_WriteDefaultValues: 1
|
||||
m_Mirror: 0
|
||||
m_SpeedParameterActive: 0
|
||||
m_MirrorParameterActive: 0
|
||||
m_CycleOffsetParameterActive: 0
|
||||
m_TimeParameterActive: 0
|
||||
m_Motion: {fileID: 7400000, guid: eccbae3cfc77ad245ade46e143aa3200, type: 2}
|
||||
m_Tag:
|
||||
m_SpeedParameter:
|
||||
m_MirrorParameter:
|
||||
m_CycleOffsetParameter:
|
||||
m_TimeParameter:
|
||||
--- !u!1102 &1102851807468560652
|
||||
AnimatorState:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: RunForwardBattle
|
||||
m_Speed: 1.2
|
||||
m_CycleOffset: 0
|
||||
m_Transitions:
|
||||
- {fileID: 1101912574661031958}
|
||||
m_StateMachineBehaviours: []
|
||||
m_Position: {x: 50, y: 50, z: 0}
|
||||
m_IKOnFeet: 0
|
||||
m_WriteDefaultValues: 1
|
||||
m_Mirror: 0
|
||||
m_SpeedParameterActive: 0
|
||||
m_MirrorParameterActive: 0
|
||||
m_CycleOffsetParameterActive: 0
|
||||
m_TimeParameterActive: 0
|
||||
m_Motion: {fileID: 7400000, guid: 9f0e03164414016409d28995a128ba98, type: 2}
|
||||
m_Tag:
|
||||
m_SpeedParameter:
|
||||
m_MirrorParameter:
|
||||
m_CycleOffsetParameter:
|
||||
m_TimeParameter:
|
||||
--- !u!1102 &1102978981160464930
|
||||
AnimatorState:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Defend
|
||||
m_Speed: 1
|
||||
m_CycleOffset: 0
|
||||
m_Transitions:
|
||||
- {fileID: 1101676475510292630}
|
||||
m_StateMachineBehaviours: []
|
||||
m_Position: {x: 50, y: 50, z: 0}
|
||||
m_IKOnFeet: 0
|
||||
m_WriteDefaultValues: 1
|
||||
m_Mirror: 0
|
||||
m_SpeedParameterActive: 0
|
||||
m_MirrorParameterActive: 0
|
||||
m_CycleOffsetParameterActive: 0
|
||||
m_TimeParameterActive: 0
|
||||
m_Motion: {fileID: 7400000, guid: cf357b5409b4ad54a82c45d7684564e1, type: 2}
|
||||
m_Tag:
|
||||
m_SpeedParameter:
|
||||
m_MirrorParameter:
|
||||
m_CycleOffsetParameter:
|
||||
m_TimeParameter:
|
||||
--- !u!1107 &1107905649089028422
|
||||
AnimatorStateMachine:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Base Layer
|
||||
m_ChildStates:
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: 1102031868726192584}
|
||||
m_Position: {x: 216, y: -72, z: 0}
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: 1102597142297889830}
|
||||
m_Position: {x: 456, y: -72, z: 0}
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: 1102841285716856984}
|
||||
m_Position: {x: 456, y: 0, z: 0}
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: 1102978981160464930}
|
||||
m_Position: {x: 456, y: 72, z: 0}
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: 1102494443745526630}
|
||||
m_Position: {x: 456, y: 144, z: 0}
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: 1102381193985536354}
|
||||
m_Position: {x: 708, y: -72, z: 0}
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: 1102503426251137486}
|
||||
m_Position: {x: 708, y: 0, z: 0}
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: 1102201852766415110}
|
||||
m_Position: {x: 708, y: 72, z: 0}
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: 1102851807468560652}
|
||||
m_Position: {x: 708, y: 240, z: 0}
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: 1102689691343913632}
|
||||
m_Position: {x: 708, y: 144, z: 0}
|
||||
m_ChildStateMachines: []
|
||||
m_AnyStateTransitions: []
|
||||
m_EntryTransitions: []
|
||||
m_StateMachineTransitions: {}
|
||||
m_StateMachineBehaviours: []
|
||||
m_AnyStatePosition: {x: 50, y: 20, z: 0}
|
||||
m_EntryPosition: {x: 50, y: 120, z: 0}
|
||||
m_ExitPosition: {x: 48, y: -132, z: 0}
|
||||
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
|
||||
m_DefaultState: {fileID: 1102031868726192584}
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b60dc9aa529b314489f628aa3b57c470
|
||||
timeCreated: 1544605003
|
||||
licenseType: Store
|
||||
NativeFormatImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 83e931d2f94c04743a27561800d0fd53
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 55628c1eb68aef5429888e5409ab2804
|
||||
folderAsset: yes
|
||||
timeCreated: 1508238419
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
+184
@@ -0,0 +1,184 @@
|
||||
// Fantasy Adventure Environment
|
||||
// Copyright Staggart Creations
|
||||
// staggart.xyz
|
||||
|
||||
using System;
|
||||
using UnityEngine;
|
||||
using System.Collections;
|
||||
using UnityEditor;
|
||||
|
||||
namespace FAE
|
||||
{
|
||||
[CustomEditor(typeof(CliffAppearance))]
|
||||
public class CliffAppearanceInspector : Editor
|
||||
{
|
||||
CliffAppearance ca;
|
||||
private bool showHelp = false;
|
||||
|
||||
public SerializedProperty targetMaterials;
|
||||
public SerializedProperty objectColor;
|
||||
public SerializedProperty roughness;
|
||||
|
||||
public SerializedProperty detailNormalMap;
|
||||
public SerializedProperty detailNormalStrength;
|
||||
|
||||
public SerializedProperty globalColorMap;
|
||||
public SerializedProperty globalColor;
|
||||
public SerializedProperty globalTiling;
|
||||
|
||||
public SerializedProperty useCoverageShader;
|
||||
public SerializedProperty coverageColorMap;
|
||||
public SerializedProperty coverageNormalMap;
|
||||
public SerializedProperty coverageAmount;
|
||||
public SerializedProperty coverageTiling;
|
||||
public SerializedProperty coverageMap;
|
||||
|
||||
#if UNITY_EDITOR
|
||||
void OnEnable()
|
||||
{
|
||||
ca = (CliffAppearance)target;
|
||||
|
||||
targetMaterials = serializedObject.FindProperty("targetMaterials");
|
||||
|
||||
objectColor = serializedObject.FindProperty("objectColor");
|
||||
roughness = serializedObject.FindProperty("roughness");
|
||||
|
||||
detailNormalMap = serializedObject.FindProperty("detailNormalMap");
|
||||
detailNormalStrength = serializedObject.FindProperty("detailNormalStrength");
|
||||
|
||||
globalColorMap = serializedObject.FindProperty("globalColorMap");
|
||||
globalColor = serializedObject.FindProperty("globalColor");
|
||||
globalTiling = serializedObject.FindProperty("globalTiling");
|
||||
|
||||
useCoverageShader = serializedObject.FindProperty("useCoverageShader");
|
||||
coverageColorMap = serializedObject.FindProperty("coverageColorMap");
|
||||
coverageNormalMap = serializedObject.FindProperty("coverageNormalMap");
|
||||
coverageAmount = serializedObject.FindProperty("coverageAmount");
|
||||
coverageTiling = serializedObject.FindProperty("coverageTiling");
|
||||
coverageMap = serializedObject.FindProperty("coverageMap");
|
||||
|
||||
Undo.undoRedoPerformed += OnUndoRedo;
|
||||
}
|
||||
|
||||
private void OnDisable()
|
||||
{
|
||||
Undo.undoRedoPerformed -= OnUndoRedo;
|
||||
}
|
||||
|
||||
private void OnUndoRedo()
|
||||
{
|
||||
ca.Apply();
|
||||
}
|
||||
|
||||
public override void OnInspectorGUI()
|
||||
{
|
||||
serializedObject.Update();
|
||||
EditorGUI.BeginChangeCheck();
|
||||
|
||||
if (ca.cliffShader == null) EditorGUILayout.HelpBox("Cliff shader could not be found!", MessageType.Error);
|
||||
if (ca.cliffCoverageShader == null) EditorGUILayout.HelpBox("Cliff Coverage shader could not be found!", MessageType.Error);
|
||||
|
||||
DrawFields();
|
||||
|
||||
if (EditorGUI.EndChangeCheck())
|
||||
{
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
ca.Apply();
|
||||
}
|
||||
}
|
||||
|
||||
private void DrawFields()
|
||||
{
|
||||
DoHeader();
|
||||
|
||||
EditorGUILayout.PropertyField(targetMaterials, true);
|
||||
EditorGUILayout.Space();
|
||||
|
||||
EditorGUILayout.BeginVertical(EditorStyles.helpBox);
|
||||
|
||||
EditorGUILayout.LabelField("Coverage", EditorStyles.boldLabel);
|
||||
EditorGUILayout.Space();
|
||||
|
||||
EditorGUILayout.PropertyField(useCoverageShader, new GUIContent("Enable"));
|
||||
|
||||
if (showHelp) EditorGUILayout.HelpBox("Covers the objects from the Y-axis", MessageType.Info);
|
||||
|
||||
if (ca.useCoverageShader)
|
||||
{
|
||||
EditorGUILayout.HelpBox("Currently this feature requires you to have the PigmentMapGenerator script on your terrain", MessageType.Info);
|
||||
|
||||
EditorGUILayout.PropertyField(coverageMap, new GUIContent("Coverage map"));
|
||||
|
||||
if (showHelp) EditorGUILayout.HelpBox("This grayscale map represents the coverage amount on the terrain \n\nThe bottom left of the texture equals the pivot point of the terrain", MessageType.Info);
|
||||
|
||||
EditorGUILayout.PropertyField(coverageColorMap, new GUIContent("Albedo"));
|
||||
EditorGUILayout.PropertyField(coverageNormalMap, new GUIContent("Normals"));
|
||||
|
||||
EditorGUILayout.PropertyField(coverageAmount, new GUIContent("Amount"));
|
||||
EditorGUILayout.PropertyField(coverageTiling, new GUIContent("Tiling"));
|
||||
}
|
||||
|
||||
EditorGUILayout.Space();
|
||||
EditorGUILayout.EndVertical();
|
||||
|
||||
EditorGUILayout.Space();
|
||||
|
||||
EditorGUILayout.BeginVertical(EditorStyles.helpBox);
|
||||
|
||||
EditorGUILayout.LabelField("Object", EditorStyles.boldLabel);
|
||||
EditorGUILayout.Space();
|
||||
|
||||
EditorGUILayout.PropertyField(objectColor);
|
||||
EditorGUILayout.PropertyField(roughness);
|
||||
|
||||
EditorGUILayout.Space();
|
||||
EditorGUILayout.EndVertical();
|
||||
|
||||
EditorGUILayout.Space();
|
||||
|
||||
EditorGUILayout.BeginVertical(EditorStyles.helpBox);
|
||||
|
||||
EditorGUILayout.LabelField("Detail", EditorStyles.boldLabel);
|
||||
EditorGUILayout.Space();
|
||||
|
||||
if (showHelp) EditorGUILayout.HelpBox("Normal details visible up close", MessageType.Info);
|
||||
|
||||
|
||||
EditorGUILayout.PropertyField(detailNormalMap, new GUIContent("Detail normal map"));
|
||||
|
||||
EditorGUILayout.PropertyField(detailNormalStrength, new GUIContent("Normal strength"));
|
||||
|
||||
EditorGUILayout.Space();
|
||||
EditorGUILayout.EndVertical();
|
||||
|
||||
EditorGUILayout.Space();
|
||||
|
||||
EditorGUILayout.BeginVertical(EditorStyles.helpBox);
|
||||
|
||||
EditorGUILayout.LabelField("Global", EditorStyles.boldLabel);
|
||||
EditorGUILayout.Space();
|
||||
|
||||
if (showHelp) EditorGUILayout.HelpBox("A tri-planar projected color map which tiles across all the objects seamlessly", MessageType.Info);
|
||||
|
||||
EditorGUILayout.PropertyField(globalColorMap, new GUIContent("Global color map"));
|
||||
|
||||
EditorGUILayout.PropertyField(globalColor, new GUIContent("Color"));
|
||||
EditorGUILayout.PropertyField(globalTiling, new GUIContent("Tiling"));
|
||||
|
||||
EditorGUILayout.Space();
|
||||
EditorGUILayout.EndVertical();
|
||||
|
||||
GUIHelper.DrawFooter();
|
||||
}
|
||||
|
||||
private void DoHeader()
|
||||
{
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
showHelp = GUILayout.Toggle(showHelp, "Toggle help", "Button");
|
||||
GUILayout.Label("FAE Cliff Appearance", GUIHelper.Header);
|
||||
EditorGUILayout.EndHorizontal();
|
||||
if (showHelp) EditorGUILayout.HelpBox("This script allows you to edit multiple materials that use the FAE/Cliff shader. When it's loaded, the settings will be applied to them, so it acts as a sort of preset loader", MessageType.Info);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5d17a1f7b6b847d4f9499d0bfe216b82
|
||||
timeCreated: 1503911004
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,346 @@
|
||||
// Fantasy Adventure Environment
|
||||
// Staggart Creations
|
||||
// http://staggart.xyz
|
||||
|
||||
using UnityEngine;
|
||||
using System.IO;
|
||||
|
||||
using UnityEditor;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace FAE
|
||||
{
|
||||
public class FAE_Core : Editor
|
||||
{
|
||||
public const string ASSET_NAME = "Fantasy Adventure Environment";
|
||||
public const string ASSET_ABRV = "FAE";
|
||||
public const string ASSET_ID = "70354";
|
||||
|
||||
public const string PACKAGE_VERSION = "20174";
|
||||
public static string INSTALLED_VERSION = "1.5.5";
|
||||
public const string MIN_UNITY_VERSION = "2019.3";
|
||||
|
||||
public static string DOC_URL = "http://staggart.xyz/unity/fantasy-adventure-environment/fae-documentation/";
|
||||
public static string FORUM_URL = "https://forum.unity3d.com/threads/486102";
|
||||
|
||||
#if UNITY_2019_3_OR_NEWER
|
||||
private const string UniversalShaderPackageGUID = "7c884420a5dfbaa4db9afe42d366b843";
|
||||
#endif
|
||||
|
||||
public static void OpenStorePage()
|
||||
{
|
||||
Application.OpenURL("com.unity3d.kharma:content/" + ASSET_ID);
|
||||
}
|
||||
|
||||
public static string PACKAGE_ROOT_FOLDER
|
||||
{
|
||||
get { return SessionState.GetString(ASSET_ABRV + "_BASE_FOLDER", string.Empty); }
|
||||
set { SessionState.SetString(ASSET_ABRV + "_BASE_FOLDER", value); }
|
||||
}
|
||||
|
||||
public static string GetRootFolder()
|
||||
{
|
||||
//Get script path
|
||||
string[] scriptGUID = AssetDatabase.FindAssets("FAE_Core t:script");
|
||||
string scriptFilePath = AssetDatabase.GUIDToAssetPath(scriptGUID[0]);
|
||||
|
||||
//Truncate to get relative path
|
||||
PACKAGE_ROOT_FOLDER = scriptFilePath.Replace("/Editor/FAE_Core.cs", string.Empty);
|
||||
|
||||
#if FAE_DEV
|
||||
Debug.Log("<b>Package root</b> " + PACKAGE_ROOT_FOLDER);
|
||||
#endif
|
||||
|
||||
return PACKAGE_ROOT_FOLDER;
|
||||
}
|
||||
|
||||
#if UNITY_2019_3_OR_NEWER
|
||||
public enum ShaderInstallation
|
||||
{
|
||||
BuiltIn,
|
||||
UniversalRP
|
||||
}
|
||||
|
||||
public class RunOnImport : AssetPostprocessor
|
||||
{
|
||||
static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths)
|
||||
{
|
||||
foreach (string str in importedAssets)
|
||||
{
|
||||
if (str.Contains("FAE_Core.cs"))
|
||||
{
|
||||
GetRootFolder();
|
||||
|
||||
string urpFolder = FAE_Core.PACKAGE_ROOT_FOLDER + "/Shaders/URP/";
|
||||
|
||||
var info = new DirectoryInfo(urpFolder);
|
||||
FileInfo[] fileInfo = info.GetFiles();
|
||||
|
||||
//Only one file in the folder, shaders not yet unpacked
|
||||
if (fileInfo.Length <= 2 && UnityEngine.Rendering.GraphicsSettings.renderPipelineAsset != null)
|
||||
{
|
||||
if (EditorUtility.DisplayDialog("Fantasy Adventure Environment", "The Universal Render Pipeline is in use.\n\nURP compatible shaders can be unpacked and materials upgraded through the \"Help\" window after importing has finished\n\nErrors about _GrabTexture can safely be ignored.", "OK"))
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private const string urpName = "Universal Render Pipeline";
|
||||
|
||||
//Look up table to finding pipeline shader variants
|
||||
private static Dictionary<string, string> ShaderRelations = new Dictionary<string, string>
|
||||
{
|
||||
//Peartickles
|
||||
//Since 7.4.1, the legacy particle shaders will work
|
||||
//{ "Legacy Shaders/Particles/Alpha Blended", urpName + "/Particles/Simple Lit" },
|
||||
|
||||
//No longer needed to convert particle materials. Barely works, so particle materials are now packaged for URP
|
||||
//{ "Particles/Alpha Blended", urpName + "/Particles/Simple Lit" },
|
||||
//{ "Mobile/Particles/Alpha Blended", urpName + "/Particles/Simple Lit" },
|
||||
//{ "Particles/Standard Surface", urpName + "/Particles/Simple Lit" },
|
||||
//{ "Particles/Standard Unlit", urpName + "/Particles/Unlit" },
|
||||
|
||||
{ "Standard", urpName + "/Lit" },
|
||||
{ "Skybox/Cubemap","Skybox/Cubemap" },
|
||||
{ "Nature/Terrain/Standard", urpName + "/Terrain/Lit" },
|
||||
|
||||
{ "FAE/Fog sheet", urpName + "/FAE/FAE_FogSheet" },
|
||||
{ "FAE/Sunshaft", urpName + "/FAE/FAE_Sunshaft" },
|
||||
//{ "FAE/Sunshaft particle", urpName + "/FAE/FAE_SunshaftParticle" },
|
||||
|
||||
{ "FAE/Cliff", urpName + "/FAE/FAE_Cliff" },
|
||||
{ "FAE/Cliff coverage", urpName + "/FAE/FAE_Cliff_Coverage" },
|
||||
|
||||
{ "FAE/Water", urpName + "/FAE/FAE_Water" },
|
||||
{ "FAE/Waterfall", urpName + "/FAE/FAE_Waterfall" },
|
||||
{ "FAE/Waterfall foam", urpName + "/FAE/FAE_WaterfallFoam" },
|
||||
|
||||
{ "FAE/Foliage", urpName+ "/FAE/FAE_Foliage" },
|
||||
{ "FAE/Tree Branch", urpName+ "/FAE/FAE_TreeBranch" },
|
||||
{ "FAE/Tree Trunk", urpName+ "/FAE/FAE_TreeTrunk" },
|
||||
{ "FAE/Tree Billboard", urpName+ "/FAE/FAE_TreeBillboard" }
|
||||
};
|
||||
|
||||
[MenuItem("Edit/Render Pipeline/Fantasy Adventure Environment/Revert to Built-in")]
|
||||
public static void InstallBuiltIn()
|
||||
{
|
||||
InstallShaders(ShaderInstallation.BuiltIn);
|
||||
}
|
||||
|
||||
[MenuItem("Edit/Render Pipeline/Fantasy Adventure Environment/Convert to URP")]
|
||||
public static void InstallURP()
|
||||
{
|
||||
|
||||
#if UNITY_2019_3_OR_NEWER && FAE_DEV
|
||||
SwitchRenderPipeline.SetPipeline(ShaderInstallation.UniversalRP);
|
||||
#endif
|
||||
|
||||
if (UnityEngine.Rendering.GraphicsSettings.renderPipelineAsset == null)
|
||||
{
|
||||
if (EditorUtility.DisplayDialog("Fantasy Adventure Environment", "No URP asset has been assigned in the Graphics settings. URP should be set up, before converting the package.", "Show me", "Cancel"))
|
||||
{
|
||||
SettingsService.OpenProjectSettings("Project/Graphics");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
InstallShaders(ShaderInstallation.UniversalRP);
|
||||
}
|
||||
|
||||
public static void InstallShaders(ShaderInstallation config)
|
||||
{
|
||||
string guid = UniversalShaderPackageGUID;
|
||||
string packagePath = AssetDatabase.GUIDToAssetPath(guid);
|
||||
|
||||
GetRootFolder();
|
||||
|
||||
//TODO: Package up current shaders
|
||||
if (config == ShaderInstallation.BuiltIn)
|
||||
{
|
||||
//AssetDatabase.ExportPackage(PACKAGE_ROOT_FOLDER + "/Shaders/URP", packagePath, ExportPackageOptions.Default | ExportPackageOptions.Recurse);
|
||||
|
||||
UpgradeMaterials(config);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (packagePath == string.Empty)
|
||||
{
|
||||
Debug.LogError("URP Shader/material package with the GUID: " + guid + ". Could not be found in the project, was it changed or not imported? It should be located in <i>" + PACKAGE_ROOT_FOLDER + "/Shaders/URP</i>");
|
||||
return;
|
||||
}
|
||||
AssetDatabase.ImportPackage(packagePath, false);
|
||||
AssetDatabase.importPackageCompleted += new AssetDatabase.ImportPackageCallback(ImportURPCallback);
|
||||
}
|
||||
|
||||
#if UNITY_2019_3_OR_NEWER && FAE_DEV
|
||||
SwitchRenderPipeline.SetPipeline(config);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
static void ImportURPCallback(string packageName)
|
||||
{
|
||||
AssetDatabase.Refresh();
|
||||
|
||||
UpgradeMaterials(ShaderInstallation.UniversalRP);
|
||||
|
||||
AssetDatabase.importPackageCompleted -= ImportURPCallback;
|
||||
}
|
||||
|
||||
public static void UpgradeMaterials(ShaderInstallation config)
|
||||
{
|
||||
string[] GUIDs = AssetDatabase.FindAssets("t: material", new string[] { PACKAGE_ROOT_FOLDER });
|
||||
|
||||
int count = 0;
|
||||
if (GUIDs.Length > 0)
|
||||
{
|
||||
Material[] mats = new Material[GUIDs.Length];
|
||||
|
||||
for (int i = 0; i < mats.Length; i++)
|
||||
{
|
||||
EditorUtility.DisplayProgressBar("Material configuration", "Converting FAE materials for " + config, (float)i / mats.Length);
|
||||
string path = AssetDatabase.GUIDToAssetPath(GUIDs[i]);
|
||||
|
||||
mats[i] = (Material)AssetDatabase.LoadAssetAtPath(path, typeof(Material));
|
||||
|
||||
string dest = string.Empty;
|
||||
string source = mats[i].shader.name;
|
||||
bool matched = ShaderRelations.TryGetValue(source, out dest);
|
||||
|
||||
if (config == ShaderInstallation.BuiltIn)
|
||||
{
|
||||
//Get key by value (inverse lookup)
|
||||
dest = ShaderRelations.FirstOrDefault(x => x.Value == source).Key;
|
||||
|
||||
matched = dest != null;
|
||||
}
|
||||
|
||||
if (config == ShaderInstallation.UniversalRP)
|
||||
{
|
||||
//Set grass to foliage shader
|
||||
if (source == "FAE/Grass")
|
||||
{
|
||||
dest = urpName + "/FAE/FAE_Foliage";
|
||||
matched = true;
|
||||
}
|
||||
}
|
||||
if (config == ShaderInstallation.BuiltIn)
|
||||
{
|
||||
//Set foliage to grass shader
|
||||
if (mats[i].name.Contains("Grass"))
|
||||
{
|
||||
dest = "FAE/Grass";
|
||||
matched = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (source == null && dest == null) continue;
|
||||
if (string.Equals(dest, source)) continue;
|
||||
|
||||
if (matched)
|
||||
{
|
||||
|
||||
if (config == ShaderInstallation.UniversalRP)
|
||||
{
|
||||
Texture mainTex = null;
|
||||
if (mats[i].HasProperty("_MainTex")) mainTex = mats[i].GetTexture("_MainTex");
|
||||
|
||||
if (mats[i].HasProperty("_Color")) mats[i].SetColor("_BaseColor", mats[i].GetColor("_Color"));
|
||||
if (mats[i].HasProperty("_TintColor")) mats[i].SetColor("_BaseColor", mats[i].GetColor("_TintColor"));
|
||||
|
||||
//Grass to foliage switch
|
||||
if (mats[i].HasProperty("_ColorTop")) mats[i].SetColor("_Color", mats[i].GetColor("_ColorTop"));
|
||||
|
||||
if (mats[i].HasProperty("_MainTex"))
|
||||
{
|
||||
mats[i].SetTexture("_BaseMap", mainTex);
|
||||
}
|
||||
|
||||
if (mats[i].name.Contains("Grass"))
|
||||
{
|
||||
mats[i].SetFloat("_MaxWindStrength", 0.2f);
|
||||
mats[i].SetFloat("_AmbientOcclusion", 0.15f);
|
||||
}
|
||||
|
||||
mats[i].shader = Shader.Find(dest);
|
||||
|
||||
if (mainTex) mats[i].SetTexture("_BaseMap", mainTex);
|
||||
|
||||
}
|
||||
|
||||
if (mats[i].HasProperty("_TransmissionAmount"))
|
||||
{
|
||||
mats[i].SetFloat("_TransmissionAmount", Mathf.Clamp(mats[i].GetFloat("_TransmissionAmount"), 0, 10));
|
||||
}
|
||||
|
||||
//Debug.Log("src: " + source + " dst:" + dest);
|
||||
mats[i].shader = Shader.Find(dest);
|
||||
|
||||
EditorUtility.SetDirty(mats[i]);
|
||||
count++;
|
||||
}
|
||||
else
|
||||
{
|
||||
#if FAE_DEV
|
||||
Debug.LogError("No matching " + config + " shader could be found for " + mats[i].shader.name);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
EditorUtility.ClearProgressBar();
|
||||
|
||||
Debug.Log(count + " materials were configured for the " + config + " render pipeline");
|
||||
|
||||
AssetDatabase.Refresh();
|
||||
AssetDatabase.SaveAssets();
|
||||
|
||||
if (config == ShaderInstallation.UniversalRP)
|
||||
{
|
||||
delayTime = (float)EditorApplication.timeSinceStartup + renameDelaySec;
|
||||
EditorApplication.update += PostURPConversion;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static float delayTime;
|
||||
private const float renameDelaySec = 1f;
|
||||
|
||||
private static void PostURPConversion()
|
||||
{
|
||||
//Wait 1s
|
||||
if (EditorApplication.timeSinceStartup >= delayTime)
|
||||
{
|
||||
EditorApplication.update -= PostURPConversion;
|
||||
|
||||
//If any controllers are present in the open scene, these need to be nudged to apply the correct shaders
|
||||
CliffAppearance[] cliffControllers = GameObject.FindObjectsOfType<CliffAppearance>();
|
||||
for (int i = 0; i < cliffControllers.Length; i++)
|
||||
{
|
||||
cliffControllers[i].OnEnable();
|
||||
}
|
||||
|
||||
string[] shaderFileGUIDS = AssetDatabase.FindAssets("t: Shader", new[] {PACKAGE_ROOT_FOLDER + "/Shaders/URP"});
|
||||
|
||||
//Force a re-import of the Shader Graphs, depending on the angle of the sun, and the orbit of Jupiter, they fail to reference the FAE.hlsl file if imported last
|
||||
for (int i = 0; i < shaderFileGUIDS.Length; i++)
|
||||
{
|
||||
AssetDatabase.ImportAsset(AssetDatabase.GUIDToAssetPath(shaderFileGUIDS[i]));
|
||||
}
|
||||
|
||||
if (EditorUtility.DisplayDialog("Fantasy Adventure Environment", "Ensure the Depth/Opaque Texture options are enabled in your pipeline settings, otherwise the water isn't visible in the game view", "Show me", "OK"))
|
||||
{
|
||||
Selection.activeObject = UnityEngine.Rendering.GraphicsSettings.renderPipelineAsset;
|
||||
}
|
||||
|
||||
AssetDatabase.SaveAssets();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}//namespace
|
||||
@@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0c8c137adabdd2247bf1ed12c029b1dc
|
||||
timeCreated: 1521298829
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,230 @@
|
||||
// Fantasy Adventure Environment
|
||||
// Copyright Staggart Creations
|
||||
// staggart.xyz
|
||||
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
using System.Collections;
|
||||
|
||||
namespace FAE
|
||||
{
|
||||
public class FoliageShaderGUI : ShaderGUI
|
||||
{
|
||||
|
||||
MaterialProperty _MaskClipValue;
|
||||
|
||||
//Main maps
|
||||
MaterialProperty _MainTex;
|
||||
MaterialProperty _BumpMap;
|
||||
MaterialProperty _Color;
|
||||
|
||||
//Color
|
||||
MaterialProperty _WindTint;
|
||||
MaterialProperty _AmbientOcclusion;
|
||||
MaterialProperty _TransmissionSize;
|
||||
MaterialProperty _TransmissionAmount;
|
||||
|
||||
//Animation
|
||||
MaterialProperty _MaxWindStrength;
|
||||
MaterialProperty _GlobalWindMotion;
|
||||
MaterialProperty _LeafFlutter;
|
||||
MaterialProperty _WindAmplitudeMultiplier;
|
||||
MaterialProperty _WindSwinging;
|
||||
MaterialProperty _BendingInfluence;
|
||||
|
||||
MaterialEditor m_MaterialEditor;
|
||||
private Material targetMat;
|
||||
|
||||
//Meta
|
||||
bool showHelp;
|
||||
bool showHelpColor;
|
||||
bool showHelpAnimation;
|
||||
|
||||
bool hasWindController;
|
||||
WindController windController;
|
||||
|
||||
GUIContent mainTexName = new GUIContent("Diffuse", "Diffuse (RGB) and Transparency (A)");
|
||||
GUIContent normalMapName = new GUIContent("Normal Map");
|
||||
private bool visualizeVectors;
|
||||
|
||||
public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] props)
|
||||
{
|
||||
if (windController == null) LocateWindController();
|
||||
|
||||
//Receive
|
||||
visualizeVectors = WindController._visualizeVectors;
|
||||
|
||||
this.m_MaterialEditor = materialEditor;
|
||||
targetMat = (Material)materialEditor.target;
|
||||
|
||||
this.FindProperties(props);
|
||||
//Style similar to Standard shader
|
||||
m_MaterialEditor.SetDefaultGUIWidths();
|
||||
m_MaterialEditor.UseDefaultMargins();
|
||||
EditorGUIUtility.labelWidth = 0f;
|
||||
|
||||
#if UNITY_2019_3_OR_NEWER
|
||||
if (UnityEngine.Rendering.GraphicsSettings.currentRenderPipeline != null &&
|
||||
!targetMat.shader.name.Contains("Universal Render Pipeline"))
|
||||
{
|
||||
EditorGUILayout.HelpBox("A render pipeline is in use, but this material is using a shader for the Built-in render pipeline.\n\nShaders and materials can be converted through the Help window", MessageType.Error);
|
||||
EditorGUILayout.Space();
|
||||
}
|
||||
#endif
|
||||
|
||||
EditorGUI.BeginChangeCheck();
|
||||
|
||||
//Draw fields
|
||||
DoHeader();
|
||||
|
||||
DoMapsArea();
|
||||
DoColorArea();
|
||||
DoAnimationArea();
|
||||
|
||||
if (EditorGUI.EndChangeCheck())
|
||||
{
|
||||
//Send
|
||||
WindController.VisualizeVectors(visualizeVectors);
|
||||
}
|
||||
|
||||
GUIHelper.DrawExtraFields(m_MaterialEditor);
|
||||
GUIHelper.DrawFooter();
|
||||
}
|
||||
|
||||
void DoHeader()
|
||||
{
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
showHelp = GUILayout.Toggle(showHelp, "Toggle help", "Button");
|
||||
GUILayout.Label("FAE Foliage Shader", GUIHelper.Header);
|
||||
EditorGUILayout.EndHorizontal();
|
||||
if (showHelp) EditorGUILayout.HelpBox("Please bear in mind, when using custom meshes, that most shader feature require the tips of the mesh to be vertex colored.\n\nBaking Ambient Occlusion into the vertex colors will yield correct results.", MessageType.Warning);
|
||||
}
|
||||
|
||||
void DoMapsArea()
|
||||
{
|
||||
GUILayout.Label("Main maps", EditorStyles.boldLabel);
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
EditorGUILayout.PrefixLabel(_MaskClipValue.displayName);
|
||||
_MaskClipValue.floatValue = EditorGUILayout.Slider(_MaskClipValue.floatValue, 0f, 1f);
|
||||
EditorGUILayout.EndHorizontal();
|
||||
this.m_MaterialEditor.TexturePropertySingleLine(mainTexName, this._MainTex);
|
||||
if(targetMat.HasProperty("_BumpMap"))this.m_MaterialEditor.TexturePropertySingleLine(normalMapName, this._BumpMap);
|
||||
|
||||
EditorGUILayout.Space();
|
||||
}
|
||||
|
||||
void DoColorArea()
|
||||
{
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
showHelpColor = GUILayout.Toggle(showHelpColor, "?", "Button", GUILayout.Width(25f)); GUILayout.Label("Color", EditorStyles.boldLabel);
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
m_MaterialEditor.ShaderProperty(_Color, _Color.displayName);
|
||||
m_MaterialEditor.ShaderProperty(_AmbientOcclusion, _AmbientOcclusion.displayName);
|
||||
if (showHelpColor) EditorGUILayout.HelpBox("Darkens the areas of the mesh where vertex colors are applied", MessageType.None);
|
||||
m_MaterialEditor.ShaderProperty(_TransmissionAmount, _TransmissionAmount.displayName);
|
||||
if (showHelpColor) EditorGUILayout.HelpBox("Simulates light passing through the material. This will have no effect on short grass.", MessageType.None);
|
||||
m_MaterialEditor.ShaderProperty(_TransmissionSize, _TransmissionSize.displayName);
|
||||
|
||||
EditorGUILayout.Space();
|
||||
}
|
||||
|
||||
void DoAnimationArea()
|
||||
{
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
showHelpAnimation = GUILayout.Toggle(showHelpAnimation, "?", "Button", GUILayout.Width(25f)); GUILayout.Label("Wind animation", EditorStyles.boldLabel);
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
#if UNITY_2019_3_OR_NEWER
|
||||
if (UnityEngine.Rendering.GraphicsSettings.currentRenderPipeline == null)
|
||||
{
|
||||
#endif
|
||||
visualizeVectors = EditorGUILayout.Toggle("Visualize wind", visualizeVectors);
|
||||
#if UNITY_2019_3_OR_NEWER
|
||||
}
|
||||
#endif
|
||||
|
||||
#if !VEGETATION_STUDIO_PRO //VS Pro has an FAE wind controller
|
||||
if (!hasWindController)
|
||||
{
|
||||
EditorGUILayout.HelpBox("No \"WindController\" component was found in your scene. Please add this script to an empty GameObject\n\nA prefab can be found in the Prefabs/Effects folder.", MessageType.Warning);
|
||||
EditorGUI.BeginDisabledGroup(true);
|
||||
}
|
||||
#else
|
||||
EditorGUI.BeginDisabledGroup(false);
|
||||
#endif
|
||||
if (showHelpAnimation) EditorGUILayout.HelpBox("Toggle a visualisation of the wind vectors on all the objects that use FAE shaders featuring wind.\n\nThis allows you to more clearly see the effects of the settings.", MessageType.None);
|
||||
|
||||
m_MaterialEditor.ShaderProperty(_MaxWindStrength, _MaxWindStrength.displayName);
|
||||
if (showHelpAnimation) EditorGUILayout.HelpBox("Determines how much influence the wind has on the object", MessageType.None);
|
||||
m_MaterialEditor.ShaderProperty(_GlobalWindMotion, _GlobalWindMotion.displayName);
|
||||
if (showHelpAnimation) EditorGUILayout.HelpBox("Back and forth motion", MessageType.None);
|
||||
m_MaterialEditor.ShaderProperty(_LeafFlutter, _LeafFlutter.displayName);
|
||||
if (showHelpAnimation) EditorGUILayout.HelpBox("Local wind turbulence", MessageType.None);
|
||||
m_MaterialEditor.ShaderProperty(_WindAmplitudeMultiplier, _WindAmplitudeMultiplier.displayName);
|
||||
if (showHelpAnimation) EditorGUILayout.HelpBox("Multiply the wind amplitude for this material.Essentally this is the size of the wind waves.", MessageType.None);
|
||||
m_MaterialEditor.ShaderProperty(_WindSwinging, _WindSwinging.displayName);
|
||||
if (showHelpAnimation) EditorGUILayout.HelpBox("Higher values mean the object always sways back against the wind direction", MessageType.None);
|
||||
|
||||
if (targetMat.HasProperty("_WindTint"))
|
||||
{
|
||||
m_MaterialEditor.ShaderProperty(_WindTint, _WindTint.displayName);
|
||||
if (showHelpAnimation)
|
||||
EditorGUILayout.HelpBox("Vizualises the wind by adding a slight tint, either dark (<0) or light (>0)", MessageType.None);
|
||||
}
|
||||
|
||||
if (showHelpAnimation) EditorGUILayout.HelpBox("Multiply the wind amplitude for this material. Essentally this is the size of the wind waves.", MessageType.None);
|
||||
if (!hasWindController)
|
||||
{
|
||||
EditorGUI.EndDisabledGroup();
|
||||
}
|
||||
m_MaterialEditor.ShaderProperty(_BendingInfluence, _BendingInfluence.displayName);
|
||||
if (showHelpAnimation) EditorGUILayout.HelpBox("Determines how much influence the FoliageBender script has on the object", MessageType.None);
|
||||
|
||||
if (hasWindController && showHelpAnimation)
|
||||
{
|
||||
GUIHelper.DrawWindInfo();
|
||||
}
|
||||
|
||||
EditorGUILayout.Space();
|
||||
}
|
||||
|
||||
void LocateWindController()
|
||||
{
|
||||
//Debug.Log("Searching scene for WindController script");
|
||||
windController = GameObject.FindObjectOfType<WindController>();
|
||||
hasWindController = (windController) ? true : false;
|
||||
}
|
||||
|
||||
public void FindProperties(MaterialProperty[] props)
|
||||
{
|
||||
//Rendering
|
||||
#if UNITY_2017_1_OR_NEWER
|
||||
_MaskClipValue = FindProperty("_Cutoff", props);
|
||||
#else
|
||||
_MaskClipValue = FindProperty("_Cutoff", props);
|
||||
#endif
|
||||
|
||||
//Main maps
|
||||
_MainTex = FindProperty("_MainTex", props);
|
||||
if(targetMat.HasProperty("_BumpMap")) _BumpMap = FindProperty("_BumpMap", props);
|
||||
|
||||
//Color
|
||||
if(targetMat.HasProperty("_WindTint")) _WindTint = FindProperty("_WindTint", props);
|
||||
_Color = FindProperty("_Color", props);
|
||||
_AmbientOcclusion = FindProperty("_AmbientOcclusion", props);
|
||||
_TransmissionSize = FindProperty("_TransmissionSize", props);
|
||||
_TransmissionAmount = FindProperty("_TransmissionAmount", props);
|
||||
|
||||
//Animation
|
||||
_MaxWindStrength = FindProperty("_MaxWindStrength", props);
|
||||
_GlobalWindMotion = FindProperty("_GlobalWindMotion", props);
|
||||
_LeafFlutter = FindProperty("_LeafFlutter", props);
|
||||
_WindAmplitudeMultiplier = FindProperty("_WindAmplitudeMultiplier", props);
|
||||
_WindSwinging = FindProperty("_WindSwinging", props);
|
||||
_BendingInfluence = FindProperty("_BendingInfluence", props);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user