├── .gitignore ├── LICENSE ├── README.md └── TrackGraph.cs /.gitignore: -------------------------------------------------------------------------------- 1 | [Ll]ibrary/ 2 | [Tt]emp/ 3 | [Oo]bj/ 4 | [Bb]uild/ 5 | 6 | # Autogenerated VS/MD solution and project files 7 | *.csproj 8 | *.unityproj 9 | *.sln 10 | *.suo 11 | *.tmp 12 | *.user 13 | *.userprefs 14 | *.pidb 15 | *.booproj 16 | 17 | # Unity3D generated meta files 18 | *.pidb.meta 19 | 20 | # Unity3D Generated File On Crash Reports 21 | sysinfo.txt 22 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 kylerk 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # RealTimeAnimationGraphsViewer_ForUnity 2 | Allows for you to easily visualize the movement of objects in Unity3d. 3 | -------------------------------------------------------------------------------- /TrackGraph.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | 5 | public class TrackGraph : MonoBehaviour 6 | { 7 | 8 | public enum trackValue 9 | { 10 | off, 11 | xAxis, 12 | yAxis, 13 | xSpeed, 14 | ySpeed, 15 | LeftRight, 16 | UpDown 17 | } 18 | 19 | 20 | public bool averageMode; 21 | 22 | public List trackedObjects; 23 | public int selector; 24 | public trackValue trackedValueType; 25 | public Character.Animals whoIs = Character.Animals.CHICKEN; 26 | private Character.Animals lastWhoIs; 27 | public int graphPoints; 28 | public float lineWidth = 0.5f; 29 | public Material lineMaterial; 30 | public Color lineColor; 31 | public Vector2 scale, offset; 32 | 33 | float lastValue; 34 | float[] data; 35 | float average; 36 | bool isCharacter; 37 | Character character; 38 | 39 | LineRenderer lineRenderer; 40 | 41 | GameObject UICamera; 42 | 43 | float initialPositionZ; 44 | // Use this for initialization 45 | void Start() 46 | { 47 | GameObject go = new GameObject(); 48 | 49 | UICamera = GameObject.Find("UiCamera"); 50 | 51 | if (UICamera) 52 | { 53 | go.transform.parent = UICamera.transform; 54 | initialPositionZ = UICamera.transform.localPosition.z; 55 | go.transform.localPosition = new Vector3(0, 0, -initialPositionZ); 56 | } 57 | else 58 | { 59 | go.transform.parent = this.transform; 60 | } 61 | 62 | go.layer = LayerMask.NameToLayer("UI"); 63 | go.transform.localPosition = Vector3.zero; 64 | lineRenderer = go.AddComponent(); 65 | lineRenderer.SetVertexCount(graphPoints); 66 | 67 | data = new float[graphPoints]; 68 | lineRenderer.useWorldSpace = false; 69 | lineRenderer.SetWidth(lineWidth, lineWidth); 70 | lineRenderer.material = lineMaterial; 71 | lineRenderer.SetColors(lineColor, lineColor); 72 | 73 | Character[] trackedcharacter = FindObjectsOfType(); 74 | 75 | 76 | for (int i = 0; i < trackedcharacter.Length; i++) 77 | { 78 | trackedObjects.Add(trackedcharacter[i].gameObject); 79 | 80 | } 81 | 82 | 83 | } 84 | 85 | // Update is called once per frame 86 | void FixedUpdate() 87 | { 88 | if (trackedValueType == trackValue.off) 89 | { 90 | lineRenderer.enabled = false; 91 | return; 92 | } 93 | else 94 | { 95 | lineRenderer.enabled = true; 96 | } 97 | 98 | 99 | if (whoIs != lastWhoIs) 100 | { 101 | isCharacter = false; 102 | character = null; 103 | for(int i = 0; i < trackedObjects.Count ;i++ ){ 104 | if (trackedObjects[i].GetComponent().CharacterSprite == whoIs) 105 | { 106 | selector = i; 107 | character = trackedObjects[i].GetComponent(); 108 | isCharacter = true; 109 | } 110 | } 111 | lastWhoIs = whoIs; 112 | } 113 | 114 | 115 | 116 | 117 | average = 0; 118 | for (int i = 0; i < graphPoints-1; i++) 119 | { 120 | average += data[i]; 121 | data[i] = data[i + 1]; 122 | } 123 | 124 | float newData; 125 | 126 | switch (trackedValueType) 127 | { 128 | case trackValue.yAxis: 129 | newData = trackedObjects[selector].transform.position.y; 130 | break; 131 | case trackValue.xAxis: 132 | newData = trackedObjects[selector].transform.position.x; 133 | break; 134 | case trackValue.xSpeed: 135 | newData = lastValue - trackedObjects[selector].transform.position.x; 136 | lastValue = trackedObjects[selector].transform.position.x; 137 | break; 138 | case trackValue.ySpeed: 139 | newData = -(lastValue - trackedObjects[selector].transform.position.y); 140 | lastValue = trackedObjects[selector].transform.position.y; 141 | break; 142 | case trackValue.LeftRight: 143 | if (isCharacter) 144 | { 145 | if (character.left > 0) 146 | newData = -character.left; 147 | else if(character.right>0) 148 | newData = character.right; 149 | else 150 | newData = 0f; 151 | 152 | } 153 | else newData = 0f; 154 | 155 | break; 156 | case trackValue.UpDown: 157 | if (isCharacter) 158 | { 159 | if (character.up > 0) 160 | newData = character.up; 161 | else if (character.down > 0) 162 | newData = -character.down; 163 | else 164 | newData = 0f; 165 | } 166 | else newData = 0f; 167 | break; 168 | default: 169 | newData = 0; 170 | break; 171 | } 172 | 173 | data[graphPoints - 1] = newData; 174 | 175 | average = average / graphPoints; 176 | 177 | for (int i = 0; i < graphPoints; i++) 178 | { 179 | if (averageMode) 180 | { 181 | lineRenderer.SetPosition(i, new Vector3(i * scale.x + offset.x, (data[i] - average) * scale.y + offset.y, -initialPositionZ)); 182 | } 183 | else 184 | { 185 | lineRenderer.SetPosition(i, new Vector3(i * scale.x + offset.x, (data[i]) * scale.y + offset.y, -initialPositionZ)); 186 | } 187 | } 188 | 189 | 190 | 191 | } 192 | } 193 | --------------------------------------------------------------------------------