Ejemplo n.º 1
0
    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);
    }
Ejemplo n.º 2
0
 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);
 }
Ejemplo n.º 3
0
 public void Dispose()
 {
     Lines.Clear();
     TimeLines.Values.ToList().ForEach(line => line.Dispose());
     TimeLines.Clear();
     Averager.Dispose();
     LineMaker.Dispose();
 }
Ejemplo n.º 4
0
 public void ClearLines()
 {
     TimeLines.Values.ToList().ForEach(line => line.Clear());
     TimeLines.Clear();
     Averager.Clear();
     LineMaker.Clear();
     Lines.Clear();
 }
Ejemplo n.º 5
0
        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));
        }
Ejemplo n.º 6
0
    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;
                }
            }
        }
    }
Ejemplo n.º 7
0
 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));
 }