Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static async void RenderPreviewImages(List<LevelTile> levelTileList,
- Vector3 positionOffset,int size, LayerMask renderLayer)
- {
- Camera cam = new GameObject("Preview Generator Camera").AddComponent<Camera>();
- var lastSceneCamera = SceneView.lastActiveSceneView.camera;
- cam.transform.position = Vector3.zero;
- //cam.transform.position = lastSceneCamera.transform.position;
- cam.transform.rotation = lastSceneCamera.transform.rotation;
- //cam.transform.position = Vector3.zero;
- //cam.transform.rotation = Quaternion.Euler(0, 0, 0);
- cam.clearFlags = CameraClearFlags.Color;
- cam.backgroundColor = new Color(0f, 0f, 0f, 0.46f);
- var cameraMatix = cam.transform.worldToLocalMatrix;
- RenderTexture rt = new RenderTexture(size, size, 32);
- cam.targetTexture = rt;
- cam.cullingMask = renderLayer;
- //var angleDown = Vector3.Angle(cam.transform.forward, Vector3.up);
- //var angleForward = Vector3.Angle(new Vector3(cam.transform.forward.x, 0, cam.transform.forward.z), Vector3.back);
- //Debug.Log("angle down = " + angleDown);
- //Debug.Log("angle forward = " + angleForward);
- //var rotation = Quaternion.Euler(0, 0, rotationOffset.z) * Quaternion.Euler(rotationOffset.x, rotationOffset.y, 0);
- var mtx = Matrix4x4.TRS(cam.transform.TransformPoint(positionOffset), Quaternion.identity, Vector3.one);
- foreach (var levelTile in levelTileList)
- {
- //var mtx = cameraMatix * Matrix4x4.TRS(Vector3.forward * 7,
- // Quaternion
- //draw the mesh;
- Graphics.DrawMesh(
- levelTile.mesh, mtx,
- levelTile.material, renderLayer.GetMaskValue(), cam);
- Debug.Log("rendered to " + renderLayer.GetMaskValue());
- var texture = new Texture2D(size, size);
- RenderTargetImage(cam, ref texture);
- levelTile.previewTexture = texture;
- var pngData = texture.EncodeToPNG();
- // For testing purposes, also write to a file in the project folder
- File.WriteAllBytes(Application.dataPath + $"/TileThumbnails/{levelTile.name}.png", pngData);
- //AssetDatabase.CreateAsset(t, $"Assets/{levelTile.name}.png");
- await Task.Delay(1);
- }
- await Task.Delay(100);
- GameObject.DestroyImmediate(cam.gameObject);
- tilemap3DEditorWindow?.Refresh();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement