public void CreateClapperboard(string clapperboardId, AIRLab.Mathematics.Point2D location, SideColor color)
        {
            var clapperboard = GameObject.CreatePrimitive(PrimitiveType.Cube);
            clapperboard.transform.position = new Vector3((float)location.X, 7, (float)location.Y);
            clapperboard.transform.localScale = new Vector3(16, 10, 5);
            clapperboard.GetComponent<Renderer>().material.color = Color.black;

            var cap = GameObject.CreatePrimitive(PrimitiveType.Cube);
            cap.transform.position = new Vector3((float)location.X, 14.5f, (float)location.Y);
            cap.transform.Translate(openClapperCapOffset);
            cap.transform.rotation = Quaternion.Euler(0, 0, 60);
            cap.transform.localScale = new Vector3(16, 5, 5);
            cap.GetComponent<Renderer>().material.color = UnityColor[color];
            cap.name = clapperboardId;
        }
        public void CreateLight(string lightId, AIRLab.Mathematics.Point2D location)
        {
            var radius = 3.2f;
            var light = GameObject.CreatePrimitive(PrimitiveType.Sphere);

            light.transform.position = new Vector3((float)location.X, radius, (float)location.Y);
            light.transform.localScale = new Vector3(radius * 2, radius * 2, radius * 2);

            light.GetComponent<Renderer>().material.color = Color.yellow;

            light.AddComponent<Rigidbody>();

            light.GetComponent<Rigidbody>().drag = light.GetComponent<Rigidbody>().angularDrag = 4f;
            light.GetComponent<Rigidbody>().useGravity = true;
            light.GetComponent<Rigidbody>().mass = 0.2f;
            light.name = lightId;
        }
        public void CreateStartingArea(AIRLab.Mathematics.Point2D centerLocation, SideColor color)
        {
            var offset = new Vector3((float)centerLocation.X, 1.5f, (float)centerLocation.Y);

            var top = GameObject.CreatePrimitive(PrimitiveType.Cube);
            top.transform.position = new Vector3(0, 0, 40 / 2) + offset;

            var bottom = GameObject.CreatePrimitive(PrimitiveType.Cube);
            bottom.transform.position = new Vector3(0, 0, -40 / 2) + offset;

            top.transform.localScale = bottom.transform.localScale = new Vector3(40, 3, 3);
            bottom.GetComponent<Renderer>().material.color = top.GetComponent<Renderer>().material.color = UnityColor[color];
        }
        public void CreateStand(string standId, AIRLab.Mathematics.Point2D location, SideColor color)
        {
            var stand = GameObject.CreatePrimitive(PrimitiveType.Cylinder);

            stand.transform.position = new Vector3((float)location.X, 3.5f, (float)location.Y);
            stand.transform.localScale = new Vector3(6, 3.45f, 6);

            stand.GetComponent<Renderer>().material.color = UnityColor[color];

            stand.AddComponent<Rigidbody>();
            stand.GetComponent<Rigidbody>().drag = stand.GetComponent<Rigidbody>().angularDrag = 4;
            stand.GetComponent<Rigidbody>().useGravity = true;
            stand.GetComponent<Rigidbody>().mass = 0.3f;
            stand.GetComponent<Rigidbody>().constraints = RigidbodyConstraints.FreezeRotationX | RigidbodyConstraints.FreezeRotationZ;
            stand.name = standId;
        }
        public void CreateStairs(string stairsId, AIRLab.Mathematics.Point2D centerLocation, SideColor color)
        {
            var offset = new Vector3((float)centerLocation.X, 0, (float)centerLocation.Y);

            float ySize = 7;
            Func<float, float> getYSize = y => -ySize / (7 * 4) * (y - 39) + ySize;

            float width = 50;
            float bottomLength = 60;
            float topLength = bottomLength - 21;
             	int stairsCount = 3;
            var stairStep = (bottomLength - topLength) / stairsCount;

            for (var length = topLength; length <= bottomLength; length += stairStep)
            {
                var height = getYSize(length);
                var stair = GameObject.CreatePrimitive(PrimitiveType.Cube);
                stair.transform.position = new Vector3(0, 0, (bottomLength - length) / 2);
                stair.transform.Translate(offset + Vector3.up * height / 2);
                stair.transform.localScale = new Vector3(width, height, length);
                stair.GetComponent<Renderer>().material.color = UnityColor[color];
                stair.name = length == topLength ? stairsId : "wall";
            }

            Action<float> addBorder = x =>
            {
                var border = GameObject.CreatePrimitive(PrimitiveType.Cube);
                border.transform.localScale = new Vector3(3, ySize + 2.2f, bottomLength);
                border.transform.position = new Vector3(x, (ySize + 2.2f) / 2, 0) + offset;
                border.GetComponent<Renderer>().material.color = Color.blue;
            };

            addBorder(width / 2);
            addBorder(-width / 2);
        }
 public void CreatePopCornDispenser(string dispenserId, AIRLab.Mathematics.Point2D location)
 {
     var dispenser = GameObject.CreatePrimitive(PrimitiveType.Cube);
     dispenser.transform.position = new Vector3((float)location.X, 14, (float)location.Y);
     dispenser.transform.localScale = new Vector3(6, 28, 6);
     dispenser.GetComponent<Renderer>().material.color = Color.blue;
     dispenser.name = dispenserId;
 }
        public void CreatePopCorn(string popcornId, AIRLab.Mathematics.Point2D location)
        {
            var popcorn = GameObject.CreatePrimitive(PrimitiveType.Cylinder);

            popcorn.transform.position = new Vector3((float)location.X, 7, (float)location.Y);
            popcorn.transform.localScale = new Vector3(9.5f, 7, 9.5f);

            popcorn.GetComponent<Renderer>().material.color = Color.white;

            popcorn.AddComponent<Rigidbody>();
            popcorn.GetComponent<Rigidbody>().drag = popcorn.GetComponent<Rigidbody>().angularDrag = 4;
            popcorn.GetComponent<Rigidbody>().useGravity = true;
            popcorn.GetComponent<Rigidbody>().mass = 0.2f;
            popcorn.GetComponent<Rigidbody>().centerOfMass = new Vector3(0, -1.5f, 0);
            popcorn.name = popcornId;
        }