-
Notifications
You must be signed in to change notification settings - Fork 357
Expand file tree
/
Copy pathgenerate_imgui_bindings.ps1
More file actions
81 lines (63 loc) · 3.57 KB
/
generate_imgui_bindings.ps1
File metadata and controls
81 lines (63 loc) · 3.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# Store initial directory
$initialDirectory = Get-Location
# CD to the directory of this script
Set-Location -Path $PSScriptRoot
# Copy cimgui files from the cimgui repository to Hexa.NET.ImGui
Copy-Item -Path "lib/cimgui/cimgui.h" -Destination "lib/Hexa.NET.ImGui/Generator/cimgui" -Force
Copy-Item -Path "lib/cimgui/generator/output/definitions.json" -Destination "lib/Hexa.NET.ImGui/Generator/cimgui" -Force
Copy-Item -Path "lib/cimgui/generator/output/structs_and_enums.json" -Destination "lib/Hexa.NET.ImGui/Generator/cimgui" -Force
Copy-Item -Path "lib/cimgui/generator/output/typedefs_dict.json" -Destination "lib/Hexa.NET.ImGui/Generator/cimgui" -Force
# Copy cimplot.h and cimguizmo.h
Copy-Item -Path "lib/cimplot/cimplot.h" -Destination "lib/Hexa.NET.ImGui/Generator/cimplot" -Force
Copy-Item -Path "lib/cimplot/generator/output/definitions.json" -Destination "lib/Hexa.NET.ImGui/Generator/cimplot" -Force
Copy-Item -Path "lib/cimplot/generator/output/structs_and_enums.json" -Destination "lib/Hexa.NET.ImGui/Generator/cimplot" -Force
Copy-Item -Path "lib/cimplot/generator/output/typedefs_dict.json" -Destination "lib/Hexa.NET.ImGui/Generator/cimplot" -Force
Copy-Item -Path "lib/cimguizmo/cimguizmo.h" -Destination "lib/Hexa.NET.ImGui/Generator/cimguizmo" -Force
Copy-Item -Path "lib/cimguizmo/generator/output/definitions.json" -Destination "lib/Hexa.NET.ImGui/Generator/cimguizmo" -Force
Copy-Item -Path "lib/cimguizmo/generator/output/structs_and_enums.json" -Destination "lib/Hexa.NET.ImGui/Generator/cimguizmo" -Force
#Copy-Item -Path "lib/cimguizmo/generator/output/typedefs_dict.json" -Destination "lib/Hexa.NET.ImGui/Generator/cimguizmo" -Force
# Find the first `#ifdef CIMGUI_DEFINE_ENUMS_AND_STRUCTS` in cimgui.h and insert `#define CIMGUI_DEFINE_ENUMS_AND_STRUCTS` before it
function InsertDefine {
param (
[string]$filePath
)
$lines = Get-Content $filePath
$inserted = $false
foreach ($line in $lines) {
if ($line -match "#ifdef CIMGUI_DEFINE_ENUMS_AND_STRUCTS") {
$index = [Array]::IndexOf($lines, $line)
if ($index -gt 0 -and $lines[$index - 1] -ne "#define CIMGUI_DEFINE_ENUMS_AND_STRUCTS") {
$lines = $lines[0..($index - 1)] + "#define CIMGUI_DEFINE_ENUMS_AND_STRUCTS" + "`r`n" + $lines[$index..($lines.Length - 1)]
$inserted = $true
}
break
}
}
if (-not $inserted) {
Write-Host "CIMGUI_DEFINE_ENUMS_AND_STRUCTS not found in $filePath. Exiting."
exit 1
}
# Write the modified lines back to the file
Set-Content -Path $filePath -Value $lines
}
# Insert the define line into all relevant header files
InsertDefine -filePath "lib/Hexa.NET.ImGui/Generator/cimgui/cimgui.h"
InsertDefine -filePath "lib/Hexa.NET.ImGui/Generator/cimplot/cimplot.h"
InsertDefine -filePath "lib/Hexa.NET.ImGui/Generator/cimguizmo/cimguizmo.h"
# Copy modified cimgui.h to cimplot and cimguizmo directories
Copy-Item -Path "lib/Hexa.NET.ImGui/Generator/cimgui/cimgui.h" -Destination "lib/Hexa.NET.ImGui/Generator/cimplot/cimgui.h" -Force
Copy-Item -Path "lib/Hexa.NET.ImGui/Generator/cimgui/cimgui.h" -Destination "lib/Hexa.NET.ImGui/Generator/cimguizmo/cimgui.h" -Force
Set-Location -Path "lib/Hexa.NET.ImGui"
#dotnet workload restore
#dotnet restore
# CD to generator directory
Set-Location -Path "Generator"
# Build generator
dotnet build
# Run generator
Read-Host -Prompt "Press any key to generate" | Out-Null
Set-Location -Path "bin/Debug/net9.0"
.\Generator.exe
# Restore initial directory
Set-Location -Path $initialDirectory
& "$PSScriptRoot\filter_imgui_bindings.ps1"