static void CreateWizard() { var go = (Selection.activeObject as GameObject); if (!go) { EditorUtility.DisplayDialog("No object selected", "Please select an object in the scene hierarchy", "Cancel"); return; } var mf = go.GetComponentInChildren <MeshFilter>(); if (!mf) { EditorUtility.DisplayDialog("No MeshFilter present", "Object must have a MeshFilter component", "Cancel"); return; } var objectMesh = mf.sharedMesh as Mesh; if (!objectMesh) { EditorUtility.DisplayDialog("No mesh present", "Object must have a mesh", "Cancel"); return; } if (objectMesh.vertexCount > 2000) { EditorUtility.DisplayDialog("Too many vertices", "Please select a low-poly object", "Cancel"); return; } objectScale = go.transform.localScale; objectScale = new Vector3(1.0f / objectScale.x, 1.0f / objectScale.y, 1.0f / objectScale.z); window = ScriptableWizard.DisplayWizard <LineMaker>("Line Maker"); window.minSize = new Vector2(360, 245); }
public LinesController(int count, int percision = 2) { Averager = new AverageValue(count, percision); Lines = new List <AverageLine>(); TimeLines = new Dictionary <LineType, TimeLine <KeyValuePair <DateTime, decimal> > >(); LineMaker = new LineMaker(1000); }
public void Dispose() { Lines.Clear(); TimeLines.Values.ToList().ForEach(line => line.Dispose()); TimeLines.Clear(); Averager.Dispose(); LineMaker.Dispose(); }
public void ClearLines() { TimeLines.Values.ToList().ForEach(line => line.Clear()); TimeLines.Clear(); Averager.Clear(); LineMaker.Clear(); Lines.Clear(); }
public void Process() { if (!Averager.IsValid) { return; } LinesCache = LineMaker.ExportLast(3); if (LinesCache == null || LinesCache.Count <= 0) { return; } if (!Initialized) { MatchLines(Averager.Average); } Lines.ForEach(line => line.ReadLines(LinesCache)); }
private IEnumerator StartAnimation() { m_isPlaying = true; //Debug.Log( m_count ); float m_waitBeforeStart = m_movements[m_count].waitBeforeStart; float m_speedMultiplier = m_movements[m_count].speedMultiplier; LineMaker lineMaker = m_movements[m_count].line; LineRenderer line = lineMaker.GetComponent <LineRenderer>(); //Debug.Log( line.name ); Transform[] movePoints = new Transform[lineMaker.linePoints.Length]; for (int i = 0; i < movePoints.Length; i++) { movePoints[i] = lineMaker.linePoints[i].transform; } transform.position = movePoints[movePoints.Length - 1].position; int moveCount = movePoints.Length - 2; float t = 0; //wait before start if (m_movements[m_count].waited == false) { while (t < m_waitBeforeStart) { t += Time.deltaTime; yield return(null); } } if (m_movements[m_count].waitOnce) { m_movements[m_count].waited = true; } //begin movement while (moveCount >= 0) { t = 0; Vector3 orig = transform.position; Vector3 targ = movePoints[moveCount].position; if (m_rotateToMoveDir) { m_followObj.transform.rotation = movePoints[moveCount].rotation; } float dist = Vector3.Distance(orig, targ); float time = dist / m_speed; if (m_debugTimeToArrive) { Debug.Log(this.name + " Time: " + time); } //lerp to point while (t < 1) { //Debug.Log( t ); transform.position = Vector3.Lerp(orig, targ, t); //m_line.SetPosition( m_line.positionCount - 1, transform.localPosition ); t += Time.deltaTime * (1 / time) * m_speedMultiplier; yield return(null); } //wait if needed. if (m_deleteWaypoint) { Vector3[] linePoss = new Vector3[line.positionCount - 1]; for (int i = 0; i < line.positionCount - 1; i++) { linePoss[i] = line.GetPosition(i); } line.positionCount = linePoss.Length; line.SetPositions(linePoss); } moveCount -= 1; } if (m_count < m_movements.Length) { m_count++; } m_isPlaying = false; //invoke after everything else is done. m_movements[m_count - 1].onReachDestination.Invoke(); if (!m_softStop) { if (m_count >= m_movements.Length) { switch (m_animMode) { default: break; case AnimMode.Loop: if (!m_deleteWaypoint) { m_count = 0; OnScriptPlay(); } break; //case AnimMode.PingPong: // break; } } } }
public void Add(KeyValuePair <DateTime, decimal> pair) { Averager.Add(pair.Value); TimeLines.Values.ToList().ForEach(line => line.Add(pair)); LineMaker.Add(new KeyValuePair <DateTime, decimal>(pair.Key, Averager.Average)); }