예제 #1
0
        //Establish Connection
        IEnumerator StartConnection(Transform source, Transform target)
        {
            if (DataStore.Instance.AddConnectedDevices(source, target))
            {
                Transform connection = Instantiate(ConnectionLine, Connections);
                connection.GetComponent <DeviceConnection>().Source = source;
                connection.GetComponent <DeviceConnection>().Target = target;
                LineRenderer lr = connection.GetComponent <LineRenderer>();
                lr.transform.position = source.position;
                lr.SetPosition(0, source.position);
                lr.SetPosition(1, target.position);
                lr.material.mainTextureScale = new Vector3(Vector3.Distance(source.position, target.position), 1f, 1f);
                while (!lr.GetPosition(1).Equals(target.position))
                {
                    lr.SetPosition(1, Vector3.MoveTowards(lr.GetPosition(1), target.position, m_Connection_Speed_Line * Time.deltaTime));
                    yield return(new WaitForSeconds(m_Connection_Smooth_WaitFor));
                }

                AddColliderToLine(connection, lr);
            }
            DeviceConnection dc               = GetDeviceConnection(source, target);
            Transform        parent           = dc.transform;
            Transform        connectionObject = Instantiate(Connection, parent);

            connectionObject.gameObject.GetComponent <DrawConnection>().Init(m_Connection_Duration).Connect(source, target, dc);
        }
예제 #2
0
 public void Connect(Transform source, Transform target, DeviceConnection dc)
 {
     Debug.Log(source + " to " + target);
     _source = source;
     _target = target;
     SetMaterial(dc);
     _aLine.Enqueue(source.position);
     _aLine.Enqueue(target.position);
     _hasStarted = true;
 }
        private void ShowConnectionData(DeviceConnection dc, Connection conn)
        {
            Vector3 position = Vector3.Lerp(dc.Source.position, dc.Target.position, 0.5f);

            Panels.GetComponent <PanelManager>().ShowPanel(dc, position, PanelType.Connection, conn);
            if (conn != null)
            {
                Debug.Log("Display data " + conn.Body + " of source: " + conn.Start.Name + " target: " + conn.Target.Name);
            }
        }
예제 #4
0
 public void SetDataLayer(object sender)
 {
     if (sender.GetType() == typeof(GameObject))
     {
         _device = sender as GameObject;
     }
     if (sender.GetType() == typeof(DeviceConnection))
     {
         _deviceConnection = sender as DeviceConnection;
     }
 }
예제 #5
0
        private void SetMaterial(DeviceConnection dc)
        {
            if (dc != null)
            {
                //Debug.Log(_line.material.name);
                //Debug.Log(_source.name + " vs " + dc.Source.name);
                //Debug.Log(_source.name.Equals(dc.Source.name));
                _line.material = ConnectionUp;
                //if (_source.name.Equals(dc.Source.name))
                //    _line.material = ConnectionUp;
                //else
                //    _line.material = ConnectionDown;

                //line.UpdateGIMaterials();
                Debug.Log(_line.material.name);
            }
        }
예제 #6
0
 private DeviceConnection GetDeviceConnection(Transform source, Transform target)
 {
     foreach (Transform connectionLine in Connections)
     {
         DeviceConnection dc = connectionLine.GetComponent <DeviceConnection>();
         if (dc != null)
         {
             if (dc.Source.name.Equals(source.name, StringComparison.OrdinalIgnoreCase) && dc.Target.name.Equals(target.name, StringComparison.OrdinalIgnoreCase))
             {
                 return(dc);
             }
             else
             if (dc.Source.name.Equals(target.name, StringComparison.OrdinalIgnoreCase) && dc.Target.name.Equals(source.name, StringComparison.OrdinalIgnoreCase))
             {
                 return(dc);
             }
         }
     }
     return(null);
 }