Esempio n. 1
0
        public void DrawDefault(Rect currentRect)
        {
            DrawTerrainPreview(currentRect);

            EditorGUILayout.BeginHorizontal();
            {
                previewType = (PWGraphTerrainPreviewType)EditorGUILayout.EnumPopup("Camera mode", previewType);
            }
            EditorGUILayout.EndHorizontal();

            //draw main graph settings
            EditorGUILayout.BeginVertical(GUILayout.ExpandWidth(true));
            {
                DrawGraphSettings(currentRect);
            }
            EditorGUILayout.EndVertical();
        }
Esempio n. 2
0
        public void DrawTerrainPreview(Rect previewRect, PWGraphTerrainPreviewType previewType)
        {
            Profiler.BeginSample("[PW] Rendering terrain preview");

            UpdatePreviewScene(previewType);

            if (previewCamera != null && first)
            {
                previewCamera.Render();
            }

            //draw preview texture:
            GUI.DrawTexture(previewRect, previewCameraRenderTexture);

            //activate drag when mouse down inside preview rect:
            if (e.type == EventType.MouseDown && previewRect.Contains(e.mousePosition))
            {
                previewMouseDrag = true;
                e.Use();
            }

            if (previewMouseDrag && e.rawType == EventType.MouseUp)
            {
                previewMouseDrag = false;
            }

            //mouse controls:
            if (e.type == EventType.MouseDrag && previewMouseDrag)
            {
                Vector2 move = new Vector2(-e.delta.x / 8, e.delta.y / 8);

                //camera pan movement
                previewCamera.transform.position += new Vector3(move.x, 0, move.y);

                //move the terrain materializer so it generate terrain around the camera
                if (PWGraphTerrainManager.terrainReference != null)
                {
                    PWGraphTerrainManager.terrainReference.position = previewCamera.transform.position;
                }
                e.Use();
            }

            first = false;

            Profiler.EndSample();
        }
Esempio n. 3
0
        void UpdatePreviewScene(PWGraphTerrainPreviewType previewType)
        {
            //if preview scene was destroyed or preview type was changed, reload preview game objects
            if (previewScene == null || loadedPreviewType != previewType)
            {
                ReloadPreviewPrefab(previewType);
            }

            if (previewCamera == null)
            {
                previewCamera = previewScene.GetComponentInChildren <Camera>();
            }
            if (previewCameraRenderTexture == null)
            {
                previewCameraRenderTexture  = new RenderTexture(800, 800, 10000, RenderTextureFormat.ARGB32);
                previewCamera.targetTexture = previewCameraRenderTexture;
            }
        }
Esempio n. 4
0
        void ReloadPreviewPrefab(PWGraphTerrainPreviewType newPreviewType)
        {
            string previewObjectName = previewTypeToPrefabNames[newPreviewType];

            //find and delete old preview object if existing
            if ((previewScene = GameObject.Find(previewTypeToPrefabNames[loadedPreviewType])) != null)
            {
                GameObject.DestroyImmediate(previewScene);
            }
            if ((previewScene = GameObject.Find(previewTypeToPrefabNames[newPreviewType])) != null)
            {
                GameObject.DestroyImmediate(previewScene);
            }

            //instantiate the new object prefab
            previewScene      = PrefabUtility.InstantiatePrefab(Resources.Load <Object>(previewObjectName)) as GameObject;
            previewScene.name = previewObjectName;

            loadedPreviewType = newPreviewType;
        }