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); }
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(); }
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); } }
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)); } }
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)); } }
public void LoadFromData(StrokeData sData, float duration) { StartCoroutine(LoadOverTime(sData, duration)); }