diff --git a/Assembly-CSharp-vs.csproj b/Assembly-CSharp-vs.csproj
new file mode 100644
index 0000000..18f9daa
--- /dev/null
+++ b/Assembly-CSharp-vs.csproj
@@ -0,0 +1,114 @@
+
+
+
+ Debug
+ AnyCPU
+ 9.0.21022
+ 2.0
+ {80CE8C27-FECA-E020-5EC6-DCB3914EBC42}
+ Library
+ Properties
+
+ Assembly-CSharp
+ v3.5
+ 512
+
+
+ true
+ full
+ false
+ Temp\bin\Debug\
+ DEBUG;TRACE;UNITY_3_4_2;UNITY_3_4;UNITY_EDITOR;ENABLE_PROFILER;UNITY_STANDALONE_OSX;ENABLE_GENERICS;ENABLE_DUCK_TYPING;ENABLE_TERRAIN;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CLOTH;ENABLE_WWW
+ prompt
+ 4
+ 0169
+
+
+ pdbonly
+ true
+ Temp\bin\Release\
+ TRACE
+ prompt
+ 4
+ 0169
+
+
+
+
+
+
+ C:/Program Files (x86)/Unity/Editor/Data/Managed/UnityEngine.dll
+
+
+ C:/Program Files (x86)/Unity/Editor/Data/Managed/UnityEditor.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Assembly-CSharp.csproj b/Assembly-CSharp.csproj
new file mode 100644
index 0000000..18f9daa
--- /dev/null
+++ b/Assembly-CSharp.csproj
@@ -0,0 +1,114 @@
+
+
+
+ Debug
+ AnyCPU
+ 9.0.21022
+ 2.0
+ {80CE8C27-FECA-E020-5EC6-DCB3914EBC42}
+ Library
+ Properties
+
+ Assembly-CSharp
+ v3.5
+ 512
+
+
+ true
+ full
+ false
+ Temp\bin\Debug\
+ DEBUG;TRACE;UNITY_3_4_2;UNITY_3_4;UNITY_EDITOR;ENABLE_PROFILER;UNITY_STANDALONE_OSX;ENABLE_GENERICS;ENABLE_DUCK_TYPING;ENABLE_TERRAIN;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CLOTH;ENABLE_WWW
+ prompt
+ 4
+ 0169
+
+
+ pdbonly
+ true
+ Temp\bin\Release\
+ TRACE
+ prompt
+ 4
+ 0169
+
+
+
+
+
+
+ C:/Program Files (x86)/Unity/Editor/Data/Managed/UnityEngine.dll
+
+
+ C:/Program Files (x86)/Unity/Editor/Data/Managed/UnityEditor.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Assembly-CSharp.pidb b/Assembly-CSharp.pidb
new file mode 100644
index 0000000..a655c5a
Binary files /dev/null and b/Assembly-CSharp.pidb differ
diff --git a/Assets/Assets/GUILib_Test_Material/GUIMaterial.mat b/Assets/Assets/GUILib_Test_Material/GUIMaterial.mat
new file mode 100755
index 0000000..d537a8f
Binary files /dev/null and b/Assets/Assets/GUILib_Test_Material/GUIMaterial.mat differ
diff --git a/Assets/Assets/GUILib_Test_Material/colorGrid.png b/Assets/Assets/GUILib_Test_Material/colorGrid.png
new file mode 100755
index 0000000..aeeab39
Binary files /dev/null and b/Assets/Assets/GUILib_Test_Material/colorGrid.png differ
diff --git a/Assets/Assets/GUILib_Test_Material/menu_credits.png b/Assets/Assets/GUILib_Test_Material/menu_credits.png
new file mode 100755
index 0000000..41e88fb
Binary files /dev/null and b/Assets/Assets/GUILib_Test_Material/menu_credits.png differ
diff --git a/Assets/Assets/GUILib_Test_Material/menu_credits_active.png b/Assets/Assets/GUILib_Test_Material/menu_credits_active.png
new file mode 100755
index 0000000..7baba52
Binary files /dev/null and b/Assets/Assets/GUILib_Test_Material/menu_credits_active.png differ
diff --git a/Assets/Assets/GUILib_Test_Material/menu_highscore.png b/Assets/Assets/GUILib_Test_Material/menu_highscore.png
new file mode 100755
index 0000000..ae31b1f
Binary files /dev/null and b/Assets/Assets/GUILib_Test_Material/menu_highscore.png differ
diff --git a/Assets/Assets/GUILib_Test_Material/menu_highscore_active.png b/Assets/Assets/GUILib_Test_Material/menu_highscore_active.png
new file mode 100755
index 0000000..1f6cc5d
Binary files /dev/null and b/Assets/Assets/GUILib_Test_Material/menu_highscore_active.png differ
diff --git a/Assets/Assets/GUILib_Test_Material/menu_mypux.png b/Assets/Assets/GUILib_Test_Material/menu_mypux.png
new file mode 100755
index 0000000..5d98190
Binary files /dev/null and b/Assets/Assets/GUILib_Test_Material/menu_mypux.png differ
diff --git a/Assets/Assets/GUILib_Test_Material/menu_mypux_active.png b/Assets/Assets/GUILib_Test_Material/menu_mypux_active.png
new file mode 100755
index 0000000..9856208
Binary files /dev/null and b/Assets/Assets/GUILib_Test_Material/menu_mypux_active.png differ
diff --git a/Assets/Assets/GUILib_Test_Material/menu_play.png b/Assets/Assets/GUILib_Test_Material/menu_play.png
new file mode 100755
index 0000000..e269aac
Binary files /dev/null and b/Assets/Assets/GUILib_Test_Material/menu_play.png differ
diff --git a/Assets/Assets/GUILib_Test_Material/menu_top.png b/Assets/Assets/GUILib_Test_Material/menu_top.png
new file mode 100755
index 0000000..31bec92
Binary files /dev/null and b/Assets/Assets/GUILib_Test_Material/menu_top.png differ
diff --git a/Assets/Assets/GUILib_Test_Material/white.png b/Assets/Assets/GUILib_Test_Material/white.png
new file mode 100755
index 0000000..f476f9d
Binary files /dev/null and b/Assets/Assets/GUILib_Test_Material/white.png differ
diff --git a/Assets/Materials/guiPlane-No Name.mat b/Assets/Materials/guiPlane-No Name.mat
new file mode 100755
index 0000000..19c7730
Binary files /dev/null and b/Assets/Materials/guiPlane-No Name.mat differ
diff --git a/Assets/Scenes/GUILib.unity b/Assets/Scenes/GUILib.unity
new file mode 100755
index 0000000..25cc96c
Binary files /dev/null and b/Assets/Scenes/GUILib.unity differ
diff --git a/Assets/Scenes/GUILib_testPlanes.unity b/Assets/Scenes/GUILib_testPlanes.unity
new file mode 100755
index 0000000..a2f217a
Binary files /dev/null and b/Assets/Scenes/GUILib_testPlanes.unity differ
diff --git a/Assets/Scripts/GUI_Module/Assets/GUILib_Test_Material/GUIMaterial.mat b/Assets/Scripts/GUI_Module/Assets/GUILib_Test_Material/GUIMaterial.mat
new file mode 100755
index 0000000..d537a8f
Binary files /dev/null and b/Assets/Scripts/GUI_Module/Assets/GUILib_Test_Material/GUIMaterial.mat differ
diff --git a/Assets/Scripts/GUI_Module/Assets/GUILib_Test_Material/colorGrid.png b/Assets/Scripts/GUI_Module/Assets/GUILib_Test_Material/colorGrid.png
new file mode 100755
index 0000000..aeeab39
Binary files /dev/null and b/Assets/Scripts/GUI_Module/Assets/GUILib_Test_Material/colorGrid.png differ
diff --git a/Assets/Scripts/GUI_Module/Assets/GUILib_Test_Material/menu_credits.png b/Assets/Scripts/GUI_Module/Assets/GUILib_Test_Material/menu_credits.png
new file mode 100755
index 0000000..41e88fb
Binary files /dev/null and b/Assets/Scripts/GUI_Module/Assets/GUILib_Test_Material/menu_credits.png differ
diff --git a/Assets/Scripts/GUI_Module/Assets/GUILib_Test_Material/menu_credits_active.png b/Assets/Scripts/GUI_Module/Assets/GUILib_Test_Material/menu_credits_active.png
new file mode 100755
index 0000000..7baba52
Binary files /dev/null and b/Assets/Scripts/GUI_Module/Assets/GUILib_Test_Material/menu_credits_active.png differ
diff --git a/Assets/Scripts/GUI_Module/Assets/GUILib_Test_Material/menu_highscore.png b/Assets/Scripts/GUI_Module/Assets/GUILib_Test_Material/menu_highscore.png
new file mode 100755
index 0000000..ae31b1f
Binary files /dev/null and b/Assets/Scripts/GUI_Module/Assets/GUILib_Test_Material/menu_highscore.png differ
diff --git a/Assets/Scripts/GUI_Module/Assets/GUILib_Test_Material/menu_highscore_active.png b/Assets/Scripts/GUI_Module/Assets/GUILib_Test_Material/menu_highscore_active.png
new file mode 100755
index 0000000..1f6cc5d
Binary files /dev/null and b/Assets/Scripts/GUI_Module/Assets/GUILib_Test_Material/menu_highscore_active.png differ
diff --git a/Assets/Scripts/GUI_Module/Assets/GUILib_Test_Material/menu_mypux.png b/Assets/Scripts/GUI_Module/Assets/GUILib_Test_Material/menu_mypux.png
new file mode 100755
index 0000000..5d98190
Binary files /dev/null and b/Assets/Scripts/GUI_Module/Assets/GUILib_Test_Material/menu_mypux.png differ
diff --git a/Assets/Scripts/GUI_Module/Assets/GUILib_Test_Material/menu_mypux_active.png b/Assets/Scripts/GUI_Module/Assets/GUILib_Test_Material/menu_mypux_active.png
new file mode 100755
index 0000000..9856208
Binary files /dev/null and b/Assets/Scripts/GUI_Module/Assets/GUILib_Test_Material/menu_mypux_active.png differ
diff --git a/Assets/Scripts/GUI_Module/Assets/GUILib_Test_Material/menu_play.png b/Assets/Scripts/GUI_Module/Assets/GUILib_Test_Material/menu_play.png
new file mode 100755
index 0000000..e269aac
Binary files /dev/null and b/Assets/Scripts/GUI_Module/Assets/GUILib_Test_Material/menu_play.png differ
diff --git a/Assets/Scripts/GUI_Module/Assets/GUILib_Test_Material/menu_top.png b/Assets/Scripts/GUI_Module/Assets/GUILib_Test_Material/menu_top.png
new file mode 100755
index 0000000..31bec92
Binary files /dev/null and b/Assets/Scripts/GUI_Module/Assets/GUILib_Test_Material/menu_top.png differ
diff --git a/Assets/Scripts/GUI_Module/Assets/GUILib_Test_Material/white.png b/Assets/Scripts/GUI_Module/Assets/GUILib_Test_Material/white.png
new file mode 100755
index 0000000..f476f9d
Binary files /dev/null and b/Assets/Scripts/GUI_Module/Assets/GUILib_Test_Material/white.png differ
diff --git a/Assets/Scripts/GUI_Module/Assets/Media/Materials/guiPlane-No Name.mat b/Assets/Scripts/GUI_Module/Assets/Media/Materials/guiPlane-No Name.mat
new file mode 100755
index 0000000..19c7730
Binary files /dev/null and b/Assets/Scripts/GUI_Module/Assets/Media/Materials/guiPlane-No Name.mat differ
diff --git a/Assets/Scripts/GUI_Module/Assets/Media/guiPlane.dae b/Assets/Scripts/GUI_Module/Assets/Media/guiPlane.dae
new file mode 100755
index 0000000..2fc87e9
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Assets/Media/guiPlane.dae
@@ -0,0 +1,77 @@
+
+
+
+
+ Blender User
+ Blender 2.60.0 r41226
+
+ 2011-11-11T13:23:13
+ 2011-11-11T13:23:13
+
+ Z_UP
+
+
+
+
+
+
+
+
+ 1 1 0 1 -1 0 -1 -0.9999998 0 -0.9999997 1 0
+
+
+
+
+
+
+
+
+
+ 0 0 1
+
+
+
+
+
+
+
+
+
+ 1 1 0 1 0 0 1 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 4
+ 0 0 0 3 0 1 2 0 2 1 0 3
+
+
+ 1
+
+
+
+
+
+ 0 0 0
+ 0 0 1 0
+ 0 1 0 0
+ 1 0 0 0
+ 1 1 1
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Assets/Scripts/GUI_Module/Assets/Resources/TextMesh.prefab b/Assets/Scripts/GUI_Module/Assets/Resources/TextMesh.prefab
new file mode 100755
index 0000000..e1ca414
Binary files /dev/null and b/Assets/Scripts/GUI_Module/Assets/Resources/TextMesh.prefab differ
diff --git a/Assets/Scripts/GUI_Module/Assets/Resources/guiPlane.prefab b/Assets/Scripts/GUI_Module/Assets/Resources/guiPlane.prefab
new file mode 100755
index 0000000..512666c
Binary files /dev/null and b/Assets/Scripts/GUI_Module/Assets/Resources/guiPlane.prefab differ
diff --git a/Assets/Scripts/GUI_Module/Behaviours/AnimatedUVBehaviour.cs b/Assets/Scripts/GUI_Module/Behaviours/AnimatedUVBehaviour.cs
new file mode 100755
index 0000000..06b89b2
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Behaviours/AnimatedUVBehaviour.cs
@@ -0,0 +1,93 @@
+using UnityEngine;
+using System.Collections;
+
+public class AnimatedUVBehaviour : UVMoveBehaviour {
+
+ public int MovieSpeedFPS;
+ public int FrameSizeX;
+ public int FrameSizeY;
+ public int TotalFramesCount;
+ public int RowCount;
+ public int ColumnCount;
+ public Texture2D[] Textures;
+
+ private float frameTime;
+ private int currentFrameNumber;
+ private int currentRow;
+ private int currentColoum;
+ private int currentTexture;
+ private int framesPerTexture;
+ //private int textureSize;
+ private bool changeTexture;
+
+ // Use this for initialization
+ void Start () {
+ StartOverride();
+
+ }
+
+ protected override void StartOverride(){
+ base.StartOverride();
+ //textureSize = mainTexture.height;
+ //AbsoluteUVPosition = true;
+
+ }
+
+ void Awake(){
+ AwakeOverride();
+ }
+ protected override void AwakeOverride(){
+ base.AwakeOverride();
+ frameTime = 0;
+ currentFrameNumber = 0;
+ currentRow = 0;
+ currentColoum = 0;
+ currentTexture = 0;
+ framesPerTexture= ColumnCount * RowCount;
+ changeTexture = false;
+
+ }
+
+ // Update is called once per frame
+ /*void Update () {
+
+ }*/
+
+
+ void FixedUpdate(){
+
+ frameTime += Time.deltaTime;
+
+ if(frameTime > (1.0f/MovieSpeedFPS)){ // change frame
+
+ var framesPlayed = (int)(frameTime*MovieSpeedFPS);
+ currentFrameNumber = (currentFrameNumber + framesPlayed) % TotalFramesCount;
+ frameTime -= framesPlayed/MovieSpeedFPS;
+ changeFrame();
+
+
+ }
+ }
+
+ private void changeFrame(){
+
+ newUvs = new Rect(FrameSizeX*(currentColoum),FrameSizeY*(currentRow*-1) , 1,1);
+ if(changeTexture){
+ //EditorDebug.LogWarning("ChangeTExture");
+ renderer.material.SetTexture("_MainTex", Textures[currentTexture]);
+ changeTexture = false;
+ }
+
+
+ currentRow = (int)(currentFrameNumber%framesPerTexture)/ColumnCount;
+ currentColoum = (int)(currentFrameNumber%framesPerTexture)/RowCount;
+ int oldTexture = currentTexture;
+ currentTexture = (int)(currentFrameNumber/framesPerTexture);
+ if(oldTexture != currentTexture)
+ changeTexture = true;
+
+
+ //EditorDebug.Log("New UVs: " + newUvs + "Row: " + currentRow + "Coloumn: " + currentColoum);
+
+ }
+}
diff --git a/Assets/Scripts/GUI_Module/Behaviours/DropDownElementBehaviour.cs b/Assets/Scripts/GUI_Module/Behaviours/DropDownElementBehaviour.cs
new file mode 100755
index 0000000..b379eaf
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Behaviours/DropDownElementBehaviour.cs
@@ -0,0 +1,63 @@
+using UnityEngine;
+using System.Collections;
+
+public class DropDownElementBehaviour : InteractionBehaviour {
+
+ private DropDownMenu containingDropDownElement;
+ private Frame frame;
+ public string Identifier;
+
+
+ protected override void AwakeOverride (){
+ base.AwakeOverride ();
+ initDropDownElement();
+ initGUIElement();
+ if(Identifier == string.Empty)
+ Identifier = gameObject.name;
+ }
+
+ private void initGUIElement(){
+ frame = this.GetComponent();
+ if(frame == null)
+ EditorDebug.LogError("DropDownElement: " + gameObject.name + " is not attached to an GUIElement");
+ }
+ private void initDropDownElement(){
+ GameObject obj = this.gameObject;
+ GameObject savedObj = obj;
+ GameObject savedParent = null;
+ DropDownMenu menu = null;
+ while(obj != null){
+ menu = obj.GetComponent();
+ if( menu != null){
+ break;
+ }
+
+ if(obj.transform.parent != null)
+ savedParent = obj.transform.parent.gameObject;
+ else
+ savedParent = null;
+ obj = savedParent;
+ }
+ if(menu == null){
+ EditorDebug.LogWarning("Element: " + savedObj.gameObject.name + " is not a child of a DropDownMenu!");
+ }
+ containingDropDownElement = menu;
+ }
+
+
+ public override void Click (MouseEventArgs mouse){
+ EditorDebug.Log("DropDownElement clicked");
+ base.Click (mouse);
+ if(containingDropDownElement == null){
+ initDropDownElement();
+ if(containingDropDownElement == null){
+ EditorDebug.LogError("DropDownElement : " + gameObject.name + " has no DropDownElement as Parent");
+ return;
+ }
+
+ }
+ containingDropDownElement.Selected = frame;
+ containingDropDownElement.ToggleContentVisibility();
+
+ }
+}
diff --git a/Assets/Scripts/GUI_Module/Behaviours/HorizontalLayoutBehaviour.cs b/Assets/Scripts/GUI_Module/Behaviours/HorizontalLayoutBehaviour.cs
new file mode 100755
index 0000000..db1e145
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Behaviours/HorizontalLayoutBehaviour.cs
@@ -0,0 +1,15 @@
+using UnityEngine;
+using System.Collections;
+
+public class HorizontalLayoutBehaviour : MonoBehaviour {
+
+ // Use this for initialization
+ void Start () {
+
+ }
+
+ // Update is called once per frame
+ void Update () {
+
+ }
+}
diff --git a/Assets/Scripts/GUI_Module/Behaviours/ILayoutBehaviour.cs b/Assets/Scripts/GUI_Module/Behaviours/ILayoutBehaviour.cs
new file mode 100755
index 0000000..fd423d7
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Behaviours/ILayoutBehaviour.cs
@@ -0,0 +1,15 @@
+using UnityEngine;
+using System.Collections;
+
+public class ILayoutBehaviour : MonoBehaviour {
+
+ // Use this for initialization
+ void Start () {
+
+ }
+
+ // Update is called once per frame
+ void Update () {
+
+ }
+}
diff --git a/Assets/Scripts/GUI_Module/Behaviours/InteractionBehaviour.cs b/Assets/Scripts/GUI_Module/Behaviours/InteractionBehaviour.cs
new file mode 100755
index 0000000..e03b7b2
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Behaviours/InteractionBehaviour.cs
@@ -0,0 +1,24 @@
+using UnityEngine;
+using System.Collections;
+
+public class InteractionBehaviour : MonoBehaviour{
+
+ // DONT USE THIS
+ void Awake(){
+ AwakeOverride();
+ }
+
+ // USE THIS FOR INITIALISATION
+ protected virtual void AwakeOverride(){
+
+ }
+
+ public virtual void Click(MouseEventArgs mouse){}
+ public virtual void Hover(MouseEventArgs mouse){}
+ public virtual void Down(MouseEventArgs mouse){}
+ public virtual void Up(MouseEventArgs mouse){}
+ public virtual void Move(MouseEventArgs mouse){}
+ public virtual void Swipe(MouseEventArgs mouse){}
+ public virtual void TextChanged(string newText){}
+
+}
diff --git a/Assets/Scripts/GUI_Module/Behaviours/LayoutBehaviour.cs b/Assets/Scripts/GUI_Module/Behaviours/LayoutBehaviour.cs
new file mode 100755
index 0000000..bef2ff6
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Behaviours/LayoutBehaviour.cs
@@ -0,0 +1,15 @@
+using UnityEngine;
+using System.Collections;
+
+public class LayoutBehaviour : MonoBehaviour {
+
+ // Use this for initialization
+ void Start () {
+
+ }
+
+ // Update is called once per frame
+ void Update () {
+
+ }
+}
diff --git a/Assets/Scripts/GUI_Module/Behaviours/OpenDropDownMenuBehaviour.cs b/Assets/Scripts/GUI_Module/Behaviours/OpenDropDownMenuBehaviour.cs
new file mode 100755
index 0000000..cad84f7
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Behaviours/OpenDropDownMenuBehaviour.cs
@@ -0,0 +1,13 @@
+using UnityEngine;
+using System.Collections;
+
+public class OpenDropDownMenuBehaviour : InteractionBehaviour {
+
+ public DropDownMenu DropDown;
+
+ public override void Click (MouseEventArgs mouse){
+ base.Click (mouse);
+ DropDown.ToggleContentVisibility();
+
+ }
+}
diff --git a/Assets/Scripts/GUI_Module/Behaviours/UVMoveBehaviour.cs b/Assets/Scripts/GUI_Module/Behaviours/UVMoveBehaviour.cs
new file mode 100755
index 0000000..aaa8c93
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Behaviours/UVMoveBehaviour.cs
@@ -0,0 +1,134 @@
+using UnityEngine;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
+public class UVMoveBehaviour : MonoBehaviour {
+
+ public Rect newUvs{
+ get{
+ return currentUvs;
+ }
+ set{
+ currentUvs = value;
+ updateCurrentUV();
+ }
+ }
+
+ //public bool AbsoluteUVPosition = false;
+
+ protected Texture mainTexture;
+
+ private Rect currentUvs;
+ private MeshFilter meshFilter;
+ private List originalUVs;
+ private bool disabled = true;
+
+ void Start(){
+ StartOverride();
+ }
+
+ protected virtual void StartOverride(){
+ if(mainTexture == null)
+ initMainTexture();
+ }
+ void Awake(){
+ AwakeOverride();
+ }
+
+ protected virtual void AwakeOverride(){
+
+ newUvs = new Rect(0,0,0,0);
+ disabled = false;
+ loadMesh();
+ initMainTexture();
+ if(!disabled)
+ storeUvs();
+ }
+
+ private void initMainTexture(){
+ mainTexture = meshFilter.renderer.material.GetTexture("_MainTex");
+ if(mainTexture == null){
+ EditorDebug.LogWarning("No Texture set for UVMoveBehaviour on: " + gameObject.name);
+ }
+ }
+
+ private void storeUvs(){
+ var uvs = meshFilter.mesh.uv;
+ originalUVs = new List();
+ for(int i=0; i< uvs.Length; i++){
+ Vector2 uv = uvs[i];
+ originalUVs.Add(uv);
+ }
+
+ }
+ private void loadMesh(){
+ meshFilter = gameObject.GetComponent() as MeshFilter;
+ if(meshFilter == null){
+ meshFilter = gameObject.GetComponentInChildren() as MeshFilter;
+ }
+ if(meshFilter == null){
+ EditorDebug.LogError("No Meshfound for UVMoveBehaviour on Object: " + gameObject.name);
+ disabled = true;
+
+ }
+
+ }
+
+ private void updateCurrentUV(){
+ if(disabled)
+ return;
+
+ var uvs = meshFilter.mesh.uv;
+ for(int i=0; i< originalUVs.Count; i++){
+
+ Vector2 uv = originalUVs[i];
+ Vector2 normPos = toUVSpace(new Vector2(newUvs.x, newUvs.y));
+ //EditorDebug.Log("NormPos: " + normPos.x + " " + normPos.y);
+ /*if(AbsoluteUVPosition){
+ Vector2 diff = uv - normPos;
+ uv.x -= normPos.x;
+ uv.y -= normPos.y;
+ float factorX = newUvs.width / mainTexture.width;
+ float factorY = newUvs.height / mainTexture.height;
+ uv.x *= factorX;
+ uv.y *= factorY;
+
+ //EditorDebug.Log("Factor: " + factorX);
+ EditorDebug.Log(i + " UV.x: " + uv.x);
+ // verschieben auf null / null
+
+ // skalier dann
+ // zurück verschieben
+
+ } else {*/
+
+ //EditorDebug.Log(i + " Before UV: " + uv.x + " " + uv.y);
+ uv.x += normPos.x;
+ uv.y += normPos.y;
+ uv.x *= newUvs.width;
+ uv.y *= newUvs.height;
+
+ //EditorDebug.Log(i + " UV: " + uv.x + " " + uv.y);
+
+
+
+ uvs[i] = uv;
+
+ }
+ meshFilter.mesh.uv = uvs;
+ }
+
+ private Vector2 toUVSpace(Vector2 xy){
+ if(Math.Abs(xy.x) < 1 && Math.Abs(xy.y) < 1)
+ return xy;
+
+ if(mainTexture == null)
+ initMainTexture();
+
+ var p = new Vector2(xy.x / ((float)mainTexture.width), xy.y / ((float)mainTexture.height));
+ return p;
+ }
+
+
+}
diff --git a/Assets/Scripts/GUI_Module/Behaviours/VerticalLayoutBehaviour.cs b/Assets/Scripts/GUI_Module/Behaviours/VerticalLayoutBehaviour.cs
new file mode 100755
index 0000000..dae0364
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Behaviours/VerticalLayoutBehaviour.cs
@@ -0,0 +1,15 @@
+using UnityEngine;
+using System.Collections;
+
+public class VerticalLayoutBehaviour : MonoBehaviour {
+
+ // Use this for initialization
+ void Start () {
+
+ }
+
+ // Update is called once per frame
+ void Update () {
+
+ }
+}
diff --git a/Assets/Scripts/GUI_Module/Configs/ScreenConfig.cs b/Assets/Scripts/GUI_Module/Configs/ScreenConfig.cs
new file mode 100755
index 0000000..3540e27
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Configs/ScreenConfig.cs
@@ -0,0 +1,32 @@
+using UnityEngine;
+using System.Collections;
+
+public class ScreenConfig : MonoBehaviour {
+
+ public int TargetScreenWidth = 960;
+ public int TargetScreenHeight = 640;
+ public double SwipeMinTime = 0.01;
+ public float SwipeMinDistance = 150;
+
+ public float ScreenAspect{
+ get;
+ private set;
+ }
+ public int[] FontSizes;
+ public Font[] Fonts;
+
+ public static ScreenConfig Instance{
+ get;
+ private set;
+ }
+
+ void Awake(){
+ Instance = this;
+ ScreenAspect = (float)TargetScreenWidth / (float)TargetScreenHeight;
+ }
+
+
+
+
+
+}
diff --git a/Assets/Scripts/GUI_Module/Elements/AlertTextPanel.cs b/Assets/Scripts/GUI_Module/Elements/AlertTextPanel.cs
new file mode 100755
index 0000000..3c8f3cc
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Elements/AlertTextPanel.cs
@@ -0,0 +1,85 @@
+using UnityEngine;
+using System.Collections;
+using System;
+public class AlertTextPanel : TextPanel {
+
+ public int ShowTimeInSeconds = 8;
+
+ public string help_alert = "ONLY IN EditorDebugMODUS:";
+ public bool ShowAlways;
+
+ protected bool textShow = false;
+ public Timer HidingTimer{
+ get{
+ return localTimer;
+ }
+ private set{
+ localTimer = value;
+ }
+
+ }
+
+ private Timer localTimer;
+
+ void Awake(){
+ AwakeOverride();
+ }
+
+ void Start(){
+ StartOverride();
+ }
+
+ protected override void AwakeOverride(){
+ base.AwakeOverride();
+ initTimer();
+
+
+ }
+
+ private void initTimer(){
+ if(HidingTimer == null)
+ HidingTimer = new Timer(ShowTimeInSeconds);
+ HidingTimer.TimerFinished += OnTimerFinished;
+ }
+
+
+ void Update(){
+ UpdateOverride();
+ }
+
+ protected override void UpdateOverride(){
+ base.UpdateOverride();
+ Visibility = textShow;
+#if UNITY_EDITOR
+ Visibility |= ShowAlways;
+#endif
+ }
+
+ void OnGUI(){
+ OnGUIOverride();
+ }
+
+ protected override void OnGUIOverride(){
+ if(textShow || ShowAlways){
+ base.OnGUIOverride();
+ }
+ }
+
+ public void ShowText(string value){
+ ShowText(value, ShowTimeInSeconds);
+ }
+
+ public void ShowText(string value, float time){
+ initTimer();
+ textShow = true;
+ Text = value;
+ HidingTimer.StartTimer(time);
+ }
+ public void HideText(){
+ textShow = false;
+ }
+
+ private void OnTimerFinished(object sender, EventArgs e){
+ textShow = false;
+ }
+}
diff --git a/Assets/Scripts/GUI_Module/Elements/Button.cs b/Assets/Scripts/GUI_Module/Elements/Button.cs
new file mode 100755
index 0000000..4ce48f7
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Elements/Button.cs
@@ -0,0 +1,60 @@
+using UnityEngine;
+using System.Collections;
+
+public class Button : Control {
+
+ public Rect hoverUV;
+ public Rect activeUV;
+
+ // Two Bools to emulate Hover and Active for better Texture placing
+ public bool ConstantHover;
+ public bool ConstantActive;
+
+ protected bool down = false;
+
+
+ public override void OnClick(object sender, MouseEventArgs e){
+ base.OnClick(sender,e);
+
+ }
+
+ public override void OnDown(object sender, MouseEventArgs e){
+
+ base.OnDown(sender,e);
+ down = true;
+ plane.UV = activeUV;
+
+
+ }
+
+ public override void OnUp(object sender, MouseEventArgs e){
+ if(down){
+ base.OnUp(sender,e);
+ down = false;
+ plane.UV = Uv;
+ }
+ }
+
+ public override void OnHover(object sender, MouseEventArgs e){
+ //EditorDebug.Log("HOVER: " + gameObject.name);
+ base.OnHover(sender,e);
+ if(!down)
+ plane.UV = hoverUV;
+ }
+
+ public override void resetElement(){
+ if(!down && plane != null){
+ plane.UV = Uv;
+#if UNITY_EDITOR
+ if(ConstantHover)
+ plane.UV = hoverUV;
+ if(ConstantActive)
+ plane.UV = activeUV;
+#endif
+ }
+ }
+
+
+
+
+}
diff --git a/Assets/Scripts/GUI_Module/Elements/CameraScreen.cs b/Assets/Scripts/GUI_Module/Elements/CameraScreen.cs
new file mode 100755
index 0000000..7bd73af
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Elements/CameraScreen.cs
@@ -0,0 +1,204 @@
+using UnityEngine;
+using System.Collections;
+using System.Collections.Generic;
+
+public class CameraScreen : Frame {
+
+ // If EditorDebugModus is checked, ScreenPosition is update every OnGUI call this is usefull for positioning elements
+ // but not good for the framerate
+ public bool DebugModus;
+ public int TextureSize = 512;
+ public Material GUIMaterial;
+
+ // Public Member - init in the inspector
+ public Camera ScreenCamera;
+
+
+ // Propertys
+ public static Vector2 mousePosition{
+ get{
+ return PhysicalToVirtualScreenPosition(Input.mousePosition);
+ }
+ }
+
+ private Panel[] allChildren{
+ get{
+ return (gameObject.GetComponentsInChildren() as Panel[]);
+ }
+ }
+
+ // DONT USE THIS
+ void Awake(){
+ AwakeOverride();
+ }
+
+ protected override void AwakeOverride(){
+ base.AwakeOverride();
+ }
+
+ void Start(){
+ StartOverride();
+ }
+
+ protected override void StartOverride(){
+ base.StartOverride();
+ CreateElement();
+
+ initEvents();
+ }
+
+ private void initEvents(){
+ InputEvents.Instance.ClickEvent += OnClick;
+ InputEvents.Instance.MoveEvent += OnMove;
+ InputEvents.Instance.MoveEvent += OnHover;
+ InputEvents.Instance.DownEvent += OnDown;
+ InputEvents.Instance.UpEvent += OnUp;
+ InputEvents.Instance.SwipeEvent += OnSwipe;
+ }
+
+
+#if UNITY_EDITOR
+ void Update(){
+ UpdateOverride();
+ }
+
+ protected override void UpdateOverride(){
+ base.UpdateOverride();
+
+ if(DebugModus)
+ UpdateElement();
+
+ }
+#endif
+
+ public override void UpdateElement(){
+ this.RealRegionOnScreen = GetPhysicalRegionFromRect(VirtualRegionOnScreen,KeepAspectRatio);
+ }
+ private static Vector2 getFactor(bool withAspect = true){
+ // Get the right Hight and Width proportional to screen
+ float rightAspectHeight = Screen.height;
+ float rightAspectWidth = Screen.width;
+ float aspectRatio = (float)(Screen.width) / Screen.height;
+ if(withAspect && aspectRatio < ScreenConfig.Instance.ScreenAspect){
+ rightAspectHeight = (float)(Screen.width) / ScreenConfig.Instance.ScreenAspect;
+ } else if(withAspect && aspectRatio > ScreenConfig.Instance.ScreenAspect){
+ rightAspectWidth = (float)(Screen.height) * ScreenConfig.Instance.ScreenAspect;
+ }
+
+ float factorY = rightAspectHeight / (float)(ScreenConfig.Instance.TargetScreenHeight);
+ float factorX = rightAspectWidth / (float)(ScreenConfig.Instance.TargetScreenWidth);
+ return new Vector2(factorX, factorY);
+ }
+
+
+ public Rect GetPhysicalRegionFromRect(Rect rect, bool withAspect = true){
+ Rect camPosition = ScreenCamera.pixelRect;
+ // Move Camera is needed for Splitscreen
+ if(((int)ScreenCamera.pixelHeight) != Screen.height){
+ //EditorDebug.Log("ScreenCamera Height: " + ScreenCamera.pixelHeight + "\n Screen Height: " + Screen.height);
+ camPosition.y = ScreenCamera.pixelHeight - camPosition.y;
+ }
+
+ Vector2 factor = getFactor(withAspect);
+ Vector2 newPosition = new Vector2((camPosition.x+rect.x)*factor.x, (camPosition.y + rect.y)*factor.y);
+ Vector2 newSize = new Vector2(rect.width*factor.x,rect.height*factor.y);
+
+ return new Rect ( newPosition.x, newPosition.y, newSize.x, newSize.y );
+ }
+
+
+
+
+
+
+ public static int GetPhysicalTextSize(int size) {
+ Vector2 factor = getFactor();
+ return (int)(size * factor.y);
+ }
+
+ protected override void callHandler(InteractionEvent interaction, ActionEvent action){
+ InteractionBehaviour[] behaviours = gameObject.GetComponents() as InteractionBehaviour[];
+ foreach(InteractionBehaviour ib in behaviours){
+ interaction(ib);
+ }
+ base.callHandler(interaction, action);
+ }
+
+ private void createElements(){
+ foreach(Panel box in allChildren){
+ box.createGUIElement();
+ }
+ }
+
+ // STATIC FUNCTIONS
+ public static bool cursorInside(Vector2 elementPosition, Vector2 elementSize) {
+ bool flagX = false;
+ bool flagY = false;
+
+ if (mousePosition.x >= elementPosition.x && (mousePosition.x <= (elementPosition.x + elementSize.x)))
+ flagX = true;
+ if (mousePosition.y >= elementPosition.y && (mousePosition.y <= (elementPosition.y + elementSize.y)))
+ flagY = true;
+ return (flagX && flagY);
+ }
+
+ public static bool CursorInsidePhysicalRegion(Vector2 elementPosition, Vector2 elementSize){
+ bool flagX = false;
+ bool flagY = false;
+
+ Vector2 mouse = new Vector2(Input.mousePosition.x, Screen.height - Input.mousePosition.y);
+ if (mouse.x >= elementPosition.x && (mouse.x <= (elementPosition.x + elementSize.x)))
+ flagX = true;
+ if (mouse.y >= elementPosition.y && (mouse.y <= (elementPosition.y + elementSize.y)))
+ flagY = true;
+ return (flagX && flagY);
+ }
+
+ public static bool CursorInsidePhysicalRegion(Rect physicalRegion){
+ return CursorInsidePhysicalRegion(new Vector2(physicalRegion.x, physicalRegion.y), new Vector2(physicalRegion.width, physicalRegion.height));
+ }
+
+
+ public static bool cursorInside(Rect region){
+ return cursorInside(new Vector2(region.x, region.y), new Vector2(region.width, region.height));
+ }
+
+ public static CameraScreen GetScreenForObject(GameObject obj){
+ GameObject savedObj = obj;
+ GameObject savedParent = null;
+ CameraScreen screen = null;
+ while(obj != null){
+ screen = obj.GetComponent();
+ if( screen != null){
+ break;
+ }
+
+ if(obj.transform.parent != null)
+ savedParent = obj.transform.parent.gameObject;
+ else
+ savedParent = null;
+ obj = savedParent;
+ }
+ if(screen == null){
+ EditorDebug.LogWarning("Element: " + savedObj.gameObject.name + " is not a child of a Screen!");
+ }
+ return screen;
+
+
+ }
+
+ public static Vector2 PhysicalToVirtualScreenPosition(Vector2 screenPosition){
+ //float factorY = (float)(Screen.height) / (float)(ScreenConfig.Instance.TargetScreenHeight);
+ var factor = getFactor();
+ //float factorX = (float)(Screen.width) / (float)(ScreenConfig.Instance.TargetScreenWidth);
+ //float factorY = factorX / ScreenConfig.Instance.ScreenAspect;
+ //screenPosition.y = Screen.height - screenPosition.y;
+ screenPosition.x /= factor.x;
+ screenPosition.y /= factor.y;
+ return screenPosition;
+ }
+
+
+
+
+}
diff --git a/Assets/Scripts/GUI_Module/Elements/CheckBox.cs b/Assets/Scripts/GUI_Module/Elements/CheckBox.cs
new file mode 100755
index 0000000..e5f6504
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Elements/CheckBox.cs
@@ -0,0 +1,59 @@
+using UnityEngine;
+using System.Collections;
+using System;
+
+public class CheckBox : Control {
+
+ public Rect ActiveUV;
+ public Rect HoverUV;
+
+ public event EventHandler CheckboxStatusChanged;
+
+ public bool Checked{
+ get{
+ return checkedFlag;
+ }
+
+ set{
+ checkedFlag = value;
+ if(!checkedFlag)
+ resetElement();
+ else{
+ if(plane != null)
+ plane.UV = ActiveUV;
+ }
+ }
+ }
+
+ private bool checkedFlag;
+
+ protected override void AwakeOverride (){
+ base.AwakeOverride ();
+ Checked = false;
+ }
+
+
+ public override void OnClick (object sender, MouseEventArgs e){
+ base.OnClick (sender, e);
+ Checked = !Checked;
+ InvokeCheckboxStatusChanged();
+ }
+
+
+ public override void resetElement (){
+ if(!checkedFlag)
+ base.resetElement ();
+
+
+ }
+
+ private void InvokeCheckboxStatusChanged(){
+ var handler = CheckboxStatusChanged;
+ if (handler == null) {
+ return;
+ }
+
+ var e = new CheckBoxEventArgs(this);
+ CheckboxStatusChanged(this, e);
+ }
+}
\ No newline at end of file
diff --git a/Assets/Scripts/GUI_Module/Elements/Control.cs b/Assets/Scripts/GUI_Module/Elements/Control.cs
new file mode 100755
index 0000000..4c7d090
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Elements/Control.cs
@@ -0,0 +1,73 @@
+using UnityEngine;
+using System.Collections;
+
+public class Control : Panel {
+
+ // Show Active Region is an EditorDebug Option that makes the active array visible
+ public bool ShowActiveRegion = false;
+ public Rect ActiveRegion;
+ protected Rect realActiveRegion;
+
+ void Awake(){
+ AwakeOverride();
+ }
+ protected override void AwakeOverride(){
+ base.AwakeOverride();
+
+ }
+
+ void Start () {
+
+ }
+
+ public override void createGUIElement(){
+ base.createGUIElement();
+ }
+
+ void OnGUI(){
+#if UNITY_EDITOR
+ if(ShowActiveRegion){
+ initActiveRegion();
+ UnityEngine.GUI.Box(realActiveRegion, "");
+ }
+#endif
+ }
+
+ public override void CreateElement (){
+ base.CreateElement ();
+ initActiveRegion();
+ }
+ public override bool checkMouseOverElement(){
+ if(ShowActiveRegion)
+ initActiveRegion();
+ if(!this.Visibility)
+ return false;
+
+ //Rect t = new Rect(VirtualRegionOnScreen.x+ ActiveRegion.x,
+ // VirtualRegionOnScreen.y + ActiveRegion.y, ActiveRegion.width, ActiveRegion.height);
+
+ return CameraScreen.CursorInsidePhysicalRegion(realActiveRegion);
+ }
+
+ public override void UpdateElement(){
+ base.UpdateElement();
+ initActiveRegion();
+
+ }
+ // Caclulate the Absolute Values on the physical screen - because ActiveRegion is virtual an relative to the Control Position
+
+ private void initActiveRegion(){
+ if(activeScreen == null){
+ EditorDebug.LogWarning("ActiveScreen is not set on Object: " + gameObject.name);
+ return;
+ }
+ var activeRegion = activeScreen.GetPhysicalRegionFromRect(ActiveRegion, KeepAspectRatio);
+ realActiveRegion = new Rect(RealRegionOnScreen.x + activeRegion.x , RealRegionOnScreen.y + activeRegion.y, activeRegion.width, activeRegion.height);
+ /*realActiveRegion = new Rect(VirtualRegionOnScreen.x+ ActiveRegion.x,
+ VirtualRegionOnScreen.y + ActiveRegion.y, ActiveRegion.width, ActiveRegion.height);
+ realActiveRegion = activeScreen.GetPhysicalRegionFromRect(realActiveRegion);
+ var position = activeScreen.GetFloatingPosition();
+ realActiveRegion = new Rect(position.x, position.y, RealRegionOnScreen.width, RealRegionOnScreen.height);*/
+ }
+
+}
diff --git a/Assets/Scripts/GUI_Module/Elements/DropDownMenu.cs b/Assets/Scripts/GUI_Module/Elements/DropDownMenu.cs
new file mode 100755
index 0000000..8340f60
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Elements/DropDownMenu.cs
@@ -0,0 +1,77 @@
+using UnityEngine;
+using System.Collections;
+
+public class DropDownMenu : Frame {
+
+ public RolloutPanel Content;
+ public Rect CurrentElementRegion;
+ public bool InitialOpen;
+ public Frame InitalSelectedObject;
+
+ public Frame Selected{
+ get{
+ return currentSelection;
+ }
+ set{
+ oldSelection = currentSelection;
+ currentSelection = value;
+ Select(currentSelection);
+ }
+ }
+ private Frame currentSelection;
+ private Frame oldSelection;
+
+ private void Select(Frame element){
+ int count = 0;
+ foreach(var frame in Content.DirectChildren){
+ if(frame == element)
+ break;
+ count++;
+ }
+ Select(count);
+ }
+
+ private void Select(int index){
+ if(oldSelection != null)
+ Destroy(oldSelection.gameObject);
+
+ var obj = Instantiate(Content.DirectChildren[index].gameObject) as GameObject;
+ currentSelection = obj.GetComponent() as Frame;
+ var DropDownBehaviour = currentSelection.gameObject.GetComponent() as DropDownElementBehaviour;
+ if(DropDownBehaviour != null)
+ Destroy(DropDownBehaviour);
+
+ currentSelection.activeScreen = this.activeScreen;
+ //currentSelection.UpdateActiveScreen();
+ currentSelection.Visibility = true;
+ currentSelection.gameObject.transform.parent = this.gameObject.transform;
+ currentSelection.VirtualRegionOnScreen = CurrentElementRegion;
+ currentSelection.CreateElement();
+ currentSelection.UpdateElement();
+ }
+
+ protected override void firstUpdate (){
+ base.firstUpdate ();
+ if(!InitialOpen){
+ Content.Hide(0);
+ }
+
+
+ if(InitalSelectedObject != null)
+ Select(InitalSelectedObject);
+ else{
+ EditorDebug.LogWarning("DropDownMenu: " + gameObject.name + " has no InitiaElement Set - take Element zero");
+ Select(0);
+ }
+
+
+ }
+
+ public void ToggleContentVisibility(){
+ if(Content.Visibility)
+ Content.Hide();
+ else
+ Content.Show();
+ }
+
+}
diff --git a/Assets/Scripts/GUI_Module/Elements/FPSPanel.cs b/Assets/Scripts/GUI_Module/Elements/FPSPanel.cs
new file mode 100755
index 0000000..372e1c0
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Elements/FPSPanel.cs
@@ -0,0 +1,57 @@
+// Attach this to a GUIText to make a frames/second indicator.
+//
+// It calculates frames/second over each updateInterval,
+// so the display does not keep changing wildly.
+//
+// It is also fairly accurate at very low FPS counts (<10).
+// We do this not by simply counting frames per interval, but
+// by accumulating FPS for each frame. This way we end up with
+// correct overall FPS even if the interval renders something like
+// 5.5 frames.
+
+using UnityEngine;
+using System.Collections;
+
+public class FPSPanel : TextPanel {
+
+
+ public float updateInterval = 0.5F;
+
+ private float accum = 0; // FPS accumulated over the interval
+ private int frames = 0; // Frames drawn over the interval
+ private float timeleft; // Left time for current interval
+
+ void Start(){
+ timeleft = updateInterval;
+ }
+
+ void Update()
+ {
+ timeleft -= Time.deltaTime;
+ accum += Time.timeScale/Time.deltaTime;
+ ++frames;
+
+ // Interval ended - update GUI text and start new interval
+ if( timeleft <= 0.0 )
+ {
+ // display two fractional digits (f2 format)
+ float fps = accum/frames;
+ string format = System.String.Format("{0:F2} FPS",fps);
+ //guiText.text = format;
+ Text = format;
+
+ /*if(fps < 30)
+ guiText.material.color = Color.yellow;
+ else
+ if(fps < 10)
+ guiText.material.color = Color.red;
+ else
+ guiText.material.color = Color.green;*/
+ // EditorDebugConsole.Log(format,level);
+ timeleft = updateInterval;
+ accum = 0.0F;
+ frames = 0;
+ }
+ }
+}
+
diff --git a/Assets/Scripts/GUI_Module/Elements/Frame.cs b/Assets/Scripts/GUI_Module/Elements/Frame.cs
new file mode 100755
index 0000000..d3afac1
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Elements/Frame.cs
@@ -0,0 +1,361 @@
+using UnityEngine;
+using System.Collections;
+using System.Collections.Generic;
+using System;
+
+public class Frame : MonoBehaviour
+{
+ public List DirectChildren{
+ get;
+ protected set;
+ }
+ protected delegate void InteractionEvent(InteractionBehaviour ib);
+ protected delegate void ActionEvent(Frame b);
+
+ public enum HorizontalFloatPositions {left, right,center, none}
+ public enum VerticalFloatPositions {top, bottom,center, none}
+ public enum ElementOrientation{horizontal, vertical}
+
+ public Rect VirtualRegionOnScreen;
+ protected Rect originalVirtualRegionOnScreen;
+
+ public VerticalFloatPositions verticalFloat = Panel.VerticalFloatPositions.none;
+ public HorizontalFloatPositions horizontalFloat = Panel.HorizontalFloatPositions.none;
+
+ public bool FullscreenElement = false;
+ public bool KeepAspectRatio = true;
+
+ protected bool created = false;
+ protected bool firstUpdateFlag = true;
+ protected bool currentVisibility = true;
+ protected bool savedVisibility;
+
+ protected bool inheritedVisibility = false;
+
+
+ public virtual bool Visibility{
+ get{
+ return currentVisibility;
+ }
+ set{
+ currentVisibility = value;
+ }
+ }
+
+ public CameraScreen activeScreen{
+ get;
+ set;
+ }
+
+ public Rect RealRegionOnScreen{
+ get;
+ set;
+ }
+
+ // PROPERTYS
+ public Vector2 Position{
+ get{
+ return new Vector2(VirtualRegionOnScreen.x, VirtualRegionOnScreen.y);
+ }
+ set{
+ VirtualRegionOnScreen.x = value.x;
+ VirtualRegionOnScreen.y = value.y;
+ }
+ }
+
+
+
+ public Vector2 Size{
+ get{
+ return new Vector2(VirtualRegionOnScreen.xMax, VirtualRegionOnScreen.yMin);
+ }
+ set{
+ VirtualRegionOnScreen.width = value.x;
+ VirtualRegionOnScreen.height = value.y;
+ }
+ }
+
+ protected Frame parent;
+
+ // DONT USE THIS!
+ void Awake() {
+ AwakeOverride();
+ }
+
+ // Use this for initialization
+ protected virtual void AwakeOverride() {
+
+ Visibility = true;
+ savedVisibility = true;
+ UpdateParent();
+ if(FullscreenElement){
+ VirtualRegionOnScreen.width = ScreenConfig.Instance.TargetScreenWidth;//Screen.width;
+ VirtualRegionOnScreen.height = ScreenConfig.Instance.TargetScreenHeight;//Screen.height;
+ }
+ UpdateActiveScreen();
+ originalVirtualRegionOnScreen = VirtualRegionOnScreen;
+
+ initDirectChildren();
+
+ }
+
+ public void UpdateActiveScreen(){
+ activeScreen = CameraScreen.GetScreenForObject(this.gameObject);
+ }
+ public void UpdateParent(){
+ if(gameObject.transform.parent == null)
+ parent = this;
+ else
+ parent = gameObject.transform.parent.GetComponent() as Frame;
+ }
+
+ void Start() {
+ StartOverride();
+ }
+
+ protected virtual void StartOverride(){
+ Visibility = true;
+ }
+
+ // Update is called once per frame
+ void Update() {
+ UpdateOverride();
+ }
+
+ protected virtual void UpdateOverride() {
+ if(firstUpdateFlag){
+ firstUpdateFlag = false;
+ firstUpdate();
+ }
+#if UNITY_EDITOR
+ if(activeScreen.DebugModus)
+ UpdateElement();
+#endif
+
+ }
+
+
+ protected virtual void firstUpdate(){
+ // nothing here
+ }
+
+
+ /**
+ * This Function is called by Parent to force the child to arrange them selves
+ **/
+ public virtual void LayoutElement() {
+
+
+ //do positioning etc. for this class here
+ }
+
+ public virtual void OnClick(object sender, MouseEventArgs e) {
+
+ callHandler(ib => { ib.Click(e); }, action => { action.OnClick(sender, e); });
+ }
+
+ public virtual void OnHover(object sender, MouseEventArgs e) {
+ callHandler(ib => { ib.Hover(e); }, action => { action.OnHover(sender, e); });
+ }
+
+ public virtual void OnDown(object sender, MouseEventArgs e) {
+ callHandler(ib => { ib.Down(e); }, action => { action.OnDown(sender, e); });
+ }
+
+ public virtual void OnUp(object sender, MouseEventArgs e) {
+ callHandler(ib => { ib.Up(e); }, action => { action.OnUp(sender, e); });
+ }
+
+ public virtual void OnMove(object sender, MouseEventArgs e) {
+ callHandler(ib => { ib.Move(e); }, action => { action.OnMove(sender, e); });
+ }
+
+ public virtual void OnSwipe(object sender, MouseEventArgs e) {
+ callHandler(ib => { ib.Swipe(e); }, action => { action.OnSwipe(sender, e); });
+ }
+
+ protected virtual void callHandler(InteractionEvent interaction, ActionEvent action) {
+ foreach (Frame b in DirectChildren) {
+ if(b == null)
+ continue;
+ if (b.checkMouseOverElement()) {
+ if (action != null) {
+ action(b);
+ }
+ var behaviours = b.GetComponents() as InteractionBehaviour[];
+ if (behaviours != null) {
+ foreach (var ib in behaviours) {
+ interaction(ib);
+ }
+ }
+ } else {
+ b.resetElement();
+ }
+ }
+ }
+
+ public virtual bool checkMouseOverElement(){
+ return true;
+ }
+
+ public void UpdateDirectChildren() {
+ initDirectChildren();
+ }
+
+ public virtual void UpdateElement(){
+
+ //base.UpdateElement();
+
+ //EditorDebug.LogWarning("Update Element: " + gameObject.name);
+ UpdateDirectChildren();
+ UpdateParent();
+ //activeScreen = CameraScreen.GetScreenForObject(this.gameObject);
+
+ // Get RealRegion
+ if(activeScreen != null)
+ this.RealRegionOnScreen = activeScreen.GetPhysicalRegionFromRect(this.VirtualRegionOnScreen, KeepAspectRatio);
+
+
+
+
+ //Check for Flaoting
+ //this.RealRegionOnScreen = this.RealRegionOnScreen.AddPosition(GetFloatingPosition());
+ var position = GetFloatingPosition();
+ this.RealRegionOnScreen = new Rect(position.x, position.y, RealRegionOnScreen.width, RealRegionOnScreen.height);
+
+
+ // Move Parent Offset
+
+ position = new Vector2(parent.RealRegionOnScreen.x + this.RealRegionOnScreen.x, parent.RealRegionOnScreen.y + this.RealRegionOnScreen.y);
+ this.RealRegionOnScreen = new Rect(position.x, position.y, RealRegionOnScreen.width, RealRegionOnScreen.height);
+
+
+ UpdateRegionOnScreen();
+
+
+
+ updateVisibiltyAfterParent();
+
+ foreach (var frame in DirectChildren){
+ frame.UpdateElement();
+ }
+
+ /*UpdateDirectChildren();
+ foreach (Panel panel in directChildren){
+ panel.UpdateElement();
+ }*/
+ }
+
+ protected void updateVisibiltyAfterParent(){
+ if(!parent.Visibility){
+ savedVisibility = this.Visibility;
+ this.Visibility = false;
+ inheritedVisibility = true;
+ EditorDebug.Log("Save VIs: " + savedVisibility + " " + gameObject.name);
+ }
+ if(parent.Visibility && inheritedVisibility){
+ EditorDebug.Log("Load VIs: " + savedVisibility + " " + gameObject.name);
+ this.Visibility = savedVisibility;
+
+ }
+
+ }
+ public void removeFloat(){
+ var realPosition = new Vector2(this.RealRegionOnScreen.x, this.RealRegionOnScreen.y);
+ this.Position = CameraScreen.PhysicalToVirtualScreenPosition(realPosition);
+ this.horizontalFloat = Frame.HorizontalFloatPositions.none;
+ this.verticalFloat = Frame.VerticalFloatPositions.none;
+
+ }
+
+ public virtual void UpdateRegionOnScreen(){
+
+ }
+
+ public Vector2 GetFloatingPosition(){
+ var ret = new Vector2(0,0);
+ ret.y = getVerticalFloatPosition();
+ ret.x = getHorizontalFloatPosition();
+
+ return ret;
+ }
+
+
+
+ private float getVerticalFloatPosition(){
+ float ret = RealRegionOnScreen.y ;
+ switch(verticalFloat){
+ case VerticalFloatPositions.none:
+ break;
+ case VerticalFloatPositions.top:
+ ret = 0.0f;
+ break;
+ case VerticalFloatPositions.bottom:
+ ret = (parent.RealRegionOnScreen.height - this.RealRegionOnScreen.height);
+ break;
+ case VerticalFloatPositions.center:
+ ret = (parent.RealRegionOnScreen.height/2 - this.RealRegionOnScreen.height/2);
+ break;
+ default:
+ EditorDebug.LogError("Unknown VerticalPosition: " + verticalFloat);
+ break;
+ }
+ return ret;
+ }
+
+ private float getHorizontalFloatPosition(){
+ float ret = RealRegionOnScreen.x;
+ switch(horizontalFloat){
+ case HorizontalFloatPositions.none:
+ break;
+ case HorizontalFloatPositions.left:
+ ret = 0.0f;
+ break;
+ case HorizontalFloatPositions.right:
+ ret = (parent.RealRegionOnScreen.width - this.RealRegionOnScreen.width);
+ break;
+ case HorizontalFloatPositions.center:
+ ret = (parent.RealRegionOnScreen.width/2 - this.RealRegionOnScreen.width/2);
+ break;
+ default:
+ EditorDebug.LogError("Unknown HorizontalPosition: " + horizontalFloat);
+ break;
+
+ }
+ return ret;
+ }
+ public virtual void CreateElement(){
+ if(created){
+ EditorDebug.Log("Element: "+ gameObject.name + "already created");
+ return;
+ }
+
+ if(activeScreen == null)
+ activeScreen = CameraScreen.GetScreenForObject(this.gameObject);
+ RealRegionOnScreen = new Rect(0,0,0,0);
+ UpdateDirectChildren();
+ UpdateElement();
+ foreach (var frame in DirectChildren){
+ frame.CreateElement();
+ }
+ created = true;
+
+
+
+ }
+
+ public virtual void resetElement(){
+
+ }
+
+ private void initDirectChildren() {
+ DirectChildren = new List();
+ foreach (Transform child in transform) {
+ var b = child.GetComponent();
+ if (b != null){
+ DirectChildren.Add(b);
+ }
+
+ }
+ }
+}
diff --git a/Assets/Scripts/GUI_Module/Elements/GUIGameObject.cs b/Assets/Scripts/GUI_Module/Elements/GUIGameObject.cs
new file mode 100755
index 0000000..30039cc
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Elements/GUIGameObject.cs
@@ -0,0 +1,94 @@
+using UnityEngine;
+using System.Collections;
+
+public class GUIGameObject : MonoBehaviour {
+
+ public Material GUIMaterial{
+ get{
+ return renderer.sharedMaterial;
+ }
+ set{
+ renderer.sharedMaterial = value;
+ }
+ }
+
+ protected float textureFactor = 1.0f;
+
+ protected CameraScreen activeScreen;
+
+
+ public Mesh MeshObject{
+ get{
+ return GetComponent().mesh;
+ }
+ }
+
+ // Use this for initialization
+ void Start () {
+ StartOverride();
+ }
+ // Update is called once per frame
+ void Update () {
+ UpdateOverride();
+ }
+ void Awake(){
+ AwakeOverride();
+ }
+
+
+ protected virtual void StartOverride(){
+
+ }
+
+ protected virtual void UpdateOverride(){
+
+ }
+
+ protected virtual void AwakeOverride(){
+
+ }
+
+
+ public Vector3 ScreenToWorldCoordinates(Vector2 screenCoordinate){
+
+ Camera cam = transform.parent.GetComponent();
+ if(cam == null){
+ EditorDebug.LogError("No camera found on Object: " + gameObject.name);
+ throw new MissingComponentException("No camera found on Object: " + gameObject.name);
+ }
+
+ Ray r = cam.ScreenPointToRay(screenCoordinate);
+ EditorDebug.DrawRay(r.origin, r.direction);
+ // Switch x because Plane is looking at camera - so coordinate system is opposite, switching y because Camera has inverted space
+ // in y in comparison to World
+ //EditorDebug.Log("Origin: " + r.origin);
+ //var ret = new Vector3(r.origin.x, r.origin.y*-1, 0);
+ var ret = r.origin;
+ return ret;
+
+ }
+
+ public Vector3 WorldToLocalCoordinates(Vector3 worldCoordinates){
+ return gameObject.transform.InverseTransformPoint(worldCoordinates);
+ }
+
+ protected Vector2 toUVSpace(Vector2 xy){
+ if(xy.x < 1 && xy.y < 1)
+ return xy;
+
+ if(GUIMaterial == null)
+ EditorDebug.LogWarning("Material : " + GUIMaterial + " on Object: " + gameObject.name);
+
+ Texture t = GUIMaterial.GetTexture("_MainTex");
+ var p = new Vector2(xy.x / ((float)t.width), xy.y / ((float)t.height));
+ return p;
+ }
+
+ protected void updateTextureFactor(){
+ if(GUIMaterial != null && activeScreen != null){
+ Texture t = GUIMaterial.GetTexture("_MainTex");
+ textureFactor = (float)(t.width) / activeScreen.TextureSize;
+ }
+
+ }
+}
diff --git a/Assets/Scripts/GUI_Module/Elements/GUIPlane.cs b/Assets/Scripts/GUI_Module/Elements/GUIPlane.cs
new file mode 100755
index 0000000..8fc40cd
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Elements/GUIPlane.cs
@@ -0,0 +1,104 @@
+using UnityEngine;
+using System.Collections;
+using System.Collections.Generic;
+
+public class GUIPlane : GUIGameObject {
+
+
+
+ public Vector2 RotationCenter {
+ get;
+ set;
+ }
+
+ public float RotationAngle {
+ get;
+ set;
+ }
+
+ // Use this for initialization
+ void Start () {
+ StartOverride();
+ }
+ // Update is called once per frame
+ void Update () {
+ UpdateOverride();
+ }
+ void Awake(){
+ AwakeOverride();
+ }
+
+
+ protected override void StartOverride(){
+ base.StartOverride();
+ activeScreen = CameraScreen.GetScreenForObject(this.gameObject);
+ if(activeScreen == null)
+ EditorDebug.LogWarning("No activeScreen found on GUIPlane: " + gameObject.name);
+ updateTextureFactor();
+ }
+
+ protected override void UpdateOverride(){
+ base.UpdateOverride();
+ }
+
+ protected override void AwakeOverride(){
+ base.AwakeOverride();
+ }
+
+ private Vector2 RotateVertex(Vector2 vertex, Vector2 center, float degrees){
+ var centeredScreen = vertex - center;
+ return centeredScreen.Rotate(degrees) + center;
+ }
+
+ public Rect VirtualRegionOnScreen{
+ set{
+ var vertices = MeshObject.vertices;
+
+ Rect tmp = value;
+ vertices[3] = new Vector2(tmp.x, tmp.y);
+ vertices[0] = new Vector2(tmp.x+tmp.width, tmp.y);
+ vertices[2] = new Vector2(tmp.x, tmp.y+tmp.height);
+ vertices[1] = new Vector2(tmp.x+tmp.width, tmp.y+tmp.height);
+
+ var centerX = tmp.x + tmp.width * RotationCenter.x;
+ var centerY = tmp.y + tmp.height * RotationCenter.y;
+ var center = new Vector2(centerX, centerY);
+
+ for(int i = 0; i < vertices.Length; i++){
+ vertices[i] = RotateVertex(vertices[i], center, RotationAngle);
+ vertices[i] = ScreenToWorldCoordinates(vertices[i]);
+ //EditorDebug.Log("PRE Position: " + i + " " + vertices[i]);
+ vertices[i] = WorldToLocalCoordinates(vertices[i]);
+ vertices[i] = new Vector3(vertices[i].x, vertices[i].y*-1,0);
+ }
+ MeshObject.vertices = vertices;
+
+ }
+
+ }
+
+
+ //public Rect VirtualPosition
+ public Rect UV{
+ set{
+ //updateTextureFactor();
+ Vector2[] uvs = new Vector2[4];
+ uvs[2] = new Vector2(value.x, value.y);
+ uvs[1] = new Vector2(value.x+value.width, value.y);
+ uvs[3] = new Vector2(value.x, value.y+value.height);
+ uvs[0] = new Vector2(value.x+value.width, value.y+value.height);
+
+ for(int i = 0; i < uvs.Length; i++){
+ uvs[i] = toUVSpace(uvs[i]*textureFactor);
+ }
+
+ MeshObject.uv = uvs;
+ }
+
+ }
+
+
+
+
+
+}
diff --git a/Assets/Scripts/GUI_Module/Elements/GUITextPlane.cs b/Assets/Scripts/GUI_Module/Elements/GUITextPlane.cs
new file mode 100755
index 0000000..a26b292
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Elements/GUITextPlane.cs
@@ -0,0 +1,98 @@
+using UnityEngine;
+using System.Collections;
+
+public class GUITextPlane : GUIGameObject {
+
+ private TextMesh textComponent;
+
+ #region PROPERTYS
+ public Rect VirtualRegionOnScreen{
+ set{
+
+ var tmpValue = value;
+
+ tmpValue.y = Screen.height - tmpValue.y;
+
+ var worldPosition = ScreenToWorldCoordinates(new Vector2(tmpValue.x, tmpValue.y));
+ textComponent.transform.position = new Vector3(worldPosition.x, worldPosition.y, textComponent.transform.position.z);
+
+
+ }
+
+ }
+
+ public string TextValue{
+ get{
+ return textComponent.text;
+ }
+ set{
+ textComponent.text = value;
+ }
+ }
+
+ public int FontSize{
+ get{
+ return textComponent.fontSize;
+ }
+ set{
+ textComponent.fontSize = value;
+ }
+ }
+
+ public FontStyle Style{
+ get{
+ return textComponent.fontStyle;
+ }
+ set{
+ textComponent.fontStyle = value;
+ }
+ }
+
+ public Font FontValue{
+ get{
+ return textComponent.font;
+ } set{
+ textComponent.font = value;
+ }
+ }
+
+ public Color TextColor{
+ get{
+ return GUIMaterial.color;
+ }
+ set{
+ GUIMaterial.color = value;
+ }
+ }
+ #endregion
+
+ #region Start,Awake,Update
+ // Use this for initialization
+ void Start () {
+ StartOverride();
+ }
+ // Update is called once per frame
+ void Update () {
+ UpdateOverride();
+ }
+ void Awake(){
+ AwakeOverride();
+ }
+
+
+ protected override void StartOverride(){
+ base.StartOverride();
+ }
+
+ protected override void UpdateOverride(){
+ base.UpdateOverride();
+ }
+
+ protected override void AwakeOverride(){
+ base.AwakeOverride();
+ textComponent = GetComponent() as TextMesh;
+ }
+ #endregion
+
+
+}
diff --git a/Assets/Scripts/GUI_Module/Elements/HVPanel.cs b/Assets/Scripts/GUI_Module/Elements/HVPanel.cs
new file mode 100755
index 0000000..dba0930
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Elements/HVPanel.cs
@@ -0,0 +1,33 @@
+using UnityEngine;
+using System.Collections;
+using System.Collections.Generic;
+
+public class HVPanel : Panel {
+
+ public Frame.ElementOrientation Orientation;
+
+ public Vector2 ElementOffset;
+ public float ElementSpacing;
+
+ protected override void AwakeOverride (){
+ base.AwakeOverride();
+ }
+
+
+ public override void UpdateElement(){
+ UpdateDirectChildren();
+ Vector2 position = ElementOffset;
+ foreach (var child in DirectChildren){
+ var childRegion = child.VirtualRegionOnScreen;
+ child.Position = position;
+ if(Orientation == ElementOrientation.horizontal){
+ position.x += childRegion.width + ElementSpacing;
+ } else {
+ position.y += childRegion.height + ElementSpacing;
+ }
+ }
+ base.UpdateElement();
+
+ }
+
+}
diff --git a/Assets/Scripts/GUI_Module/Elements/NumberScrollField.cs b/Assets/Scripts/GUI_Module/Elements/NumberScrollField.cs
new file mode 100755
index 0000000..3e187a0
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Elements/NumberScrollField.cs
@@ -0,0 +1,126 @@
+using UnityEngine;
+using System.Collections;
+
+public class NumberScrollField : Control {
+
+
+ public TextPanel NumbersText;
+ public int Digits = 0;
+ public float ScrollSpeed = 1;
+ public bool DisableUnlockedScrolling = false;
+
+ public float DefaultValue;
+ public float MinValue;
+ public float MaxValue;
+ public Slider.ElementOrientation Orientation;
+ private bool down = false;
+
+ public float Value{
+ get{
+ return currentValue;
+ }
+ set{
+ if(value > MaxValue){
+ EditorDebug.LogWarning("Value: " + value + " out of Range on Element: " + gameObject.name + " value is set to Max");
+ currentValue = MaxValue;
+ } else if(value < MinValue){
+ EditorDebug.LogWarning("Value: " + value + " out of Range on Element: " + gameObject.name + " value is set to Min");
+ value = MaxValue;
+ } else
+ currentValue = value;
+
+ UpdateElement();
+ }
+ }
+
+ public float TargetValue{
+ get;
+ set;
+ }
+
+ public float ChangeTime{
+ get;
+ set;
+ }
+
+ private float currentValue;
+ private Timer timer;
+
+ void Awake(){AwakeOverride();}
+
+ protected override void AwakeOverride (){
+ base.AwakeOverride ();
+ init();
+
+ }
+
+ private void init(){
+ if(NumbersText == null)
+ EditorDebug.LogError("TextPanel for Numbers is not set on Element " + gameObject.name);
+ TargetValue = DefaultValue;
+ Value = DefaultValue;
+ timer = new Timer();
+ }
+
+ public override void UpdateElement(){
+ base.UpdateElement ();
+ updateText();
+ }
+
+ private void updateText(){
+
+ if(NumbersText != null){
+ NumbersText.Text = ((int)currentValue).ToString("D"+Digits.ToString());
+ NumbersText.UpdateElement();
+ }
+
+ }
+
+
+
+ public override void OnUp (object sender, MouseEventArgs e){
+ base.OnUp (sender, e);
+ down = false;
+ }
+ public override void OnMove (object sender, MouseEventArgs e){
+ base.OnMove (sender, e);
+ if(down){
+ var scrollLength = new Vector2(0,0);
+ float changeValue = 0;
+ if(Orientation == ElementOrientation.horizontal){
+ scrollLength.x = e.MoveDirection.x;
+ changeValue = scrollLength.magnitude;
+ if(e.MoveDirection.x < 0)
+ changeValue *= -1;
+
+ } else {
+ scrollLength.y = e.MoveDirection.y;
+ changeValue = scrollLength.magnitude;
+ if(e.MoveDirection.y > 0)
+ changeValue *= -1;
+ }
+ Value += changeValue * ScrollSpeed;
+
+ }
+
+ }
+
+ public override void OnSwipe (object sender, MouseEventArgs e){
+ base.OnSwipe (sender, e);
+ if(!DisableUnlockedScrolling){
+ // TODO: Do some unlocked Scrolling (like unlocked Mousewheel)
+ }
+
+ }
+
+ public override void OnDown (object sender, MouseEventArgs e){
+ base.OnDown (sender, e);
+ down = true;
+ // TODO: Stop scrolling Numbers && stop changing over Time
+ }
+
+ public override bool checkMouseOverElement (){
+ return ( base.checkMouseOverElement () || down ) ;
+ }
+
+}
diff --git a/Assets/Scripts/GUI_Module/Elements/Panel.cs b/Assets/Scripts/GUI_Module/Elements/Panel.cs
new file mode 100755
index 0000000..aac82f7
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Elements/Panel.cs
@@ -0,0 +1,196 @@
+using UnityEngine;
+using System;
+using System.Collections;
+using asdf.Resources;
+
+public class Panel : Frame {
+
+
+ public LayoutBehaviour Layout;
+ public string help1 = "NOT WORKING LIVE:";
+ public int GUIDepth = 5;
+
+ //public bool FullscreenElement = false;
+
+ public override bool Visibility{
+ get{
+ bool flag = currentVisibility;
+ if(plane != null){
+ flag = plane.renderer.enabled;
+ currentVisibility = flag;
+ }
+
+ return flag;
+ }
+ set{
+
+ if(plane != null){
+ plane.renderer.enabled = value;
+ EditorDebug.Log("Change vis for: " + gameObject.name + " to " + value);
+ }
+
+ }
+ }
+
+
+
+ public Rect Uv;
+
+ private GUIStyle inactiveStyle;
+
+ protected GUIPlane plane;
+
+
+ protected GUIStyle currentStyle;
+
+
+
+
+
+
+
+
+ // DONT USE THIS
+ void Awake(){
+ AwakeOverride();
+ }
+
+ void OnDestroy(){
+ OnDestroyOverride();
+ }
+
+ protected virtual void OnDestroyOverride(){
+
+ if(plane != null){
+ GameObject.Destroy(plane.gameObject);
+ }
+ }
+
+ // Use this for initialization
+ protected override void AwakeOverride(){
+ base.AwakeOverride();
+ this.Visibility = true;
+ }
+
+
+ void Start () {
+ StartOverride();
+
+ }
+
+ protected override void StartOverride(){
+ base.StartOverride();
+ UpdateRegionOnScreen();
+ }
+
+ void OnGUI(){
+ OnGUIOverride();
+ }
+
+ protected virtual void OnGUIOverride(){
+
+ }
+
+ // Update is called once per frame
+#if UNITY_EDITOR
+ void Update () {
+ UpdateOverride();
+ }
+
+ protected override void UpdateOverride(){
+ base.UpdateOverride();
+ if(created && activeScreen.DebugModus ){
+ UpdateElement();
+ }
+ }
+#endif
+
+
+ public override void CreateElement(){
+ base.CreateElement();
+
+
+
+ this.createGUIElement();
+ created = true;
+ UpdateElement();
+ }
+
+
+
+ public override void UpdateRegionOnScreen(){
+ base.UpdateRegionOnScreen();
+ if(plane != null)
+ plane.VirtualRegionOnScreen = RealRegionOnScreen;
+
+ //resetElement();
+ }
+
+ public virtual void createGUIElement(){
+
+ CreateGUIPlane();
+
+ Camera cam = activeScreen.ScreenCamera;
+ plane.name = gameObject.name + "_guiPlane";
+ plane.transform.parent = cam.transform;
+
+ // Orient Plane to Camera
+ resetPlaneTransform();
+ float layer = (float)GUIDepth * 0.0001f;
+ plane.transform.Translate(new Vector3(0,0,(activeScreen.ScreenCamera.nearClipPlane+layer)), Space.Self);
+ plane.transform.LookAt(cam.transform);
+
+ // set Materials
+ plane.GUIMaterial = activeScreen.GUIMaterial;
+ plane.UV = Uv;
+ plane.VirtualRegionOnScreen = RealRegionOnScreen;
+
+
+ }
+
+ public void SetRotationTransformations(Vector2 localCenter, float degrees){
+ plane.RotationAngle = degrees;
+ plane.RotationCenter = localCenter;
+ }
+
+ private Vector3 WorldToLocalCoordinates(Vector3 worldCoordinates){
+ return gameObject.transform.InverseTransformPoint(worldCoordinates);
+ }
+
+ private void CreateGUIPlane(){
+ GameObject go = ResourceManager.CreateInstance("guiPlane");
+ if(go == null){
+ EditorDebug.LogError("No GameObject found for Plane on Object "+ this.gameObject.name + "! Stop!");
+ return;
+ }
+
+ plane = go.GetComponent();
+ if(plane == null){
+ EditorDebug.LogError("No GUIPlane found on Object "+ this.gameObject.name + "! Stop!");
+ return;
+ }
+
+
+ }
+
+ public override bool checkMouseOverElement(){
+ return CameraScreen.CursorInsidePhysicalRegion(RealRegionOnScreen);
+ }
+
+
+
+ public override void resetElement(){
+ if(plane != null)
+ plane.UV = Uv;
+
+ }
+
+ private void resetPlaneTransform(){
+ plane.transform.rotation = Quaternion.identity;
+ plane.transform.localRotation = Quaternion.identity;
+ plane.transform.localPosition = Vector3.zero;
+ plane.transform.localScale = Vector3.one;
+ }
+
+
+}
diff --git a/Assets/Scripts/GUI_Module/Elements/RadioCollection.cs b/Assets/Scripts/GUI_Module/Elements/RadioCollection.cs
new file mode 100755
index 0000000..fc146c7
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Elements/RadioCollection.cs
@@ -0,0 +1,63 @@
+using UnityEngine;
+using System.Collections;
+using System.Collections.Generic;
+using System;
+
+public class RadioCollection : Frame {
+
+ public CheckBox DefaultCheckbox;
+
+ private List radioButtons;
+
+ protected override void AwakeOverride (){
+ base.AwakeOverride ();
+ radioButtons = new List();
+ updateRadioButtons();
+ }
+
+ protected override void StartOverride (){
+ base.StartOverride ();
+ enableDefaultCheckbox();
+ }
+
+ private void enableDefaultCheckbox(){
+ if(DefaultCheckbox != null)
+ DefaultCheckbox.Checked = true;
+ else
+ EditorDebug.LogError("No DefaultCheckbox found on Element: " + gameObject.name);
+ }
+
+ protected override void firstUpdate (){
+ base.firstUpdate ();
+ enableDefaultCheckbox();
+ }
+
+ private void updateRadioButtons(){
+ var checkBoxChildren = gameObject.GetComponentsInChildren() as CheckBox[];
+ foreach(CheckBox cb in radioButtons){
+ cb.CheckboxStatusChanged -= OnCheckboxStatusChanged;
+ }
+ radioButtons.Clear();
+ foreach(CheckBox cb in checkBoxChildren){
+ radioButtons.Add(cb);
+ cb.CheckboxStatusChanged += OnCheckboxStatusChanged;
+ }
+ EditorDebug.Log("CheckBoxes found: " + radioButtons);
+ if(DefaultCheckbox == null && radioButtons.Count > 0)
+ DefaultCheckbox = radioButtons[0];
+ }
+
+ private void OnCheckboxStatusChanged(object sender, CheckBoxEventArgs e){
+ bool flag = e.Checkbox.Checked;
+ foreach(CheckBox cb in radioButtons){
+ if(cb.Checked)
+ cb.Checked = false;
+ }
+ if(!flag)
+ enableDefaultCheckbox();
+ else
+ e.Checkbox.Checked = true;
+ }
+
+
+}
diff --git a/Assets/Scripts/GUI_Module/Elements/RolloutPanel.cs b/Assets/Scripts/GUI_Module/Elements/RolloutPanel.cs
new file mode 100755
index 0000000..529d92a
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Elements/RolloutPanel.cs
@@ -0,0 +1,31 @@
+using UnityEngine;
+using System.Collections;
+
+public class RolloutPanel : HVPanel {
+
+
+ public float RolloutTime = 1.0f;
+
+ public void Show(){
+ Show(RolloutTime);
+ }
+
+ public void Hide(){
+ Hide(RolloutTime);
+ }
+
+ public void Show(float timeInSeconds){
+ // TODO: implement rollout
+ EditorDebug.LogWarning("RolloutElement Show is only a dummy!");
+ this.Visibility = true;
+ UpdateElement();
+ }
+
+ public void Hide(float timeInSeconds){
+ //TODO: implement roll in
+ EditorDebug.LogWarning("RolloutElement Hide is only a dummy!");
+ this.Visibility = false;
+ UpdateElement();
+
+ }
+}
diff --git a/Assets/Scripts/GUI_Module/Elements/Slider.cs b/Assets/Scripts/GUI_Module/Elements/Slider.cs
new file mode 100755
index 0000000..7bb722b
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Elements/Slider.cs
@@ -0,0 +1,108 @@
+using UnityEngine;
+using System.Collections;
+using System;
+
+public class Slider : Control {
+
+
+ public float SliderValue{
+ get{
+ return currentSliderValue;
+ }
+ set{
+ if(value > MaxValue){
+ EditorDebug.LogWarning("Slidervalue: " + value + " is out of Range on Object: " + gameObject.name + " value is set to max");
+ currentSliderValue = MaxValue;
+ } else if(value < MinValue){
+ EditorDebug.LogWarning("Slidervalue: " + value + " is out of Range on Object: " + gameObject.name + " value is set to min");
+ currentSliderValue = MinValue;
+ }else
+ currentSliderValue = value;
+
+ UpdateElement();
+ }
+ }
+
+ public SliderHandle SliderHandle;
+ public ElementOrientation Orientation = ElementOrientation.horizontal;
+
+ public float DefaultValue;
+ public float MinValue;
+ public float MaxValue;
+
+
+ public float SliderMinPosition;
+ public float SliderMaxPosition;
+
+ public float sliderLength{get;private set;}
+ public float sliderValueRange{get;private set;}
+ public float currentSliderPosition{get;private set;}
+ private float currentSliderValue;
+
+
+ protected override void AwakeOverride (){
+ base.AwakeOverride ();
+ initSliderValues();
+ }
+
+ private void initSliderValues(){
+ sliderLength = Math.Abs(SliderMaxPosition - SliderMinPosition);
+ sliderValueRange = Math.Abs(MaxValue - MinValue);
+ SliderValue = DefaultValue;
+ if(DefaultValue < MinValue)
+ EditorDebug.LogWarning("Slider Default Value is smaller than min value on Object: "+gameObject.name+"- set to min Value!");
+ if(DefaultValue > MaxValue)
+ EditorDebug.LogWarning("Slider Default Value is bigger than max value on Object: "+gameObject.name+" - set to min Value!");
+ if(SliderHandle == null)
+ EditorDebug.LogError("Slider Handle not set on: " + gameObject.name);
+ else{
+ SliderHandle.removeFloat();
+ SliderHandle.SliderElement = this;
+ }
+
+ }
+
+ void Start(){
+ StartOverride();
+ }
+
+ void Awake(){
+ AwakeOverride();
+ }
+
+ protected override void StartOverride (){
+ base.StartOverride ();
+ SliderValue = DefaultValue;
+ }
+
+
+ /*public override void OnMove (object sender, MouseEventArgs e){
+ base.OnMove (sender, e);
+ SliderHandle.OnMove(sender, e);
+ }*/
+
+ /*public override void OnDown (object sender, MouseEventArgs e){
+ base.OnDown (sender, e);
+ SliderHandle.OnDown(sender, e);
+ }
+
+ public override void OnUp (object sender, MouseEventArgs e){
+ base.OnDown (sender, e);
+ SliderHandle.OnUp(sender, e);
+ }*/
+
+ public override void UpdateElement (){
+ updateSliderPosition();
+ base.UpdateElement ();
+ }
+
+ private void updateSliderPosition(){
+ var offset = (currentSliderValue*sliderLength) / sliderValueRange;
+ currentSliderPosition = SliderMinPosition + offset;
+ if(Orientation == ElementOrientation.horizontal)
+ SliderHandle.VirtualRegionOnScreen.x = currentSliderPosition - SliderHandle.VirtualRegionOnScreen.width/2;
+ else
+ SliderHandle.VirtualRegionOnScreen.y = currentSliderPosition - SliderHandle.VirtualRegionOnScreen.height/2;
+ SliderHandle.UpdateElement();
+ }
+}
diff --git a/Assets/Scripts/GUI_Module/Elements/SliderHandle.cs b/Assets/Scripts/GUI_Module/Elements/SliderHandle.cs
new file mode 100755
index 0000000..49fde00
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Elements/SliderHandle.cs
@@ -0,0 +1,40 @@
+using UnityEngine;
+using System.Collections;
+
+public class SliderHandle : Button {
+
+ public Slider SliderElement{
+ private get;
+ set;
+ }
+
+ public override void OnMove (object sender, MouseEventArgs mouse){
+ base.OnMove (sender, mouse);
+ if(down){
+ float mouseOffsetToElement = getMouseOffsetToElement();
+ SliderElement.SliderValue = (mouseOffsetToElement*SliderElement.sliderValueRange) / SliderElement.sliderLength;
+
+ }
+ }
+
+ private float getMouseOffsetToElement(){
+ Vector2 realMouseOffset = new Vector2(0,0);
+ realMouseOffset.x = Input.mousePosition.x - SliderElement.RealRegionOnScreen.x;
+ realMouseOffset.y = Input.mousePosition.y - SliderElement.RealRegionOnScreen.y;
+
+ float mouseOffsetToElement;
+ if(SliderElement.Orientation == ElementOrientation.horizontal){
+ mouseOffsetToElement = CameraScreen.PhysicalToVirtualScreenPosition(realMouseOffset).x;
+ }
+ else{
+ mouseOffsetToElement = CameraScreen.PhysicalToVirtualScreenPosition(realMouseOffset).y;
+ }
+
+ mouseOffsetToElement -= SliderElement.SliderMinPosition;
+ return mouseOffsetToElement;
+ }
+
+ public override bool checkMouseOverElement (){
+ return ( base.checkMouseOverElement () || down ) ;
+ }
+}
diff --git a/Assets/Scripts/GUI_Module/Elements/Text.cs b/Assets/Scripts/GUI_Module/Elements/Text.cs
new file mode 100755
index 0000000..b1b29af
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Elements/Text.cs
@@ -0,0 +1,196 @@
+using UnityEngine;
+using System.Collections;
+using asdf.Resources;
+
+public class Text : Frame {
+
+ public int targetFontSize;
+ public string TextValue;
+ public bool Editable = false;
+ public bool MultiLine;
+ public int LineLength = 1;
+ public int MaxInputTextLength = 10;
+ public int GUIDepth = 5;
+ public Color TextColor = Color.black;
+
+
+ public Rect TextRegion;
+ //private Rect realTextRegion;
+ private string formatetText;
+ private string lastRenderdText;
+
+ private GUITextPlane textComponent;
+
+ //public FontStyle textStyle;
+
+ // DONT USE THIS
+ void Awake(){
+ AwakeOverride();
+ }
+
+ protected override void AwakeOverride (){
+ base.AwakeOverride ();
+
+ }
+
+ // Use this for initialization
+ void Start () {
+ StartOverride();
+ }
+
+ // Update is called once per frame
+ void Update () {
+ UpdateOverride();
+ }
+
+ public override void CreateElement(){
+ base.CreateElement();
+
+ this.createGUIElement();
+ created = true;
+ UpdateElement();
+ }
+
+
+ public virtual void createGUIElement(){
+ CreateTextMesh();
+
+ if(textComponent == null){
+ EditorDebug.LogError("Text Object: " + gameObject.name + " has no TextMesh assigned!");
+ return;
+ }
+
+
+ textComponent.TextValue = TextValue;
+
+ Camera cam = activeScreen.ScreenCamera;
+ //plane.name = gameObject.name + "_guiPlane";
+ textComponent.transform.parent = cam.transform;
+
+ // Orient Plane to Camera
+ resetTextTransform();
+ float layer = (float)GUIDepth * 0.0001f;
+ textComponent.transform.Translate(new Vector3(0,0,(activeScreen.ScreenCamera.nearClipPlane+layer)), Space.Self);
+ EditorDebug.LogError("Depth: " + (activeScreen.ScreenCamera.nearClipPlane+layer));
+ //textComponent.transform.LookAt(cam.transform, new Vector3(0,1,0));
+ textComponent.TextColor = TextColor;
+ // set Materials
+ //textComponent.GUIMaterial = activeScreen.GUIMaterial;
+ //plane.UV = Uv;
+ textComponent.VirtualRegionOnScreen = RealRegionOnScreen;
+ //textComponent
+
+ }
+
+ public override void UpdateElement (){
+ base.UpdateElement ();
+ if(created)
+ textComponent.VirtualRegionOnScreen = RealRegionOnScreen;
+
+ }
+
+ private void CreateTextMesh(){
+ GameObject go = ResourceManager.CreateInstance("TextMesh");
+ if(go == null){
+ EditorDebug.LogError("No GameObject found for TextMesh on Object "+ this.gameObject.name + "! Stop!");
+ return;
+ }
+
+ textComponent = go.GetComponent() as GUITextPlane;
+
+ if(textComponent == null){
+ EditorDebug.LogError("No TextMesh found on Object "+ this.gameObject.name + "! Stop!");
+ return;
+ }
+
+
+ }
+
+ private void resetTextTransform(){
+ textComponent.transform.rotation = Quaternion.identity;
+ textComponent.transform.localRotation = Quaternion.identity;
+ textComponent.transform.localPosition = Vector3.zero;
+ textComponent.transform.localScale = Vector3.one;
+ }
+
+ protected override void UpdateOverride(){
+ base.UpdateOverride();
+ formatText();
+ if(this.Visibility){
+ /*textComponent.fontStyle = textStyle;
+ if(Editable)
+ Text = UnityEngine.GUI.TextField(realTextRegion, formatetText, MaxInputTextLength, textStyle);
+ else
+ UnityEngine.GUI.Label(realTextRegion, formatetText, textStyle); */
+ }
+ }
+ private void formatText(){
+ if(!created)
+ return;
+ //EditorDebug.Log("Format Text Element: " + gameObject.name);
+ //if(activeScreen.DebugModus)
+ // initTextRegion();
+ textComponent.FontSize = targetFontSize;
+#if UNITY_IPHONE || UNITY_ANDROID
+ changeFontForMobile();
+#elif UNITY_EDITOR || UNITY_STANDALONE_OSX || UNITY_STANDALONE_WIN || UNITY_WEBPLAYER
+ textComponent.FontSize = CameraScreen.GetPhysicalTextSize(targetFontSize);
+#endif
+ scaleTextToSize();
+ if(TextValue != lastRenderdText){ // Do this every on GUI because text can be changed from outside
+ formatMultilineText();
+ InvokeTextChanged();
+ }
+#if UNITY_EDITOR
+ if(activeScreen.DebugModus)
+ formatMultilineText();
+#endif
+ //UpdateElement();
+ }
+
+ private void scaleTextToSize(){
+ float scale = textComponent.FontSize / 2500.0f;
+ textComponent.transform.localScale = new Vector3(scale, scale, scale);
+
+
+ }
+ private void changeFontForMobile(){
+ int index = 0;
+ int size = targetFontSize;
+ int fontSize = CameraScreen.GetPhysicalTextSize(size);
+ foreach(int step in ScreenConfig.Instance.FontSizes){
+ if(step >= fontSize){
+ break;
+ }
+ index++;
+
+ }
+ if(index < ScreenConfig.Instance.Fonts.Length){
+ textComponent.FontValue = ScreenConfig.Instance.Fonts[index];
+ } else
+ EditorDebug.LogWarning("No Font found that matches TargetFontSize: " + targetFontSize + " index: " + index + "Object: " + gameObject.name);
+
+ }
+
+ private void formatMultilineText(){
+ string tmp = string.Empty;
+ if(MultiLine){
+ for(int i = 0; i < TextValue.Length; i++){
+ tmp += TextValue[i];
+ if((i+1)%LineLength == 0 && LineLength > 0)
+ tmp += "\n";
+ }
+ } else
+ tmp = TextValue;
+ formatetText = tmp;
+ lastRenderdText = TextValue;
+ }
+
+ private void InvokeTextChanged(){
+ InteractionBehaviour[] behaviours = gameObject.GetComponents() as InteractionBehaviour[];
+ foreach(InteractionBehaviour ib in behaviours){
+ ib.TextChanged(TextValue);
+ }
+ }
+
+}
diff --git a/Assets/Scripts/GUI_Module/Elements/TextPanel.cs b/Assets/Scripts/GUI_Module/Elements/TextPanel.cs
new file mode 100755
index 0000000..7d8c417
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Elements/TextPanel.cs
@@ -0,0 +1,150 @@
+using UnityEngine;
+using System.Collections;
+
+public class TextPanel : Panel {
+
+ public int targetFontSize;
+ public string Text;
+ public bool Editable = false;
+ public bool MultiLine;
+ public int LineLength = 1;
+ public int MaxInputTextLength = 10;
+ public bool ShowTextArea = false;
+
+
+
+ public GUIStyle textStyle;
+
+ public Rect TextRegion;
+ private Rect realTextRegion;
+ private string formatetText;
+ private string lastRenderdText;
+
+ protected override void AwakeOverride(){
+ base.AwakeOverride();
+ initTextRegion();
+ if(ScreenConfig.Instance.Fonts.Length != ScreenConfig.Instance.FontSizes.Length)
+ EditorDebug.LogWarning("Fontsteps not same size as Fonts");
+ }
+
+ void Start(){
+ StartOverride();
+ }
+
+ protected override void StartOverride(){
+ base.StartOverride();
+ initTextRegion();
+ formatMultilineText();
+ lastRenderdText = Text;
+ }
+ public override void LayoutElement(){
+ base.LayoutElement();
+
+ }
+
+ void OnGUI(){
+ OnGUIOverride();
+
+ }
+
+ protected override void OnGUIOverride(){
+ base.OnGUIOverride();
+ formatText();
+ if(!this.Visibility)
+ return;
+ if(Editable)
+ Text = UnityEngine.GUI.TextField(realTextRegion, formatetText, MaxInputTextLength, textStyle);
+ else
+ UnityEngine.GUI.Label(realTextRegion, formatetText, textStyle);
+#if UNITY_EDITOR
+ if(ShowTextArea){
+ initTextRegion();
+ UnityEngine.GUI.Box(realTextRegion, "");
+ }
+#endif
+
+ }
+
+
+ private void formatText(){
+ if(!created)
+ return;
+ //EditorDebug.Log("Format Text Element: " + gameObject.name);
+ if(activeScreen.DebugModus)
+ initTextRegion();
+ //textStyle.fontSize = targetFontSize;
+#if UNITY_IPHONE || UNITY_ANDROID
+ changeFontForMobile();
+#elif UNITY_EDITOR || UNITY_STANDALONE_OSX || UNITY_STANDALONE_WIN || UNITY_WEBPLAYER
+ textStyle.fontSize = CameraScreen.GetPhysicalTextSize(textStyle.fontSize);
+#endif
+
+ if(Text != lastRenderdText){ // Do this every on GUI because text can be changed from outside
+ formatMultilineText();
+ InvokeTextChanged();
+ }
+#if UNITY_EDITOR
+ if(activeScreen.DebugModus)
+ formatMultilineText();
+#endif
+ //UpdateElement();
+ }
+
+
+
+ public override void CreateElement (){
+ base.CreateElement ();
+ initTextRegion();
+ }
+
+ private void changeFontForMobile(){
+ int index = 0;
+ int size = targetFontSize;
+ int fontSize = CameraScreen.GetPhysicalTextSize(size);
+ foreach(int step in ScreenConfig.Instance.FontSizes){
+ if(step >= fontSize){
+ break;
+ }
+ index++;
+
+ }
+ if(index < ScreenConfig.Instance.Fonts.Length){
+ textStyle.font = ScreenConfig.Instance.Fonts[index];
+ } else
+ EditorDebug.LogWarning("No Font found that matches TargetFontSize: " + targetFontSize + " index: " + index + "Object: " + gameObject.name);
+ textStyle.fontSize = 0;
+
+ }
+ private void formatMultilineText(){
+ string tmp = string.Empty;
+ if(MultiLine){
+ for(int i = 0; i < Text.Length; i++){
+ tmp += Text[i];
+ if((i+1)%LineLength == 0 && LineLength > 0)
+ tmp += "\n";
+ }
+ } else
+ tmp = Text;
+ formatetText = tmp;
+ lastRenderdText = Text;
+ }
+
+ // Caclulate the Absolute Values on the physical screen - because TextRegion is virtual an relative to the Panel Position
+ private void initTextRegion(){
+ if(!created)
+ return;
+
+ var textRegion = activeScreen.GetPhysicalRegionFromRect(TextRegion);
+ realTextRegion = new Rect(RealRegionOnScreen.x + textRegion.x , RealRegionOnScreen.y + textRegion.y, textRegion.width, textRegion.height);
+
+
+ }
+
+ private void InvokeTextChanged(){
+ InteractionBehaviour[] behaviours = gameObject.GetComponents() as InteractionBehaviour[];
+ foreach(InteractionBehaviour ib in behaviours){
+ ib.TextChanged(Text);
+ }
+ }
+
+}
diff --git a/Assets/Scripts/GUI_Module/EventArgs/CheckBoxEventArgs.cs b/Assets/Scripts/GUI_Module/EventArgs/CheckBoxEventArgs.cs
new file mode 100755
index 0000000..652968b
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/EventArgs/CheckBoxEventArgs.cs
@@ -0,0 +1,21 @@
+using UnityEngine;
+using System.Collections;
+using System.Collections.Generic;
+using System;
+
+public class CheckBoxEventArgs : EventArgs {
+
+ public CheckBox Checkbox{
+ get;
+ private set;
+ }
+ public Vector2 MoveDirection{get;set;}
+ public Vector2 MousPosition{get;set;}
+
+ public CheckBoxEventArgs(CheckBox checkbox) {
+ this.Checkbox = checkbox;
+
+ }
+
+
+}
diff --git a/Assets/Scripts/GUI_Module/EventArgs/MouseEventArgs.cs b/Assets/Scripts/GUI_Module/EventArgs/MouseEventArgs.cs
new file mode 100755
index 0000000..30b77e0
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/EventArgs/MouseEventArgs.cs
@@ -0,0 +1,31 @@
+using UnityEngine;
+using System.Collections;
+using System.Collections.Generic;
+using System;
+
+public class MouseEventArgs : EventArgs {
+
+ public int ButtonId{get;set;}
+ public float MoveDistance{get{
+ return MoveDirection.magnitude;
+ }
+ }
+ public Vector2 MoveDirection{get;set;}
+ public Vector2 MousPosition{get;set;}
+
+ public MouseEventArgs(int buttonId) {
+ MouseDown = new Dictionary();
+ MousPosition = new Vector2(0,0);
+ MoveDirection = new Vector2(0,0);
+ this.ButtonId = buttonId;
+
+ }
+
+ public MouseEventArgs(Vector2 direction) {
+ MoveDirection = direction;
+ ButtonId = -1;
+ }
+
+ public Dictionary MouseDown;
+
+}
diff --git a/Assets/Scripts/GUI_Module/Samples/SampleUIController.cs b/Assets/Scripts/GUI_Module/Samples/SampleUIController.cs
new file mode 100755
index 0000000..1725d2d
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Samples/SampleUIController.cs
@@ -0,0 +1,63 @@
+using System;
+using UnityEngine;
+
+
+public sealed class SampleUIController : Controller
+{
+ private Func function;
+ private TimeSpan elapsedTime = TimeSpan.Zero;
+
+ public SampleUIController()
+ : this((x) => x) { }
+
+ public SampleUIController(Func function) {
+ this.function = function;
+ }
+
+ public TimeSpan Duration {
+ get;
+ set;
+ }
+
+ public Vector2 StartPosition {
+ get;
+ set;
+ }
+
+ public Vector2 TargetPosition {
+ get;
+ set;
+ }
+
+ protected override void UpdateOverride (MonoBehaviour entity)
+ {
+
+ /* UNTESTET
+ if (IsFinished || entity == null) {
+ return;
+ }
+
+ elapsedTime = elapsedTime.Add(TimeSpan.FromSeconds(Time.deltaTime));
+
+ if (elapsedTime >= Duration) {
+ elapsedTime = TimeSpan.Zero;
+ InvokeControllerFinished(entity);
+ return;
+ }
+
+ var relTime = (float)elapsedTime.TotalMilliseconds / (float)Duration.TotalMilliseconds;
+ if (relTime > 1.0f) {
+ relTime = 1.0f;
+ }
+ var relDistance = function(relTime);
+ // need more speed for we do operate on a larger scale than in game
+
+ var vec = (TargetPosition - StartPosition);
+
+ //HACK for mono bug, something with trampolines
+ var ui = (UIElementBehaviour) entity;
+ ui.Position = StartPosition + (vec * relDistance); */
+ }
+}
+
+
diff --git a/Assets/Scripts/GUI_Module/Samples/TestAllInteractionBehaviour.cs b/Assets/Scripts/GUI_Module/Samples/TestAllInteractionBehaviour.cs
new file mode 100755
index 0000000..7e5a6fe
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Samples/TestAllInteractionBehaviour.cs
@@ -0,0 +1,30 @@
+using UnityEngine;
+using System.Collections;
+
+public class TestAllInteractionBehaviour : InteractionBehaviour {
+
+ public override void Click(MouseEventArgs mouse){
+ EditorDebug.Log("Click Element: " + gameObject.name);
+ }
+
+ public override void Hover(MouseEventArgs mouse){
+ EditorDebug.Log("Hover Element: " + gameObject.name);
+ }
+
+ public override void Down(MouseEventArgs mouse){
+ EditorDebug.Log("Mouse Down on Element: " + gameObject.name);
+ }
+
+ public override void Up(MouseEventArgs mouse){
+ EditorDebug.Log("Mouse Up Element: " + gameObject.name);
+ }
+
+ public override void Move(MouseEventArgs mouse){
+ EditorDebug.Log("Mouse Move Element: " + gameObject.name + "\n" +
+ "Moved Distance " + mouse.MoveDistance);
+ }
+
+ public override void Swipe(MouseEventArgs mouse){
+ EditorDebug.Log("Swipe Element: " + gameObject.name);
+ }
+}
diff --git a/Assets/Scripts/GUI_Module/Samples/TestAllInteractionsBehaviour.cs b/Assets/Scripts/GUI_Module/Samples/TestAllInteractionsBehaviour.cs
new file mode 100755
index 0000000..39d43d8
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Samples/TestAllInteractionsBehaviour.cs
@@ -0,0 +1,30 @@
+using UnityEngine;
+using System.Collections;
+
+public class TestAllInteractionsBehaviour : InteractionBehaviour {
+
+ public override void Click(MouseEventArgs mouse){
+ Debug.Log("Click Element: " + gameObject.name);
+ }
+
+ public override void Hover(MouseEventArgs mouse){
+ Debug.Log("Hover Element: " + gameObject.name);
+ }
+
+ public override void Down(MouseEventArgs mouse){
+ Debug.Log("Mouse Down on Element: " + gameObject.name);
+ }
+
+ public override void Up(MouseEventArgs mouse){
+ Debug.Log("Mouse Up Element: " + gameObject.name);
+ }
+
+ public override void Move(MouseEventArgs mouse){
+ Debug.Log("Mouse Move Element: " + gameObject.name + "\n" +
+ "Moved Distance " + mouse.MoveDistance);
+ }
+
+ public override void Swipe(MouseEventArgs mouse){
+ Debug.Log("Swipe Element: " + gameObject.name);
+ }
+}
diff --git a/Assets/Scripts/GUI_Module/Samples/TestMoveWithMouse.cs b/Assets/Scripts/GUI_Module/Samples/TestMoveWithMouse.cs
new file mode 100755
index 0000000..977d8aa
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Samples/TestMoveWithMouse.cs
@@ -0,0 +1,28 @@
+using UnityEngine;
+using System.Collections;
+
+public class TestMoveWithMouse : InteractionBehaviour {
+
+ private bool down = false;
+
+ /**
+ * BTW: This class is super cool for position Elements with Drag Drop on Screen in EditorDebugModus :)
+ * */
+ public override void Down(MouseEventArgs mouse){
+ down = true;
+ }
+
+ public override void Up(MouseEventArgs mouse){
+ down = false;
+ }
+
+ public override void Move(MouseEventArgs mouse){
+ if(down){
+ Panel ui = gameObject.GetComponent();
+ Vector2 newPosition = new Vector2(ui.VirtualRegionOnScreen.x, ui.VirtualRegionOnScreen.y);
+ newPosition += mouse.MoveDirection;
+ Rect newRegion = new Rect(newPosition.x, newPosition.y, ui.VirtualRegionOnScreen.width, ui.VirtualRegionOnScreen.height);
+ ui.VirtualRegionOnScreen = newRegion;
+ }
+ }
+}
diff --git a/Assets/Scripts/GUI_Module/Samples/TestSwipeBehaviour.cs b/Assets/Scripts/GUI_Module/Samples/TestSwipeBehaviour.cs
new file mode 100755
index 0000000..4cab573
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Samples/TestSwipeBehaviour.cs
@@ -0,0 +1,11 @@
+using UnityEngine;
+using System.Collections;
+
+public class TestSwipeBehaviour : InteractionBehaviour {
+
+
+
+ public override void Swipe(MouseEventArgs mouse){
+ EditorDebug.Log("Swipe Element: " + gameObject.name);
+ }
+}
diff --git a/Assets/Scripts/GUI_Module/Samples/TestUIControllerBehaviour.cs b/Assets/Scripts/GUI_Module/Samples/TestUIControllerBehaviour.cs
new file mode 100755
index 0000000..d4c95b1
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Samples/TestUIControllerBehaviour.cs
@@ -0,0 +1,16 @@
+using UnityEngine;
+using System.Collections;
+
+public class TestUIControllerBehaviour : InteractionBehaviour {
+
+ //private SampleUIController controller;
+ protected override void AwakeOverride(){
+ base.AwakeOverride();
+ //controller = new SampleUIController();
+
+ }
+
+ public override void Click(MouseEventArgs mouse){
+ //controller.Trigger = true;
+ }
+}
diff --git a/Assets/Scripts/GUI_Module/Wrapper/InputEvents.cs b/Assets/Scripts/GUI_Module/Wrapper/InputEvents.cs
new file mode 100755
index 0000000..ad27067
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Wrapper/InputEvents.cs
@@ -0,0 +1,231 @@
+using UnityEngine;
+using System.Collections;
+using System;
+using System.Collections.Generic;
+
+public class InputEvents : MonoBehaviour{
+
+
+ //public float ClickTimeInSeconds = 0.1f;
+ //public float MaxClickDistance = 0.1f;
+
+ public static InputEvents Instance;
+
+ public event EventHandler ClickEvent;
+ public event EventHandler DownEvent;
+ public event EventHandler UpEvent;
+ public event EventHandler MoveEvent;
+ public event EventHandler SwipeEvent;
+
+ //private Timer clickTimer;
+ private Dictionary clickStarted;
+ private Dictionary clickStartTime;
+ private Vector2 mouseStartPosition;
+
+ private Vector2 mousePosition;
+ private Vector2 actualMouseDirection;
+ private bool mouseDownToggle = true;
+
+ void Awake(){
+ Instance = this;
+ clickStarted = new Dictionary();
+ clickStartTime = new Dictionary();
+ actualMouseDirection = new Vector2(0,0);
+ mousePosition = new Vector2(0,0);
+ mouseStartPosition = new Vector2(0,0);
+
+ }
+
+ void Start(){
+
+ }
+
+ void Update(){
+ checkMove();
+#if UNITY_IPHONE || UNITY_ANDROID || UNITY_STANDALONE_WIN
+ checkTouches();
+#endif
+#if UNITY_STANDALONE_OSX || UNITY_WEBPLAYER || UNITY_EDITOR || UNITY_STANDALONE_WIN
+ checkClick();
+#endif
+
+
+ }
+
+ private void checkMove(){
+ Vector2 oldMouse = mousePosition;
+ mousePosition = CameraScreen.PhysicalToVirtualScreenPosition(Input.mousePosition);
+
+ actualMouseDirection = new Vector2(mousePosition.x - oldMouse.x, oldMouse.y - mousePosition.y);
+ if(actualMouseDirection.magnitude != 0)
+ InvokeMoveEvent(actualMouseDirection, mousePosition);
+
+ }
+
+ private void checkClick(){
+
+ if(Input.touches.Length > 0){
+ //EditorDebug.LogError("Touch Detected");
+ return;
+ }
+
+ /*if(Input.GetMouseButtonDown(0)){
+ EditorDebug.LogError("Button0 Down");
+ clickStart(0);
+ } else if(getIsDown(0) && (Input.GetMouseButtonUp(0) || !Input.GetMouseButtonDown(0)) ){
+ EditorDebug.LogError("Button0 Up");
+ clickEnd(0);
+ }*/
+ // Diese unglaublichen If abfragen sind nötig, da sich die Unity mit windows Touch anders verhält als
+ // mit der Maus oder anderen Touchdevices
+ // Unter windows gilt folgendes: Bei FingerDown sind sowohl down und Up der Mouse False
+ // sobald die Maus bewegt wird gitb ButtonDown true zurück
+ // wenn man ohne die Maus zu bewegen direkt den Finger wieder hochnimmt sind down und Up true
+ // Der Touch wird aber als Maus behandelt - die Input.Touches ist auf jeden Fall leer
+ if(Input.GetMouseButtonDown(0) && Input.GetMouseButtonUp(0)){
+ //EditorDebug.LogError("0 both");
+ clickStart(0);
+ clickEnd(0);
+
+ }
+ else if(Input.GetMouseButtonDown(0)){
+ //EditorDebug.LogError("0 down");
+ clickStart(0);
+ }
+
+ else if(Input.GetMouseButtonUp(0)){
+ //EditorDebug.LogError("0 up");
+ clickEnd(0);
+
+ }
+
+ else if(!Input.GetMouseButtonDown(0) && !Input.GetMouseButtonUp(0)){
+ //EditorDebug.LogError("0 nix");
+ }
+
+
+
+
+
+
+ }
+
+ private void checkTouches(){
+ Touch[] touches = Input.touches;
+ if(touches.Length > 0 ){
+ EditorDebug.LogWarning("Touches Length > 0");
+ foreach(Touch touch in touches){
+ if(touch.phase == TouchPhase.Began){
+ clickStart(touch.fingerId);
+ } else if(touch.phase == TouchPhase.Ended){
+ clickEnd(touch.fingerId);
+ }
+ }
+ }
+ }
+
+ private void clickStart(int buttonId){
+ //EditorDebug.LogError("ClickStart");
+ InvokeDownEvent(buttonId);
+ //clickTimer.StartTimer(ClickTimeInSeconds);
+ mouseStartPosition = mousePosition;
+ setIsDown(buttonId, true);
+ setButtonDownTime(buttonId, Time.timeSinceLevelLoad);
+ }
+
+ private void setIsDown(int key,bool value){
+ if(clickStarted.ContainsKey(key)){
+ clickStarted[key] = value;
+ } else
+ clickStarted.Add(key, value);
+ }
+
+ private bool getIsDown(int key){
+ if(clickStarted.ContainsKey(key)){
+ return clickStarted[key];
+ }
+ return false;
+ }
+
+ private void setButtonDownTime(int key, double time){
+ if(clickStartTime.ContainsKey(key)){
+ clickStartTime[key] = time;
+ } else
+ clickStartTime.Add(key, time);
+ }
+
+ private double getButtonDownTime(int key){
+ if(clickStartTime.ContainsKey(key)){
+ return Time.timeSinceLevelLoad - clickStartTime[key];
+ }
+ return 0.0;
+ }
+
+
+ private void clickEnd(int buttonId){
+ //EditorDebug.LogError("ClickEnd");
+ InvokeUpEvent(buttonId);
+ if(getIsDown(buttonId)){
+ Vector2 moveDirection = mousePosition - mouseStartPosition;
+ float clickDistance = moveDirection.magnitude;
+ if(clickDistance <= ScreenConfig.Instance.SwipeMinDistance || getButtonDownTime(buttonId) < (ScreenConfig.Instance.SwipeMinTime*Time.timeScale)){
+ InvokeClickEvent(buttonId);
+ } else{ // Swipe detected
+ InvokeSwipeEvent(moveDirection);
+ }
+
+ setIsDown(buttonId, false);
+
+ }
+ }
+
+
+ private void InvokeClickEvent(int buttonId){
+ var handler = ClickEvent;
+ if (handler == null) {
+ return;
+ }
+ var e = new MouseEventArgs(buttonId);
+ handler(this, e);
+ }
+
+ private void InvokeUpEvent(int buttonId){
+ var handler = UpEvent;
+ if (handler == null) {
+ return;
+ }
+ var e = new MouseEventArgs(buttonId);
+ handler(this, e);
+ }
+
+ private void InvokeDownEvent(int buttonId){
+ var handler = DownEvent;
+ if (handler == null) {
+ return;
+ }
+ var e = new MouseEventArgs(buttonId);
+ handler(this, e);
+ }
+
+ private void InvokeMoveEvent(Vector2 direction, Vector2 currentMousePosition){
+ var handler = MoveEvent;
+ if (handler == null){
+ return;
+ }
+ var e = new MouseEventArgs(direction);
+ e.MouseDown = clickStarted;
+ e.MousPosition = currentMousePosition;
+ handler(this, e);
+ }
+
+ private void InvokeSwipeEvent(Vector2 direction){
+ var handler = SwipeEvent;
+ if (handler == null){
+ return;
+ }
+ direction = new Vector2(direction.x, direction.y*-1);
+ var e = new MouseEventArgs(direction);
+ handler(this, e);
+ }
+
+}
diff --git a/Assets/Scripts/GUI_Module/Wrapper/RectExtension.cs b/Assets/Scripts/GUI_Module/Wrapper/RectExtension.cs
new file mode 100755
index 0000000..07e5df0
--- /dev/null
+++ b/Assets/Scripts/GUI_Module/Wrapper/RectExtension.cs
@@ -0,0 +1,17 @@
+using UnityEngine;
+using System.Collections;
+
+public static class RectExtension {
+
+ public static Rect AddPosition(this Rect rect, Rect rect2){
+ rect.x += rect2.x;
+ rect.y += rect2.y;
+ return rect;
+ }
+
+ public static Rect AddPosition(this Rect rect, Vector2 position){
+ rect.x += position.x;
+ rect.y += position.y;
+ return rect;
+ }
+}
diff --git a/Assets/Scripts/General_Module/ControlManager.cs b/Assets/Scripts/General_Module/ControlManager.cs
new file mode 100755
index 0000000..465b9df
--- /dev/null
+++ b/Assets/Scripts/General_Module/ControlManager.cs
@@ -0,0 +1,74 @@
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+
+public sealed class ControlManager where T : MonoBehaviour
+{
+ private readonly List keysToBeRemoved;
+ private readonly Dictionary> controllers;
+ private readonly Dictionary> queuedControllers;
+
+ public ControlManager() {
+ queuedControllers = new Dictionary>();
+ controllers = new Dictionary>();
+ keysToBeRemoved = new List();
+ }
+
+ public void ClearControllers() {
+ controllers.Clear();
+ }
+
+ public void Reset()
+ {
+ controllers.Clear();
+ keysToBeRemoved.Clear();
+ queuedControllers.Clear();
+ }
+
+ public void QueueController(string name, Controller controller) {
+ if (queuedControllers.ContainsKey(name)) {
+ queuedControllers.Remove(name);
+ }
+ queuedControllers.Add(name, controller);
+ }
+
+ private void AddController(string name, Controller controller) {
+ if (controllers.ContainsKey(name)) {
+ var message = string.Format("must remove controller with name {0}, before attaching a second with the same name.",name);
+ throw new ApplicationException(message);
+ }
+
+ controller.ControllerFinished += (sender, e) => keysToBeRemoved.Add(name);
+ controllers.Add(name, controller);
+ }
+
+ public void DequeueController(string name) {
+ keysToBeRemoved.Add(name);
+ }
+
+ public bool IsControllerAttached(string name) {
+ return controllers.ContainsKey(name);
+ }
+
+ public void Update(T entity) {
+ foreach (var c in this.Controllers) {
+ c.Update(entity);
+ }
+
+ foreach (var oc in keysToBeRemoved) {
+ controllers.Remove(oc);
+ }
+ keysToBeRemoved.Clear();
+
+ foreach (var qc in queuedControllers) {
+ this.AddController(qc.Key, qc.Value);
+ }
+ queuedControllers.Clear();
+ }
+
+ public IEnumerable> Controllers {
+ get { return controllers.Values; }
+ }
+}
+
+
diff --git a/Assets/Scripts/General_Module/Controller.cs b/Assets/Scripts/General_Module/Controller.cs
new file mode 100755
index 0000000..3a1c3ae
--- /dev/null
+++ b/Assets/Scripts/General_Module/Controller.cs
@@ -0,0 +1,55 @@
+using System;
+using UnityEngine;
+
+public abstract class Controller where T : MonoBehaviour
+{
+ protected Controller () {
+ // imediately active
+ Trigger = () => true;
+ }
+
+ public Func Trigger {
+ get;
+ set;
+ }
+
+ public bool IsTriggered {
+ get;
+ private set;
+ }
+
+ public bool IsFinished {
+ get;
+ private set;
+ }
+
+ public virtual void Update(T entity)
+ {
+ if (Trigger == null) {
+ return;
+ }
+
+ if (IsTriggered) {
+ UpdateOverride(entity);
+ return;
+ }
+
+ IsTriggered = Trigger();
+ }
+
+ protected abstract void UpdateOverride(T entity);
+
+ public event EventHandler> ControllerFinished;
+ protected void InvokeControllerFinished (T entity) {
+ var handler = ControllerFinished;
+ if (handler == null) {
+ return;
+ }
+
+ var e = new BehaviourEventArgs (entity);
+ ControllerFinished (this, e);
+ IsFinished = true;
+ }
+}
+
+
diff --git a/Assets/Scripts/General_Module/EditorDebug.cs b/Assets/Scripts/General_Module/EditorDebug.cs
new file mode 100755
index 0000000..a99146a
--- /dev/null
+++ b/Assets/Scripts/General_Module/EditorDebug.cs
@@ -0,0 +1,36 @@
+using UnityEngine;
+using System.Collections;
+
+public static class EditorDebug {
+
+ public static bool ShowDebugOutsideEditor;
+ public static void Log(string message){
+#if UNITY_EDITOR
+ Debug.Log(message);
+#endif
+ if(ShowDebugOutsideEditor)
+ Debug.Log(message);
+ }
+
+ public static void LogWarning(string message){
+#if UNITY_EDITOR
+ Debug.LogWarning(message);
+#endif
+ if(ShowDebugOutsideEditor)
+ Debug.LogWarning(message);
+ }
+
+ public static void LogError(string message){
+#if UNITY_EDITOR
+ Debug.LogError(message);
+#endif
+ if(ShowDebugOutsideEditor)
+ Debug.LogError(message);
+ }
+
+ public static void DrawRay(Vector3 start, Vector3 dir){
+#if UNITY_EDITOR
+ Debug.DrawRay(start, dir);
+#endif
+ }
+}
diff --git a/Assets/Scripts/General_Module/Resource_Module/ResourceLoadingBehaviour.cs b/Assets/Scripts/General_Module/Resource_Module/ResourceLoadingBehaviour.cs
new file mode 100755
index 0000000..40c5318
--- /dev/null
+++ b/Assets/Scripts/General_Module/Resource_Module/ResourceLoadingBehaviour.cs
@@ -0,0 +1,54 @@
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+using asdf.Resources;
+
+
+
+public class ResourceLoadingBehaviour : MonoBehaviour
+{
+ public string ResourcesPath;
+ public bool LoadAllResourcesInPath;
+ public string[] ResourceNames;
+
+ private List loadedResources;
+
+ protected ResourceLoadingBehaviour() {
+ }
+
+ private void Awake() {
+ if(ResourcesPath != "" && !LoadAllResourcesInPath)
+ ResourcesPath += "/";
+ OnResourcesLoading(EventArgs.Empty);
+ LoadResources();
+ OnResourcesLoaded(EventArgs.Empty);
+ }
+
+ protected virtual void OnResourcesLoading(EventArgs e) { }
+ protected virtual void OnResourcesLoaded(EventArgs e) { }
+
+ protected virtual void LoadResources(){
+ if(LoadAllResourcesInPath && ResourcesPath != string.Empty){
+ loadedResources = ResourceManager.LoadAllResources(ResourcesPath);
+
+ } else{
+ foreach(string resource in ResourceNames){
+
+ ResourceManager.LoadResource(ResourcesPath + resource);
+ }
+ }
+ }
+
+ protected virtual void UnloadResources(){
+ if(LoadAllResourcesInPath){
+ ResourceManager.LoadAllResources(ResourcesPath);
+ } else{
+ foreach(string resource in loadedResources){
+ ResourceManager.UnloadResource(ResourcesPath + resource);
+ }
+ }
+ }
+}
+
+
+
diff --git a/Assets/Scripts/General_Module/Resource_Module/ResourceManager.cs b/Assets/Scripts/General_Module/Resource_Module/ResourceManager.cs
new file mode 100755
index 0000000..b996e10
--- /dev/null
+++ b/Assets/Scripts/General_Module/Resource_Module/ResourceManager.cs
@@ -0,0 +1,85 @@
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace asdf.Resources{
+
+
+public static class ResourceManager
+{
+ public static IEnumerable Resource {
+ get{
+ return _resources.Keys;
+ }
+ }
+ private static readonly Dictionary _resources;
+
+ static ResourceManager() {
+ _resources = new Dictionary();
+ }
+
+ public static bool IsResourceLoaded(string key)
+ {
+ return _resources.ContainsKey(key);
+ }
+
+ public static bool UnloadResource(string key) {
+ if (_resources.ContainsKey(key)) {
+ _resources.Remove(key);
+ return true;
+ }
+ return false;
+ }
+
+ public static List LoadAllResources(string path){
+ UnityEngine.Object[] objects = UnityEngine.Resources.LoadAll(path);
+ List loadedResources = new List();
+ foreach(UnityEngine.Object obj in objects){
+ string resourcePath = path + "/" + obj.name;
+ try{
+ _resources.Add(resourcePath, obj);
+ } catch(Exception e){
+ EditorDebug.Log(e.Message);
+ }
+ loadedResources.Add(obj.name);
+ }
+ if(loadedResources.Count == 0)
+ EditorDebug.LogWarning("No Resources found to load on: " + path);
+ return loadedResources;
+ }
+
+ public static void LoadResource(string key)
+ {
+ if (IsResourceLoaded(key)) {
+ var message = string.Format("Resource {0} already loaded, skipping.", key);
+ EditorDebug.Log(message);
+ return;
+ }
+ var r = UnityEngine.Resources.Load(key);
+ if (r == null) {
+ EditorDebug.Log("resouce not found" + key + " while loading");
+ }
+ _resources.Add(key, r);
+ }
+
+ public static T GetResource(string key) where T : UnityEngine.Object
+ {
+ if (!IsResourceLoaded(key)) {
+ EditorDebug.LogWarning("Key : " + key + " not found - Getresource");
+ return null;
+ }
+ return (T) _resources[key];
+ }
+
+ public static T CreateInstance(string key) where T : UnityEngine.Object {
+ if (!IsResourceLoaded(key)) {
+ EditorDebug.LogWarning("Key: " + key + " not found - GetInstance");
+ }
+ var res = _resources[key];
+ return (T) GameObject.Instantiate(res, Vector3.zero, Quaternion.identity);
+ }
+
+
+}
+
+}
diff --git a/Assets/Scripts/General_Module/Time_Module/TimeBehaviour.cs b/Assets/Scripts/General_Module/Time_Module/TimeBehaviour.cs
new file mode 100755
index 0000000..872695a
--- /dev/null
+++ b/Assets/Scripts/General_Module/Time_Module/TimeBehaviour.cs
@@ -0,0 +1,32 @@
+using UnityEngine;
+using System.Collections;
+using System.Collections.Generic;
+public class TimeBehaviour : MonoBehaviour {
+
+ public static TimeBehaviour Instance{get;private set;}
+
+ void Awake(){
+ Instance = this;
+ timerList = new List();
+ }
+ private List timerList;
+
+ // Use this for initialization
+ void Start () {
+
+ }
+
+ // Update is called once per frame
+ void Update () {
+ foreach(Timer t in timerList)
+ t.Update();
+ }
+
+ public void AddTimer(Timer timer){
+ timerList.Add(timer);
+ }
+
+ public void RemoveTimer(Timer timer){
+ timerList.Remove(timer);
+ }
+}
diff --git a/Assets/Scripts/General_Module/Time_Module/Timer.cs b/Assets/Scripts/General_Module/Time_Module/Timer.cs
new file mode 100755
index 0000000..4a340c8
--- /dev/null
+++ b/Assets/Scripts/General_Module/Time_Module/Timer.cs
@@ -0,0 +1,61 @@
+using UnityEngine;
+using System.Collections;
+using System;
+
+public class Timer {
+
+ private float currentTime = 0;
+ private float maxTime;
+ private bool run = false;
+
+ public event EventHandler TimerFinished;
+
+ public Timer(){
+ init();
+ }
+
+ public Timer(float timeInSeconds){
+ init();
+ maxTime = timeInSeconds;
+ }
+
+ ~Timer(){
+ TimeBehaviour.Instance.RemoveTimer(this);
+ }
+
+ // Update is called once per frame
+ public void Update () {
+ if(run){
+ currentTime += Time.deltaTime;
+ if(currentTime >= maxTime){
+ InvokeTimerFinished();
+ StopTimer();
+ }
+ }
+
+
+ }
+
+ public void StartTimer(float timeInSeconds){
+ StopTimer();
+ maxTime = timeInSeconds;
+ run = true;
+ }
+
+ public void StopTimer(){
+ currentTime = 0;
+ run = false;
+ }
+
+ private void init(){
+ TimeBehaviour.Instance.AddTimer(this);
+ }
+
+ private void InvokeTimerFinished(){
+ var handler = TimerFinished;
+ if (handler == null) {
+ return;
+ }
+ handler(this, null);
+ }
+}
diff --git a/Assets/Scripts/Samples/BehaviourEventArgs.cs b/Assets/Scripts/Samples/BehaviourEventArgs.cs
new file mode 100755
index 0000000..298b0e3
--- /dev/null
+++ b/Assets/Scripts/Samples/BehaviourEventArgs.cs
@@ -0,0 +1,16 @@
+using System;
+using UnityEngine;
+
+public class BehaviourEventArgs : EventArgs where T : MonoBehaviour
+{
+ public BehaviourEventArgs(T behaviour) {
+ Behaviour = behaviour;
+ }
+
+ public T Behaviour {
+ get;
+ private set;
+ }
+}
+
+
diff --git a/Assets/Scripts/Samples/SampleMovementController.cs b/Assets/Scripts/Samples/SampleMovementController.cs
new file mode 100755
index 0000000..9e983b7
--- /dev/null
+++ b/Assets/Scripts/Samples/SampleMovementController.cs
@@ -0,0 +1,50 @@
+using System;
+using UnityEngine;
+
+
+/* UNTESTET
+public class SampleMovmentController : EntityController
+{
+ private readonly Vector3 targetPosition;
+ private bool lookAt;
+
+ public LinearMovementController(Vector3 targetPosition)
+ : this(targetPosition, true) { }
+
+ public LinearMovementController(Vector3 targetPosition, bool lookAt) {
+ this.lookAt = lookAt;
+ this.targetPosition = targetPosition;
+ }
+
+ protected override void UpdateOverride (EntityBehaviour entity)
+ {
+ if (IsFinished || entity == null) {
+ return;
+ }
+
+ var isCloseEnough = entity.transform.position.IsCloseEnoughTo(targetPosition);
+ if (isCloseEnough) {
+ return;
+ }
+
+ // v = s / t
+ // s = v * t
+ var currentPosition = entity.transform.position;
+
+ var direction = targetPosition - currentPosition;
+
+ var normalizedDirection = direction;
+ normalizedDirection.Normalize();
+
+ var offset = entity.Speed * Time.deltaTime;
+ var movementVector = normalizedDirection * offset;
+
+ entity.transform.position = entity.transform.position + movementVector;
+ if (lookAt) {
+ entity.gameObject.transform.LookAt(entity.transform.position + normalizedDirection);
+ }
+ }
+}
+*/
+
+
diff --git a/Assets/Scripts/Samples/ScreenCamera_sample.prefab b/Assets/Scripts/Samples/ScreenCamera_sample.prefab
new file mode 100755
index 0000000..b88c318
Binary files /dev/null and b/Assets/Scripts/Samples/ScreenCamera_sample.prefab differ
diff --git a/Assets/Scripts/Storage_Module/LocalStorage.cs b/Assets/Scripts/Storage_Module/LocalStorage.cs
new file mode 100755
index 0000000..5af2195
--- /dev/null
+++ b/Assets/Scripts/Storage_Module/LocalStorage.cs
@@ -0,0 +1,64 @@
+using UnityEngine;
+using System.Collections;
+using System.Text;
+using System.IO;
+using System;
+
+public class LocalStorage {
+ public const int BUF_SIZE = 64;
+ private static UTF8Encoding enc = new UTF8Encoding();
+ /*
+ * Writes (and creates if necessary) a file in local storage
+ * and fills it with the content of a byte array.
+ */
+ public static void WriteBinaryFile(string name, byte[] data) {
+ var w = new BinaryWriter(File.Open(getLocalStoragePath()+"/"+name, FileMode.Create));
+ w.Write(data);
+ w.Close();
+ }
+
+ /*
+ * Reads a whole file from local storage into an byte array.
+ *
+ * The file name is appended to the local storage path and opened
+ * read-only.
+ * The file is read in BUF_SIZE chunks (64 bytes by default).
+ */
+ public static byte[] ReadBinaryFile(string name) {
+ var r = new BinaryReader(File.Open(getLocalStoragePath()+"/"+name, FileMode.Open));
+ byte[] result = new byte[0];
+ byte[] buf = new byte[BUF_SIZE];
+ int read, count = 0;;
+ do {
+ //read = r.Read(buf, count*BUF_SIZE, BUF_SIZE);
+ read = r.Read(buf, 0, BUF_SIZE);
+ byte[] new_result = new byte[count*BUF_SIZE + read];
+ Array.Copy(result, 0, new_result, 0, count*BUF_SIZE);
+ Array.Copy(buf, 0, new_result, count*BUF_SIZE, read);
+ result = new_result;
+ count++;
+ } while (read == BUF_SIZE);
+ r.Close();
+ return result;
+ }
+
+ /*
+ * Reads a whole UTF8 formatted file from local storage into a string.
+ */
+ public static string ReadUTF8File(string name) {
+ var data = ReadBinaryFile(name);
+ return enc.GetString(data);
+ }
+
+ /**
+ * Writes (and creates if necessary) an UTF8 formatted file in local
+ * storage and fills it with the content of the string.
+ */
+ public static void WriteUTF8File(string name, string data) {
+ WriteBinaryFile(name, enc.GetBytes(data));
+ }
+
+ private static string getLocalStoragePath() {
+ return Application.persistentDataPath;
+ }
+}
diff --git a/Assets/Scripts/Unity_Extensions/_FloatExtensions.cs b/Assets/Scripts/Unity_Extensions/_FloatExtensions.cs
new file mode 100755
index 0000000..36a1273
--- /dev/null
+++ b/Assets/Scripts/Unity_Extensions/_FloatExtensions.cs
@@ -0,0 +1,14 @@
+using System;
+
+public static class _FloatExtensions
+{
+ public static float ToRadians(this float degrees){
+ return (float) (degrees * Math.PI / 180);
+ }
+
+ public static float ToDegrees(this float radians){
+ return (float) (radians / Math.PI * 180);
+ }
+}
+
+
diff --git a/Assets/Scripts/Unity_Extensions/_RectExtension.cs b/Assets/Scripts/Unity_Extensions/_RectExtension.cs
new file mode 100755
index 0000000..124f539
--- /dev/null
+++ b/Assets/Scripts/Unity_Extensions/_RectExtension.cs
@@ -0,0 +1,12 @@
+using UnityEngine;
+using System.Collections;
+
+public static class _RectExtension {
+
+ public static Rect AddPosition(this Rect rect, Rect rect2){
+ rect.x += rect2.x;
+ rect.y += rect2.y;
+ return rect;
+ }
+
+}
diff --git a/Assets/Scripts/Unity_Extensions/_Vector2Extensions.cs b/Assets/Scripts/Unity_Extensions/_Vector2Extensions.cs
new file mode 100755
index 0000000..3d12967
--- /dev/null
+++ b/Assets/Scripts/Unity_Extensions/_Vector2Extensions.cs
@@ -0,0 +1,15 @@
+using System;
+using UnityEngine;
+
+ public static class _Vector2Extensions
+ {
+ public static Vector2 Rotate(this Vector2 point, float degrees)
+ {
+ var radians = degrees.ToRadians();
+ var x = (float) (Math.Cos(radians) * point.x - Math.Sin(radians) * point.y);
+ var y = (float) (Math.Sin(radians) * point.x + Math.Cos(radians) * point.y);
+ return new Vector2(x, y);
+ }
+ }
+
+
diff --git a/Assets/Scripts/Unity_Extensions/_Vector3Extensions.cs b/Assets/Scripts/Unity_Extensions/_Vector3Extensions.cs
new file mode 100755
index 0000000..c3401ce
--- /dev/null
+++ b/Assets/Scripts/Unity_Extensions/_Vector3Extensions.cs
@@ -0,0 +1,11 @@
+using System;
+using UnityEngine;
+
+public static class _Vector3Extensions
+{
+ public static Vector2 ToVector2(this Vector3 vec) {
+ return new Vector2(vec.x,vec.y);
+ }
+}
+
+
diff --git a/Assets/Scripts/Facebook.cs b/Assets/Scripts/Web_Module/Facebook.cs
old mode 100644
new mode 100755
similarity index 88%
rename from Assets/Scripts/Facebook.cs
rename to Assets/Scripts/Web_Module/Facebook.cs
index ee3c3c7..b30436b
--- a/Assets/Scripts/Facebook.cs
+++ b/Assets/Scripts/Web_Module/Facebook.cs
@@ -1,6 +1,5 @@
using UnityEngine;
using System.Runtime.InteropServices;
-using System;
public class Facebook : MonoBehaviour {
public string AppId;
@@ -105,5 +104,11 @@ private static void _deleteSession() {}
extern static private void _graphRequest(string methodname, string[] param, string method);
[System.Runtime.InteropServices.DllImport("__Internal")]
extern static private void _deleteSession();
+ #else
+ private static void _init(string AppId) {}
+ private static void _authorize(int permissions) {getInstance().loggedOut();}
+ private static void _logout() {getInstance().loggedOut();}
+ private static void _graphRequest(string methodname, string[] param, string method) {getInstance().requestFailed("Not implemented");}
+ private static void _deleteSession() {}
#endif
}
diff --git a/Library/AssetImportState b/Library/AssetImportState
old mode 100644
new mode 100755
index da864f6..f82f7e9
--- a/Library/AssetImportState
+++ b/Library/AssetImportState
@@ -1 +1 @@
-9;0
\ No newline at end of file
+2;0
\ No newline at end of file
diff --git a/Library/EditorUserBuildSettings.asset b/Library/EditorUserBuildSettings.asset
old mode 100644
new mode 100755
index 7aa5a3b..be2286f
Binary files a/Library/EditorUserBuildSettings.asset and b/Library/EditorUserBuildSettings.asset differ
diff --git a/Library/InspectorExpandedItems.asset b/Library/InspectorExpandedItems.asset
old mode 100644
new mode 100755
index 2c4f9d6..936ba5a
Binary files a/Library/InspectorExpandedItems.asset and b/Library/InspectorExpandedItems.asset differ
diff --git a/Library/ScriptMapper b/Library/ScriptMapper
old mode 100644
new mode 100755
index 68ea87f..f203a51
Binary files a/Library/ScriptMapper and b/Library/ScriptMapper differ
diff --git a/Library/expandedItems b/Library/expandedItems
old mode 100644
new mode 100755
index cefc0cc..ef89f2f
Binary files a/Library/expandedItems and b/Library/expandedItems differ
diff --git a/Library/guidmapper b/Library/guidmapper
old mode 100644
new mode 100755
index 4d03f65..80355d8
Binary files a/Library/guidmapper and b/Library/guidmapper differ
diff --git a/Library/metadata/00/00000000000000001000000000000000 b/Library/metadata/00/00000000000000001000000000000000
old mode 100644
new mode 100755
index 4578bb9..9aceffb
Binary files a/Library/metadata/00/00000000000000001000000000000000 and b/Library/metadata/00/00000000000000001000000000000000 differ
diff --git a/Library/metadata/00/00000000000000002000000000000000 b/Library/metadata/00/00000000000000002000000000000000
old mode 100644
new mode 100755
index 5ffe1a3..62123ec
Binary files a/Library/metadata/00/00000000000000002000000000000000 and b/Library/metadata/00/00000000000000002000000000000000 differ
diff --git a/Library/metadata/00/00000000000000003000000000000000 b/Library/metadata/00/00000000000000003000000000000000
old mode 100644
new mode 100755
index 7287559..cd64c2f
Binary files a/Library/metadata/00/00000000000000003000000000000000 and b/Library/metadata/00/00000000000000003000000000000000 differ
diff --git a/Library/metadata/00/00000000000000004000000000000000 b/Library/metadata/00/00000000000000004000000000000000
old mode 100644
new mode 100755
index 0abb17c..bac864b
Binary files a/Library/metadata/00/00000000000000004000000000000000 and b/Library/metadata/00/00000000000000004000000000000000 differ
diff --git a/Library/metadata/00/00000000000000005000000000000000 b/Library/metadata/00/00000000000000005000000000000000
old mode 100644
new mode 100755
index 9cb95ea..634e29d
Binary files a/Library/metadata/00/00000000000000005000000000000000 and b/Library/metadata/00/00000000000000005000000000000000 differ
diff --git a/Library/metadata/00/00000000000000006000000000000000 b/Library/metadata/00/00000000000000006000000000000000
old mode 100644
new mode 100755
index ae80af4..9d8d2e6
Binary files a/Library/metadata/00/00000000000000006000000000000000 and b/Library/metadata/00/00000000000000006000000000000000 differ
diff --git a/Library/metadata/00/00000000000000007000000000000000 b/Library/metadata/00/00000000000000007000000000000000
old mode 100644
new mode 100755
index 3d30c8d..6b666be
Binary files a/Library/metadata/00/00000000000000007000000000000000 and b/Library/metadata/00/00000000000000007000000000000000 differ
diff --git a/Library/metadata/00/00000000000000008000000000000000 b/Library/metadata/00/00000000000000008000000000000000
old mode 100644
new mode 100755
index 0e7041c..8d6cd03
Binary files a/Library/metadata/00/00000000000000008000000000000000 and b/Library/metadata/00/00000000000000008000000000000000 differ
diff --git a/Library/metadata/00/00000000000000009000000000000000 b/Library/metadata/00/00000000000000009000000000000000
old mode 100644
new mode 100755
index 07e9dd8..a9587dc
Binary files a/Library/metadata/00/00000000000000009000000000000000 and b/Library/metadata/00/00000000000000009000000000000000 differ
diff --git a/Library/metadata/00/0000000000000000a000000000000000 b/Library/metadata/00/0000000000000000a000000000000000
old mode 100644
new mode 100755
index 1f805df..2c7c8e5
Binary files a/Library/metadata/00/0000000000000000a000000000000000 and b/Library/metadata/00/0000000000000000a000000000000000 differ
diff --git a/Library/metadata/00/0000000000000000b000000000000000 b/Library/metadata/00/0000000000000000b000000000000000
old mode 100644
new mode 100755
index d902849..c84f76e
Binary files a/Library/metadata/00/0000000000000000b000000000000000 and b/Library/metadata/00/0000000000000000b000000000000000 differ
diff --git a/Library/metadata/00/0000000000000000c000000000000000 b/Library/metadata/00/0000000000000000c000000000000000
old mode 100644
new mode 100755
index c1570ab..16ff710
Binary files a/Library/metadata/00/0000000000000000c000000000000000 and b/Library/metadata/00/0000000000000000c000000000000000 differ
diff --git a/Library/metadata/00/00380c23ce9724d5b81f088c57abf158 b/Library/metadata/00/00380c23ce9724d5b81f088c57abf158
deleted file mode 100644
index 0702ef4..0000000
Binary files a/Library/metadata/00/00380c23ce9724d5b81f088c57abf158 and /dev/null differ
diff --git a/Library/metadata/05/05e997c68ee1b442fbcbe517f5ddca4e b/Library/metadata/01/01f201bc85686b34d8a91da378db9a1d
old mode 100644
new mode 100755
similarity index 90%
rename from Library/metadata/05/05e997c68ee1b442fbcbe517f5ddca4e
rename to Library/metadata/01/01f201bc85686b34d8a91da378db9a1d
index 71ab7b0..1da8ed6
Binary files a/Library/metadata/05/05e997c68ee1b442fbcbe517f5ddca4e and b/Library/metadata/01/01f201bc85686b34d8a91da378db9a1d differ
diff --git a/Library/metadata/01/01f8d90061cc0cb4c8119480cea409a3 b/Library/metadata/01/01f8d90061cc0cb4c8119480cea409a3
new file mode 100755
index 0000000..a2ac826
Binary files /dev/null and b/Library/metadata/01/01f8d90061cc0cb4c8119480cea409a3 differ
diff --git a/Library/metadata/03/038cfba9c59da46bc87e6b685ed7d705 b/Library/metadata/03/038cfba9c59da46bc87e6b685ed7d705
deleted file mode 100644
index d00511d..0000000
Binary files a/Library/metadata/03/038cfba9c59da46bc87e6b685ed7d705 and /dev/null differ
diff --git a/Library/metadata/21/218c7b9c8aeed41cca0d621632047733 b/Library/metadata/03/03ecbc6d1d5a44d4d86ba12fd101bfc2
old mode 100644
new mode 100755
similarity index 73%
rename from Library/metadata/21/218c7b9c8aeed41cca0d621632047733
rename to Library/metadata/03/03ecbc6d1d5a44d4d86ba12fd101bfc2
index f3c9869..82288d7
Binary files a/Library/metadata/21/218c7b9c8aeed41cca0d621632047733 and b/Library/metadata/03/03ecbc6d1d5a44d4d86ba12fd101bfc2 differ
diff --git a/Library/metadata/05/056d95cc5950feb4bb6df8d72b2c5bc9 b/Library/metadata/05/056d95cc5950feb4bb6df8d72b2c5bc9
new file mode 100755
index 0000000..7bded8c
Binary files /dev/null and b/Library/metadata/05/056d95cc5950feb4bb6df8d72b2c5bc9 differ
diff --git a/Library/metadata/06/06092839f9a404844b55a963be16cbf9 b/Library/metadata/06/06092839f9a404844b55a963be16cbf9
deleted file mode 100644
index 6d5d01a..0000000
Binary files a/Library/metadata/06/06092839f9a404844b55a963be16cbf9 and /dev/null differ
diff --git a/Library/metadata/07/07229dbbde2824e078596bea1a9f4814 b/Library/metadata/07/07229dbbde2824e078596bea1a9f4814
deleted file mode 100644
index 2aabd29..0000000
Binary files a/Library/metadata/07/07229dbbde2824e078596bea1a9f4814 and /dev/null differ
diff --git a/Library/metadata/07/072743a6dcf09194a863f717feb4a170 b/Library/metadata/07/072743a6dcf09194a863f717feb4a170
new file mode 100755
index 0000000..2ed25d3
Binary files /dev/null and b/Library/metadata/07/072743a6dcf09194a863f717feb4a170 differ
diff --git a/Library/metadata/07/07f217e942a5c5e46ad842354fdc651d b/Library/metadata/07/07f217e942a5c5e46ad842354fdc651d
new file mode 100755
index 0000000..432ba5c
Binary files /dev/null and b/Library/metadata/07/07f217e942a5c5e46ad842354fdc651d differ
diff --git a/Library/metadata/61/61f074b0d27a64a5fb3772e35ffce168 b/Library/metadata/08/08ec628b35cc8654bb7775ad8ee76c95
old mode 100644
new mode 100755
similarity index 92%
rename from Library/metadata/61/61f074b0d27a64a5fb3772e35ffce168
rename to Library/metadata/08/08ec628b35cc8654bb7775ad8ee76c95
index 13409d9..81de99e
Binary files a/Library/metadata/61/61f074b0d27a64a5fb3772e35ffce168 and b/Library/metadata/08/08ec628b35cc8654bb7775ad8ee76c95 differ
diff --git a/Library/metadata/09/0928248368edf41b7a927ab1e67a0318 b/Library/metadata/09/0928248368edf41b7a927ab1e67a0318
old mode 100644
new mode 100755
index 90ea4d4..f06294a
Binary files a/Library/metadata/09/0928248368edf41b7a927ab1e67a0318 and b/Library/metadata/09/0928248368edf41b7a927ab1e67a0318 differ
diff --git a/Library/metadata/09/0973d9a626de05c49b2558b4ef652fdd b/Library/metadata/09/0973d9a626de05c49b2558b4ef652fdd
new file mode 100755
index 0000000..207b0eb
Binary files /dev/null and b/Library/metadata/09/0973d9a626de05c49b2558b4ef652fdd differ
diff --git a/Library/metadata/0b/0b06ed4fef7fb4e8fae61d235fe083ae b/Library/metadata/0b/0b06ed4fef7fb4e8fae61d235fe083ae
old mode 100644
new mode 100755
index 8322503..2019b56
Binary files a/Library/metadata/0b/0b06ed4fef7fb4e8fae61d235fe083ae and b/Library/metadata/0b/0b06ed4fef7fb4e8fae61d235fe083ae differ
diff --git a/Library/metadata/75/75f2a4d11fa14457e8cfa19f3b743869 b/Library/metadata/0e/0e04a5ee27d473a44a5be6c0dcc35d52
old mode 100644
new mode 100755
similarity index 73%
rename from Library/metadata/75/75f2a4d11fa14457e8cfa19f3b743869
rename to Library/metadata/0e/0e04a5ee27d473a44a5be6c0dcc35d52
index 4c2a532..77a566e
Binary files a/Library/metadata/75/75f2a4d11fa14457e8cfa19f3b743869 and b/Library/metadata/0e/0e04a5ee27d473a44a5be6c0dcc35d52 differ
diff --git a/Library/metadata/0e/0e6e31470781d4237a0967451f9e41b3 b/Library/metadata/0e/0e6e31470781d4237a0967451f9e41b3
deleted file mode 100644
index a2bae54..0000000
Binary files a/Library/metadata/0e/0e6e31470781d4237a0967451f9e41b3 and /dev/null differ
diff --git a/Library/metadata/14/143e54aacaa81461ba11f913732c6560 b/Library/metadata/14/143e54aacaa81461ba11f913732c6560
old mode 100644
new mode 100755
index caffe33..35e8b9b
Binary files a/Library/metadata/14/143e54aacaa81461ba11f913732c6560 and b/Library/metadata/14/143e54aacaa81461ba11f913732c6560 differ
diff --git a/Library/metadata/e6/e6bd994d89ff84d938706a3e7fd2ffb1 b/Library/metadata/15/15a7a61093058f74a8ce86f7c5e2126e
old mode 100644
new mode 100755
similarity index 92%
rename from Library/metadata/e6/e6bd994d89ff84d938706a3e7fd2ffb1
rename to Library/metadata/15/15a7a61093058f74a8ce86f7c5e2126e
index 0f13ea8..aa16750
Binary files a/Library/metadata/e6/e6bd994d89ff84d938706a3e7fd2ffb1 and b/Library/metadata/15/15a7a61093058f74a8ce86f7c5e2126e differ
diff --git a/Library/metadata/16/168ae178463a1a5498254e565fff0b30 b/Library/metadata/16/168ae178463a1a5498254e565fff0b30
new file mode 100755
index 0000000..0773db3
Binary files /dev/null and b/Library/metadata/16/168ae178463a1a5498254e565fff0b30 differ
diff --git a/Library/metadata/16/169af1b2c138188429c648ee19aa184a b/Library/metadata/16/169af1b2c138188429c648ee19aa184a
new file mode 100755
index 0000000..a86d924
Binary files /dev/null and b/Library/metadata/16/169af1b2c138188429c648ee19aa184a differ
diff --git a/Library/metadata/17/170ac057f62b20940917040494dba9f5 b/Library/metadata/17/170ac057f62b20940917040494dba9f5
new file mode 100755
index 0000000..5fe9d6b
Binary files /dev/null and b/Library/metadata/17/170ac057f62b20940917040494dba9f5 differ
diff --git a/Library/metadata/1a/1ad905f2a5ec64cc08328503d4b9ce31 b/Library/metadata/1a/1ad905f2a5ec64cc08328503d4b9ce31
deleted file mode 100644
index 071d038..0000000
Binary files a/Library/metadata/1a/1ad905f2a5ec64cc08328503d4b9ce31 and /dev/null differ
diff --git a/Library/metadata/1a/1adc1dfcbc4c7c940b6bebbd4f512cbf b/Library/metadata/1a/1adc1dfcbc4c7c940b6bebbd4f512cbf
new file mode 100755
index 0000000..603dd1f
Binary files /dev/null and b/Library/metadata/1a/1adc1dfcbc4c7c940b6bebbd4f512cbf differ
diff --git a/Library/metadata/99/99b3bcafe32a7421d90ca4d0f3acc5c4 b/Library/metadata/1b/1b59141107c09164e87b4faabab22b9b
old mode 100644
new mode 100755
similarity index 95%
rename from Library/metadata/99/99b3bcafe32a7421d90ca4d0f3acc5c4
rename to Library/metadata/1b/1b59141107c09164e87b4faabab22b9b
index 1ba6e96..218e8f1
Binary files a/Library/metadata/99/99b3bcafe32a7421d90ca4d0f3acc5c4 and b/Library/metadata/1b/1b59141107c09164e87b4faabab22b9b differ
diff --git a/Library/metadata/1b/1b98ddffeeef24646a74f3909628ac84 b/Library/metadata/1b/1b98ddffeeef24646a74f3909628ac84
deleted file mode 100644
index 0589fbf..0000000
Binary files a/Library/metadata/1b/1b98ddffeeef24646a74f3909628ac84 and /dev/null differ
diff --git a/Library/metadata/1e/1e1b105f528c44f918ed78e28599f0dd b/Library/metadata/1e/1e1b105f528c44f918ed78e28599f0dd
deleted file mode 100644
index da7f461..0000000
Binary files a/Library/metadata/1e/1e1b105f528c44f918ed78e28599f0dd and /dev/null differ
diff --git a/Library/metadata/1e/1e7dd399379d19742acce63a95829823 b/Library/metadata/1e/1e7dd399379d19742acce63a95829823
new file mode 100755
index 0000000..30e7822
Binary files /dev/null and b/Library/metadata/1e/1e7dd399379d19742acce63a95829823 differ
diff --git a/Library/metadata/1e/1eff91b022f824b94bfa5f65d896751e b/Library/metadata/1e/1eff91b022f824b94bfa5f65d896751e
old mode 100644
new mode 100755
index 7ed8137..34b7ddf
Binary files a/Library/metadata/1e/1eff91b022f824b94bfa5f65d896751e and b/Library/metadata/1e/1eff91b022f824b94bfa5f65d896751e differ
diff --git a/Library/metadata/20/205316bdefae37d4d94f8cb63ab7c10d b/Library/metadata/20/205316bdefae37d4d94f8cb63ab7c10d
new file mode 100755
index 0000000..7f85ffb
Binary files /dev/null and b/Library/metadata/20/205316bdefae37d4d94f8cb63ab7c10d differ
diff --git a/Library/metadata/20/2060c4ba03eff4abea5ff3fb3ca15d86 b/Library/metadata/20/2060c4ba03eff4abea5ff3fb3ca15d86
new file mode 100755
index 0000000..d1e26d2
Binary files /dev/null and b/Library/metadata/20/2060c4ba03eff4abea5ff3fb3ca15d86 differ
diff --git a/Library/metadata/23/23dfc8f8268c842daae95cad7c119af1 b/Library/metadata/23/23dfc8f8268c842daae95cad7c119af1
deleted file mode 100644
index 77a57e2..0000000
Binary files a/Library/metadata/23/23dfc8f8268c842daae95cad7c119af1 and /dev/null differ
diff --git a/Library/metadata/24/244165b10e4714bd59799b225c463ee0 b/Library/metadata/24/244165b10e4714bd59799b225c463ee0
old mode 100644
new mode 100755
index e19ffb5..f3928dc
Binary files a/Library/metadata/24/244165b10e4714bd59799b225c463ee0 and b/Library/metadata/24/244165b10e4714bd59799b225c463ee0 differ
diff --git a/Library/metadata/25/25e70861a0c4f0149959cd3eda0be72d b/Library/metadata/25/25e70861a0c4f0149959cd3eda0be72d
new file mode 100755
index 0000000..f5da0c2
Binary files /dev/null and b/Library/metadata/25/25e70861a0c4f0149959cd3eda0be72d differ
diff --git a/Library/metadata/26/2639b407c70904ec3bc10cf8f0da2e1b b/Library/metadata/26/2639b407c70904ec3bc10cf8f0da2e1b
deleted file mode 100644
index ccffc99..0000000
Binary files a/Library/metadata/26/2639b407c70904ec3bc10cf8f0da2e1b and /dev/null differ
diff --git a/Library/metadata/26/267803676899749e98212c8f0891f1fc b/Library/metadata/26/267803676899749e98212c8f0891f1fc
deleted file mode 100644
index 50d6094..0000000
Binary files a/Library/metadata/26/267803676899749e98212c8f0891f1fc and /dev/null differ
diff --git a/Library/metadata/27/273ec8e5bc0934bc4b851a7264b59f10 b/Library/metadata/27/273ec8e5bc0934bc4b851a7264b59f10
deleted file mode 100644
index 8773d61..0000000
Binary files a/Library/metadata/27/273ec8e5bc0934bc4b851a7264b59f10 and /dev/null differ
diff --git a/Library/metadata/27/278ea125c61b243e68dd49285d212abb b/Library/metadata/27/278ea125c61b243e68dd49285d212abb
new file mode 100755
index 0000000..14f12d6
Binary files /dev/null and b/Library/metadata/27/278ea125c61b243e68dd49285d212abb differ
diff --git a/Library/metadata/27/27c1d7eafdf834aa0a091d965a690d5e b/Library/metadata/27/27c1d7eafdf834aa0a091d965a690d5e
deleted file mode 100644
index e536a6f..0000000
Binary files a/Library/metadata/27/27c1d7eafdf834aa0a091d965a690d5e and /dev/null differ
diff --git a/Library/metadata/2a/2aa094b88d12f474885baf9b3feb944e b/Library/metadata/2a/2aa094b88d12f474885baf9b3feb944e
new file mode 100755
index 0000000..22b62fb
Binary files /dev/null and b/Library/metadata/2a/2aa094b88d12f474885baf9b3feb944e differ
diff --git a/Library/metadata/2b/2b17f70b30de84b329371846b52f34a5 b/Library/metadata/2b/2b17f70b30de84b329371846b52f34a5
deleted file mode 100644
index 4995d2a..0000000
Binary files a/Library/metadata/2b/2b17f70b30de84b329371846b52f34a5 and /dev/null differ
diff --git a/Library/metadata/2b/2b50fecc0f21d4cc68d0bb15cdb5e1cf b/Library/metadata/2b/2b50fecc0f21d4cc68d0bb15cdb5e1cf
deleted file mode 100644
index c9816fc..0000000
Binary files a/Library/metadata/2b/2b50fecc0f21d4cc68d0bb15cdb5e1cf and /dev/null differ
diff --git a/Library/metadata/ec/ec029f67244dc4771b3bc614dacb4904 b/Library/metadata/2c/2ca37e437c2f6d148837cce8967d0afe
old mode 100644
new mode 100755
similarity index 95%
rename from Library/metadata/ec/ec029f67244dc4771b3bc614dacb4904
rename to Library/metadata/2c/2ca37e437c2f6d148837cce8967d0afe
index 99ff68c..e81177b
Binary files a/Library/metadata/ec/ec029f67244dc4771b3bc614dacb4904 and b/Library/metadata/2c/2ca37e437c2f6d148837cce8967d0afe differ
diff --git a/Library/metadata/6e/6e4bf482f0a8849eaa949604e61b8a57 b/Library/metadata/2d/2d48cc4defa2de043ac611fa40fd7348
old mode 100644
new mode 100755
similarity index 90%
rename from Library/metadata/6e/6e4bf482f0a8849eaa949604e61b8a57
rename to Library/metadata/2d/2d48cc4defa2de043ac611fa40fd7348
index 32ab926..11ebb99
Binary files a/Library/metadata/6e/6e4bf482f0a8849eaa949604e61b8a57 and b/Library/metadata/2d/2d48cc4defa2de043ac611fa40fd7348 differ
diff --git a/Library/metadata/2d/2dcbd541882c57e4da492b676d905291 b/Library/metadata/2d/2dcbd541882c57e4da492b676d905291
new file mode 100755
index 0000000..ab7e72a
Binary files /dev/null and b/Library/metadata/2d/2dcbd541882c57e4da492b676d905291 differ
diff --git a/Library/metadata/2e/2e652a87a367543408dd32396f18cb55 b/Library/metadata/2e/2e652a87a367543408dd32396f18cb55
deleted file mode 100644
index 984bc78..0000000
Binary files a/Library/metadata/2e/2e652a87a367543408dd32396f18cb55 and /dev/null differ
diff --git a/Library/metadata/2e/2e767587b5e324af2bdee4bb47860003 b/Library/metadata/2e/2e767587b5e324af2bdee4bb47860003
deleted file mode 100644
index 872cf8f..0000000
Binary files a/Library/metadata/2e/2e767587b5e324af2bdee4bb47860003 and /dev/null differ
diff --git a/Library/metadata/ad/ad912fe4e14d84b3ca5101c27aeae9dd b/Library/metadata/2f/2f2831bb0e5e88f4ba4fe81cec864cf3
old mode 100644
new mode 100755
similarity index 92%
rename from Library/metadata/ad/ad912fe4e14d84b3ca5101c27aeae9dd
rename to Library/metadata/2f/2f2831bb0e5e88f4ba4fe81cec864cf3
index 2696948..5efcfa6
Binary files a/Library/metadata/ad/ad912fe4e14d84b3ca5101c27aeae9dd and b/Library/metadata/2f/2f2831bb0e5e88f4ba4fe81cec864cf3 differ
diff --git a/Library/metadata/30/30f11e24dfdd44034bcb143f910f3b13 b/Library/metadata/30/30f11e24dfdd44034bcb143f910f3b13
new file mode 100755
index 0000000..242677c
Binary files /dev/null and b/Library/metadata/30/30f11e24dfdd44034bcb143f910f3b13 differ
diff --git a/Library/metadata/33/330ad3f4aab3848fbbbd5b25ff4757b5 b/Library/metadata/33/330ad3f4aab3848fbbbd5b25ff4757b5
new file mode 100755
index 0000000..671f8dd
Binary files /dev/null and b/Library/metadata/33/330ad3f4aab3848fbbbd5b25ff4757b5 differ
diff --git a/Library/metadata/33/33d440f38293046479a35a51cda1e43c b/Library/metadata/33/33d440f38293046479a35a51cda1e43c
deleted file mode 100644
index 10f12ce..0000000
Binary files a/Library/metadata/33/33d440f38293046479a35a51cda1e43c and /dev/null differ
diff --git a/Library/metadata/31/31baf0855512a41809273dfe69affc33 b/Library/metadata/33/33dfdafdbdb25c4448128c2bc42ff52e
old mode 100644
new mode 100755
similarity index 92%
rename from Library/metadata/31/31baf0855512a41809273dfe69affc33
rename to Library/metadata/33/33dfdafdbdb25c4448128c2bc42ff52e
index 926a998..e5c99df
Binary files a/Library/metadata/31/31baf0855512a41809273dfe69affc33 and b/Library/metadata/33/33dfdafdbdb25c4448128c2bc42ff52e differ
diff --git a/Library/metadata/39/39a0546ffb29041438b5adf6f16404db b/Library/metadata/39/39a0546ffb29041438b5adf6f16404db
new file mode 100755
index 0000000..4a6a61d
Binary files /dev/null and b/Library/metadata/39/39a0546ffb29041438b5adf6f16404db differ
diff --git a/Library/metadata/3a/3a88f2585016e41389afef114c1be68a b/Library/metadata/3a/3a88f2585016e41389afef114c1be68a
deleted file mode 100644
index fa15ecf..0000000
Binary files a/Library/metadata/3a/3a88f2585016e41389afef114c1be68a and /dev/null differ
diff --git a/Library/metadata/3a/3ac399cfe326c433c912f73dcdb44cf3 b/Library/metadata/3a/3ac399cfe326c433c912f73dcdb44cf3
deleted file mode 100644
index fcb1e8c..0000000
Binary files a/Library/metadata/3a/3ac399cfe326c433c912f73dcdb44cf3 and /dev/null differ
diff --git a/Library/metadata/e5/e58930b7b9c074ee6ac47fddc2c7f610 b/Library/metadata/3a/3ad9e267404dbe847aec6c358572ad83
old mode 100644
new mode 100755
similarity index 95%
rename from Library/metadata/e5/e58930b7b9c074ee6ac47fddc2c7f610
rename to Library/metadata/3a/3ad9e267404dbe847aec6c358572ad83
index a9cb06b..9f5598e
Binary files a/Library/metadata/e5/e58930b7b9c074ee6ac47fddc2c7f610 and b/Library/metadata/3a/3ad9e267404dbe847aec6c358572ad83 differ
diff --git a/Library/metadata/3d/3da843199a05c4095a806da7c7fde0e5 b/Library/metadata/3d/3da843199a05c4095a806da7c7fde0e5
new file mode 100755
index 0000000..efe98b4
Binary files /dev/null and b/Library/metadata/3d/3da843199a05c4095a806da7c7fde0e5 differ
diff --git a/Library/metadata/3e/3e22178dc50df4588bc8b8aa0b5252d4 b/Library/metadata/3e/3e22178dc50df4588bc8b8aa0b5252d4
deleted file mode 100644
index ba1bdcd..0000000
Binary files a/Library/metadata/3e/3e22178dc50df4588bc8b8aa0b5252d4 and /dev/null differ
diff --git a/Library/metadata/3f/3f0f55609bd6e48a6bc3e8f8ea24c764 b/Library/metadata/3f/3f0f55609bd6e48a6bc3e8f8ea24c764
deleted file mode 100644
index 73ebea6..0000000
Binary files a/Library/metadata/3f/3f0f55609bd6e48a6bc3e8f8ea24c764 and /dev/null differ
diff --git a/Library/metadata/3f/3f1ad09548c42497c9b44b4a7045c85a b/Library/metadata/3f/3f1ad09548c42497c9b44b4a7045c85a
deleted file mode 100644
index 334081c..0000000
Binary files a/Library/metadata/3f/3f1ad09548c42497c9b44b4a7045c85a and /dev/null differ
diff --git a/Library/metadata/3f/3fd49f2a4c1ff438bb173943a98cc99f b/Library/metadata/3f/3fd49f2a4c1ff438bb173943a98cc99f
deleted file mode 100644
index 28b477f..0000000
Binary files a/Library/metadata/3f/3fd49f2a4c1ff438bb173943a98cc99f and /dev/null differ
diff --git a/Library/metadata/43/436c1d70df085465faf4e7e4ed0a925c b/Library/metadata/43/436c1d70df085465faf4e7e4ed0a925c
deleted file mode 100644
index 3998fe1..0000000
Binary files a/Library/metadata/43/436c1d70df085465faf4e7e4ed0a925c and /dev/null differ
diff --git a/Library/metadata/4a/4a0d55b0221d64471b35de6379486731 b/Library/metadata/4a/4a0d55b0221d64471b35de6379486731
deleted file mode 100644
index 284da15..0000000
Binary files a/Library/metadata/4a/4a0d55b0221d64471b35de6379486731 and /dev/null differ
diff --git a/Library/metadata/4a/4a4eaf027a250894c963ba732ebb5c76 b/Library/metadata/4a/4a4eaf027a250894c963ba732ebb5c76
new file mode 100755
index 0000000..4b0a205
Binary files /dev/null and b/Library/metadata/4a/4a4eaf027a250894c963ba732ebb5c76 differ
diff --git a/Library/metadata/4a/4a769a7bf9f9b4b6a9bfbbad31068abd b/Library/metadata/4a/4a769a7bf9f9b4b6a9bfbbad31068abd
old mode 100644
new mode 100755
index 9d27fd2..41cc4d2
Binary files a/Library/metadata/4a/4a769a7bf9f9b4b6a9bfbbad31068abd and b/Library/metadata/4a/4a769a7bf9f9b4b6a9bfbbad31068abd differ
diff --git a/Library/metadata/29/29a967ff08d72402b9acfb9181a4436d b/Library/metadata/4a/4af8db51e37df754c8e14e05debf5c0b
old mode 100644
new mode 100755
similarity index 90%
rename from Library/metadata/29/29a967ff08d72402b9acfb9181a4436d
rename to Library/metadata/4a/4af8db51e37df754c8e14e05debf5c0b
index 3daed6a..2b1d4df
Binary files a/Library/metadata/29/29a967ff08d72402b9acfb9181a4436d and b/Library/metadata/4a/4af8db51e37df754c8e14e05debf5c0b differ
diff --git a/Library/metadata/4d/4d85a15e1eab1844cad9f467f7611203 b/Library/metadata/4d/4d85a15e1eab1844cad9f467f7611203
new file mode 100755
index 0000000..9eb24b3
Binary files /dev/null and b/Library/metadata/4d/4d85a15e1eab1844cad9f467f7611203 differ
diff --git a/Library/metadata/5a/5a283dd8c33fe41058335d8e3ea09357 b/Library/metadata/4e/4e43d838b13ecd9409eac085fb06328b
old mode 100644
new mode 100755
similarity index 79%
rename from Library/metadata/5a/5a283dd8c33fe41058335d8e3ea09357
rename to Library/metadata/4e/4e43d838b13ecd9409eac085fb06328b
index 579e617..53cdc50
Binary files a/Library/metadata/5a/5a283dd8c33fe41058335d8e3ea09357 and b/Library/metadata/4e/4e43d838b13ecd9409eac085fb06328b differ
diff --git a/Library/metadata/51/51d9db15a2c954e48967afe7a6ae5ed5 b/Library/metadata/51/51d9db15a2c954e48967afe7a6ae5ed5
deleted file mode 100644
index 2081a0b..0000000
Binary files a/Library/metadata/51/51d9db15a2c954e48967afe7a6ae5ed5 and /dev/null differ
diff --git a/Library/metadata/51/51f0c7922eb069d4f86eaed17bc2de40 b/Library/metadata/51/51f0c7922eb069d4f86eaed17bc2de40
new file mode 100755
index 0000000..8c1eb28
Binary files /dev/null and b/Library/metadata/51/51f0c7922eb069d4f86eaed17bc2de40 differ
diff --git a/Library/metadata/52/528c2121d3961ab40b1ff79d4ebf5b1e b/Library/metadata/52/528c2121d3961ab40b1ff79d4ebf5b1e
new file mode 100755
index 0000000..549f02c
Binary files /dev/null and b/Library/metadata/52/528c2121d3961ab40b1ff79d4ebf5b1e differ
diff --git a/Library/metadata/55/553f42de5a737ad45b3e026b9a1bdb45 b/Library/metadata/55/553f42de5a737ad45b3e026b9a1bdb45
new file mode 100755
index 0000000..78b7adc
Binary files /dev/null and b/Library/metadata/55/553f42de5a737ad45b3e026b9a1bdb45 differ
diff --git a/Library/metadata/56/56ba6c0d13455d84b8ddbfadb1000bb9 b/Library/metadata/56/56ba6c0d13455d84b8ddbfadb1000bb9
new file mode 100755
index 0000000..e3b018b
Binary files /dev/null and b/Library/metadata/56/56ba6c0d13455d84b8ddbfadb1000bb9 differ
diff --git a/Library/metadata/57/572eecb8ae4f73e4e8ad4024336dd17f b/Library/metadata/57/572eecb8ae4f73e4e8ad4024336dd17f
new file mode 100755
index 0000000..fb720fd
Binary files /dev/null and b/Library/metadata/57/572eecb8ae4f73e4e8ad4024336dd17f differ
diff --git a/Library/metadata/58/582d9a226a7164309b3160653e2e9f9f b/Library/metadata/58/582d9a226a7164309b3160653e2e9f9f
deleted file mode 100644
index 6b52faf..0000000
Binary files a/Library/metadata/58/582d9a226a7164309b3160653e2e9f9f and /dev/null differ
diff --git a/Library/metadata/58/58919298e211bde43be9308f06f60196 b/Library/metadata/58/58919298e211bde43be9308f06f60196
new file mode 100755
index 0000000..a01a353
Binary files /dev/null and b/Library/metadata/58/58919298e211bde43be9308f06f60196 differ
diff --git a/Library/metadata/58/58b36c88a32fe4b33b89bda5c406a07d b/Library/metadata/58/58b36c88a32fe4b33b89bda5c406a07d
deleted file mode 100644
index 4dd1c4f..0000000
Binary files a/Library/metadata/58/58b36c88a32fe4b33b89bda5c406a07d and /dev/null differ
diff --git a/Library/metadata/58/58c413e0e77b4499f873bab19a7bd951 b/Library/metadata/58/58c413e0e77b4499f873bab19a7bd951
new file mode 100755
index 0000000..2eb4b12
Binary files /dev/null and b/Library/metadata/58/58c413e0e77b4499f873bab19a7bd951 differ
diff --git a/Library/metadata/59/593990c77ca6b4730ba1caa7e2d5bbe2 b/Library/metadata/59/593990c77ca6b4730ba1caa7e2d5bbe2
new file mode 100755
index 0000000..4ed91a4
Binary files /dev/null and b/Library/metadata/59/593990c77ca6b4730ba1caa7e2d5bbe2 differ
diff --git a/Library/metadata/59/593ca2652bfa575498faaad5707882fc b/Library/metadata/59/593ca2652bfa575498faaad5707882fc
new file mode 100755
index 0000000..752a167
Binary files /dev/null and b/Library/metadata/59/593ca2652bfa575498faaad5707882fc differ
diff --git a/Library/metadata/5a/5aad366564455cb4896a574bccdd84d4 b/Library/metadata/5a/5aad366564455cb4896a574bccdd84d4
new file mode 100755
index 0000000..b670a42
Binary files /dev/null and b/Library/metadata/5a/5aad366564455cb4896a574bccdd84d4 differ
diff --git a/Library/metadata/5b/5bfb1c8b5d1204808a275db12f0bdef6 b/Library/metadata/5b/5bfb1c8b5d1204808a275db12f0bdef6
new file mode 100755
index 0000000..ef025cd
Binary files /dev/null and b/Library/metadata/5b/5bfb1c8b5d1204808a275db12f0bdef6 differ
diff --git a/Library/metadata/5c/5c609cfc726d0194da253d2f237a860a b/Library/metadata/5c/5c609cfc726d0194da253d2f237a860a
new file mode 100755
index 0000000..5685c97
Binary files /dev/null and b/Library/metadata/5c/5c609cfc726d0194da253d2f237a860a differ
diff --git a/Library/metadata/5d/5d5e7add77a5ffe46b6ef7218506a14d b/Library/metadata/5d/5d5e7add77a5ffe46b6ef7218506a14d
new file mode 100755
index 0000000..855a36a
Binary files /dev/null and b/Library/metadata/5d/5d5e7add77a5ffe46b6ef7218506a14d differ
diff --git a/Library/metadata/5e/5eb4433691e8b4ee3b180158fa5d9acc b/Library/metadata/5e/5eb4433691e8b4ee3b180158fa5d9acc
new file mode 100755
index 0000000..f29c45b
Binary files /dev/null and b/Library/metadata/5e/5eb4433691e8b4ee3b180158fa5d9acc differ
diff --git a/Library/metadata/5f/5f048db4008f79a4a83f269ad0e10839 b/Library/metadata/5f/5f048db4008f79a4a83f269ad0e10839
new file mode 100755
index 0000000..702b00b
Binary files /dev/null and b/Library/metadata/5f/5f048db4008f79a4a83f269ad0e10839 differ
diff --git a/Library/metadata/5f/5f966e7a1adfc1e499324c1302afcd2c b/Library/metadata/5f/5f966e7a1adfc1e499324c1302afcd2c
new file mode 100755
index 0000000..1c9506a
Binary files /dev/null and b/Library/metadata/5f/5f966e7a1adfc1e499324c1302afcd2c differ
diff --git a/Library/metadata/5f/5fba5901d3b7f4f679ec3c20048e5a88 b/Library/metadata/5f/5fba5901d3b7f4f679ec3c20048e5a88
deleted file mode 100644
index 8af8191..0000000
Binary files a/Library/metadata/5f/5fba5901d3b7f4f679ec3c20048e5a88 and /dev/null differ
diff --git a/Library/metadata/60/6019750cb794e5949b41ce7216947111 b/Library/metadata/60/6019750cb794e5949b41ce7216947111
new file mode 100755
index 0000000..a031b7a
Binary files /dev/null and b/Library/metadata/60/6019750cb794e5949b41ce7216947111 differ
diff --git a/Library/metadata/36/365da4d24b1ff4d0fae604dd40917765 b/Library/metadata/60/606025385a29aa8409dce85c202f9121
old mode 100644
new mode 100755
similarity index 92%
rename from Library/metadata/36/365da4d24b1ff4d0fae604dd40917765
rename to Library/metadata/60/606025385a29aa8409dce85c202f9121
index 993e665..2485497
Binary files a/Library/metadata/36/365da4d24b1ff4d0fae604dd40917765 and b/Library/metadata/60/606025385a29aa8409dce85c202f9121 differ
diff --git a/Library/metadata/60/607fb7f9c74964a3ab8904d891fe53c9 b/Library/metadata/60/607fb7f9c74964a3ab8904d891fe53c9
deleted file mode 100644
index a3d30f9..0000000
Binary files a/Library/metadata/60/607fb7f9c74964a3ab8904d891fe53c9 and /dev/null differ
diff --git a/Library/metadata/cf/cf4852dcb194c4ebf8099c7360d9a4cc b/Library/metadata/60/60ef66f65fa8b17459a14ad99fc2b09e
old mode 100644
new mode 100755
similarity index 92%
rename from Library/metadata/cf/cf4852dcb194c4ebf8099c7360d9a4cc
rename to Library/metadata/60/60ef66f65fa8b17459a14ad99fc2b09e
index e9b8fda..e1e7906
Binary files a/Library/metadata/cf/cf4852dcb194c4ebf8099c7360d9a4cc and b/Library/metadata/60/60ef66f65fa8b17459a14ad99fc2b09e differ
diff --git a/Library/metadata/63/63af9b32d04b6de42bfec16ee7f259bc b/Library/metadata/63/63af9b32d04b6de42bfec16ee7f259bc
new file mode 100755
index 0000000..98b0700
Binary files /dev/null and b/Library/metadata/63/63af9b32d04b6de42bfec16ee7f259bc differ
diff --git a/Library/metadata/67/671eaefe85e5f96478fd4177385d8e7c b/Library/metadata/67/671eaefe85e5f96478fd4177385d8e7c
new file mode 100755
index 0000000..f7f9fb1
Binary files /dev/null and b/Library/metadata/67/671eaefe85e5f96478fd4177385d8e7c differ
diff --git a/Library/metadata/68/680882589f53e46efb4fb586603788d1 b/Library/metadata/68/680882589f53e46efb4fb586603788d1
deleted file mode 100644
index 402c0fc..0000000
Binary files a/Library/metadata/68/680882589f53e46efb4fb586603788d1 and /dev/null differ
diff --git a/Library/metadata/68/68b83c2b8dbb36e4d85fcc1fc42521a7 b/Library/metadata/68/68b83c2b8dbb36e4d85fcc1fc42521a7
new file mode 100755
index 0000000..db0519e
Binary files /dev/null and b/Library/metadata/68/68b83c2b8dbb36e4d85fcc1fc42521a7 differ
diff --git a/Library/metadata/d7/d7b812b1d3dd947429dc9bb752bd9da7 b/Library/metadata/68/68ed60b63c1c505428e8cd649a36bda7
old mode 100644
new mode 100755
similarity index 92%
rename from Library/metadata/d7/d7b812b1d3dd947429dc9bb752bd9da7
rename to Library/metadata/68/68ed60b63c1c505428e8cd649a36bda7
index 939e139..9b6ede9
Binary files a/Library/metadata/d7/d7b812b1d3dd947429dc9bb752bd9da7 and b/Library/metadata/68/68ed60b63c1c505428e8cd649a36bda7 differ
diff --git a/Library/metadata/69/6952622deb25dda49a7aff25053ee778 b/Library/metadata/69/6952622deb25dda49a7aff25053ee778
new file mode 100755
index 0000000..339a5a1
Binary files /dev/null and b/Library/metadata/69/6952622deb25dda49a7aff25053ee778 differ
diff --git a/Library/metadata/51/51df1c05c47a141fb94decc21d0e31c5 b/Library/metadata/69/69e268b3779124146a25a8b92e233f07
old mode 100644
new mode 100755
similarity index 73%
rename from Library/metadata/51/51df1c05c47a141fb94decc21d0e31c5
rename to Library/metadata/69/69e268b3779124146a25a8b92e233f07
index 766047b..4c63c4f
Binary files a/Library/metadata/51/51df1c05c47a141fb94decc21d0e31c5 and b/Library/metadata/69/69e268b3779124146a25a8b92e233f07 differ
diff --git a/Library/metadata/fc/fc444dca9fdaa48aca6833d6c4756860 b/Library/metadata/6a/6a1768f6022bd82488aea60320067221
old mode 100644
new mode 100755
similarity index 95%
rename from Library/metadata/fc/fc444dca9fdaa48aca6833d6c4756860
rename to Library/metadata/6a/6a1768f6022bd82488aea60320067221
index 46620c0..4a30392
Binary files a/Library/metadata/fc/fc444dca9fdaa48aca6833d6c4756860 and b/Library/metadata/6a/6a1768f6022bd82488aea60320067221 differ
diff --git a/Library/metadata/6a/6a4fb90b52417124ea5b4ce3e5808142 b/Library/metadata/6a/6a4fb90b52417124ea5b4ce3e5808142
new file mode 100755
index 0000000..48ac3e1
Binary files /dev/null and b/Library/metadata/6a/6a4fb90b52417124ea5b4ce3e5808142 differ
diff --git a/Library/metadata/6d/6d9ef9ad6b6a7401b84db50f3af59275 b/Library/metadata/6d/6d9ef9ad6b6a7401b84db50f3af59275
deleted file mode 100644
index 2264485..0000000
Binary files a/Library/metadata/6d/6d9ef9ad6b6a7401b84db50f3af59275 and /dev/null differ
diff --git a/Library/metadata/6f/6fbecec5670d04cefaa95aed8779a4b0 b/Library/metadata/6f/6fbecec5670d04cefaa95aed8779a4b0
deleted file mode 100644
index f9b1a4d..0000000
Binary files a/Library/metadata/6f/6fbecec5670d04cefaa95aed8779a4b0 and /dev/null differ
diff --git a/Library/metadata/6f/6fe3b7f8365b64700b68a6ef6ed39be1 b/Library/metadata/6f/6fe3b7f8365b64700b68a6ef6ed39be1
deleted file mode 100644
index 1fbb715..0000000
Binary files a/Library/metadata/6f/6fe3b7f8365b64700b68a6ef6ed39be1 and /dev/null differ
diff --git a/Library/metadata/70/700062c6709a74133bdae3fd761f7d7a b/Library/metadata/70/700062c6709a74133bdae3fd761f7d7a
old mode 100644
new mode 100755
index c910152..e87d665
Binary files a/Library/metadata/70/700062c6709a74133bdae3fd761f7d7a and b/Library/metadata/70/700062c6709a74133bdae3fd761f7d7a differ
diff --git a/Library/metadata/71/7162d6fd190ba01429874b985a812854 b/Library/metadata/71/7162d6fd190ba01429874b985a812854
new file mode 100755
index 0000000..352d067
Binary files /dev/null and b/Library/metadata/71/7162d6fd190ba01429874b985a812854 differ
diff --git a/Library/metadata/73/7311bfc55cc56cd4aaa8146b09e41406 b/Library/metadata/73/7311bfc55cc56cd4aaa8146b09e41406
new file mode 100755
index 0000000..9d56428
Binary files /dev/null and b/Library/metadata/73/7311bfc55cc56cd4aaa8146b09e41406 differ
diff --git a/Library/metadata/74/74b0bc2143cb741388121e9b2b6c01c4 b/Library/metadata/74/74b0bc2143cb741388121e9b2b6c01c4
deleted file mode 100644
index 6c610a8..0000000
Binary files a/Library/metadata/74/74b0bc2143cb741388121e9b2b6c01c4 and /dev/null differ
diff --git a/Library/metadata/76/7631baa1112e59045997b8584bd3ca85 b/Library/metadata/76/7631baa1112e59045997b8584bd3ca85
new file mode 100755
index 0000000..7c9e56d
Binary files /dev/null and b/Library/metadata/76/7631baa1112e59045997b8584bd3ca85 differ
diff --git a/Library/metadata/7a/7a1695f8a6e704f758fe94dcc954f21d b/Library/metadata/7a/7a1695f8a6e704f758fe94dcc954f21d
deleted file mode 100644
index 8ffa403..0000000
Binary files a/Library/metadata/7a/7a1695f8a6e704f758fe94dcc954f21d and /dev/null differ
diff --git a/Library/metadata/7b/7baa2a0515a41d842975a24e9480af07 b/Library/metadata/7b/7baa2a0515a41d842975a24e9480af07
new file mode 100755
index 0000000..60de25d
Binary files /dev/null and b/Library/metadata/7b/7baa2a0515a41d842975a24e9480af07 differ
diff --git a/Library/metadata/7c/7c3931af00b17984a9bc75a687693cde b/Library/metadata/7c/7c3931af00b17984a9bc75a687693cde
new file mode 100755
index 0000000..17864d5
Binary files /dev/null and b/Library/metadata/7c/7c3931af00b17984a9bc75a687693cde differ
diff --git a/Library/metadata/7c/7cf57b25be3737940876717c7803924f b/Library/metadata/7c/7cf57b25be3737940876717c7803924f
new file mode 100755
index 0000000..dfe62cc
Binary files /dev/null and b/Library/metadata/7c/7cf57b25be3737940876717c7803924f differ
diff --git a/Library/metadata/83/8346ebd8c4006c345b4c96ac01e67eea b/Library/metadata/83/8346ebd8c4006c345b4c96ac01e67eea
new file mode 100755
index 0000000..c7a1c49
Binary files /dev/null and b/Library/metadata/83/8346ebd8c4006c345b4c96ac01e67eea differ
diff --git a/Library/metadata/84/84340e2a8774a4769b1a6d43d15d5b44 b/Library/metadata/84/84340e2a8774a4769b1a6d43d15d5b44
old mode 100644
new mode 100755
index 190a50d..e38ed58
Binary files a/Library/metadata/84/84340e2a8774a4769b1a6d43d15d5b44 and b/Library/metadata/84/84340e2a8774a4769b1a6d43d15d5b44 differ
diff --git a/Library/metadata/86/86432d023f32990439c986815f0f4ec2 b/Library/metadata/86/86432d023f32990439c986815f0f4ec2
new file mode 100755
index 0000000..9d801a9
Binary files /dev/null and b/Library/metadata/86/86432d023f32990439c986815f0f4ec2 differ
diff --git a/Library/metadata/86/86fecd51486934fbdb4a2c56d4a207d3 b/Library/metadata/86/86fecd51486934fbdb4a2c56d4a207d3
new file mode 100755
index 0000000..34006ad
Binary files /dev/null and b/Library/metadata/86/86fecd51486934fbdb4a2c56d4a207d3 differ
diff --git a/Library/metadata/88/8804dbfe2618b5e40994775cccb22ddd b/Library/metadata/88/8804dbfe2618b5e40994775cccb22ddd
new file mode 100755
index 0000000..83c6f54
Binary files /dev/null and b/Library/metadata/88/8804dbfe2618b5e40994775cccb22ddd differ
diff --git a/Library/metadata/88/88e993441211447c9baae22c8fe2b65b b/Library/metadata/88/88e993441211447c9baae22c8fe2b65b
new file mode 100755
index 0000000..796b16f
Binary files /dev/null and b/Library/metadata/88/88e993441211447c9baae22c8fe2b65b differ
diff --git a/Library/metadata/8b/8bdcaadd3ceed5f41b7eef1176fbc70d b/Library/metadata/8b/8bdcaadd3ceed5f41b7eef1176fbc70d
new file mode 100755
index 0000000..a064781
Binary files /dev/null and b/Library/metadata/8b/8bdcaadd3ceed5f41b7eef1176fbc70d differ
diff --git a/Library/metadata/8c/8c8cb9e0375274333b08dd3d6f47a7d5 b/Library/metadata/8c/8c8cb9e0375274333b08dd3d6f47a7d5
deleted file mode 100644
index 7e970d4..0000000
Binary files a/Library/metadata/8c/8c8cb9e0375274333b08dd3d6f47a7d5 and /dev/null differ
diff --git a/Library/metadata/8f/8f7e6720575394345833da0b523c734a b/Library/metadata/8f/8f7e6720575394345833da0b523c734a
deleted file mode 100644
index a288f2a..0000000
Binary files a/Library/metadata/8f/8f7e6720575394345833da0b523c734a and /dev/null differ
diff --git a/Library/metadata/8f/8fa68ef9423814b1b9177a14296bc80e b/Library/metadata/8f/8fa68ef9423814b1b9177a14296bc80e
deleted file mode 100644
index a17651a..0000000
Binary files a/Library/metadata/8f/8fa68ef9423814b1b9177a14296bc80e and /dev/null differ
diff --git a/Library/metadata/8f/8fc2d88dd361849808ad4e863b432f00 b/Library/metadata/8f/8fc2d88dd361849808ad4e863b432f00
new file mode 100755
index 0000000..4a05254
Binary files /dev/null and b/Library/metadata/8f/8fc2d88dd361849808ad4e863b432f00 differ
diff --git a/Library/metadata/90/90afbf8e22a8d4ef6a18744668e27229 b/Library/metadata/90/90afbf8e22a8d4ef6a18744668e27229
deleted file mode 100644
index 2e9161e..0000000
Binary files a/Library/metadata/90/90afbf8e22a8d4ef6a18744668e27229 and /dev/null differ
diff --git a/Library/metadata/94/9460ba8289aa84a229935b27e6204cf7 b/Library/metadata/94/9460ba8289aa84a229935b27e6204cf7
old mode 100644
new mode 100755
index 021c85d..5adce9b
Binary files a/Library/metadata/94/9460ba8289aa84a229935b27e6204cf7 and b/Library/metadata/94/9460ba8289aa84a229935b27e6204cf7 differ
diff --git a/Library/metadata/95/9518aa805d16c2e4e9516535b0d9a80c b/Library/metadata/95/9518aa805d16c2e4e9516535b0d9a80c
new file mode 100755
index 0000000..a54f393
Binary files /dev/null and b/Library/metadata/95/9518aa805d16c2e4e9516535b0d9a80c differ
diff --git a/Library/metadata/95/95d9f8c9a655b41f7b4b5d3690292474 b/Library/metadata/95/95d9f8c9a655b41f7b4b5d3690292474
deleted file mode 100644
index d90b043..0000000
Binary files a/Library/metadata/95/95d9f8c9a655b41f7b4b5d3690292474 and /dev/null differ
diff --git a/Library/metadata/97/9794c3843cfd59b4881e40f2874e3b87 b/Library/metadata/97/9794c3843cfd59b4881e40f2874e3b87
new file mode 100755
index 0000000..d9a9e74
Binary files /dev/null and b/Library/metadata/97/9794c3843cfd59b4881e40f2874e3b87 differ
diff --git a/Library/metadata/97/97a66d91a1f7640cfaea072300ed131d b/Library/metadata/97/97a66d91a1f7640cfaea072300ed131d
new file mode 100755
index 0000000..c53e910
Binary files /dev/null and b/Library/metadata/97/97a66d91a1f7640cfaea072300ed131d differ
diff --git a/Library/metadata/97/97b9e3c0e05974e1f8eaa8eeaece2709 b/Library/metadata/97/97b9e3c0e05974e1f8eaa8eeaece2709
deleted file mode 100644
index c31c148..0000000
Binary files a/Library/metadata/97/97b9e3c0e05974e1f8eaa8eeaece2709 and /dev/null differ
diff --git a/Library/metadata/97/97d88029d6d0d43838b634067bb859d7 b/Library/metadata/97/97d88029d6d0d43838b634067bb859d7
new file mode 100755
index 0000000..2f3713f
Binary files /dev/null and b/Library/metadata/97/97d88029d6d0d43838b634067bb859d7 differ
diff --git a/Library/metadata/98/98b8c2760c988254fba6e4d1038c740c b/Library/metadata/98/98b8c2760c988254fba6e4d1038c740c
new file mode 100755
index 0000000..a6ce9b1
Binary files /dev/null and b/Library/metadata/98/98b8c2760c988254fba6e4d1038c740c differ
diff --git a/Library/metadata/ff/ff35ba79710654a35b0adcf1987a33cd b/Library/metadata/9a/9ae64552ac59d6647be33c821e2256bf
old mode 100644
new mode 100755
similarity index 92%
rename from Library/metadata/ff/ff35ba79710654a35b0adcf1987a33cd
rename to Library/metadata/9a/9ae64552ac59d6647be33c821e2256bf
index 643f5dc..0796c48
Binary files a/Library/metadata/ff/ff35ba79710654a35b0adcf1987a33cd and b/Library/metadata/9a/9ae64552ac59d6647be33c821e2256bf differ
diff --git a/Library/metadata/9b/9b1aee559b4bb4ff896578bbbfa124fb b/Library/metadata/9b/9b1aee559b4bb4ff896578bbbfa124fb
old mode 100644
new mode 100755
index e9e9a0e..e4bb3cb
Binary files a/Library/metadata/9b/9b1aee559b4bb4ff896578bbbfa124fb and b/Library/metadata/9b/9b1aee559b4bb4ff896578bbbfa124fb differ
diff --git a/Library/metadata/9b/9b55d0189be014897911c0a7a79a5bfa b/Library/metadata/9b/9b55d0189be014897911c0a7a79a5bfa
new file mode 100755
index 0000000..c0dd84d
Binary files /dev/null and b/Library/metadata/9b/9b55d0189be014897911c0a7a79a5bfa differ
diff --git a/Library/metadata/9b/9bba5664c262e4002b05ce43d8bad51f b/Library/metadata/9b/9bba5664c262e4002b05ce43d8bad51f
deleted file mode 100644
index f330c66..0000000
Binary files a/Library/metadata/9b/9bba5664c262e4002b05ce43d8bad51f and /dev/null differ
diff --git a/Library/metadata/9c/9c6c2d128da234a3486f678e3dba3984 b/Library/metadata/9c/9c6c2d128da234a3486f678e3dba3984
deleted file mode 100644
index 8c25aa1..0000000
Binary files a/Library/metadata/9c/9c6c2d128da234a3486f678e3dba3984 and /dev/null differ
diff --git a/Library/metadata/9d/9d053dce58644de4c82623034d3cb302 b/Library/metadata/9d/9d053dce58644de4c82623034d3cb302
new file mode 100755
index 0000000..46af342
Binary files /dev/null and b/Library/metadata/9d/9d053dce58644de4c82623034d3cb302 differ
diff --git a/Library/metadata/a0/a0ac922d1f5ad4251b4144961c0a74be b/Library/metadata/a0/a0ac922d1f5ad4251b4144961c0a74be
deleted file mode 100644
index 17baa5d..0000000
Binary files a/Library/metadata/a0/a0ac922d1f5ad4251b4144961c0a74be and /dev/null differ
diff --git a/Library/metadata/a1/a11b4b833661e4633910d50aadff4f59 b/Library/metadata/a1/a11b4b833661e4633910d50aadff4f59
deleted file mode 100644
index 61fc722..0000000
Binary files a/Library/metadata/a1/a11b4b833661e4633910d50aadff4f59 and /dev/null differ
diff --git a/Library/metadata/a2/a2203e0ecb3b84cb78a6a95c116d382b b/Library/metadata/a2/a2203e0ecb3b84cb78a6a95c116d382b
deleted file mode 100644
index 3fc3418..0000000
Binary files a/Library/metadata/a2/a2203e0ecb3b84cb78a6a95c116d382b and /dev/null differ
diff --git a/Library/metadata/14/1495cd51ffb1e4442b02cf739d4afac7 b/Library/metadata/a2/a2736dbb41b319841b8aa0cd52dd3fcf
old mode 100644
new mode 100755
similarity index 90%
rename from Library/metadata/14/1495cd51ffb1e4442b02cf739d4afac7
rename to Library/metadata/a2/a2736dbb41b319841b8aa0cd52dd3fcf
index f5882b0..cb24556
Binary files a/Library/metadata/14/1495cd51ffb1e4442b02cf739d4afac7 and b/Library/metadata/a2/a2736dbb41b319841b8aa0cd52dd3fcf differ
diff --git a/Library/metadata/a5/a52dde642917d47e6babfe06f8ed3cbc b/Library/metadata/a5/a52dde642917d47e6babfe06f8ed3cbc
deleted file mode 100644
index 1a2cb2b..0000000
Binary files a/Library/metadata/a5/a52dde642917d47e6babfe06f8ed3cbc and /dev/null differ
diff --git a/Library/metadata/a5/a5eb1114a50234f18a90dec93c7003a2 b/Library/metadata/a5/a5eb1114a50234f18a90dec93c7003a2
new file mode 100755
index 0000000..e1e4414
Binary files /dev/null and b/Library/metadata/a5/a5eb1114a50234f18a90dec93c7003a2 differ
diff --git a/Library/metadata/a6/a6b1dc035a2f04b8d9ee80035d56c336 b/Library/metadata/a6/a6b1dc035a2f04b8d9ee80035d56c336
new file mode 100755
index 0000000..67d2a75
Binary files /dev/null and b/Library/metadata/a6/a6b1dc035a2f04b8d9ee80035d56c336 differ
diff --git a/Library/metadata/a7/a71a9ddb9458b460a8870a13d3d2f7e8 b/Library/metadata/a7/a71a9ddb9458b460a8870a13d3d2f7e8
deleted file mode 100644
index c7dbee8..0000000
Binary files a/Library/metadata/a7/a71a9ddb9458b460a8870a13d3d2f7e8 and /dev/null differ
diff --git a/Library/metadata/a9/a9a0da73786e3af49b57eeb9da2459c9 b/Library/metadata/a9/a9a0da73786e3af49b57eeb9da2459c9
new file mode 100755
index 0000000..f603b64
Binary files /dev/null and b/Library/metadata/a9/a9a0da73786e3af49b57eeb9da2459c9 differ
diff --git a/Library/metadata/aa/aa8a3f98de5fb4832a039836c585bd8d b/Library/metadata/aa/aa8a3f98de5fb4832a039836c585bd8d
deleted file mode 100644
index 841643f..0000000
Binary files a/Library/metadata/aa/aa8a3f98de5fb4832a039836c585bd8d and /dev/null differ
diff --git a/Library/metadata/aa/aac78bc7c7f854e88b7734c48ec813d8 b/Library/metadata/aa/aac78bc7c7f854e88b7734c48ec813d8
deleted file mode 100644
index 1b250f7..0000000
Binary files a/Library/metadata/aa/aac78bc7c7f854e88b7734c48ec813d8 and /dev/null differ
diff --git a/Library/metadata/ac/ac5de5d9de9dc4729ac18e7b1e118698 b/Library/metadata/ac/ac5de5d9de9dc4729ac18e7b1e118698
deleted file mode 100644
index 73bd61b..0000000
Binary files a/Library/metadata/ac/ac5de5d9de9dc4729ac18e7b1e118698 and /dev/null differ
diff --git a/Library/metadata/ad/adedc909ed8024046aa30861bcacc707 b/Library/metadata/ad/adedc909ed8024046aa30861bcacc707
new file mode 100755
index 0000000..ace51c2
Binary files /dev/null and b/Library/metadata/ad/adedc909ed8024046aa30861bcacc707 differ
diff --git a/Library/metadata/ae/ae398ba2ee807481889d11fecf3794e8 b/Library/metadata/ae/ae398ba2ee807481889d11fecf3794e8
deleted file mode 100644
index 8175ffe..0000000
Binary files a/Library/metadata/ae/ae398ba2ee807481889d11fecf3794e8 and /dev/null differ
diff --git a/Library/metadata/b0/b030ce10081c046a7a42021798143fa1 b/Library/metadata/b0/b030ce10081c046a7a42021798143fa1
old mode 100644
new mode 100755
index f575cbc..8cfa42d
Binary files a/Library/metadata/b0/b030ce10081c046a7a42021798143fa1 and b/Library/metadata/b0/b030ce10081c046a7a42021798143fa1 differ
diff --git a/Library/metadata/b5/b5be6d4fce1034c67b46be1268463c4c b/Library/metadata/b5/b5be6d4fce1034c67b46be1268463c4c
new file mode 100755
index 0000000..e3becf9
Binary files /dev/null and b/Library/metadata/b5/b5be6d4fce1034c67b46be1268463c4c differ
diff --git a/Library/metadata/b5/b5f5dae3775e74b83baaff346f7182ec b/Library/metadata/b5/b5f5dae3775e74b83baaff346f7182ec
new file mode 100755
index 0000000..a3290cc
Binary files /dev/null and b/Library/metadata/b5/b5f5dae3775e74b83baaff346f7182ec differ
diff --git a/Library/metadata/b6/b63da4875ba544f6087d5945e655afb6 b/Library/metadata/b6/b63da4875ba544f6087d5945e655afb6
new file mode 100755
index 0000000..1bd25c7
Binary files /dev/null and b/Library/metadata/b6/b63da4875ba544f6087d5945e655afb6 differ
diff --git a/Library/metadata/3e/3e15b6075e12148fab4027421076e4bb b/Library/metadata/b8/b8e519aeed0a4074ebff878ab78f86e9
old mode 100644
new mode 100755
similarity index 73%
rename from Library/metadata/3e/3e15b6075e12148fab4027421076e4bb
rename to Library/metadata/b8/b8e519aeed0a4074ebff878ab78f86e9
index b43aa13..f3f6543
Binary files a/Library/metadata/3e/3e15b6075e12148fab4027421076e4bb and b/Library/metadata/b8/b8e519aeed0a4074ebff878ab78f86e9 differ
diff --git a/Library/metadata/b9/b984e63f390b542748c315c7f4983e8a b/Library/metadata/b9/b984e63f390b542748c315c7f4983e8a
deleted file mode 100644
index d244732..0000000
Binary files a/Library/metadata/b9/b984e63f390b542748c315c7f4983e8a and /dev/null differ
diff --git a/Library/metadata/77/77c84b68fbcc641fda2decb833bd536a b/Library/metadata/bc/bc800c94631e0fa449cdeba5b14f61d3
old mode 100644
new mode 100755
similarity index 92%
rename from Library/metadata/77/77c84b68fbcc641fda2decb833bd536a
rename to Library/metadata/bc/bc800c94631e0fa449cdeba5b14f61d3
index ad356cd..b1e6786
Binary files a/Library/metadata/77/77c84b68fbcc641fda2decb833bd536a and b/Library/metadata/bc/bc800c94631e0fa449cdeba5b14f61d3 differ
diff --git a/Library/metadata/bc/bcc3946f5d0cfd94aa65322b1bccea18 b/Library/metadata/bc/bcc3946f5d0cfd94aa65322b1bccea18
new file mode 100755
index 0000000..8a8b117
Binary files /dev/null and b/Library/metadata/bc/bcc3946f5d0cfd94aa65322b1bccea18 differ
diff --git a/Library/metadata/bc/bcda2447fcd2a48a5ba618fe6f1d8813 b/Library/metadata/bc/bcda2447fcd2a48a5ba618fe6f1d8813
deleted file mode 100644
index 303c2d1..0000000
Binary files a/Library/metadata/bc/bcda2447fcd2a48a5ba618fe6f1d8813 and /dev/null differ
diff --git a/Library/metadata/2a/2afb06c492be84baaa96f0a307cffcd9 b/Library/metadata/be/beda5edf7cc768f44857dde56e1c0edb
old mode 100644
new mode 100755
similarity index 90%
rename from Library/metadata/2a/2afb06c492be84baaa96f0a307cffcd9
rename to Library/metadata/be/beda5edf7cc768f44857dde56e1c0edb
index 505d312..c23ec20
Binary files a/Library/metadata/2a/2afb06c492be84baaa96f0a307cffcd9 and b/Library/metadata/be/beda5edf7cc768f44857dde56e1c0edb differ
diff --git a/Library/metadata/d7/d72eaaef50fae4d4a83d85fa7d1a8506 b/Library/metadata/bf/bf2d8fdea5ce70e45b0dbe369c1d78c9
old mode 100644
new mode 100755
similarity index 90%
rename from Library/metadata/d7/d72eaaef50fae4d4a83d85fa7d1a8506
rename to Library/metadata/bf/bf2d8fdea5ce70e45b0dbe369c1d78c9
index fcbf5ac..af89ed0
Binary files a/Library/metadata/d7/d72eaaef50fae4d4a83d85fa7d1a8506 and b/Library/metadata/bf/bf2d8fdea5ce70e45b0dbe369c1d78c9 differ
diff --git a/Library/metadata/bf/bf6ca501d82f04537be03c6de3c96fd9 b/Library/metadata/bf/bf6ca501d82f04537be03c6de3c96fd9
new file mode 100755
index 0000000..46f5eb2
Binary files /dev/null and b/Library/metadata/bf/bf6ca501d82f04537be03c6de3c96fd9 differ
diff --git a/Library/metadata/c0/c0d8717bdc1ab2546bd520c89c2ccc33 b/Library/metadata/c0/c0d8717bdc1ab2546bd520c89c2ccc33
new file mode 100755
index 0000000..1b3573a
Binary files /dev/null and b/Library/metadata/c0/c0d8717bdc1ab2546bd520c89c2ccc33 differ
diff --git a/Library/metadata/0c/0c616a2f50269499f82111fb2f759877 b/Library/metadata/c1/c1f09d8308688b94db8d4c39a8b2a33f
old mode 100644
new mode 100755
similarity index 73%
rename from Library/metadata/0c/0c616a2f50269499f82111fb2f759877
rename to Library/metadata/c1/c1f09d8308688b94db8d4c39a8b2a33f
index 1ced55f..7176643
Binary files a/Library/metadata/0c/0c616a2f50269499f82111fb2f759877 and b/Library/metadata/c1/c1f09d8308688b94db8d4c39a8b2a33f differ
diff --git a/Library/metadata/c3/c3b26cea83b04474ca149ef7fb3e1796 b/Library/metadata/c3/c3b26cea83b04474ca149ef7fb3e1796
deleted file mode 100644
index eea00be..0000000
Binary files a/Library/metadata/c3/c3b26cea83b04474ca149ef7fb3e1796 and /dev/null differ
diff --git a/Library/metadata/c4/c40401222a55c4583a4a59203f9b069b b/Library/metadata/c4/c40401222a55c4583a4a59203f9b069b
old mode 100644
new mode 100755
index 18e525a..0fe79ba
Binary files a/Library/metadata/c4/c40401222a55c4583a4a59203f9b069b and b/Library/metadata/c4/c40401222a55c4583a4a59203f9b069b differ
diff --git a/Library/metadata/c4/c4a515c7fba34404b952ce4d933ee452 b/Library/metadata/c4/c4a515c7fba34404b952ce4d933ee452
deleted file mode 100644
index 7f98144..0000000
Binary files a/Library/metadata/c4/c4a515c7fba34404b952ce4d933ee452 and /dev/null differ
diff --git a/Library/metadata/c6/c66ee8f97287944a585a4ed1fe935861 b/Library/metadata/c6/c66ee8f97287944a585a4ed1fe935861
deleted file mode 100644
index c1d4fa7..0000000
Binary files a/Library/metadata/c6/c66ee8f97287944a585a4ed1fe935861 and /dev/null differ
diff --git a/Library/metadata/c8/c8a1f9fd0912580448d67487693cc9e1 b/Library/metadata/c8/c8a1f9fd0912580448d67487693cc9e1
new file mode 100755
index 0000000..9b3b205
Binary files /dev/null and b/Library/metadata/c8/c8a1f9fd0912580448d67487693cc9e1 differ
diff --git a/Library/metadata/c8/c8e7b2659fc8bdb499ad7091382fa0c1 b/Library/metadata/c8/c8e7b2659fc8bdb499ad7091382fa0c1
new file mode 100755
index 0000000..13e608b
Binary files /dev/null and b/Library/metadata/c8/c8e7b2659fc8bdb499ad7091382fa0c1 differ
diff --git a/Library/metadata/0f/0f2a8182e519446db98d70ab9b586301 b/Library/metadata/c9/c918b0ecc46d32d429dfb5d8949dc79a
old mode 100644
new mode 100755
similarity index 92%
rename from Library/metadata/0f/0f2a8182e519446db98d70ab9b586301
rename to Library/metadata/c9/c918b0ecc46d32d429dfb5d8949dc79a
index 87feea8..e67738b
Binary files a/Library/metadata/0f/0f2a8182e519446db98d70ab9b586301 and b/Library/metadata/c9/c918b0ecc46d32d429dfb5d8949dc79a differ
diff --git a/Library/metadata/ca/ca19e471dfcd34b14ad784b4e3c69eb8 b/Library/metadata/ca/ca19e471dfcd34b14ad784b4e3c69eb8
new file mode 100755
index 0000000..8b4698d
Binary files /dev/null and b/Library/metadata/ca/ca19e471dfcd34b14ad784b4e3c69eb8 differ
diff --git a/Library/metadata/00/004968d19d6a04e7a96b2ccd6482ac89 b/Library/metadata/cb/cb0c1cf87f5e82742b5d84686266204c
old mode 100644
new mode 100755
similarity index 73%
rename from Library/metadata/00/004968d19d6a04e7a96b2ccd6482ac89
rename to Library/metadata/cb/cb0c1cf87f5e82742b5d84686266204c
index 5fb5628..dc038c5
Binary files a/Library/metadata/00/004968d19d6a04e7a96b2ccd6482ac89 and b/Library/metadata/cb/cb0c1cf87f5e82742b5d84686266204c differ
diff --git a/Library/metadata/cb/cba8e4669163f1b4189340a3534b5788 b/Library/metadata/cb/cba8e4669163f1b4189340a3534b5788
new file mode 100755
index 0000000..06c4ae5
Binary files /dev/null and b/Library/metadata/cb/cba8e4669163f1b4189340a3534b5788 differ
diff --git a/Library/metadata/cc/cceccea37dd154468b99895747d21ebc b/Library/metadata/cc/cceccea37dd154468b99895747d21ebc
deleted file mode 100644
index 585e3cd..0000000
Binary files a/Library/metadata/cc/cceccea37dd154468b99895747d21ebc and /dev/null differ
diff --git a/Library/metadata/cf/cf149af4e109f45bf88f5f3e9f183595 b/Library/metadata/cf/cf149af4e109f45bf88f5f3e9f183595
deleted file mode 100644
index 7b4f7c5..0000000
Binary files a/Library/metadata/cf/cf149af4e109f45bf88f5f3e9f183595 and /dev/null differ
diff --git a/Library/metadata/cf/cf2ae6e80d297954ebc76f4b5c6d7344 b/Library/metadata/cf/cf2ae6e80d297954ebc76f4b5c6d7344
new file mode 100755
index 0000000..5f77067
Binary files /dev/null and b/Library/metadata/cf/cf2ae6e80d297954ebc76f4b5c6d7344 differ
diff --git a/Library/metadata/cf/cfdb6c224faec405abc1088c128a2f57 b/Library/metadata/cf/cfdb6c224faec405abc1088c128a2f57
deleted file mode 100644
index 46d1bfc..0000000
Binary files a/Library/metadata/cf/cfdb6c224faec405abc1088c128a2f57 and /dev/null differ
diff --git a/Library/metadata/25/25f18b5c49448435c963c8cb2a97ce23 b/Library/metadata/d2/d232836a66f0d4c4a97d712d7d9d5254
old mode 100644
new mode 100755
similarity index 88%
rename from Library/metadata/25/25f18b5c49448435c963c8cb2a97ce23
rename to Library/metadata/d2/d232836a66f0d4c4a97d712d7d9d5254
index 59cc234..8c70a62
Binary files a/Library/metadata/25/25f18b5c49448435c963c8cb2a97ce23 and b/Library/metadata/d2/d232836a66f0d4c4a97d712d7d9d5254 differ
diff --git a/Library/metadata/d2/d29cb40d1320b4707abb86cdcec2341a b/Library/metadata/d2/d29cb40d1320b4707abb86cdcec2341a
new file mode 100755
index 0000000..8826a19
Binary files /dev/null and b/Library/metadata/d2/d29cb40d1320b4707abb86cdcec2341a differ
diff --git a/Library/metadata/d3/d34a7050a4d8ba34c8b5c23c2cced672 b/Library/metadata/d3/d34a7050a4d8ba34c8b5c23c2cced672
new file mode 100755
index 0000000..5300af5
Binary files /dev/null and b/Library/metadata/d3/d34a7050a4d8ba34c8b5c23c2cced672 differ
diff --git a/Library/metadata/d3/d38ae76658d0a4aa2a4e0543ee56f039 b/Library/metadata/d3/d38ae76658d0a4aa2a4e0543ee56f039
new file mode 100755
index 0000000..3c0309e
Binary files /dev/null and b/Library/metadata/d3/d38ae76658d0a4aa2a4e0543ee56f039 differ
diff --git a/Library/metadata/d4/d408cf065deae85469c36600b0fb90ec b/Library/metadata/d4/d408cf065deae85469c36600b0fb90ec
new file mode 100755
index 0000000..c7d5d38
Binary files /dev/null and b/Library/metadata/d4/d408cf065deae85469c36600b0fb90ec differ
diff --git a/Library/metadata/d4/d42674809112441d5b13f68e0b904218 b/Library/metadata/d4/d42674809112441d5b13f68e0b904218
deleted file mode 100644
index b01fd50..0000000
Binary files a/Library/metadata/d4/d42674809112441d5b13f68e0b904218 and /dev/null differ
diff --git a/Library/metadata/d4/d43c75e315c8a409d9b91217d20c0b2c b/Library/metadata/d4/d43c75e315c8a409d9b91217d20c0b2c
deleted file mode 100644
index 1b564e8..0000000
Binary files a/Library/metadata/d4/d43c75e315c8a409d9b91217d20c0b2c and /dev/null differ
diff --git a/Library/metadata/d4/d46f2504f952742d09acdcd4c7fa10f3 b/Library/metadata/d4/d46f2504f952742d09acdcd4c7fa10f3
new file mode 100755
index 0000000..8b95f68
Binary files /dev/null and b/Library/metadata/d4/d46f2504f952742d09acdcd4c7fa10f3 differ
diff --git a/Library/metadata/d5/d517f84849f4f294692ca57d4095291e b/Library/metadata/d5/d517f84849f4f294692ca57d4095291e
new file mode 100755
index 0000000..5325809
Binary files /dev/null and b/Library/metadata/d5/d517f84849f4f294692ca57d4095291e differ
diff --git a/Library/metadata/d5/d5f2e7b12b0384383979441d108ba6ed b/Library/metadata/d5/d5f2e7b12b0384383979441d108ba6ed
deleted file mode 100644
index 8ee4c8c..0000000
Binary files a/Library/metadata/d5/d5f2e7b12b0384383979441d108ba6ed and /dev/null differ
diff --git a/Library/metadata/d6/d66b8ddd70955b94096157c35e5f5b86 b/Library/metadata/d6/d66b8ddd70955b94096157c35e5f5b86
new file mode 100755
index 0000000..715b2f1
Binary files /dev/null and b/Library/metadata/d6/d66b8ddd70955b94096157c35e5f5b86 differ
diff --git a/Library/metadata/21/2156c35573eb547239846e8e9fc59078 b/Library/metadata/d6/d672b18291b48254cbf5ec8e8c947162
old mode 100644
new mode 100755
similarity index 92%
rename from Library/metadata/21/2156c35573eb547239846e8e9fc59078
rename to Library/metadata/d6/d672b18291b48254cbf5ec8e8c947162
index 4b74ff1..0639667
Binary files a/Library/metadata/21/2156c35573eb547239846e8e9fc59078 and b/Library/metadata/d6/d672b18291b48254cbf5ec8e8c947162 differ
diff --git a/Library/metadata/d7/d7875ebcf520952468df7983de6869b6 b/Library/metadata/d7/d7875ebcf520952468df7983de6869b6
new file mode 100755
index 0000000..aaa5fe2
Binary files /dev/null and b/Library/metadata/d7/d7875ebcf520952468df7983de6869b6 differ
diff --git a/Library/metadata/d9/d9955c8dad41c7847b65c09896d6b439 b/Library/metadata/d9/d9955c8dad41c7847b65c09896d6b439
new file mode 100755
index 0000000..9b8aba2
Binary files /dev/null and b/Library/metadata/d9/d9955c8dad41c7847b65c09896d6b439 differ
diff --git a/Library/metadata/da/da2c2c6fd16a64f27a3760f86e10dfbf b/Library/metadata/da/da2c2c6fd16a64f27a3760f86e10dfbf
deleted file mode 100644
index 8094da1..0000000
Binary files a/Library/metadata/da/da2c2c6fd16a64f27a3760f86e10dfbf and /dev/null differ
diff --git a/Library/metadata/da/da3ebb466df2e437bacf353c98b4586e b/Library/metadata/da/da3ebb466df2e437bacf353c98b4586e
deleted file mode 100644
index e9b6c65..0000000
Binary files a/Library/metadata/da/da3ebb466df2e437bacf353c98b4586e and /dev/null differ
diff --git a/Library/metadata/dc/dc370c7314f14a64b9bc3859e23c12b2 b/Library/metadata/dc/dc370c7314f14a64b9bc3859e23c12b2
new file mode 100755
index 0000000..d56d48f
Binary files /dev/null and b/Library/metadata/dc/dc370c7314f14a64b9bc3859e23c12b2 differ
diff --git a/Library/metadata/dc/dc94e71c4b77b400db332cccc0ec15fe b/Library/metadata/dc/dc94e71c4b77b400db332cccc0ec15fe
old mode 100644
new mode 100755
index 9e7a659..4a45ae6
Binary files a/Library/metadata/dc/dc94e71c4b77b400db332cccc0ec15fe and b/Library/metadata/dc/dc94e71c4b77b400db332cccc0ec15fe differ
diff --git a/Library/metadata/dc/dcc1182e3418240ccb3d5eed517a926c b/Library/metadata/dc/dcc1182e3418240ccb3d5eed517a926c
deleted file mode 100644
index 1ff6c7d..0000000
Binary files a/Library/metadata/dc/dcc1182e3418240ccb3d5eed517a926c and /dev/null differ
diff --git a/Library/metadata/dd/ddf84b9d1ebe44b468e0d6aa7385a919 b/Library/metadata/dd/ddf84b9d1ebe44b468e0d6aa7385a919
new file mode 100755
index 0000000..37148da
Binary files /dev/null and b/Library/metadata/dd/ddf84b9d1ebe44b468e0d6aa7385a919 differ
diff --git a/Library/metadata/de/ded19e36b9e14e14da5030c50d275afe b/Library/metadata/de/ded19e36b9e14e14da5030c50d275afe
new file mode 100755
index 0000000..931922c
Binary files /dev/null and b/Library/metadata/de/ded19e36b9e14e14da5030c50d275afe differ
diff --git a/Library/metadata/e1/e115da1e02892854cad876374e70d504 b/Library/metadata/e1/e115da1e02892854cad876374e70d504
new file mode 100755
index 0000000..9f7396a
Binary files /dev/null and b/Library/metadata/e1/e115da1e02892854cad876374e70d504 differ
diff --git a/Library/metadata/e1/e15a9898b0c214ac881bfd2a99743307 b/Library/metadata/e1/e15a9898b0c214ac881bfd2a99743307
deleted file mode 100644
index ef338ff..0000000
Binary files a/Library/metadata/e1/e15a9898b0c214ac881bfd2a99743307 and /dev/null differ
diff --git a/Library/metadata/e2/e2c23e89b550145458af9da22872a3c6 b/Library/metadata/e2/e2c23e89b550145458af9da22872a3c6
old mode 100644
new mode 100755
index 5cd2a3f..b18434a
Binary files a/Library/metadata/e2/e2c23e89b550145458af9da22872a3c6 and b/Library/metadata/e2/e2c23e89b550145458af9da22872a3c6 differ
diff --git a/Library/metadata/e2/e2e45d52faf8c40968b924675e64cb52 b/Library/metadata/e2/e2e45d52faf8c40968b924675e64cb52
new file mode 100755
index 0000000..e303bf1
Binary files /dev/null and b/Library/metadata/e2/e2e45d52faf8c40968b924675e64cb52 differ
diff --git a/Library/metadata/e3/e31d439bbbae6438883072271019a5de b/Library/metadata/e3/e31d439bbbae6438883072271019a5de
deleted file mode 100644
index 3929cf5..0000000
Binary files a/Library/metadata/e3/e31d439bbbae6438883072271019a5de and /dev/null differ
diff --git a/Library/metadata/e3/e3307bd9fe38b48b4b17c603c2007c01 b/Library/metadata/e3/e3307bd9fe38b48b4b17c603c2007c01
old mode 100644
new mode 100755
index 2c55ab3..aa19154
Binary files a/Library/metadata/e3/e3307bd9fe38b48b4b17c603c2007c01 and b/Library/metadata/e3/e3307bd9fe38b48b4b17c603c2007c01 differ
diff --git a/Library/metadata/e3/e3c5f11bd240542539336e80102423a4 b/Library/metadata/e3/e3c5f11bd240542539336e80102423a4
deleted file mode 100644
index f41b56a..0000000
Binary files a/Library/metadata/e3/e3c5f11bd240542539336e80102423a4 and /dev/null differ
diff --git a/Library/metadata/e6/e6d290dd39f074bf89784d6e84742551 b/Library/metadata/e6/e6d290dd39f074bf89784d6e84742551
new file mode 100755
index 0000000..ff5d242
Binary files /dev/null and b/Library/metadata/e6/e6d290dd39f074bf89784d6e84742551 differ
diff --git a/Library/metadata/e9/e9fd37756f86a4d06af2c5974cdcd874 b/Library/metadata/e9/e9fd37756f86a4d06af2c5974cdcd874
deleted file mode 100644
index 4f6c0ea..0000000
Binary files a/Library/metadata/e9/e9fd37756f86a4d06af2c5974cdcd874 and /dev/null differ
diff --git a/Library/metadata/ea/eafcf3691eb0cf243a1e8aac775fdc40 b/Library/metadata/ea/eafcf3691eb0cf243a1e8aac775fdc40
new file mode 100755
index 0000000..c4a95ba
Binary files /dev/null and b/Library/metadata/ea/eafcf3691eb0cf243a1e8aac775fdc40 differ
diff --git a/Library/metadata/ec/ecd44c4fcf95965449c02a0b49a3ece7 b/Library/metadata/ec/ecd44c4fcf95965449c02a0b49a3ece7
new file mode 100755
index 0000000..670f61c
Binary files /dev/null and b/Library/metadata/ec/ecd44c4fcf95965449c02a0b49a3ece7 differ
diff --git a/Library/metadata/ed/ed2938783ba5d4a3e9d7b2d07aa3ac82 b/Library/metadata/ed/ed2938783ba5d4a3e9d7b2d07aa3ac82
deleted file mode 100644
index 10f9d81..0000000
Binary files a/Library/metadata/ed/ed2938783ba5d4a3e9d7b2d07aa3ac82 and /dev/null differ
diff --git a/Library/metadata/ed/ed3c32e5075df41aa9d08ce717bb8cd4 b/Library/metadata/ed/ed3c32e5075df41aa9d08ce717bb8cd4
deleted file mode 100644
index a832029..0000000
Binary files a/Library/metadata/ed/ed3c32e5075df41aa9d08ce717bb8cd4 and /dev/null differ
diff --git a/Library/metadata/ed/ed6aec70c77a3427790eb080ce5b9aa8 b/Library/metadata/ed/ed6aec70c77a3427790eb080ce5b9aa8
deleted file mode 100644
index 4baac3c..0000000
Binary files a/Library/metadata/ed/ed6aec70c77a3427790eb080ce5b9aa8 and /dev/null differ
diff --git a/Library/metadata/ee/ee1c868297d1fe343b666abfb1e39932 b/Library/metadata/ee/ee1c868297d1fe343b666abfb1e39932
new file mode 100755
index 0000000..87c86a3
Binary files /dev/null and b/Library/metadata/ee/ee1c868297d1fe343b666abfb1e39932 differ
diff --git a/Library/metadata/f2/f2cb0ec34ade247a4b6e423dc409a0b3 b/Library/metadata/f2/f2cb0ec34ade247a4b6e423dc409a0b3
deleted file mode 100644
index ad85f90..0000000
Binary files a/Library/metadata/f2/f2cb0ec34ade247a4b6e423dc409a0b3 and /dev/null differ
diff --git a/Library/metadata/53/53960201df4e049bfab69b5f7799de8a b/Library/metadata/f5/f5896a71fb8776f49ab50dad53db3833
old mode 100644
new mode 100755
similarity index 73%
rename from Library/metadata/53/53960201df4e049bfab69b5f7799de8a
rename to Library/metadata/f5/f5896a71fb8776f49ab50dad53db3833
index 814fc4e..9551789
Binary files a/Library/metadata/53/53960201df4e049bfab69b5f7799de8a and b/Library/metadata/f5/f5896a71fb8776f49ab50dad53db3833 differ
diff --git a/Library/metadata/f6/f6636e020748a4b10afcf984474ddb02 b/Library/metadata/f6/f6636e020748a4b10afcf984474ddb02
deleted file mode 100644
index a6d0665..0000000
Binary files a/Library/metadata/f6/f6636e020748a4b10afcf984474ddb02 and /dev/null differ
diff --git a/Library/metadata/f9/f94e218413cfe421698a047c08f2ac08 b/Library/metadata/f9/f94e218413cfe421698a047c08f2ac08
old mode 100644
new mode 100755
index 9ade805..3a3cdc9
Binary files a/Library/metadata/f9/f94e218413cfe421698a047c08f2ac08 and b/Library/metadata/f9/f94e218413cfe421698a047c08f2ac08 differ
diff --git a/Library/metadata/fb/fba68aaf8959a6141b41478ce2df3d1a b/Library/metadata/fb/fba68aaf8959a6141b41478ce2df3d1a
new file mode 100755
index 0000000..44b7b7f
Binary files /dev/null and b/Library/metadata/fb/fba68aaf8959a6141b41478ce2df3d1a differ
diff --git a/Library/metadata/fc/fc07c7179143d36469d2d3af4a1db866 b/Library/metadata/fc/fc07c7179143d36469d2d3af4a1db866
new file mode 100755
index 0000000..b0e05a4
Binary files /dev/null and b/Library/metadata/fc/fc07c7179143d36469d2d3af4a1db866 differ
diff --git a/Library/metadata/fc/fc1cd8fa7301fd5448d30b0e785bc63d b/Library/metadata/fc/fc1cd8fa7301fd5448d30b0e785bc63d
new file mode 100755
index 0000000..e39290d
Binary files /dev/null and b/Library/metadata/fc/fc1cd8fa7301fd5448d30b0e785bc63d differ
diff --git a/asdfunity-csharp.sln b/asdfunity-csharp.sln
new file mode 100644
index 0000000..a307782
--- /dev/null
+++ b/asdfunity-csharp.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 10.00
+# Visual Studio 2008
+
+Project("{C350BA15-F10C-D3B7-65B1-F21EABB8A77D}") = "asdfunity", "Assembly-CSharp-vs.csproj", "{80CE8C27-FECA-E020-5EC6-DCB3914EBC42}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {80CE8C27-FECA-E020-5EC6-DCB3914EBC42}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {80CE8C27-FECA-E020-5EC6-DCB3914EBC42}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {80CE8C27-FECA-E020-5EC6-DCB3914EBC42}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {80CE8C27-FECA-E020-5EC6-DCB3914EBC42}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+
+EndGlobal
diff --git a/asdfunity.sln b/asdfunity.sln
new file mode 100644
index 0000000..e8d128d
--- /dev/null
+++ b/asdfunity.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 10.00
+# Visual Studio 2008
+
+Project("{C350BA15-F10C-D3B7-65B1-F21EABB8A77D}") = "asdfunity", "Assembly-CSharp.csproj", "{80CE8C27-FECA-E020-5EC6-DCB3914EBC42}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {80CE8C27-FECA-E020-5EC6-DCB3914EBC42}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {80CE8C27-FECA-E020-5EC6-DCB3914EBC42}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {80CE8C27-FECA-E020-5EC6-DCB3914EBC42}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {80CE8C27-FECA-E020-5EC6-DCB3914EBC42}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+
+EndGlobal
diff --git a/asdfunity.userprefs b/asdfunity.userprefs
new file mode 100644
index 0000000..677bd1f
--- /dev/null
+++ b/asdfunity.userprefs
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file