Ejemplo n.º 1
0
    public override void In_Skill_R()
    {
        isOkGo = playerScript.GetRangeAnyPoint(projector_W[1].transform, projector_W[0].transform, 48.75f);

        if (Input.GetMouseButtonDown(0))
        {
            if (isOkGo)
            {
                if (playerScript.ConsumeAP(skillR_needAP, true))
                {
                    playerScript.SkillState = Player.SkillData.None;
                    //開啟攻擊範圍
                    playerScript.Net.RPC("GetSkillPos", PhotonTargets.All, projector_W[1].transform.position);
                    //關閉顯示範圍
                    ProjectorManager.SwitchPorjector(projector_W, false);

                    transform.forward = playerScript.arrow.forward;
                    playerScript.stopAnything_Switch(true);
                    playerScript.Net.RPC("Skill_R_Fun", PhotonTargets.All);
                }
            }
            else
            {
                playerScript.HintScript.CreatHint("不能在此處傳送");
            }
        }

        if (Input.GetMouseButtonDown(1))
        {
            playerScript.CancelNowSkill();
        }
    }
Ejemplo n.º 2
0
 void Initialize(ProjectorManager projectorManager)
 {
     m_projectorManager    = projectorManager;
     m_serializedObject    = new SerializedObject(projectorManager);
     m_currentPage         = 0;
     m_errorStyle          = new GUIStyle();
     m_errorStyle.richText = true;
     m_errorStyle.wordWrap = true;
 }
Ejemplo n.º 3
0
 public void Go_RSkill()
 {
     playerScript.deadManager.NoDamage(true);
     //設定攻擊範圍
     allSkillRange.transform.position = mySkillPos;
     ProjectorManager.Setsize(allSkillRange, 17.5f, 1, true);
     //clone體執行
     if (!photonView.isMine)
     {
         playerScript.MatchTimeManager.SetCountDownNoCancel(R_Skill, .9f);
     }
 }
Ejemplo n.º 4
0
    //R按下&&偵測
    public override void Skill_R_Click()
    {
        if (!playerScript.ConsumeAP(skillR_needAP, false))
        {
            return;
        }

        playerScript.canSkill_R = false;
        playerScript.SkillState = Player.SkillData.skill_R;
        //顯示範圍
        ProjectorManager.SwitchPorjector(projector_R, true);
    }
Ejemplo n.º 5
0
    //W按下&&偵測
    public override void Skill_W_Click()
    {
        //消耗不足
        if (!playerScript.ConsumeAP(skillW_needAP, false))
        {
            return;
        }

        playerScript.canSkill_W = false;
        playerScript.SkillState = Player.SkillData.skill_W;
        //顯示範圍
        ProjectorManager.Setsize(projector_W[0], 26, 1, true);
        ProjectorManager.Setsize(projector_W[1], 7.2f, 1, true);
    }
Ejemplo n.º 6
0
        public static void CreateWizard(ProjectorManager projectorManager)
        {
            if (s_instance != null)
            {
                s_instance.Close();
            }
            EasySetupWizard window = ScriptableObject.CreateInstance <EasySetupWizard>();

            window.title       = "Easy Setup Wizard of Projector Manager";
            window.maxSize     =
                window.minSize = WINDOW_SIZE;
            window.Initialize(projectorManager);
            window.ShowUtility();
            s_instance = window;
        }
Ejemplo n.º 7
0
        void OnEnable()
        {
            ProjectorManager manager  = target as ProjectorManager;
            Renderer         renderer = manager.GetComponent <Renderer>();

            if (renderer.sharedMaterial == null)
            {
                renderer.sharedMaterial = editorSettings.m_defaultProjectorManagerMaterial;
#if (UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_4_7) // support Unity 4.3 or later
                renderer.castShadows = false;
#else
                renderer.shadowCastingMode    = UnityEngine.Rendering.ShadowCastingMode.Off;
                renderer.reflectionProbeUsage = UnityEngine.Rendering.ReflectionProbeUsage.Off;
#endif
                renderer.useLightProbes = false;
                renderer.receiveShadows = false;
            }
            if (manager.receivers != null)
            {
                {
                    var __list1      = manager.receivers;
                    var __listCount1 = __list1.Count;
                    for (int __i1 = 0; __i1 < __listCount1; ++__i1)
                    {
                        var receiver = (ReceiverBase)__list1[__i1];
                        {
                            Renderer r = receiver.GetComponent <Renderer>();
                            if (r.sharedMaterial == null)
                            {
                                r.sharedMaterial = editorSettings.m_defaultReceiverMaterial;
#if (UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_4_7) // support Unity 4.3 or later
                                r.castShadows = false;
#else
                                r.shadowCastingMode    = UnityEngine.Rendering.ShadowCastingMode.Off;
                                r.reflectionProbeUsage = UnityEngine.Rendering.ReflectionProbeUsage.Off;
#endif
                                r.useLightProbes = false;
                                r.receiveShadows = false;
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 8
0
    public override void In_Skill_Q()
    {
        if (Input.GetMouseButtonDown(0))
        {
            if (playerScript.ConsumeAP(skillQ_needAP, true))
            {
                playerScript.SkillState = Player.SkillData.None;
                ProjectorManager.SwitchPorjector(projector_Q, false);
                //關閉顯示範圍

                transform.forward = playerScript.arrow.forward;
                playerScript.stopAnything_Switch(true);
                playerScript.Net.RPC("Skill_Q_Fun", PhotonTargets.All);
            }
        }
        if (Input.GetMouseButtonDown(1))
        {
            playerScript.CancelNowSkill();
        }
    }
Ejemplo n.º 9
0
    public override void In_Skill_R()
    {
        if (Input.GetMouseButtonDown(0))
        {
            if (playerScript.ConsumeAP(skillR_needAP, true))
            {
                playerScript.SkillState = Player.SkillData.None;
                //開啟攻擊範圍
                playerScript.Net.RPC("GetSkillPos", PhotonTargets.All, projector_R[0].transform.position);
                //關閉顯示範圍
                ProjectorManager.SwitchPorjector(projector_R, false);
                myCachedTransform.forward = playerScript.arrow.forward;

                playerScript.stopAnything_Switch(true);
                playerScript.Net.RPC("Skill_R_Fun", PhotonTargets.All);
            }
        }
        if (Input.GetMouseButtonDown(1))
        {
            playerScript.CancelNowSkill();
        }
    }
Ejemplo n.º 10
0
    public override void CancelDetectSkill(Player.SkillData _nowSkill)
    {
        switch (_nowSkill)
        {
        case Player.SkillData.skill_Q:
            ProjectorManager.SwitchPorjector(projector_Q, false);
            break;

        case Player.SkillData.skill_W:
            ProjectorManager.SwitchPorjector(projector_W, false);
            break;

        case Player.SkillData.skill_R:
            ProjectorManager.SwitchPorjector(projector_W, false);
            break;

        case Player.SkillData.skill_E:
            projector_E.enabled = false;
            break;

        default:
            if (projector_Q[0].enabled)
            {
                ProjectorManager.SwitchPorjector(projector_Q, false);
            }
            if (projector_W[1].enabled)
            {
                ProjectorManager.SwitchPorjector(projector_W, false);
            }
            if (projector_E.enabled)
            {
                projector_E.enabled = false;
            }
            break;
        }
    }
Ejemplo n.º 11
0
 public void R_Skill()
 {
     allSkillRange.transform.position = mySkillPos;
     ProjectorManager.Setsize(allSkillRange, 2.5f, 1, true);
 }
Ejemplo n.º 12
0
 public void W_Skill()
 {
     //設定攻擊範圍
     allSkillRange.transform.position = mySkillPos;
     ProjectorManager.Setsize(allSkillRange, 7.2f, 1, true);
 }
Ejemplo n.º 13
0
        public override void OnInspectorGUI()
        {
            ProjectorManager manager = target as ProjectorManager;

            if (GUILayout.Button("Easy Setup Wizard"))
            {
                EasySetupWizard.CreateWizard(manager);
            }
            s_bShowReceivers = EditorGUILayout.Foldout(s_bShowReceivers, "Shadow Receivers");
            if (s_bShowReceivers)
            {
                ++EditorGUI.indentLevel;
                EditorGUILayout.PropertyField(serializedObject.FindProperty("m_receiverLayerMask"));
                EditorGUILayout.PropertyField(serializedObject.FindProperty("m_receivers"), true);
                --EditorGUI.indentLevel;
            }
            s_bShowProjectorControls = EditorGUILayout.Foldout(s_bShowProjectorControls, "Projector Controls");
            if (s_bShowProjectorControls)
            {
                ++EditorGUI.indentLevel;
                EditorGUILayout.PropertyField(serializedObject.FindProperty("m_mainCamera"));
                EditorGUILayout.PropertyField(serializedObject.FindProperty("m_environmentLayers"));
                EditorGUILayout.PropertyField(serializedObject.FindProperty("m_projectorFadeoutDistance"));
                EditorGUILayout.PropertyField(serializedObject.FindProperty("m_fadeDuration"));
                --EditorGUI.indentLevel;
            }
            s_bShowPlaneShadows = EditorGUILayout.Foldout(s_bShowPlaneShadows, "Plane Shadows");
            if (s_bShowPlaneShadows)
            {
                ++EditorGUI.indentLevel;
                EditorGUILayout.PropertyField(serializedObject.FindProperty("m_raycastPlaneMask"));
                EditorGUILayout.PropertyField(serializedObject.FindProperty("m_useInfinitePlane"));
                if (manager.useInfinitPlane)
                {
                    EditorGUILayout.PropertyField(serializedObject.FindProperty("m_infinitePlaneTransform"));
                    EditorGUILayout.PropertyField(serializedObject.FindProperty("m_infinitePlaneNormal"));
                    EditorGUILayout.PropertyField(serializedObject.FindProperty("m_infinitePlaneHeight"));
                }
                --EditorGUI.indentLevel;
            }
            s_bShowPlaneShadowTextures = EditorGUILayout.Foldout(s_bShowPlaneShadowTextures, "Plane Shadow Textures");
            if (s_bShowPlaneShadowTextures)
            {
                ++EditorGUI.indentLevel;
                EditorGUILayout.PropertyField(serializedObject.FindProperty("m_blobShadowTextures"), true);
                if (manager.blobShadowTextures != null && 1 < manager.blobShadowTextures.Length)
                {
                    EditorGUILayout.PropertyField(serializedObject.FindProperty("m_packedBlobShadowTexture"));
                    EditorGUILayout.PropertyField(serializedObject.FindProperty("m_blobShadowTextureRects"), true);
                    EditorGUILayout.PropertyField(serializedObject.FindProperty("m_packedTexturePadding"));
                    EditorGUILayout.PropertyField(serializedObject.FindProperty("m_packedTextureMaxSize"));
                    if (GUILayout.Button("Pack Blob Shadow Textures"))
                    {
                        PackBlobShadowTextures(manager, serializedObject);
                    }
                }
                EditorGUILayout.PropertyField(serializedObject.FindProperty("m_shadowTexName"));
                --EditorGUI.indentLevel;
            }
            EditorGUILayout.PropertyField(serializedObject.FindProperty("m_manualUpdate"));
            serializedObject.ApplyModifiedProperties();
        }
Ejemplo n.º 14
0
        public static void PackBlobShadowTextures(ProjectorManager manager, SerializedObject serializedObject)
        {
            string folderPath;
            string fileName;
            string assetPath;

            if (manager.packedBlobShadowTexture != null)
            {
                assetPath  = AssetDatabase.GetAssetPath(manager.packedBlobShadowTexture);
                folderPath = System.IO.Path.GetDirectoryName(assetPath);
                fileName   = System.IO.Path.GetFileNameWithoutExtension(assetPath);
            }
            else
            {
                assetPath  = AssetDatabase.GetAssetPath(manager.blobShadowTextures[0]);
                folderPath = System.IO.Path.GetDirectoryName(assetPath);
                fileName   = "PackedBlobShadowTexture";
            }
            string fullPath = EditorUtility.SaveFilePanel("Create Packed Blob Texture", folderPath, fileName, "png");

            if (!string.IsNullOrEmpty(fullPath))
            {
                assetPath = fullPath;
                if (assetPath.StartsWith(Application.dataPath))
                {
                    assetPath = assetPath.Substring(Application.dataPath.Length - 6);
                }
                Texture2D packedTexture = AssetDatabase.LoadAssetAtPath(assetPath, typeof(Texture2D)) as Texture2D;
                if (packedTexture == null)
                {
                    packedTexture = new Texture2D(4, 4, TextureFormat.ARGB32, true);
                    SaveTextureAsPNG(packedTexture, fullPath);
                    packedTexture = AssetDatabase.LoadAssetAtPath(assetPath, typeof(Texture2D)) as Texture2D;
                }
                Undo.RegisterCompleteObjectUndo(manager, "Pack Blob Shadow Textures");
                // enable read/write blob shadow textures
                bool[] readableFlgas = new bool[manager.blobShadowTextures.Length];
                for (int i = 0; i < manager.blobShadowTextures.Length; ++i)
                {
                    string          path     = AssetDatabase.GetAssetPath(manager.blobShadowTextures[i]);
                    TextureImporter importer = AssetImporter.GetAtPath(path) as TextureImporter;
                    if (importer != null && !importer.isReadable)
                    {
                        readableFlgas[i]    = importer.isReadable;
                        importer.isReadable = true;
                        AssetDatabase.ImportAsset(path);
                    }
                    else
                    {
                        readableFlgas[i] = true;
                    }
                }
                TextureImporter packedImporter = AssetImporter.GetAtPath(AssetDatabase.GetAssetPath(packedTexture)) as TextureImporter;
                packedImporter.isReadable = true;
                AssetDatabase.ImportAsset(assetPath);
                manager.PackBlobShadowTextures(packedTexture);
                for (int i = 0; i < manager.blobShadowTextures.Length; ++i)
                {
                    string          path     = AssetDatabase.GetAssetPath(manager.blobShadowTextures[i]);
                    TextureImporter importer = AssetImporter.GetAtPath(path) as TextureImporter;
                    if (importer != null && !readableFlgas[i])
                    {
                        importer.isReadable = false;
                        AssetDatabase.ImportAsset(path);
                    }
                }
                SaveTextureAsPNG(packedTexture, fullPath);
                packedImporter.isReadable = false;
                packedImporter.wrapMode   = TextureWrapMode.Clamp;
                AssetDatabase.ImportAsset(assetPath);
                AssetDatabase.Refresh();
                EditorUtility.SetDirty(manager);
                // repaint inspector view
                serializedObject.FindProperty("m_packedBlobShadowTexture").objectReferenceValue = manager.packedBlobShadowTexture;
                SerializedProperty prop = serializedObject.FindProperty("m_blobShadowTextureRects");
                prop.arraySize = manager.blobShadowTextureRects.Length;
                for (int i = 0; i < manager.blobShadowTextureRects.Length; ++i)
                {
                    prop.GetArrayElementAtIndex(i).rectValue = manager.blobShadowTextureRects[i];
                }
            }
        }
Ejemplo n.º 15
0
        public override void OnInspectorGUI()
        {
            ReceiverBase receiver = target as ReceiverBase;

            DrawDefaultInspector();
            Object projector = receiver.customProjector;

            if (projector == null)
            {
                projector = receiver.unityProjector;
            }
            Component newProjector = EditorGUILayout.ObjectField("Projector", projector, typeof(Component), true) as Component;

            if (newProjector != projector)
            {
                if (newProjector == null)
                {
                    Undo.RecordObject(receiver, "Inspector");
                    receiver.unityProjector  = null;
                    receiver.customProjector = null;
                }
                else
                {
                    Projector unityProjector = newProjector.GetComponent <Projector>();
                    Renderer  renderer       = receiver.GetComponent <Renderer>();
                    Material  material       = renderer.sharedMaterial;
                    if (unityProjector != null)
                    {
                        Undo.RecordObject(receiver, "Inspector");
                        receiver.unityProjector = unityProjector;
                        if (material == null || material == editorSettings.m_defaultShadowmapReceiverMaterial)
                        {
                            Undo.RecordObject(renderer, "Inspector");
                            renderer.sharedMaterial = editorSettings.m_defaultReceiverMaterial;
#if (UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_4_7) // support Unity 4.3 or later
                            renderer.castShadows = false;
#else
                            renderer.shadowCastingMode    = UnityEngine.Rendering.ShadowCastingMode.Off;
                            renderer.reflectionProbeUsage = UnityEngine.Rendering.ReflectionProbeUsage.Off;
#endif
                            renderer.useLightProbes = false;
                            renderer.receiveShadows = false;
                        }
                    }
                    else
                    {
                        ProjectorBase projectorBase = newProjector.GetComponent <ProjectorBase>();
                        if (projectorBase != null)
                        {
                            Undo.RegisterCompleteObjectUndo(receiver, "Inspector");
                            receiver.customProjector = projectorBase;
                            if (material == null || material == editorSettings.m_defaultReceiverMaterial)
                            {
                                Undo.RecordObject(renderer, "Inspector");
                                renderer.sharedMaterial = editorSettings.m_defaultShadowmapReceiverMaterial;
#if (UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_4_7) // support Unity 4.3 or later
                                renderer.castShadows = false;
#else
                                renderer.shadowCastingMode    = UnityEngine.Rendering.ShadowCastingMode.Off;
                                renderer.reflectionProbeUsage = UnityEngine.Rendering.ReflectionProbeUsage.Off;
#endif
                                renderer.useLightProbes = false;
                                renderer.receiveShadows = true;
                            }
                        }
                    }
                }
            }
            // check errors
            string errorMessage = null;
            if (projector == null)
            {
                // check if the object is prefab or not.
                PrefabType type = PrefabUtility.GetPrefabType(receiver.gameObject);
                if (type != PrefabType.Prefab && type != PrefabType.ModelPrefab)
                {
                    // check if there is ProjectorManager and the receiver is add to it.
                    ProjectorManager proman = Object.FindObjectOfType <ProjectorManager>();
                    if (proman != null)
                    {
                        if (!proman.receivers.Contains(receiver))
                        {
                            errorMessage = "<color=red>Projector has not been set! There is a ProjectorManager in the scene. Do you forget to add this shadow receiver into the ProjectorManager?</color>";
                        }
                    }
                    else
                    {
                        errorMessage = "<color=red>Projector has not been set! Shadow receiver will not work until a Projector is assigned.</color>";
                    }
                }
            }
            else if (projector is Projector)
            {
                if ((((Projector)projector).ignoreLayers & (1 << receiver.gameObject.layer)) != 0)
                {
                    errorMessage = "<color=red>This shadow receiver is being ignored by the Projector. Cannot receive the shadow from the Projector. Please check the layer of this object and Ignore Layers of the Projector.</color>";
                }
            }
            if (!string.IsNullOrEmpty(errorMessage))
            {
                GUILayout.TextArea(errorMessage, errorStyle);
            }
        }