コード例 #1
0
        public void LoadFromData(StrokeData sData)
        {
            m_TotalLength = 0;
            Vector3 prevPos = Vector3.zero;

            for (int i = 0; i < sData.m_RawStrokeNodeData.Length; i++)
            {
                TransformData sNodeData = sData.m_RawStrokeNodeData[i];

                Vector3 pos   = VectorExtensions.Parse(sNodeData.m_PosData);
                Vector3 rot   = VectorExtensions.Parse(sNodeData.m_RotData);
                Vector3 scale = VectorExtensions.Parse(sNodeData.m_ScaleData);

                // For each stroke node data add a new node
                StrokeNode newNode = new StrokeNode(pos, Quaternion.Euler(rot), scale);
                m_RawStrokeNodes.Add(newNode);

                // Accumulate length
                if (i > 0)
                {
                    m_TotalLength += Vector3.Distance(pos, prevPos);
                }

                prevPos = pos;
            }

            // Update spaced stroke nodes
            UpdateSpacedStrokeNodes(true);

            //Vector3 colVec = VectorExtensions.Parse(sData.m_Color);
            // m_StrokeRenderer.SetColour(m_StrokeRenderer.m_Color);
        }
コード例 #2
0
        public void Initialise(Canvas c)
        {
            List <StrokeData> strokeData = new List <StrokeData>();

            for (int i = 0; i < c.Strokes.Count; i++)
            {
                if (c.Strokes [i] != null)
                {
                    StrokeData s = new StrokeData();
                    if (s.Initialise(c.Strokes [i]))
                    {
                        strokeData.Add(s);
                    }
                }
            }
            m_StrokesData = strokeData.ToArray();
        }
コード例 #3
0
        public void LoadCanvas(CanvasData c)
        {
            // Clear canvas before load
            Clear();

            print("Loading canvas with stroke count of: " + c.m_StrokesData.Length);

            for (int i = 0; i < c.m_StrokesData.Length; i++)
            {
                // Get the stroke data
                StrokeData sData = c.m_StrokesData[i];

                // Find an instantiate stroke renderer
                StrokeRenderer sRend = Painter3DResourceManager.Instance.GetStrokeRenderer(sData.m_RendererName);

                Color col = VectorExtensions.ParseVec4(sData.m_Color);
                // Create new stroke
                Stroke s = Stroke.GetNewStroke(sRend, Painter3DManager.Instance.m_PaintingLayer, float.Parse(sData.m_Scale), col);

                // Set stroke transform
                sData.m_TransformData.SetTransfrom(s.transform);


                /*
                 * // Create new stroke
                 * Stroke s = new GameObject("Stroke").AddComponent<Stroke>();
                 *
                 * // Set stroke transform
                 * sData.m_TransformData.SetTransfrom(s.transform);
                 *
                 * // Find an instantiate stroke renderer
                 * StrokeRenderer sRend = Painter3DResourceManager.Instance.GetStrokeRenderer(sData.m_RendererName);
                 *
                 * // Initialize the stroke
                 * s.Init(sRend, Painter3DManager.Instance.m_PaintingLayer, float.Parse(sData.m_Scale));
                 */

                // Add stroke to canvas
                AddStroke(s);

                // Load stroke data
                s.LoadFromData(sData);
            }
        }
コード例 #4
0
        IEnumerator LoadOverTime(StrokeData sData, float duration)
        {
            m_TotalLength = 0;
            Vector3 prevPos = Vector3.zero;

            float timeBetweenNodes = duration / sData.m_RawStrokeNodeData.Length;

            for (int i = 0; i < sData.m_RawStrokeNodeData.Length; i++)
            {
                TransformData sNodeData = sData.m_RawStrokeNodeData[i];

                Vector3 pos   = VectorExtensions.Parse(sNodeData.m_PosData);
                Vector3 rot   = VectorExtensions.Parse(sNodeData.m_RotData);
                Vector3 scale = VectorExtensions.Parse(sNodeData.m_ScaleData);

                // For each stroke node data add a new node
                StrokeNode newNode = new StrokeNode(pos, Quaternion.Euler(rot), scale);
                m_RawStrokeNodes.Add(newNode);

                // Accumulate length
                if (i > 0)
                {
                    m_TotalLength += Vector3.Distance(pos, prevPos);
                }

                prevPos = pos;


                // Set colour
                Vector3 colVec = VectorExtensions.Parse(sData.m_Color);
                m_StrokeRenderer.m_Color = new Color(colVec.x, colVec.y, colVec.z);

                // Force render
                m_StrokeRenderer.DrawStroke(true);
                m_StrokeRenderer.SetColour(m_StrokeRenderer.m_Color);

                yield return(new WaitForSeconds(timeBetweenNodes));
            }
        }
コード例 #5
0
        IEnumerator LoadCanvasOverTimeRoutine(CanvasData c, float duration)
        {
            // Clear canvas before load
            Clear();

            float frameDuration = duration / c.m_StrokesData.Length;

            for (int i = 0; i < c.m_StrokesData.Length; i++)
            {
                // Get the stroke data
                StrokeData sData = c.m_StrokesData[i];

                // Find an instantiate stroke renderer
                StrokeRenderer sRend = Painter3DResourceManager.Instance.GetStrokeRenderer(sData.m_RendererName);
                sRend = Instantiate(sRend);

                Color col = VectorExtensions.ParseVec4(sData.m_Color);

                // Create new stroke
                Stroke s = Stroke.GetNewStroke(sRend, Painter3DManager.Instance.m_PaintingLayer, float.Parse(sData.m_Scale), col);

                // Add stroke to canvas
                AddStroke(s);

                // Set stroke transform
                sData.m_TransformData.SetTransfrom(s.transform);

                // Load stroke data
                //s.LoadFromData(sData);

                // TESTING - loading over time
                s.LoadFromData(sData, frameDuration);

                // wait for end of frame
                yield return(new WaitForSeconds(frameDuration));
            }
        }
コード例 #6
0
 public void LoadFromData(StrokeData sData, float duration)
 {
     StartCoroutine(LoadOverTime(sData, duration));
 }