protected void CreateZoneLineRenderer(RadiationLink lnk, AttenuationZone zn)
        {
            /// Create the components
            LineRenderer lr     = CreateBasicRenderer(lnk.GO.transform);
            float        valIn  = -(float)Math.Log10(zn.attenuationOut) / 10f;
            float        valOut = -(float)Math.Log10(zn.attenuationOut) / 10f;

            lr.SetColors(grad.Evaluate(valIn), grad.Evaluate(valOut));

            // Set up the geometry
            float w = Mathf.Clamp(RadioactivitySettings.overlayRayWidthMin, RadioactivitySettings.overlayRayWidthMin, RadioactivitySettings.overlayRayWidthMax);

            lr.SetWidth(w, w);

            Vector3 zoneStart = lnk.source.EmitterTransform.position;

            Vector3 pVec = Vector3.Cross((zn.startPosition - zn.endPosition), Camera.main.transform.forward).normalized;

            lr.useWorldSpace = true;
            lr.SetPosition(0, zoneStart + (lnk.sink.SinkTransform.position - lnk.source.EmitterTransform.position).normalized * zn.dist1);
            lr.SetPosition(1, zoneStart + (lnk.sink.SinkTransform.position - lnk.source.EmitterTransform.position).normalized * zn.dist2);
            lr.useWorldSpace = false;

            //lr.SetPosition(0, zoneStart + zn.dist1 + pVec*w*0f);
            //lr.SetPosition(1, zoneStart + zn.dist2 + pVec * w * 0f);
        }
Пример #2
0
 // Build new links for a new source in the network
 protected void BuildNewRadiationLink(RadioactiveSource src)
 {
     for (int i = 0; i < allRadSinks.Count; i++)
     {
         RadiationLink l = new RadiationLink(src, allRadSinks[i]);
         allLinks.Add(l);
     }
 }
Пример #3
0
 // Build new link for a new sink in the network
 protected void BuildNewRadiationLink(RadioactiveSink snk)
 {
     for (int i = 0; i < allRadSources.Count; i++)
     {
         RadiationLink l = new RadiationLink(allRadSources[i], snk);
         allLinks.Add(l);
     }
 }
 public void Update(RadiationLink lnk)
 {
     for (int i = 0; i < shownLinks.Count; i++)
     {
     if (shownLinks[i] == lnk)
         UpdateRenderer(lnk);
     }
 }
        protected void UpdateRenderer(RadiationLink lnk)
        {
            DestroyZoneLineRenderers(lnk);

            for (int i = 0; i < lnk.Path.Count; i++)
            {
                CreateZoneLineRenderer(lnk, lnk.Path[i]);
            }
        }
 public void Update(RadiationLink lnk)
 {
     for (int i = 0; i < shownLinks.Count; i++)
     {
         if (shownLinks[i] == lnk)
         {
             UpdateRenderer(lnk);
         }
     }
 }
 protected void UpdatePathRenderer(RadiationLink lnk)
 {
     if (lnk.GO != null)
     {
         //   lnk.OverlayPath.SetColors(Color.red, new Color(1f, Mathf.Log10((float)(1d / lnk.fluxEndScale)) / 10f, Mathf.Log10((float)(1d / lnk.fluxEndScale)) / 10f));
         // lnk.OverlayPath.SetPosition(0, lnk.source.EmitterTransform.position);
         // lnk.OverlayPath.SetPosition(1, lnk.sink.SinkTransform.position);
         // float w = Mathf.Clamp(lnk.source.CurrentEmission *RadioactivitySettings.overlayRayWidthMult, RadioactivitySettings.overlayRayWidthMin, RadioactivitySettings.overlayRayWidthMax);
         // lnk.OverlayPath.SetWidth(w, w);
     }
 }
 // Destroy the line renderer
 protected void DestroyRenderer(RadiationLink lnk)
 {
     if (lnk.GO)
     {
         Destroy(lnk.GO);
     }
     if (RadioactivitySettings.debugOverlay)
     {
         Utils.Log("Overlay: Hiding link between " + lnk.source.SourceID + " and " + lnk.sink.SinkID + " for render");
     }
 }
 protected void DestroyZoneLineRenderers(RadiationLink lnk)
 {
     if (lnk.GO != null)
     {
         int childs = lnk.GO.transform.childCount;
         for (int i = childs - 1; i >= 0; i--)
         {
             GameObject.Destroy(lnk.GO.transform.GetChild(i).gameObject);
         }
     }
 }
 // Create and set up the line renderer
 protected void SetupRenderer(RadiationLink lnk)
 {
     lnk.GO = new GameObject("RadioactiveLinkRendererRoot");
     if (HighLogic.LoadedSceneIsFlight)
     {
         lnk.GO.transform.SetParent(lnk.source.part.partTransform, true);
         //lnk.GO.transform.localRotation = Quaternion.identity;
     }
     else if (HighLogic.LoadedSceneIsEditor)
     {
         if (EditorLogic.fetch.ship != null)
         {
         }
     }
     for (int i = 0; i < lnk.Path.Count; i++)
     {
         CreateZoneLineRenderer(lnk, lnk.Path[i]);
     }
     if (RadioactivitySettings.debugOverlay)
     {
         Utils.Log("Overlay: Showing link between " + lnk.source.SourceID + " and " + lnk.sink.SinkID + " for render");
     }
 }
Пример #11
0
        // Build new link for a new sink in the network
        protected void BuildNewRadiationLink(RadioactiveSink snk)
        {
            for (int i=0; i< allRadSources.Count; i++)
            {
               RadiationLink l = new RadiationLink(allRadSources[i], snk);
               allLinks.Add(l);

            }
        }
 public void Hide(RadiationLink lnk)
 {
     DestroyRenderer(lnk);
       shownLinks.Remove(lnk);
 }
 public void Show(RadiationLink lnk)
 {
     SetupRenderer(lnk);
       shownLinks.Add(lnk);
 }
        protected void UpdatePathRenderer(RadiationLink lnk)
        {
            if (lnk.GO != null)
              {

               //   lnk.OverlayPath.SetColors(Color.red, new Color(1f, Mathf.Log10((float)(1d / lnk.fluxEndScale)) / 10f, Mathf.Log10((float)(1d / lnk.fluxEndScale)) / 10f));
               // lnk.OverlayPath.SetPosition(0, lnk.source.EmitterTransform.position);
               // lnk.OverlayPath.SetPosition(1, lnk.sink.SinkTransform.position);
               // float w = Mathf.Clamp(lnk.source.CurrentEmission *RadioactivitySettings.overlayRayWidthMult, RadioactivitySettings.overlayRayWidthMin, RadioactivitySettings.overlayRayWidthMax);
               // lnk.OverlayPath.SetWidth(w, w);
              }
        }
        protected void UpdateRenderer(RadiationLink lnk)
        {
            DestroyZoneLineRenderers(lnk);

            for (int i = 0; i < lnk.Path.Count; i++)
            {
              CreateZoneLineRenderer(lnk, lnk.Path[i]);
            }
        }
 protected void DestroyZoneLineRenderers(RadiationLink lnk)
 {
     if (lnk.GO != null)
     {
     int childs = lnk.GO.transform.childCount;
     for (int i = childs - 1; i >= 0; i--)
     {
         GameObject.Destroy(lnk.GO.transform.GetChild(i).gameObject);
     }
     }
 }
        // Create and set up the line renderer
        protected void SetupRenderer(RadiationLink lnk)
        {
            lnk.GO = new GameObject("RadioactiveLinkRendererRoot");
              if (HighLogic.LoadedSceneIsFlight)
              {
              lnk.GO.transform.SetParent(lnk.source.part.partTransform, true);
              //lnk.GO.transform.localRotation = Quaternion.identity;
              }
              else if (HighLogic.LoadedSceneIsEditor)
              {
            if (EditorLogic.fetch.ship != null)
            {

            }
              }
              for (int i = 0; i < lnk.Path.Count; i++)
              {
            CreateZoneLineRenderer(lnk, lnk.Path[i]);
              }
              if (RadioactivitySettings.debugOverlay)
            Utils.Log("Overlay: Showing link between " + lnk.source.SourceID + " and "+ lnk.sink.SinkID+ " for render");
        }
 // Destroy the line renderer
 protected void DestroyRenderer(RadiationLink lnk)
 {
     if (lnk.GO)
     Destroy(lnk.GO);
       if (RadioactivitySettings.debugOverlay)
     Utils.Log("Overlay: Hiding link between " + lnk.source.SourceID + " and " + lnk.sink.SinkID + " for render");
 }
        protected void CreateZoneLineRenderer(RadiationLink lnk, AttenuationZone zn)
        {
            /// Create the components
            LineRenderer lr = CreateBasicRenderer(lnk.GO.transform);
            float valIn = -(float)Math.Log10(zn.attenuationOut)/10f;
            float valOut = -(float)Math.Log10(zn.attenuationOut) / 10f;
            lr.SetColors(grad.Evaluate(valIn),grad.Evaluate(valOut));

            // Set up the geometry
            float w = Mathf.Clamp(RadioactivitySettings.overlayRayWidthMin, RadioactivitySettings.overlayRayWidthMin, RadioactivitySettings.overlayRayWidthMax);
            lr.SetWidth(w, w);

            Vector3 zoneStart = lnk.source.EmitterTransform.position;

            Vector3 pVec = Vector3.Cross((zn.startPosition - zn.endPosition), Camera.main.transform.forward).normalized;

            lr.useWorldSpace = true;
            lr.SetPosition(0, zoneStart + (lnk.sink.SinkTransform.position - lnk.source.EmitterTransform.position).normalized * zn.dist1);
            lr.SetPosition(1, zoneStart + (lnk.sink.SinkTransform.position - lnk.source.EmitterTransform.position).normalized * zn.dist2);
            lr.useWorldSpace = false;

            //lr.SetPosition(0, zoneStart + zn.dist1 + pVec*w*0f);
            //lr.SetPosition(1, zoneStart + zn.dist2 + pVec * w * 0f);
        }
Пример #20
0
        // Build new links for a new source in the network
        protected void BuildNewRadiationLink(RadioactiveSource src)
        {
            for (int i=0; i< allRadSinks.Count; i++)
            {
              RadiationLink l = new RadiationLink(src, allRadSinks[i]);
              allLinks.Add(l);

            }
        }
 public void Show(RadiationLink lnk)
 {
     SetupRenderer(lnk);
     shownLinks.Add(lnk);
 }
 public void Hide(RadiationLink lnk)
 {
     DestroyRenderer(lnk);
     shownLinks.Remove(lnk);
 }