Exemplo n.º 1
0
 public static void AddHighlight(GameObject gameobject, Color color, bool force = false)
 {
     if (aura != null)
     {
         Renderer[] renderers = gameobject.GetComponentsInChildren <Renderer>();
         if (renderers != null)
         {
             foreach (Renderer renderer in renderers)
             {
                 if (renderer.sharedMaterial.shader != aura.shader)
                 {
                     // TODO (hitch) find a better way to check if this is opaque or not,
                     // right now we check the render queue (2000 = opaque, 2450 = alpha cutout)
                     // this will also detect overlay materials as non-opaque
                     // (<= 2500 is considered opaque, cutouts are barely opaque)
                     Material mat = new Material(aura);
                     if (renderer.sharedMaterial.renderQueue > 2000)
                     {
                         // FIXME (hitch) this probably isn't needed with the new depth test system ^_^
                         mat.mainTexture = renderer.sharedMaterial.mainTexture;
                     }
                     mat.color = color;
                     if (renderer is MeshRenderer)
                     {
                         MeshFilter filter = renderer.GetComponent <MeshFilter>();
                         if (filter != null)
                         {
                             SpecialStates state = renderer.GetComponent <SpecialStates>();
                             if (force || (renderer.enabled && (state == null || !state.hideFromHighlighter)))
                             {
                                 MeshRenderer nr = new GameObject().AddComponent <MeshRenderer>();
                                 nr.transform.SetParent(renderer.transform);
                                 nr.transform.localPosition = Vector3.zero;
                                 nr.transform.localScale    = Vector3.one;
                                 nr.receiveShadows          = false;
                                 nr.shadowCastingMode       = UnityEngine.Rendering.ShadowCastingMode.Off;
                                 nr.transform.localRotation = Quaternion.identity;
                                 nr.name             = renderer.name + " (Aura)";
                                 nr.sharedMaterial   = mat;
                                 nr.gameObject.layer = highlightLayer;
                                 MeshFilter f = nr.gameObject.AddComponent <MeshFilter>();
                                 f.sharedMesh = renderer.GetComponent <MeshFilter>().sharedMesh;
                             }
                         }
                     }
                 }
             }
         }
     }
 }
Exemplo n.º 2
0
        public virtual void HaveSpecialState(Mobile who,SpecialStates state)
        {
            foreach(Mobile.AuraReleaseTimer art in who.Auras)
            {

            }
        }