65 lines
1.7 KiB
Go
65 lines
1.7 KiB
Go
package engine
|
|
|
|
import (
|
|
"encoding/json"
|
|
"io/ioutil"
|
|
"os"
|
|
)
|
|
|
|
// This is the entire JSON File Struct so we can modify it as needed
|
|
type unrealProjectJSON struct {
|
|
FileVersion int `json:"FileVersion"`
|
|
EngineAssociation string `json:"EngineAssociation"`
|
|
Category string `json:"Category"`
|
|
Description string `json:"Description"`
|
|
Modules []struct {
|
|
Name string `json:"Name"`
|
|
Type string `json:"Type"`
|
|
LoadingPhase string `json:"LoadingPhase"`
|
|
AdditionalDependencies []string `json:"AdditionalDependencies,omitempty"`
|
|
} `json:"Modules"`
|
|
Plugins []struct {
|
|
Name string `json:"Name"`
|
|
Enabled bool `json:"Enabled"`
|
|
MarketplaceURL string `json:"MarketplaceURL,omitempty"`
|
|
SupportedTargetPlatforms []string `json:"SupportedTargetPlatforms,omitempty"`
|
|
} `json:"Plugins"`
|
|
}
|
|
|
|
func editProjectFile(projectFile os.FileInfo, enableRider bool) error {
|
|
byteValue, err := ioutil.ReadFile(projectFile.Name())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
var projectStruct unrealProjectJSON
|
|
json.Unmarshal([]byte(byteValue), &projectStruct)
|
|
|
|
for i, plugin := range projectStruct.Plugins {
|
|
if plugin.Name == "OculusVR" {
|
|
projectStruct.Plugins[i].Enabled = false
|
|
|
|
}
|
|
if plugin.Name == "SteamVR" {
|
|
projectStruct.Plugins[i].Enabled = false
|
|
|
|
}
|
|
if plugin.Name == "RiderLink" {
|
|
if enableRider {
|
|
projectStruct.Plugins[i].Enabled = true
|
|
} else {
|
|
projectStruct.Plugins[i].Enabled = false
|
|
}
|
|
}
|
|
}
|
|
file, err := json.MarshalIndent(projectStruct, "", "\t")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
err = ioutil.WriteFile(projectFile.Name(), file, 0644)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|