public void DispatchShapeCollection() { var drawnShapes = GetComponentsInChildren <MeshFilter>(); var shapeSerializations = drawnShapes.Select(s => { var d = s.mesh.vertices.Select(v => new Vec2Serialization { x = v.x + s.transform.position.x, y = v.y + s.transform.position.y }).ToArray(); return(new ShapeSerialization { d = d }); }).ToArray(); var shapeCollection = new ShapeCollectionSerialization { s = shapeSerializations }; var json = JsonUtility.ToJson(shapeCollection); NetworkPeerConnection.Instance.SendSocketMessage(json); }
IEnumerator ShapeGeneration_Coroutine(ShapeCollectionSerialization shapeCollection) { var pumpkin = Instantiate(pumpkinPrefab); pumpkin.SetActive(false); pumpkin.transform.position = transform.position + pumpkinSpawnOffset; var drawnShapeAnchor = pumpkin.GetComponentInChildren <DrawnShape>(); var anchorPosition = drawnShapeAnchor.transform.localPosition; foreach (var shape in shapeCollection.s) { var points = shape.d.Select(v => { var z = Mathf.Pow(v.x, 2) * 0.002f; return(new Vector3(v.x * shapeScale, v.y * shapeScale, z)); }) .ToList(); var drawnShape = Instantiate(drawnShapeAnchor); drawnShape.transform.parent = pumpkin.transform; drawnShape.transform.localPosition = anchorPosition; drawnShape.SetPoints(points); yield return(null); } //remove the original anchor Destroy(drawnShapeAnchor); //Make pumpkin face user var lookDirection = Camera.main.transform.position - pumpkin.transform.position; lookDirection.y = 0f; pumpkin.transform.rotation = Quaternion.LookRotation(-lookDirection); pumpkin.SetActive(true); }