Example #1
0
        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);
        }