Example #1
0
        ////////////////////////////////////////////////////////////////

        public void OnPlacedBridgePointEvent(BridgePointPlacedEvent gameEvent)
        {
            Debug.Log("OnBridgePointPlaced");

            CreateBridgeParameters bridgeParameters;
            bool bridgeNeedsUpdate = PlaceBridgePoint(gameEvent.PlacedPoint, out bridgeParameters);

            ////////////////////////////////////////////////////////////////

            if (bridgeNeedsUpdate)
            {
                m_Bridge = BridgePlanner.PrepareBridge(bridgeParameters);
                UpdateBridgeMesh();
            }
        }
Example #2
0
        /// <summary>
        /// Places the given bridge point
        /// </summary>
        /// <param name="placePoint"></param>
        /// <returns>True, if the bridge needs to be updated now</returns>
        bool PlaceBridgePoint(RawBridgePoint placePoint, out CreateBridgeParameters outBridgeParamters)
        {
            outBridgeParamters = new CreateBridgeParameters();
            bool firstPointIsValid  = m_FirstBridgePoint.IsValid();
            bool secondPointIsValid = m_SecondBridgePoint.IsValid();


            ////////////////////////////////////////////////////////////////

            if (!firstPointIsValid && !secondPointIsValid)
            {
                // No point set? Set the first point
                m_FirstBridgePoint = placePoint;
            }
            else if (firstPointIsValid && !secondPointIsValid)
            {
                // Does this point work to create a bridge?
                CreateBridgeParameters createBridgeParamters;
                BridgeValidationResult result = BridgePlanner.ValidateBridgePlacement(new ValidateBridgeInput(m_FirstBridgePoint, placePoint), out createBridgeParamters);
                if (result == BridgeValidationResult.Success)
                {
                    // Yes! Lets prepare everything for updating the bridge
                    m_SecondBridgePoint = placePoint;
                    outBridgeParamters  = createBridgeParamters;
                    return(true);
                }
                else
                {
                    // No. Instead, override the first point!
                    m_FirstBridgePoint = placePoint;
                    return(false);
                }
            }
            else if (firstPointIsValid && secondPointIsValid)
            {
                // First try to override second point, if that fails, try to override first point.

                // Try first point.
                CreateBridgeParameters createBridgeParamters;
                BridgeValidationResult result = BridgePlanner.ValidateBridgePlacement(new ValidateBridgeInput(m_FirstBridgePoint, placePoint), out createBridgeParamters);
                if (result == BridgeValidationResult.Success)
                {
                    // Make the new point the second point
                    m_SecondBridgePoint = placePoint;
                    outBridgeParamters  = createBridgeParamters;
                    return(true);
                }
                else
                {
                    result = BridgePlanner.ValidateBridgePlacement(new ValidateBridgeInput(placePoint, m_SecondBridgePoint), out createBridgeParamters);
                    if (result == BridgeValidationResult.Success)
                    {
                        // Make the previous second the first point & the new point the second point
                        m_FirstBridgePoint  = m_SecondBridgePoint;
                        m_SecondBridgePoint = placePoint;
                        outBridgeParamters  = createBridgeParamters;
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
            }
            else
            {
                Debug.LogError("BridgePlanner: Second point is valid but first is not?!");
            }

            return(false);
        }