// adds roller coaster cart reference to roller coaster controller and rc portal
        public void AddCartReference(RollerCoasterCart _rollerCoasterCart)
        {
            rollerCoasterCart = _rollerCoasterCart;
            rollerCoasterController.AddCartReference(rollerCoasterCart);
            rcCartPortal.AddCartReference(rollerCoasterCart);

            // add graph reph to cart
            rollerCoasterCart.AddGraphReference(graphCreator);

            if (trackIsComplete)
            {
                rollerCoasterCart.TrackIsComplete(true);
            }
        }
Ejemplo n.º 2
0
        void OnTriggerEnter(Collider collider)
        {
            RollerCoasterCart rollerCoasterCart = collider.GetComponent <RollerCoasterCart>();

            if (!rollerCoasterCart)
            {
                return;
            }

            if (!rollerCoasterCart.IsRunning)
            {
                return;
            }

            rollerCoasterBuilderController.StartStopCart();
        }
        // places full sized item in scene
        public void PlaceFullsizedItem(Transform mostRecentElement)
        {
            GameObject fullItem = (GameObject)Instantiate(GetCurrentFullSize(), new Vector3(0, 0, 0), Quaternion.identity);

            if (currentItemName != "Cart")
            {
                // get connectors
                Transform connectorBackwardNew = fullItem.transform.Find("Connector Backward");
                Transform connectorForwardAOld = mostRecentElement.Find("Connector Forward A");
                Transform connectorForwardBOld = mostRecentElement.Find("Connector Forward B");

                // find out direction vector and apply rotation
                Vector3 directionVec = (connectorForwardBOld.position - connectorForwardAOld.position).normalized;

                Quaternion newRotation = Quaternion.FromToRotation(Vector3.forward, directionVec);
                fullItem.transform.rotation = Quaternion.Euler(fullItem.transform.rotation.eulerAngles.x, newRotation.eulerAngles.y, fullItem.transform.rotation.eulerAngles.z);

                // based on the most recently placed element (before this one), find out where to place the current one
                // apply same rotation to new item
                Vector3 vectorConnectorBackwardToCenter = fullItem.transform.position - connectorBackwardNew.position;

                // apply this vector to connectorForwardOld
                Vector3 newPos = connectorForwardAOld.position + vectorConnectorBackwardToCenter;

                fullItem.transform.position = newPos;

                // add item to list for roller coaster
                rollerCoasterBuilderController.AddElementToRC(fullItem.transform);

                // also instantiate particle system
                GameObject particleSystem = (GameObject)Instantiate(particleSystemPrefab, new Vector3(0, 0, 0), Quaternion.identity);
                particleSystem.transform.position = newPos;
                // play building audio
                audioSource.Play();

                // deactivate item and start coroutine to re-activate it
                fullItem.SetActive(false);
                StartCoroutine(PlaceItemCoroutine(fullItem));
            }
            else
            {
                // in this case it's a cart
                RollerCoasterCart rollerCoasterCart = fullItem.GetComponent <RollerCoasterCart>();
                rollerCoasterBuilderController.AddCartReference(rollerCoasterCart);
            }
        }
Ejemplo n.º 4
0
 public void AddCartReference(RollerCoasterCart _rollerCoasterCart)
 {
     rollerCoasterCart = _rollerCoasterCart;
     syncWaypointsWithCart();
     rollerCoasterCart.ResetCart();
 }
Ejemplo n.º 5
0
 public void AddCartReference(RollerCoasterCart _rollerCoasterCart)
 {
     rollerCoasterCart = _rollerCoasterCart;
 }