Exemple #1
0
 /**
  * Draws an icon at the point of contact on the object, if appropriate.
  */
 public virtual void DrawGrabIcon()
 {
     if (isHeld && showIcon && Camera.main.WorldToScreenPoint(transform.position).z > 0f && icon != null)
     {
         Vector3 screenPosition = Camera.main.WorldToScreenPoint(grabPoint.position);
         icon.Draw(new Vector3(screenPosition.x, screenPosition.y));
     }
 }
        private void DrawIcon(Vector2 offset, CursorIconBase icon, bool isLook, bool canAnimate = true)
        {
            if (icon != null)
            {
                bool isNew = false;
                if (isLook && activeLookIcon != icon)
                {
                    activeLookIcon = icon;
                    isNew          = true;
                    icon.Reset();
                }
                else if (!isLook && activeIcon != icon)
                {
                    activeIcon = icon;
                    isNew      = true;
                    icon.Reset();
                }

                if (KickStarter.cursorManager.cursorRendering == CursorRendering.Hardware)
                {
                    if (icon.isAnimated)
                    {
                        Texture2D animTex = icon.GetAnimatedTexture(canAnimate);

                        if (icon.GetName() != lastCursorName)
                        {
                            lastCursorName = icon.GetName();
                            RecordCursorTexture(animTex);

                            SetHardwareCursor(currentCursorTexture2D, icon.clickOffset);
                        }
                    }
                    else if (isNew)
                    {
                        RecordCursorTexture(icon.texture);

                        SetHardwareCursor(currentCursorTexture2D, icon.clickOffset);
                    }
                }
                else
                {
                    Texture tex = icon.Draw(KickStarter.playerInput.GetMousePosition() + offset, canAnimate);
                    RecordCursorTexture(tex);
                }
            }
        }
Exemple #3
0
        private void DrawIcon(Vector2 offset, CursorIconBase icon, bool isLook)
        {
            if (icon != null)
            {
                bool isNew = false;
                if (isLook && activeLookIcon != icon)
                {
                    activeLookIcon = icon;
                    icon.Reset();
                }
                else if (!isLook && activeIcon != icon)
                {
                    activeIcon = icon;
                    isNew      = true;
                    icon.Reset();
                }

                if (KickStarter.cursorManager.cursorRendering == CursorRendering.Hardware)
                {
                    if (icon.isAnimated)
                    {
                        Texture2D animTex = icon.GetAnimatedTexture();
                        if (icon.GetName() != lastCursorName)
                        {
                            lastCursorName = icon.GetName();
                            Cursor.SetCursor(animTex, icon.clickOffset, CursorMode.Auto);
                        }
                    }
                    else if (isNew)
                    {
                        Cursor.SetCursor(icon.texture, icon.clickOffset, CursorMode.Auto);
                    }
                }
                else
                {
                    icon.Draw(KickStarter.playerInput.GetMousePosition() + offset);
                }
            }
        }
Exemple #4
0
        private void DrawIcon(Vector2 offset, CursorIconBase icon, bool isLook, bool canAnimate = true)
        {
            if (icon != null)
            {
                bool isNew = false;
                if (isLook && activeLookIcon != icon)
                {
                    activeLookIcon = icon;
                    isNew = true;
                    icon.Reset ();
                }
                else if (!isLook && activeIcon != icon)
                {
                    activeIcon = icon;
                    isNew = true;
                    icon.Reset ();
                }

                if (KickStarter.cursorManager.cursorRendering == CursorRendering.Hardware)
                {
                    if (icon.isAnimated && canAnimate)
                    {
                        Texture2D animTex = icon.GetAnimatedTexture ();
                        if (icon.GetName () != lastCursorName)
                        {
                            lastCursorName = icon.GetName ();
                            Cursor.SetCursor (animTex, icon.clickOffset, CursorMode.Auto);
                        }
                    }
                    else if (isNew)
                    {
                        Cursor.SetCursor (icon.texture, icon.clickOffset, CursorMode.Auto);
                    }
                }
                else
                {
                    icon.Draw (KickStarter.playerInput.GetMousePosition () + offset, canAnimate);
                }
            }
        }
Exemple #5
0
        public void DrawHotspotIcon()
        {
            if (IsOn())
            {
                Vector3 direction = (transform.position - Camera.main.transform.position);
                if (Vector3.Angle(direction, Camera.main.transform.forward) > 90f)
                {
                    iconAlpha = 0f;
                    return;
                }

                if (KickStarter.settingsManager.cameraPerspective != CameraPerspective.TwoD && KickStarter.settingsManager.occludeIcons)
                {
                    // Is icon occluded?
                    Ray        ray = new Ray(Camera.main.transform.position, GetIconPosition() - Camera.main.transform.position);
                    RaycastHit hit;
                    if (Physics.Raycast(ray, out hit, KickStarter.settingsManager.hotspotRaycastLength, 1 << LayerMask.NameToLayer(KickStarter.settingsManager.hotspotLayer)))
                    {
                        if (hit.collider.gameObject != this.gameObject)
                        {
                            iconAlpha = 0f;
                            return;
                        }
                    }
                }

                if (KickStarter.playerInput.interactionMenuIsOn && KickStarter.settingsManager.hideIconUnderInteractionMenu)
                {
                    iconAlpha = Mathf.Lerp(iconAlpha, 0f, Time.deltaTime * 5f);
                }
                else if (KickStarter.settingsManager.hotspotIconDisplay == HotspotIconDisplay.OnlyWhenHighlighting ||
                         KickStarter.settingsManager.hotspotIconDisplay == HotspotIconDisplay.OnlyWhenFlashing)
                {
                    if (highlight)
                    {
                        if (KickStarter.settingsManager.hotspotIconDisplay == HotspotIconDisplay.OnlyWhenHighlighting)
                        {
                            iconAlpha = highlight.GetHighlightAlpha();
                        }
                        else
                        {
                            iconAlpha = highlight.GetFlashAlpha(iconAlpha);
                        }
                    }
                    else
                    {
                        Debug.LogWarning("Cannot display correct Hotspot Icon alpha on " + name + " because it has no associated Highlight object.");
                    }
                }
                else if (KickStarter.settingsManager.hotspotIconDisplay == HotspotIconDisplay.Always)
                {
                    iconAlpha = 1f;
                }
                else
                {
                    iconAlpha = 0f;
                }
            }
            else
            {
                iconAlpha = 0f;
                return;
            }

            if (!KickStarter.mainCamera.IsPointInCamera(GetIconScreenPosition()))
            {
                return;
            }

            if (iconAlpha > 0f)
            {
                Color c         = GUI.color;
                Color tempColor = c;
                c.a       = iconAlpha;
                GUI.color = c;

                if (KickStarter.settingsManager.hotspotIcon == HotspotIcon.UseIcon)
                {
                    CursorIconBase icon = GetMainIcon();
                    if (icon != null)
                    {
                        icon.Draw(GetIconScreenPosition());
                    }
                }
                else if (KickStarter.settingsManager.hotspotIconTexture != null)
                {
                    GUI.DrawTexture(AdvGame.GUIBox(GetIconScreenPosition(), KickStarter.settingsManager.hotspotIconSize), KickStarter.settingsManager.hotspotIconTexture, ScaleMode.ScaleToFit, true, 0f);
                }

                GUI.color = tempColor;
            }
        }
Exemple #6
0
        /**
         * <summary>Draws an icon at the Hotspot's centre.</summary>
         * <param name = "inWorldSpace">If True, the icon shall be drawn as a sprite in world space, as opposed to an OnGUI graphic in screen space.</param>
         */
        public void DrawHotspotIcon(bool inWorldSpace = false)
        {
            if (iconAlpha > 0f)
            {
                if (!KickStarter.mainCamera.IsPointInCamera(GetIconScreenPosition()))
                {
                    return;
                }

                if (inWorldSpace)
                {
                    if (iconRenderer == null)
                    {
                        GameObject iconOb = new GameObject(this.name + " - icon");
                        iconRenderer = iconOb.AddComponent <SpriteRenderer>();
                        iconOb.transform.localScale = Vector3.one * (25f * KickStarter.settingsManager.hotspotIconSize);

                        if (GameObject.Find("_Hotspots") && GameObject.Find("_Hotspots").transform.eulerAngles == Vector3.zero)
                        {
                            iconOb.transform.parent = GameObject.Find("_Hotspots").transform;
                        }
                    }

                    if (KickStarter.settingsManager.hotspotIcon == HotspotIcon.UseIcon)
                    {
                        CursorIconBase icon = GetMainIcon();
                        if (icon != null)
                        {
                            iconRenderer.sprite = icon.GetSprite();
                        }
                    }
                    else
                    {
                        if (iconSprite == null && KickStarter.settingsManager.hotspotIconTexture != null)
                        {
                            iconSprite = UnityEngine.Sprite.Create(KickStarter.settingsManager.hotspotIconTexture, new Rect(0f, 0f, KickStarter.settingsManager.hotspotIconTexture.width, KickStarter.settingsManager.hotspotIconTexture.height), new Vector2(0.5f, 0.5f));
                        }
                        if (iconSprite != iconRenderer.sprite)
                        {
                            iconRenderer.sprite = iconSprite;
                        }
                    }
                    iconRenderer.transform.position = GetIconPosition();
                    iconRenderer.transform.LookAt(iconRenderer.transform.position + KickStarter.mainCamera.transform.rotation * Vector3.forward, KickStarter.mainCamera.transform.rotation * Vector3.up);
                }
                else
                {
                    if (iconRenderer != null)
                    {
                        GameObject.Destroy(iconRenderer.gameObject);
                        iconRenderer = null;
                    }

                    Color c         = GUI.color;
                    Color tempColor = c;
                    c.a       = iconAlpha;
                    GUI.color = c;

                    if (KickStarter.settingsManager.hotspotIcon == HotspotIcon.UseIcon)
                    {
                        CursorIconBase icon = GetMainIcon();
                        if (icon != null)
                        {
                            icon.Draw(GetIconScreenPosition());
                        }
                    }
                    else if (KickStarter.settingsManager.hotspotIconTexture != null)
                    {
                        GUI.DrawTexture(AdvGame.GUIBox(GetIconScreenPosition(), KickStarter.settingsManager.hotspotIconSize), KickStarter.settingsManager.hotspotIconTexture, ScaleMode.ScaleToFit, true, 0f);
                    }

                    GUI.color = tempColor;
                }
            }

            if (inWorldSpace && iconRenderer != null)
            {
                Color tempColor = iconRenderer.color;
                tempColor.a        = iconAlpha;
                iconRenderer.color = tempColor;
            }
        }