public void OnInputClicked(InputClickedEventData eventData)
    {
        switch (m_state)
        {
        case State.Scanning:
            SetState(State.FinalizeScan);
            break;

        case State.Playing:
            m_magnetOn = !m_magnetOn;
            if (m_magnetOn)
            {
                MonoBehaviour[] objects = FindObjectsOfType <MonoBehaviour>();
                foreach (MonoBehaviour obj in objects)
                {
                    IMagnetic magnetic = obj as IMagnetic;
                    if (magnetic != null)
                    {
                        float distance = (magnet.transform.position - obj.transform.position).magnitude;
                        if (distance < 1)
                        {
                            AttachToMagnet(obj.gameObject);
                            magnetic.OnMagnet(true);
                            m_magnetObjects.Add(obj.gameObject);
                        }
                    }
                }
            }
            else
            {
                foreach (GameObject obj in m_magnetObjects)
                {
                    DetachFromMagnet(obj);
                    obj.GetComponent <IMagnetic>().OnMagnet(false);
                }
                m_magnetObjects.Clear();
            }
            break;
        }
    }
        public Material(float noise)
        {
            Noise = noise;
            AcousticProperties       = new Acoustic();
            AtomicProperties         = new Atomic();
            ChemicalProperties       = new Chemical();
            ElectricalProperties     = new Electrical();
            EnvironmentalProperties  = new Environmental();
            MagneticProperties       = new Magnetic();
            ManufacturingProperties  = new Manufacturing();
            MechanicalProperties     = new Mechanical();
            OpticalProperties        = new Optical();
            RadiologicalProperties   = new Radiological();
            ThermoDynamicsProperties = new ThermoDynamics();

            float input_start  = -1;
            float input_end    = 1;
            float output_start = 0;
            float output_end   = 256 * 256 * 256;

            double output;

            double slope = 1.0 * (output_end - output_start) / (input_end - input_start);

            output = output_start + slope * (Noise - input_start);

            float Positive = Noise.Spread(-1, 1, 0, 1);

            float r = Voxel.GetRed(Positive);
            float g = Voxel.GetGreen(Positive);
            float b = Voxel.GetBlue(Positive);
            float a = Voxel.GetAlpha(Noise);

            PhysicalMaterial = new PhongMaterial
            {
                DiffuseColor = new Color4(r, g, b, a)
            };
        }
Beispiel #3
0
 private void Start()
 {
     subject = transform.GetComponentInParent <IMagnetic>();
     GetComponent <Image>().color = polarity == POSITIVE ? colors.PositiveColor : colors.NegativeColor;
 }