This commit is contained in:
Usagirei committed 2018-03-01 22:41:12 -03:00
commit f07dd3954b
40 files changed
+14 -3525

No files matched your search

Binary file not shown.
-60
View File
@@ -7,26 +7,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BepInEx", "BepInEx\BepInEx.
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BepInEx.Patcher", "BepInEx.Patcher\BepInEx.Patcher.csproj", "{DC89F18B-235B-4C01-AB31-AF40DCE5C4C7}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Plugins", "Plugins", "{FF8CE2C8-C185-4EA9-8D63-E2542F0C2FCF}"
EndProject
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "BepInEx.Common", "BepInEx.Common\BepInEx.Common.shproj", "{D8DEEEF7-28F5-4F13-A004-C581CE051CDC}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DynamicTranslationLoader", "Plugins\DynamicTranslationLoader\DynamicTranslationLoader.csproj", "{6FE9DE86-F466-49FD-BCCA-ADD512C8DCE8}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "InputUnlocker", "Plugins\InputUnlocker\InputUnlocker.csproj", "{379BA41B-9944-4B5A-8732-EEBAA7F05B04}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ColorCorrector", "Plugins\ColorCorrector\ColorCorrector.csproj", "{6809B5DC-358C-45C5-B04C-0B7027596A8B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SliderUnlocker", "Plugins\SliderUnlocker\SliderUnlocker.csproj", "{9DB058D4-CF5A-4280-9150-A62C22FC3CB0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Screencap", "Plugins\Screencap\Screencap.csproj", "{6A9D08C0-4482-4D1A-9368-9F41B7126F9E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceRedirector", "Plugins\ResourceRedirector\ResourceRedirector.csproj", "{3EA76CA3-45B6-4A1A-B04F-7A1A8C978AF6}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DeveloperConsole", "Plugins\DeveloperConsole\DeveloperConsole.csproj", "{434F00D0-BD2A-4C81-A2FE-8DBFBBD9D9AB}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExtensibleSaveFormat", "Plugins\ExtensibleSaveFormat\ExtensibleSaveFormat.csproj", "{8EBE81B9-9ED9-466D-864A-4C644BFD8827}"
EndProject
Global
GlobalSection(SharedMSBuildProjectFiles) = preSolution
BepInEx.Common\BepInEx.Common.projitems*{4ffba620-f5ed-47f9-b90c-dad1316fd9b9}*SharedItemsImports = 4
@@ -46,52 +28,10 @@ Global
{DC89F18B-235B-4C01-AB31-AF40DCE5C4C7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DC89F18B-235B-4C01-AB31-AF40DCE5C4C7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DC89F18B-235B-4C01-AB31-AF40DCE5C4C7}.Release|Any CPU.Build.0 = Release|Any CPU
{6FE9DE86-F466-49FD-BCCA-ADD512C8DCE8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6FE9DE86-F466-49FD-BCCA-ADD512C8DCE8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6FE9DE86-F466-49FD-BCCA-ADD512C8DCE8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6FE9DE86-F466-49FD-BCCA-ADD512C8DCE8}.Release|Any CPU.Build.0 = Release|Any CPU
{379BA41B-9944-4B5A-8732-EEBAA7F05B04}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{379BA41B-9944-4B5A-8732-EEBAA7F05B04}.Debug|Any CPU.Build.0 = Debug|Any CPU
{379BA41B-9944-4B5A-8732-EEBAA7F05B04}.Release|Any CPU.ActiveCfg = Release|Any CPU
{379BA41B-9944-4B5A-8732-EEBAA7F05B04}.Release|Any CPU.Build.0 = Release|Any CPU
{6809B5DC-358C-45C5-B04C-0B7027596A8B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6809B5DC-358C-45C5-B04C-0B7027596A8B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6809B5DC-358C-45C5-B04C-0B7027596A8B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6809B5DC-358C-45C5-B04C-0B7027596A8B}.Release|Any CPU.Build.0 = Release|Any CPU
{9DB058D4-CF5A-4280-9150-A62C22FC3CB0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9DB058D4-CF5A-4280-9150-A62C22FC3CB0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9DB058D4-CF5A-4280-9150-A62C22FC3CB0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9DB058D4-CF5A-4280-9150-A62C22FC3CB0}.Release|Any CPU.Build.0 = Release|Any CPU
{6A9D08C0-4482-4D1A-9368-9F41B7126F9E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6A9D08C0-4482-4D1A-9368-9F41B7126F9E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6A9D08C0-4482-4D1A-9368-9F41B7126F9E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6A9D08C0-4482-4D1A-9368-9F41B7126F9E}.Release|Any CPU.Build.0 = Release|Any CPU
{3EA76CA3-45B6-4A1A-B04F-7A1A8C978AF6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3EA76CA3-45B6-4A1A-B04F-7A1A8C978AF6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3EA76CA3-45B6-4A1A-B04F-7A1A8C978AF6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3EA76CA3-45B6-4A1A-B04F-7A1A8C978AF6}.Release|Any CPU.Build.0 = Release|Any CPU
{434F00D0-BD2A-4C81-A2FE-8DBFBBD9D9AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{434F00D0-BD2A-4C81-A2FE-8DBFBBD9D9AB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{434F00D0-BD2A-4C81-A2FE-8DBFBBD9D9AB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{434F00D0-BD2A-4C81-A2FE-8DBFBBD9D9AB}.Release|Any CPU.Build.0 = Release|Any CPU
{8EBE81B9-9ED9-466D-864A-4C644BFD8827}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8EBE81B9-9ED9-466D-864A-4C644BFD8827}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8EBE81B9-9ED9-466D-864A-4C644BFD8827}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8EBE81B9-9ED9-466D-864A-4C644BFD8827}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{6FE9DE86-F466-49FD-BCCA-ADD512C8DCE8} = {FF8CE2C8-C185-4EA9-8D63-E2542F0C2FCF}
{379BA41B-9944-4B5A-8732-EEBAA7F05B04} = {FF8CE2C8-C185-4EA9-8D63-E2542F0C2FCF}
{6809B5DC-358C-45C5-B04C-0B7027596A8B} = {FF8CE2C8-C185-4EA9-8D63-E2542F0C2FCF}
{9DB058D4-CF5A-4280-9150-A62C22FC3CB0} = {FF8CE2C8-C185-4EA9-8D63-E2542F0C2FCF}
{6A9D08C0-4482-4D1A-9368-9F41B7126F9E} = {FF8CE2C8-C185-4EA9-8D63-E2542F0C2FCF}
{3EA76CA3-45B6-4A1A-B04F-7A1A8C978AF6} = {FF8CE2C8-C185-4EA9-8D63-E2542F0C2FCF}
{434F00D0-BD2A-4C81-A2FE-8DBFBBD9D9AB} = {FF8CE2C8-C185-4EA9-8D63-E2542F0C2FCF}
{8EBE81B9-9ED9-466D-864A-4C644BFD8827} = {FF8CE2C8-C185-4EA9-8D63-E2542F0C2FCF}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {55AC11EF-F568-4C79-A356-7ED9510145B1}
EndGlobalSection
+14 -1
View File
@@ -1,4 +1,6 @@
namespace BepInEx
using System.Runtime.CompilerServices;
namespace BepInEx
{
/// <summary>
/// A helper class to use for logging.
@@ -24,7 +26,18 @@
/// <param name="show">Whether or not it should be dislpayed to the user.</param>
public static void Log(string entry, bool show = false)
{
UnityEngine.UnityLogWriter.WriteStringToUnityLog($"BEPIN - {entry}\r\n");
EntryLogged?.Invoke(entry, show);
}
}
}
namespace UnityEngine
{
internal sealed class UnityLogWriter
{
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern void WriteStringToUnityLog(string s);
}
}
-99
View File
@@ -1,99 +0,0 @@
using BepInEx;
using System;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityStandardAssets.ImageEffects;
namespace ColorCorrector
{
public class ColorCorrector : BaseUnityPlugin
{
public override string ID => "com.bepis.bepinex.colorcorrector";
public override string Name => "Color Filter Remover";
public override Version Version => new Version("1.2");
#region Config properties
private bool SaturationEnabled
{
get => bool.Parse(this.GetEntry("saturation-enabled", "True"));
set => this.SetEntry("saturation-enabled", value.ToString());
}
private bool BloomEnabled
{
get => bool.Parse(this.GetEntry("bloom-enabled", "True"));
set => this.SetEntry("bloom-enabled", value.ToString());
}
#endregion
AmplifyColorEffect amplifyComponent;
BloomAndFlares bloomComponent;
protected void LevelFinishedLoading(Scene scene, LoadSceneMode mode)
{
if (Camera.main != null && Camera.main?.gameObject != null)
{
amplifyComponent = Camera.main.gameObject.GetComponent<AmplifyColorEffect>();
bloomComponent = Camera.main.gameObject.GetComponent<BloomAndFlares>();
SetEffects(SaturationEnabled, BloomEnabled);
}
}
void SetEffects(bool satEnabled, bool bloomEnabled)
{
if (amplifyComponent != null)
amplifyComponent.enabled = satEnabled;
if (bloomComponent != null)
bloomComponent.enabled = bloomEnabled;
}
#region MonoBehaviour
void OnEnable()
{
SceneManager.sceneLoaded += LevelFinishedLoading;
}
void OnDisable()
{
SceneManager.sceneLoaded -= LevelFinishedLoading;
}
void Update()
{
if (UnityEngine.Input.GetKeyDown(UnityEngine.KeyCode.F6))
{
showingUI = !showingUI;
}
}
#endregion
#region UI
private Rect UI = new Rect(20, 20, 200, 100);
private bool showingUI = false;
void OnGUI()
{
if (showingUI)
UI = GUI.Window(Name.GetHashCode() + 0, UI, WindowFunction, "Filter settings");
}
void WindowFunction(int windowID)
{
bool satEnabled = GUI.Toggle(new Rect(10, 20, 180, 20), SaturationEnabled, " Saturation filter enabled");
bool bloomEnabled = GUI.Toggle(new Rect(10, 40, 180, 20), BloomEnabled, " Bloom filter enabled");
if (GUI.changed)
{
SaturationEnabled = satEnabled;
BloomEnabled = bloomEnabled;
SetEffects(satEnabled, bloomEnabled);
}
GUI.DragWindow();
}
#endregion
}
}
@@ -1,64 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{6809B5DC-358C-45C5-B04C-0B7027596A8B}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>ColorCorrector</RootNamespace>
<AssemblyName>ColorCorrector</AssemblyName>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>K:\BepInEx\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>K:\BepInEx\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Assembly-CSharp">
<HintPath>..\..\lib\Assembly-CSharp.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Assembly-CSharp-firstpass">
<HintPath>..\..\lib\Assembly-CSharp-firstpass.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
<Reference Include="UnityEngine">
<HintPath>..\..\lib\UnityEngine.dll</HintPath>
<Private>False</Private>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="ColorCorrector.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\BepInEx\BepInEx.csproj">
<Project>{4ffba620-f5ed-47f9-b90c-dad1316fd9b9}</Project>
<Name>BepInEx</Name>
<Private>False</Private>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
@@ -1,36 +0,0 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("ColorCorrector")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("ColorCorrector")]
[assembly: AssemblyCopyright("Copyright © 2018")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("6809b5dc-358c-45c5-b04c-0b7027596a8b")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
@@ -1,100 +0,0 @@
using BepInEx;
using System;
using UnityEngine;
namespace DeveloperConsole
{
public class DeveloperConsole : BaseUnityPlugin
{
public override string ID => "com.bepis.bepinex.developerconsole";
public override string Name => "Developer Console";
public override Version Version => new Version("1.0.1");
private Rect UI = new Rect(20, 20, 400, 200);
bool showingUI = false;
string TotalLog = "";
int showCounter = 0;
string TotalShowingLog = "";
void Awake()
{
BepInLogger.EntryLogged += (log, show) =>
{
string current = $"{TotalLog}\r\n{log}";
if (current.Length > 2000)
{
current = current.Remove(0, 1000);
}
TotalLog = current;
if (show)
{
if (showCounter == 0)
TotalShowingLog = "";
showCounter = 400;
TotalShowingLog = $"{TotalShowingLog}\r\n{log}";
}
};
}
void Update()
{
if (UnityEngine.Input.GetKeyDown(UnityEngine.KeyCode.F12))
{
showingUI = !showingUI;
}
}
void OnGUI()
{
ShowLog();
if (showingUI)
UI = GUI.Window(Name.GetHashCode() + 0, UI, WindowFunction, "Developer Console");
}
void ShowLog()
{
if (showCounter != 0)
{
showCounter--;
GUI.Label(new Rect(40, 0, 600, 160), TotalShowingLog, new GUIStyle
{
alignment = TextAnchor.UpperLeft,
fontSize = 26,
normal = new GUIStyleState
{
textColor = Color.white
}
});
}
}
void WindowFunction(int windowID)
{
GUI.Label(new Rect(10, 40, 380, 160), TotalLog, new GUIStyle
{
alignment = TextAnchor.LowerLeft,
wordWrap = true,
normal = new GUIStyleState
{
textColor = Color.white
}
});
if (GUI.Button(new Rect(295, 20, 100, 20), "Dump scene"))
{
SceneDumper.DumpScene();
}
GUI.DragWindow();
}
}
}
@@ -1,61 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{434F00D0-BD2A-4C81-A2FE-8DBFBBD9D9AB}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>DeveloperConsole</RootNamespace>
<AssemblyName>DeveloperConsole</AssemblyName>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>K:\BepInEx\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>K:\BepInEx\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
<Reference Include="UnityEngine">
<HintPath>..\..\lib\UnityEngine.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="UnityEngine.UI">
<HintPath>..\..\lib\UnityEngine.UI.dll</HintPath>
<Private>False</Private>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="DeveloperConsole.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SceneDumper.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\BepInEx\BepInEx.csproj">
<Project>{4ffba620-f5ed-47f9-b90c-dad1316fd9b9}</Project>
<Name>BepInEx</Name>
<Private>False</Private>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
@@ -1,36 +0,0 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("DeveloperConsole")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("DeveloperConsole")]
[assembly: AssemblyCopyright("Copyright © 2018")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("434f00d0-bd2a-4c81-a2fe-8dbfbbd9d9ab")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
-67
View File
@@ -1,67 +0,0 @@
using System;
using System.Diagnostics;
using System.IO;
using System.Text;
using UnityEngine;
using UnityEngine.SceneManagement;
namespace DeveloperConsole
{
static class SceneDumper
{
public static void DumpScene()
{
var objects = SceneManager.GetActiveScene().GetRootGameObjects();
var fname = Path.GetTempFileName();
using (var f = File.OpenWrite(fname))
using (var sw = new StreamWriter(f, Encoding.UTF8))
{
foreach (var obj in objects)
{
PrintRecursive(sw, obj);
}
}
Process.Start("notepad.exe", fname);
}
private static void PrintRecursive(StreamWriter sw, GameObject obj)
{
PrintRecursive(sw, obj, 0);
}
private static void PrintRecursive(StreamWriter sw, GameObject obj, int d)
{
//Console.WriteLine(obj.name);
var pad1 = new string(' ', 3 * d);
var pad2 = new string(' ', 3 * (d + 1));
var pad3 = new string(' ', 3 * (d + 2));
sw.WriteLine(pad1 + obj.name + "--" + obj.GetType().FullName);
foreach (Component c in obj.GetComponents<Component>())
{
sw.WriteLine(pad2 + "::" + c.GetType().Name);
var ct = c.GetType();
var props = ct.GetProperties(System.Reflection.BindingFlags.DeclaredOnly | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);
foreach (var p in props)
{
try
{
var v = p.GetValue(c, null);
sw.WriteLine(pad3 + "@" + p.Name + "<" + p.PropertyType.Name + "> = " + v);
}
catch (Exception e)
{
//Console.WriteLine(e.Message);
}
}
}
foreach (Transform t in obj.transform)
{
PrintRecursive(sw, t.gameObject, d + 1);
}
}
}
}
@@ -1,80 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{6FE9DE86-F466-49FD-BCCA-ADD512C8DCE8}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>DynamicTranslationLoader</RootNamespace>
<AssemblyName>DynamicTranslationLoader</AssemblyName>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>K:\BepInEx\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>K:\BepInEx\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="0Harmony, Version=1.0.9.1, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\lib\0Harmony.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Assembly-CSharp">
<HintPath>..\..\lib\Assembly-CSharp.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
<Reference Include="TextMeshPro-1.0.55.56.0b12">
<HintPath>..\..\lib\TextMeshPro-1.0.55.56.0b12.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="UnityEngine, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\lib\UnityEngine.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="UnityEngine.UI">
<HintPath>..\..\lib\UnityEngine.UI.dll</HintPath>
<Private>False</Private>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="DynamicTranslator.cs" />
<Compile Include="Hooks.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\BepInEx\BepInEx.csproj">
<Project>{4ffba620-f5ed-47f9-b90c-dad1316fd9b9}</Project>
<Name>BepInEx</Name>
<Private>False</Private>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Content Include="translation\translation.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
@@ -1,120 +0,0 @@
using BepInEx;
using BepInEx.Common;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using TMPro;
using UnityEngine;
using UnityEngine.SceneManagement;
namespace DynamicTranslationLoader
{
public class DynamicTranslator : BaseUnityPlugin
{
public override string ID => "com.bepis.bepinex.dynamictranslator";
public override string Name => "Dynamic Translator";
public override Version Version => new Version("1.2");
private static Dictionary<string, string> translations = new Dictionary<string, string>();
private static List<string> untranslated = new List<string>();
void Awake()
{
string[] translation = File.ReadAllLines(Utility.CombinePaths(Utility.PluginsDirectory, "translation", "translation.txt"));
for (int i = 0; i < translation.Length; i++)
{
string line = translation[i];
if (!line.Contains('='))
continue;
string[] split = line.Split('=');
translations[split[0]] = split[1];
}
Hooks.InstallHooks();
TranslateAll();
}
void LevelFinishedLoading(Scene scene, LoadSceneMode mode)
{
TranslateScene(scene);
}
public static string Translate(string input)
{
if (translations.ContainsKey(input))
return translations[input];
if (!untranslated.Contains(input) &&
!translations.ContainsValue(input.Trim()))
{
untranslated.Add(input);
}
return input;
}
void TranslateAll()
{
foreach (TextMeshProUGUI gameObject in Resources.FindObjectsOfTypeAll<TextMeshProUGUI>())
{
//gameObject.text = "Harsh is shit";
gameObject.text = Translate(gameObject.text);
}
}
void TranslateScene(Scene scene)
{
foreach (GameObject obj in scene.GetRootGameObjects())
foreach (TextMeshProUGUI gameObject in obj.GetComponentsInChildren<TextMeshProUGUI>(true))
{
//gameObject.text = "Harsh is shit";
gameObject.text = Translate(gameObject.text);
}
}
void Dump()
{
string output = "";
foreach (var kv in translations)
output += $"{kv.Key.Trim()}={kv.Value.Trim()}\r\n";
foreach (var text in untranslated)
if(!Regex.Replace(text, @"[\d-]", string.Empty).IsNullOrWhiteSpace()
&& !text.Contains("Reset"))
output += $"{text.Trim()}=\r\n";
File.WriteAllText("dumped-tl.txt", output);
}
#region MonoBehaviour
void OnEnable()
{
SceneManager.sceneLoaded += LevelFinishedLoading;
}
void OnDisable()
{
SceneManager.sceneLoaded -= LevelFinishedLoading;
}
void Update()
{
if (UnityEngine.Input.GetKeyDown(UnityEngine.KeyCode.F10))
{
Dump();
BepInLogger.Log($"Text dumped to \"{Path.GetFullPath("dumped-tl.txt")}\"", true);
}
}
#endregion
}
}
-45
View File
@@ -1,45 +0,0 @@
using Harmony;
using System.Reflection;
using TMPro;
namespace DynamicTranslationLoader
{
public static class Hooks
{
public static void InstallHooks()
{
var harmony = HarmonyInstance.Create("com.bepis.bepinex.dynamictranslationloader");
MethodInfo original = AccessTools.Property(typeof(TMP_Text), "text").GetSetMethod();
HarmonyMethod prefix = new HarmonyMethod(typeof(Hooks).GetMethod("TextPropertyHook"));
harmony.Patch(original, prefix, null);
original = AccessTools.Method(typeof(TMP_Text), "SetText", new[] { typeof(string) });
prefix = new HarmonyMethod(typeof(Hooks).GetMethod("SetTextHook"));
harmony.Patch(original, prefix, null);
original = AccessTools.Property(typeof(UnityEngine.UI.Text), "text").GetSetMethod();
prefix = new HarmonyMethod(typeof(Hooks).GetMethod("TextPropertyHook"));
harmony.Patch(original, prefix, null);
}
public static void TextPropertyHook(ref string value)
{
value = DynamicTranslator.Translate(value);
}
public static void SetTextHook(ref string text)
{
text = DynamicTranslator.Translate(text);
}
}
}
@@ -1,36 +0,0 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("BaseTranslationLoader")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("BaseTranslationLoader")]
[assembly: AssemblyCopyright("Copyright © 2018")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("6fe9de86-f466-49fd-bcca-add512c8dce8")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
@@ -1,881 +0,0 @@
素直クール=Honest
のじゃっ子=Archaic
意地っ張り=Obstinate
無口=Quiet
ものぐさ=Lazy
ヤンデレ=Yandere
オタク女子=Otaku
ミーハー=Trendy
正統派ヒロイン=Main Heroine
モジモジ=Fidgety
文学少女=Literary Girl
不幸少女=Unlucky
ひねくれ=Uncooperative
意識高いクール=Narcissist
野生的=Feral
不良少女=Delinquent
ギャル=Gyaru
姉御肌=Big Sister
母性的=Motherly
邪気眼=Cursed Eye
単純=Ordinary
純粋無垢=Pure
ボーイッシュ=Boyish
大和撫子=Traditional Beauty
電波=Weirdo
ミステリアス=Mysterious
後輩キャラ=Underclassman
高飛車=Mistress
お嬢様=Aristocrat
セクシー=Sexy
カラー①=Color ①
腰=Waist
親=Parent
左右の親を入れ替え=Swap Sides
種類=Type
学生服(校内)=School uniform (Indoors)
Option A=Option A
コピー=Copy
陰毛の色を眉の色に合わせる=Copy eyebrow color over to pubic hair
柄の種類=Pattern type
カテゴリ01=Category 01
なし=None
タイプ=Category
スロット01の調整02=Slot 01 Adjustment point 02
アウトラインの色を個別に設定する=Enable Outline Color Adjustment
ボトムス=Bottoms
服の柄③=Cloth Pattern ③
後ろ髪の種類=Back Hair Type
ショート=Underwear
アニメ=Anime
表示する靴のタイプ=Displayed Shoe Type
首=Neck
下まぶたの形状3=Lower Eyelid Shape 3
コピー元のコーディネート=Uniform Source
コピー先のコーディネート=Uniform Destination
全選択=All
全解除=None
ショーツの種類=Underwear Type
リボンショーツ=Ribbon Underwear
上まぶたの形状3=Upper Eyelid Shape 3
親を初期設定に戻す=Restore Default Parent
柄②の大きさ(高さ)=Pattern ② Height
調整①をコピー=Copy Adjustment ①
グループ=Group
調整02=Adjust 02
アクセサリの色を初期に戻す=Restore to default color
背中左=Back left
体=Body
回転 Y=Rotation Y
髪のツヤ種類=Highlight Selection
線ハイライト=Line Highlight
首周りの奥=Neck Thickness
エンブレムの種類=Emblem Type
上腕の幅=Upper Arm Width
ハイライト下の種類=Lower Highlight Type
タイプ3=Type 3
スロット16=Slot 16
タイプや種類変更時に前回の親を引き継ぐ=Use previous parent when changing accessory
種類変更時に前回の色を引き継ぐ=Use previous color when changing accessory
カラー②=Color ②
カラー③=Color ③
カラー④=Color ④
調整01=Adjustment 01
クリックで編集します=Click to edit
メイン=Main
サブ=Sub
※ アクセサリの表示をまとめて切り替える時の=※ The time when the accessories get shown can be
グループ分けです。=changed with the buttons above.
サブに設定するとH開始時に非表示になります。=When set to sub, it will be hidden during H scenes.
柄③の大きさ(幅)=Pattern ③ Width
ブラの種類=Bra Type
デフォルト=Default
肌ラインを表示する=Display Skin Detail Lines
スロット01の親を選択=Select parent of slot 01
服の色①=Cloth Color ①
目尻の上下位置=Outer Eye Corner Height
顎の幅=Jaw Width
回転 X=Rotation X
タイプ2=Type 2
ペイント02回転=Paint 02 Rotation
勉強する?=Likes to study?
YES=YES
NO=No
尻のサイズ=Ass Size
眉のパターン=Eyebrow Pattern
耳=Ear
耳のサイズ=Ear Size
耳の角度Y軸=Ear Angle Y Axis
耳の角度Z軸=Ear Angle Z Axis
耳の上部形状=Ear Upper Shape
耳の下部形状=Ear Lower Shape
装飾の柄=Decoration Pattern#necktie
個性=Traits
頻尿=Small Bladder
はらぺこ=Glutton
鈍感=Insensitive
チョロイ=Easygoing
ビッチ=Slut
むっつり=Gloomy
読書好き=Likes Reading
音楽好き=Likes Music
活発=Lively
受け身=Passive
フレンドリー=Friendly
綺麗好き=Likes Cleaning
怠惰=Lazy
神出鬼没=Phantom
一人好き=Loner
運動好き=Likes Exercising
真面目=Serious
ランダム=Random
下半身=Lower Body
腰下の奥=Hip Depth
八重歯を表示する=Enable Fangs
アクセサリ(頭)の種類=Accessory (Head) Selection
リップの種類=Lip Type
ブラ=Bra
1.0=1.0
柄①の大きさ(幅)=Pattern ① Width
アクセサリ(胴)の種類=Torso Accessory Selection
陰毛の種類=Pubic Hair Type
薄い=Thin
陰毛の色=Pubic Hair Color
陰毛の色を髪と眉に反映する=Copy pubic hair color over to hair and eyebrows
陰毛の色を髪の色に合わせる=Copy hair color over to pubic hair
ボトムスを初期の状態に戻す=Restore Default Bottoms Settings
パンストを初期の状態に戻す=Restore Default Pantyhose Settings
パンストの種類=Pantyhose Type
服の柄①=Cloth Pattern ①
柄①の大きさ(高さ)=Pattern ① Height
柄①の色=Pattern Color ①
服の色②=Cloth Color ②
服の柄②=Cloth Pattern ②
柄②の大きさ(幅)=Pattern ② Width
柄②の色=Pattern Color ②
服の色③=Cloth Color ③
柄③の大きさ(高さ)=Pattern ③ Height
柄③の色=Pattern Color ③
HSV=HSV
インナーの種類=Inner Type
ワイシャツ=Shirt
ウエストの位置=Waist Position
腹部=Belly Thickness
腰上の幅=Waist Width
腰上の奥=Waist Thickness
腰下の幅=Hip Width
尻の角度=Ass Angle
タイプ1=Type 1
頬骨の幅=Cheekbone Width
スロット01=Slot 01
スロット02=Slot 02
スロット03=Slot 03
スロット04=Slot 04
スロット05=Slot 05
スロット06=Slot 06
スロット07=Slot 07
スロット08=Slot 08
スロット09=Slot 09
スロット10=Slot 10
スロット11=Slot 11
スロット12=Slot 12
スロット13=Slot 13
スロット14=Slot 14
スロット15=Slot 15
スロット17=Slot 17
スロット18=Slot 18
スロット19=Slot 19
スロット20=Slot 20
入れ替え=Transfer
コピー元を選択して下さい=Item Source
コピー先を選択して下さい=Item Destination
左右の親を切り替える=Swap sides when transfering
スロットをコピー=Copy Slot
調整①を左右反転コピー=Copy adjustment ① horizontal coordination in reverse
調整①を上下反転コピー=Copy adjustment ① upside down
調整②をコピー=Copy adjustment ②
調整②を左右反転コピー=Copy adjustment ② horizontal coordination in reverse
調整②を上下反転コピー=Copy adjustment ② upside down
---------------------- 髪 ----------------------=---------------------- Hair ------------------------
ポニー=Pony
ツイン左=Twin L
ツイン右=Twin R
ヘアピン左=Hairpin Left
ヘアピン右=Hairpin Right
---------------------- 頭 ----------------------=---------------------- Head ----------------------
帽子=Hat
額=Forehead
頭上=Overhead
頭中心=Head Center
---------------------- 顔 ----------------------=---------------------- Face ----------------------
イヤリング左=Earring Left
イヤリング右=Earring Right
眼鏡=Glasses
鼻=Nose
口=Mouth
---------------------- 首 ----------------------=---------------------- Neck ------------------------
胸上=Chest Above
胸上中央=Chest Center
---------------------- 胴 ----------------------=---------------------- Body ------------------------
左乳首=Nipple Left
右乳首=Nipple Right
背中中央=Back Center
背中右=Back R
---------------------- 腰 ----------------------=---------------------- Waist ------------------------
腰前=Waist Front
腰後ろ=Waist Back
腰左=Waist Left
腰右=Waist Right
---------------------- 脚 ----------------------=---------------------- Leg ------------------------
左太もも=Thigh Left
左ひざ=Knee Left
左足首=Ankle Left
かかと左=Heel Left
右太もも=Thigh Right
右ひざ=Knee Right
右足首=Ankle Right
かかと右=Heel Right
---------------------- 腕 ----------------------=---------------------- Arm ------------------------
左肩=Shoulder
左上腕=Upperarm Left
左ひじ=Elbow Left
左手首=Wrist Left
右肩=Shoulder
右上腕=Upperarm Right
右ひじ=Elbow Right
右手首=Wrist Right
---------------------- 手 ----------------------=---------------------- Hand ----------------------
左手=Hand Left
左人差指=Index Finger Left
左中指=Middle Finger Left
左薬指=Ring Finger Left
右手=Hand Right
右人差指=Index Finger Right
右中指=Middle Finger Right
右薬指=Ring Finger Right
--------------------- 股間 ---------------------=--------------------- Groin ---------------------
男根根本=Penis Base
女性器=Vagina base
尻穴=Butthole
スロット01の調整01=Slot 01 Adjustment 01
XYZの文字を左右ドラッグでも調整できます=You can also adjust XYZ characters by dragging left and right
移動量=Position
0.1=0.1
10.0=10.0
位置 X=Position X
位置 Y=Position Y
位置 Z=Position Z
回転量=Rotate
5.0=5.0
回転 Z=Rotation Z
拡縮量=Scale
0.01=0.01
拡縮 X=Scaling X
拡縮 Y=Scale Y
拡縮 Z=Scaling Z
値をコピー=Copy Values
値を貼り付け=Paste Values
全てリセット=Reset All
アクセサリ(髪)の種類=Hair Accessory Selection
アクセサリ(顔)の種類=Face Accessory Selection
アクセサリ(首)の種類=Neck Accessory Selection
アクセサリ(腰)の種類=Waist Accessory Selection
アクセサリ(脚)の種類=Leg Accessory Selection
アクセサリ(腕)の種類=Arm Accessory Selection
アクセサリ(手)の種類=Hand Accessory Selection
アクセサリ(股間)の種類=Groin Accessory Selection
顔の上部上下=Upper Face Height
フェイスペイント01配置=Face Paint 01 Position
ペイント01の色=Paint 01 Color
顎先の前後=Chin Depth
目頭の左右位置=Inner Eye Corner Height
眉の色を髪の色に合わせる=Copy Eyebrow Color To Hair
服読込み=Load Clothes
エクステ=Extension
下まぶたの形状2=Lower Eyelid Shape 2
決定=Apply
性=Surname
顔の全体横幅=Face Width
首周りの幅=Neck Width
口の横幅=Mouth Width
横髪の種類=Side Hair Type
パンスト=Pantyhose
乳首の種類=Nipple Type
前髪の長さ=Front Hair Length
胸の上下角度=Chest Vertical Angle
透明度=Transparency
アイライン上の種類=Upperlashes Type
タイプ9=Type 9
髪の色を眉と陰毛に反映する=Copy Hair Color To Eyebrows and Pubic Hair
O=O
日焼け跡=Tan
日焼け跡の種類=Tan Type
日焼け跡の色=Tan Color
フェイスペイント02の種類=Face Paint 02 Type
胴体下の奥=Lower Torso Thickness
靴(内履き)=Shoes (Indoors
全体=General
顔の上部前後=Upper Face Depth
顔の上部サイズ=Upper Face Size
顔の下部前後=Lower Face Depth
顔の下部横幅=Lower Face Width
特殊表現の種類=Face Overlay Type
特殊表現の強さ=Face Overlay Strength
ペイント02左右位置=Paint 02 Horizontal Position
口の開き=Mouth Openness
頬のツヤの強さ=Cheek Gloss
唇のツヤの強さ=Lip Gloss
瞳の上下位置=Iris Vertical Position
ペイント02の色=Paint 02 Color
トップス=Top
肌の色(赤み部分)=Skin Color (blush)
膝下の奥=Knee Thickness
プリーツスカートA=Pleated Skirt A
眉の種類=Eyebrow Type
顎の上下=Jaw Vertical Position
名前を入力して下さい=Enter a name
ジャケットタイプ=Jacket Type
肉感の種類=Skin Impression Type
緑=Green
ホクロの大きさ=Mole Size
白目のグラデ種類=Sclera Type
靴(外履き)=Shoes (Outdoors)
太もも上の幅=Upper Thigh Width
コーディネート一覧=Uniform List
アクセサリの表示=Displayed Accessories
顎=Jaw
鮮やかさ=Saturation
靴の種類=Shoe Type
最小=Minimum
眉の外側形状=Outer Eyebrow Shape
変形まとめ=Slider List
肘周りの幅=Elbow Width
右目の設定を左目に反映=Copy Right Eye Settings To Left Eye
確認操作パネル=Control Panel
コーディネートタイプ=Uniform Type
色分けハイソックス=Color-coded high-socks
見本=Sample
スライダー=Slider
トップスを初期の状態に戻す=Restore Default Top Settings
胴体肩周りの幅=Shoulder Width
胴体肩周りの奥=Should Thickness
胴体上の幅=Upper Torso Width
胴体上の奥=Upper Torso Thickness
胴体下の幅=Lower Torso Width
目の角度=Eye Rotation
髪の色を陰毛の色に合わせる=Copy Hair Color To Pubic Hair
胸=Breast
胸のサイズ=Breast Size
胸の上下位置=Breast Vertical Position
胸の左右開き=Breast Spacing
胸の左右位置=Breast Horizontal Position
胸の尖り=Breast Depth
胸の形状=Breast Roundness
胸の柔らかさ=Breast Softness
胸の重さ=Breast Weight
乳輪の膨らみ=Areola Depth
乳首の太さ=Nipple Thickness
乳首立ち=Nipple Depth
乳輪の大きさ=Areola Size
乳首の色=Nipple Color
乳首のツヤ強さ=Nipple Gloss
左目の設定を右目に反映=Copy Left Eye Settings To Right Eye
リボン=Ribbon
鼻の種類=Nose Type
爪の色=Nail Color
前髪・後ろ髪・横髪・エクステの色を統一する=Share Color With All Hairs
肩の奥=Shoulder Depth
ボトムスの種類=Bottom Type
チェックA=Check A
手袋を初期の状態に戻す=Restore Default Glove Settings
靴下を初期の状態に戻す=Restore Default Sock Settings
靴下の種類=Sock Types
頬=Cheek
装飾の色=Decoration Color
口の形状上=Upperlip Depth
サンプル=Sample
全削除=Delete All
身長=Body Height
フェイスペイント02配置=Face paint 02 Position
爪のツヤの強さ=Nail Gloss
瞳のグラデ上下調整=Eye Gradient Vertical Position
顎の下部奥行=Lower Jaw Depth
西=West
足首の幅=Ankle Width
名前=Name
上履き=Shoes
肉感の強さ=Skin Impression Strength
ペイント01大きさ=Paint 01 Size
タイプ21=Type 21
ペイント01左右補正=Paint 01 Horizontal Position
激しい愛撫を拒否しない?=Doesn't refuse violent caressing?
ペイント02位置プリセット=Paint 02 Position Presets
髪の色を眉の色に合わせる=Copy Hair Color To Eyebrows
ピッカー=Picker
プリセット=Preset
色合い=Hue
明るさ=Brightness
赤=Red
青=Blue
RGB=RGB
横髪=Side Hair
リボンブラ=Ribbon Bra
ペイント01の種類=Paint 01 Type
瞳の高さ=Iris Height
=
※ 各項目の変形に関するものをまとめたものとなります。=※Aggregate Slider List
最大=Maximum
頭のサイズ=Head Size
肩幅=Shoulder Width
上腕の奥=Upper Arm Thickness
肘周りの奥=Elbow Thickness
前腕=Forearm
太もも上の奥=Upper Thigh Thickness
太もも下の幅=Lower Thigh Width
太もも下の奥=Lower Thigh Thickness
膝下の幅=Knee Width
ふくらはぎ=Calves
足首の奥=Ankle Thickness
ハイライトの下色=Lower Highlight Color
ポーズ=Pose
頬の上下=Cheek Vertical Position
上書き保存=Overwrite Save
眉の上下=Eyebrow Vertical Position
装飾の種類=Decoration Type
ブラを初期の状態に戻す=Restore Default Bra Settings
背景色=Background Color
顔全体の横幅=Face Width
顎の下部上下=Lower Jaw Vertical Position
顎の前後=Jaw Depth
顎の先上下=Chin Tip
顎の先前後=Chin Depth
顎の先幅=Chin Width
頬骨の前後=Cheekbone Depth
頬の幅=Cheek Width
頬の前後=Cheek Depth
眉の横位置=Eyebrow Spacing
眉の角度=Eyebrow Angle
眉の内側形状=Inner Eyebrow Shape
上まぶたの形状1=Upper Eyelid Shape 1
上まぶたの形状2=Upper Eyelid Shape 2
下まぶたの形状1=Lower Eyelid Shape 1
目の上下=Eye Vertical Position
目の横位置=Eye Spacing
目の前後=Eye Depth
目の縦幅=Eye Height
目の横幅=Eye Width
鼻先の高さ=Nose Tip Height
鼻の上下=Nose Vertical Position
鼻筋の高さ=Nose Ridge Height
口の上下=Mouth Vertical Position
口の前後=Mouth Depth
口の形状下=Underlip Depth
口の形状口角=Mouth Corner Shape
ボディーペイント02の配置=Body Paint 02 Position
ホクロの種類=Mole Type
オプション①を表示=Display option ①
オプション②を表示=Display option 2
ショーツを初期の状態に戻す=Restore Default Underwear Settings
ペイント02サイズ補正=Paint 02 Size
質問=Questionary
動物は好き?=Likes animals?
食べるのは好き?=Likes to eat?
料理するのは好き?=Likes to cook?
運動する?=Likes to exercise?
オシャレする?=Is stylish?
コーヒーはブラック?=Drinks their coffee black?
からいのは平気?=OK with spicy food?
甘いのは好き?=Likes sweets?
エッチ=Sexual Preferences
ボディーペイント01の種類=Body paint 01 Selection
胴の種類=Chest Type
パーツA=Part A
腕=Arm
瞳のグラデ種類=Eye Gradient Type
服の状態=Clothing State
自動=Auto
着衣=Clothing
下着=Underwear
全裸=Naked
内履き=Indoors
外履き=Outdoors
目のパターン=Eye Pattern
目の開き=Eye Openness
瞬きをしない=Disable Blinking
口のパターン=Mouth Pattern
視線の向き=Eye Direction
カメラ=Camera
視線の向き調整=Eye Direction Intensity
首の向き=Head Direction
首の向き調整=Head Direction Intensity
基本=Basic
ライトの向き調整=Light Direction
X=X
Y=Y
ライトの向きを初期化=Reset Light Direction
背景の種類=Background
画像=Image
単色=Static
001 / 010=001/010
撮影フレーム=Card Frame
前面フレームを表示=Front Frame
001 / 006=001/006
背面フレームを表示=Back Frame
日付=Date
※ 読込みたい情報にチェックを入れてください=※ Please check the information you want to read
顔=Face
髪=Hair
キャラ情報=Character Information
コーディネートセット=Uniform Sets
読込み=Load
削除=Delete
新規保存=New Save
服=Clothes
アクセサリ=Accessory
化粧=Make up
ローファー=Loafers
手袋=Gloves
手袋の種類=Glove Type
横髪の基本の色=Side Hair Base Color
※ プレイヤーの名前はゲーム開始時に指定します。=※ The name of the player is specified at the beginning of the game.
ここで指定した男の名前はゲームでは使用されません。=The name of the man specified here is not used in the game.
愛称=Nickname
性格=Personality
※ プレイヤーの呼び方を「なし」にした場合はゲーム本編の=※ If you set the player's name to "none", the game's main part
設定に依存します。=It depends on the setting.
プレイヤーの呼び方=How to adress player
血液型=Blood Type
A=A
B=B
AB=AB
誕生日=Birthday
月=M
日=D
部活=Club Activities
帰宅部=Going Home Club
音声調整(低-高)=Voice Pitch (Low - High)
性格を選択=Personality Selection
意識高いクールな女性=A conscious and cool woman
名=Name
キャンセル=Cancel
愛称を入力して下さい=Enter a nickname
しない=No
キャラ保存と削除=Saving and deleting characters
アウターの種類=Outer Type
エクステの基本の色=Extension Base Color
キャラ=Character
性感帯=Erogenous Zone
頭=Head
キスを拒否しない?=Doesn't refuse kisses?
アナルを拒否しない?=Doesn't refuse anal?
電マを拒否しない?=Doesn't refuse electric massagers?
ゴム付けなくてもOK?=Ok without a condom??
ペイント02の配置=Paint 02 Position
眉を髪より手前に表示=Eyebrows Show Through Hair
ブレザーC=Blazer C
前髪の基本の色=Front Hair Base Color
眉の色を陰毛の色に合わせる=Copy Eyebrow Color To Pubic Hair
ペイント01の配置=Paint 01 Position
ボディーペイント01の配置=Body Paint 01 Position
アイシャドウの種類=Eye Shadow Type
トップスの種類=Top Type
ペイント01回転=Paint 01 Rotation
横流しヘア(左)=Horizontal flowing hair (left)
前髪の種類=Front Hair Type
瞳の色②=Eye Color ②
ペイント02左右補正=Paint 02 Horizontal Position
注視点を表示する=Enable Camera Guide
瞳の種類=Eye Type
タイプ11=Type 11
ペイント01上下補正=Paint 01 Vertical Position
顎先の上下=Chin Vertical Position
顎先の幅=Chin Width
眉=Eyebrow
眉の色=Eyebrow Color
コンフィグ依存=Config Decides
する=Yes
眉の色を髪と陰毛に反映する=Copy Eyebrow Color To Hair And Pubic Hair
目元=Eyes
アイライン下の種類=Underlashes Type
アイラインの色=Eyelashes Color
目=Iris
白目の色①=Sclera Color ①
白目の色②=Sclera Color ②
ハイライト上の種類=Upper Highlight Type
ハイライト上の色=Upper Highlight Color
瞳の左右位置=Iris Spacing
瞳の幅=Iris Width
目を髪より手前に表示=Iris Show Through Hair
瞳の設定方法=Eye To Edit
両目=Both Eyes
左目=Left Eye
右目=Right Eye
瞳の色①=Eye Color ①
瞳のグラデ合成方法=Eye Gradient Stength
瞳のグラデサイズ=Eye Gradient Size
リップラインの種類=Lip Line Type
リップラインの色=Lip Line Color
ホクロ=Mole
ホクロの色=Mole Color
ホクロの左右位置=Mole Horizontal Position
ホクロの上下位置=Mole Vertical Position
ホクロ位置プリセット=Mole Position Presets
ホクロ配置=Mole Positioning
化粧(基本)=Make-Up
※ 現在の目のパターンではアイシャドウは表示されません。=* The eye shadow is not displayed in the pattern of the current eye.
アイシャドウの色=Eye Shadow Color
チークの種類=Cheek Type
チークの色=Cheek Color
リップの色=Lip Color
ペイント01左右位置=Paint 01 Horizontal Position
ペイント01上下位置=Paint 01 Vertical Position
ペイント01位置プリセット=Paint 01 Position Presets
ペイント02の種類=Paint 02 Type
ペイント02上下位置=Paint 02 Vertical Position
ペイント02大きさ=Paint 02 Size
フェイスペイント01の種類=Face Paint 01 Type
肌の色=Skin Color
肌のツヤの強さ=Skin Gloss
上半身=Upper Body
脚=Leg
爪=Nails
陰毛=Pubic Hair
ペイント=Paint
ペイント01サイズ補正=Paint 01 Size
ペイント02上下補正=Paint 02 Vertical Position
ボディーペイント02の種類=Body paint 02 Selection
根本と毛先の色を個別に設定する=Enable Root And Tip Color Adjustment
後ろ髪=Back Hair
後ろ髪の基本の色=Back Hair Base Color
後ろ髪の根本の色=Back Hair Root Color
後ろ髪の毛先の色=Back Hair Tip Color
アウトラインの色=Outline Color
髪飾りの色①=Hair Accessory Color ①
髪飾りの色②=Hair Accessory Color ②
髪飾りの色③=Hair Accessory Color ③
髪飾りの色を初期に戻す=Set Accessory Color To Default
前髪=Front Hair
前髪の根本の色=Front Hair Root Color
前髪の毛先の色=Front Hair Tip Color
横髪の根本の色=Side Hair Root Color
横髪の毛先の色=Side Hair Tip Color
エクステの種類=Extension Type
エクステの根本の色=Extension Root Color
エクステの毛先の色=Extension Tip Color
付け毛の種類=Hair Selection
その他=Other
ツヤの種類=Highlight Type
襟の種類=Collar Type
装飾の柄の大きさ(幅)=Decoration Pattern Size (Width)
装飾の柄の大きさ(高さ)=Decoration Pattern Size (Height)
装飾の柄の色=Decoration Pattern Color
ショーツ=Underwear
靴下=Socks
内履きを初期の状態に戻す=Restore inner wear to initial condition
外履きを初期の状態に戻す=Returning the outer wear to the initial state
パーツB=Part B
パーツC=Part C
キャラ読込み=Character Loading
服の保存と削除=Save or delete uniforms
コンフィグ=Config
影の表現=Shadow Type
深いくっきり影=Deep Sharp Shadow
影の濃さ=Shadow Density
アウトラインの濃さ=Outline Density
アウトラインの幅=Outline Thickness
BGMの音量=BGM Volume
効果音の音量=SE Volume
キャラ一覧=Character List
※ 学生証画像及びカード画像を撮影=※ Snap a student ID card and card
しないと保存できません。=image, otherwise you can't save.
学生証画像を撮影=Student ID Card
カード画像を撮影=Card Image
撮影=Snap picture
保存=Save
戻る=Return
No Image=No Image
学生証画像=Student ID Card Image
カード画像=Card Image
コーディネート名を入力して下さい=Please enter the uniform name
本当に削除しますか?=Do you really want to delete this?
はい=Yes
いいえ=No
キャラ画像を変更しますか?=Do you want to change the character image?
変更して保存=Change and save
変更せず保存=Save without changing
保存をやめる=Cancel
スペースキーで戻ります=Press Spacebar to return
キャラメイクを終了しますか?=Exit Game?
※ アクセサリの表示をまとめて切り替える時の
  グループ分けです。
  サブに設定するとH開始時に非表示になります。=※ The time when the accessories get shown can be changed with the buttons above. When set to sub, it will be hidden during H scenes.
スロット09=Slot 09
スロット07=Slot 07
スロット02=Slot 02
スロット05=Slot 05
スロット03=Slot 03
調整=Adjustment
スロット06=Slot 06
スロット01=Slot 01
スロット04=Slot 04
スロット08=Slot 08
※ 各項目の変形に関するものをまとめたものとなります。=※Aggregate Slider List
カラー=Color
親を選択=Select parent
浅いなめらか影=Light Smooth Shadow
ロングヘア=Long Hair
ロングサイドテール(左)=Long Side Tail (L)
ロングサイドテール(右)=Long Side Tail (R)
ツインテール=Twintail
お嬢様ロング=Long Braid
ボブヘア=Bob Hair
アップツイン=High Twintail
カールボブ=Curled Bob
ベリーショート=Very Short
サイドテール(右)=Side Tail (R)
ツインおさげ=Low Twintail
サイドテール(左)=Side Tail (L)
結わえロング=Tied Long
ポニーテイル=Pony Tail
三つ編み=Braided
サイドアップ(右)=Side Up (R)
サイドアップ(左)=Side Up (L)
学生服(下校)=School uniform (Outdoors)
体操着=Gym clothes
水着=Swimsuit
私服=Personal clothes
お泊り=Staying over
水泳部=Swimming Club
漫研部=Manga club
チアリーディング部=Cheerleading Club
茶道部=Tea Ceremony Club
陸上部=Track
揺れ=Bounce
立ち01=Pose 01
立ち02=Pose 02
立ち03=Pose 03
立ち04=Pose 04
立ち05=Pose 05
立ち06=Pose 06
立ち07=Pose 07
立ち08=Pose 08
立ち09=Pose 09
立ち10=Pose 10
立ち11=Pose 11
立ち12=Pose 12
立ち13=Pose 13
立ち14=Pose 14
立ち15=Pose 15
立ち16=Pose 16
立ち17=Pose 17
立ち18=Pose 18
立ち19=Pose 19
立ち20=Pose 20
立ち21=Pose 21
立ち22=Pose 22
立ち23=Pose 23
立ち24=Pose 24
立ち25=Pose 25
立ち26=Pose 26
立ち27=Pose 27
立ち28=Pose 28
立ち29=Pose 29
立ち30=Pose 30
立ち31=Pose 31
立ち32=Pose 32
立ち33=Pose 33
立ち34=Pose 34
座り=Kneel
寝=Lie Down
上=Up
右上=Upper Right
右=Right
右下=Bottom Right
下=Down
左下=Bottom Left
左=Left
左上=Upper left
そらす=Avert Gaze
笑顔=Smile
嬉しい=Happy
嬉しいs=HappyS
嬉しいss=HappySS
ドキドキ=Excited
ドキドキs=ExcitedS
ドキドキss=ExcitedSS
怒り=Upset
怒り2=Upset2
真剣1=Serious 1
真剣2=Serious 2
嫌悪=Hate
寂しい=Sad
焦り=Flustered
不満=Dissatisfied
呆れ=Amazed
驚き=Surprised
驚きs=SurprisedS
ドヤ=Smug
舌ペロ=Playful
舐め=Eat
咥え=Hold In Mouth
キス=Kiss
舌出し口開け=Tongue Out
あ 小=A Small
あ 大=A Big
い 小=I Small
い 大=I Big
う 小=U Small
う 大=U Big
え 小=E Small
え 大=E Big
お 小=O Small
お 大=O Big
ん 小=N Small
ん 大=N Big
猫口 閉じ=Cat
三角=Triangle
デフォルメニコ=Deformed Smile
両目閉じ=Closed
笑顔 両目閉じ=Happy Closed
微笑=Happy
ウィンク左=Wink L
ウィンク右=Wink R
切ない=Painful
照れ=Shy
真剣=Serious
つまらない=Bored
苦しい=Distressed
思案=Pondering
悲しい=Sad
泣き=Sobbing
落胆=Displeased
困る=Worried
ぐるぐる目1=Circle 1
ぐるぐる目2=Circle 2
ぐるぐる目3=Circle 3
瞳に星=Star
瞳にハート=Small Heart
目がハート=Big Heart
目に炎=Fire
デフォルメウィンク=Deformed Wink
縦一文字=Stripe Vertical
デフォルメつむり=Deformed Closed
横一文字=Stripe Horizontal
デフォルメ泣き=Deformed Cry
困り=Worried
疑問L=Doubt L
疑問R=Doubt R
思案L=Pondering L
思案R=Pondering R
怒り2L=Angry L
怒り2R=Angry R
不安=Anxious
ウィンクL=Wink L
ウィンクR=Wink R
股間=Groin
アナル=Anal
尻=Butt
乳首=Nipple
胴=Torso
手=Hand
股間周り=Groin
@@ -1,55 +0,0 @@
using BepInEx;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ExtensibleSaveFormat
{
public class ExtensibleSaveFormat : BaseUnityPlugin
{
public override string ID => "com.bepis.bepinex.extendedsave";
public override string Name => "Extensible Save Format";
public override Version Version => new Version("1.0");
void Awake()
{
Hooks.InstallHooks();
}
internal static Dictionary<ChaFile, Dictionary<string, object>> internalDictionary = new Dictionary<ChaFile, Dictionary<string, object>>();
#region Events
public delegate void CardEventHandler(ChaFile file);
public static event CardEventHandler CardBeingSaved;
public static event CardEventHandler CardBeingLoaded;
internal static void writeEvent(ChaFile file)
{
CardBeingSaved?.Invoke(file);
}
internal static void readEvent(ChaFile file)
{
CardBeingLoaded?.Invoke(file);
}
#endregion
public static bool TryGetExtendedFormat(ChaFile file, out Dictionary<string, object> extendedFormatData)
{
return internalDictionary.TryGetValue(file, out extendedFormatData);
}
public static void SetExtendedFormat(ChaFile file, Dictionary<string, object> extendedFormatData)
{
internalDictionary[file] = extendedFormatData;
}
}
}
@@ -1,69 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{8EBE81B9-9ED9-466D-864A-4C644BFD8827}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>ExtensibleSaveFormat</RootNamespace>
<AssemblyName>ExtensibleSaveFormat</AssemblyName>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>K:\BepInEx\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>K:\BepInEx\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="0Harmony">
<HintPath>..\..\lib\0Harmony.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Assembly-CSharp">
<HintPath>..\..\lib\Assembly-CSharp.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Assembly-CSharp-firstpass">
<HintPath>..\..\lib\Assembly-CSharp-firstpass.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
<Reference Include="UnityEngine">
<HintPath>..\..\lib\UnityEngine.dll</HintPath>
<Private>False</Private>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="ExtensibleSaveFormat.cs" />
<Compile Include="Hooks.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\BepInEx\BepInEx.csproj">
<Project>{4ffba620-f5ed-47f9-b90c-dad1316fd9b9}</Project>
<Name>BepInEx</Name>
<Private>False</Private>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
-75
View File
@@ -1,75 +0,0 @@
using Harmony;
using MessagePack;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
namespace ExtensibleSaveFormat
{
public static class Hooks
{
public static void InstallHooks()
{
var harmony = HarmonyInstance.Create("com.bepis.bepinex.extensiblesaveformat");
MethodInfo original = AccessTools.Method(typeof(ChaFile), "SaveFile", new[] { typeof(BinaryWriter), typeof(bool) });
HarmonyMethod postfix = new HarmonyMethod(typeof(Hooks).GetMethod("SaveFileHook"));
harmony.Patch(original, null, postfix);
original = AccessTools.Method(typeof(ChaFile), "LoadFile", new[] { typeof(BinaryReader), typeof(bool), typeof(bool) });
postfix = new HarmonyMethod(typeof(Hooks).GetMethod("LoadFileHook"));
harmony.Patch(original, null, postfix);
}
public static void SaveFileHook(ChaFile __instance, bool __result, BinaryWriter bw, bool savePng)
{
if (!__result)
return;
ExtensibleSaveFormat.writeEvent(__instance);
if (!ExtensibleSaveFormat.TryGetExtendedFormat(__instance, out Dictionary<string, object> extendedData))
return;
byte[] bytes = MessagePackSerializer.Serialize(extendedData);
bw.Write((int)bytes.Length);
bw.Write(bytes);
}
public static void LoadFileHook(ChaFile __instance, bool __result, BinaryReader br, bool noLoadPNG, bool noLoadStatus)
{
if (!__result)
return;
try
{
int length = br.ReadInt32();
if (length > 0)
{
byte[] bytes = br.ReadBytes(length);
ExtensibleSaveFormat.internalDictionary[__instance] = MessagePackSerializer.Deserialize<Dictionary<string, object>>(bytes);
return;
}
}
catch (EndOfStreamException) { }
//initialize a new dictionary since it doesn't exist
ExtensibleSaveFormat.internalDictionary[__instance] = new Dictionary<string, object>();
ExtensibleSaveFormat.readEvent(__instance);
}
}
}
@@ -1,36 +0,0 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("ExtensibleSaveFormat")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("ExtensibleSaveFormat")]
[assembly: AssemblyCopyright("Copyright © 2018")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("8ebe81b9-9ed9-466d-864a-4c644bfd8827")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
-49
View File
@@ -1,49 +0,0 @@
using BepInEx;
using System;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
namespace InputUnlocker
{
class InputUnlocker : BaseUnityPlugin
{
public override string ID => "com.bepis.bepinex.inputunlocker";
public override string Name => "Input Length Unlocker";
public override Version Version => new Version("1.0");
void Awake()
{
foreach (InputField gameObject in GameObject.FindObjectsOfType<InputField>())
{
UnlockInput(gameObject);
}
}
void LevelFinishedLoading(Scene scene, LoadSceneMode mode)
{
foreach (GameObject obj in scene.GetRootGameObjects())
foreach (InputField gameObject in obj.GetComponentsInChildren<InputField>(true))
{
UnlockInput(gameObject);
}
}
void UnlockInput(InputField input)
{
input.characterLimit = 999;
}
#region MonoBehaviour
void OnEnable()
{
SceneManager.sceneLoaded += LevelFinishedLoading;
}
void OnDisable()
{
SceneManager.sceneLoaded -= LevelFinishedLoading;
}
#endregion
}
}
@@ -1,61 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{379BA41B-9944-4B5A-8732-EEBAA7F05B04}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>InputUnlocker</RootNamespace>
<AssemblyName>InputUnlocker</AssemblyName>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>K:\BepInEx\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>K:\BepInEx\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
<Reference Include="UnityEngine, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\lib\UnityEngine.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="UnityEngine.UI">
<HintPath>..\..\lib\UnityEngine.UI.dll</HintPath>
<Private>False</Private>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="InputUnlocker.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\BepInEx\BepInEx.csproj">
<Project>{4ffba620-f5ed-47f9-b90c-dad1316fd9b9}</Project>
<Name>BepInEx</Name>
<Private>False</Private>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
@@ -1,36 +0,0 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("InputUnlocker")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("InputUnlocker")]
[assembly: AssemblyCopyright("Copyright © 2018")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("379ba41b-9944-4b5a-8732-eebaa7f05b04")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
-40
View File
@@ -1,40 +0,0 @@
using BepInEx.Common;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using UnityEngine;
namespace ResourceRedirector
{
public static class AssetLoader
{
public static AudioClip LoadAudioClip(string path, AudioType type)
{
using (WWW loadGachi = new WWW(Utility.ConvertToWWWFormat(path)))
{
AudioClip clip = loadGachi.GetAudioClipCompressed(false, type);
//force single threaded loading instead of using a coroutine
while (!clip.isReadyToPlay) { }
return clip;
}
}
public static Texture2D LoadTexture(string path)
{
byte[] data = File.ReadAllBytes(path);
Texture2D tex = new Texture2D(2, 2);
//DDS method
//tex.LoadRawTextureData
tex.LoadImage(data);
return tex;
}
}
}
-133
View File
@@ -1,133 +0,0 @@
using BepInEx;
using Harmony;
using System;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using UnityEngine;
namespace ResourceRedirector
{
static class Hooks
{
public static void InstallHooks()
{
var harmony = HarmonyInstance.Create("com.bepis.bepinex.resourceredirector");
MethodInfo original = AccessTools.Method(typeof(AssetBundleManager), "LoadAsset", new[] { typeof(string), typeof(string), typeof(Type), typeof(string) });
HarmonyMethod postfix = new HarmonyMethod(typeof(Hooks).GetMethod("LoadAssetPostHook"));
harmony.Patch(original, null, postfix);
original = AccessTools.Method(typeof(AssetBundleManager), "LoadAssetBundle", new[] { typeof(string), typeof(bool), typeof(string) });
postfix = new HarmonyMethod(typeof(Hooks).GetMethod("LoadAssetBundlePostHook"));
harmony.Patch(original, null, postfix);
original = AccessTools.Method(typeof(AssetBundleManager), "LoadAssetAsync", new[] { typeof(string), typeof(string), typeof(Type), typeof(string) });
postfix = new HarmonyMethod(typeof(Hooks).GetMethod("LoadAssetAsyncPostHook"));
harmony.Patch(original, null, postfix);
original = AccessTools.Method(typeof(AssetBundleManager), "LoadAllAsset", new[] { typeof(string), typeof(Type), typeof(string) });
postfix = new HarmonyMethod(typeof(Hooks).GetMethod("LoadAllAssetPostHook"));
harmony.Patch(original, null, postfix);
}
public static void LoadAssetPostHook(ref AssetBundleLoadAssetOperation __result, string assetBundleName, string assetName, Type type, string manifestAssetBundleName)
{
try
{
//BepInLogger.Log($"{assetBundleName} : {assetName} : {type.FullName} : {manifestAssetBundleName ?? ""}");
__result = ResourceRedirector.HandleAsset(assetBundleName, assetName, type, manifestAssetBundleName, ref __result);
}
catch (Exception ex)
{
Console.WriteLine("---" + nameof(LoadAssetPostHook) + "---");
Console.WriteLine(ex.Message);
Console.WriteLine(ex.StackTrace);
Console.WriteLine("---");
}
}
public static void LoadAssetBundlePostHook(string assetBundleName, bool isAsync, string manifestAssetBundleName)
{
try
{
//BepInLogger.Log($"{assetBundleName} : {manifestAssetBundleName} : {isAsync}");
}
catch (Exception ex)
{
Console.WriteLine("---" + nameof(LoadAssetBundlePostHook) + "---");
Console.WriteLine(ex.Message);
Console.WriteLine(ex.StackTrace);
Console.WriteLine("---");
}
}
public static void LoadAssetAsyncPostHook(ref AssetBundleLoadAssetOperation __result, string assetBundleName, string assetName, Type type, string manifestAssetBundleName)
{
try
{
//BepInLogger.Log($"{assetBundleName} : {assetName} : {type.FullName} : {manifestAssetBundleName ?? ""}", true);
__result = ResourceRedirector.HandleAsset(assetBundleName, assetName, type, manifestAssetBundleName, ref __result);
}
catch (Exception ex)
{
Console.WriteLine("---" + nameof(LoadAssetAsyncPostHook) + "---");
Console.WriteLine(ex.Message);
Console.WriteLine(ex.StackTrace);
Console.WriteLine("---");
}
}
public static void LoadAllAssetPostHook(ref AssetBundleLoadAssetOperation __result, string assetBundleName, Type type, string manifestAssetBundleName = null)
{
try
{
//BepInLogger.Log($"{assetBundleName} : {type.FullName} : {manifestAssetBundleName ?? ""}");
if (assetBundleName == "sound/data/systemse/brandcall/00.unity3d" ||
assetBundleName == "sound/data/systemse/titlecall/00.unity3d")
{
string dir = $"{BepInEx.Common.Utility.PluginsDirectory}\\introclips";
if (!Directory.Exists(dir))
Directory.CreateDirectory(dir);
var files = Directory.GetFiles(dir, "*.wav");
if (files.Length == 0)
return;
List<UnityEngine.Object> loadedClips = new List<UnityEngine.Object>();
foreach (string path in files)
loadedClips.Add(AssetLoader.LoadAudioClip(path, AudioType.WAV));
__result = new AssetBundleLoadAssetOperationSimulation(loadedClips.ToArray());
}
}
catch (Exception ex)
{
Console.WriteLine("---" + nameof(LoadAllAssetPostHook) + "---");
Console.WriteLine(ex.Message);
Console.WriteLine(ex.StackTrace);
Console.WriteLine("---");
}
}
}
}
@@ -1,46 +0,0 @@
using BepInEx;
using Illusion.Game;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using UnityEngine;
namespace ResourceRedirector
{
static class BGMLoader
{
public static bool HandleAsset(string assetBundleName, string assetName, Type type, string manifestAssetBundleName, out AssetBundleLoadAssetOperation result)
{
if (assetName.StartsWith("bgm"))
{
string path;
switch ((BGM)int.Parse(assetName.Remove(0, 4)))
{
case BGM.Title:
default:
path = $"{BepInEx.Common.Utility.PluginsDirectory}\\title.wav";
break;
case BGM.Custom:
path = $"{BepInEx.Common.Utility.PluginsDirectory}\\custom.wav";
break;
}
if (File.Exists(path))
{
BepInLogger.Log($"Loading {path}");
result = new AssetBundleLoadAssetOperationSimulation(AssetLoader.LoadAudioClip(path, AudioType.WAV));
return true;
}
}
result = null;
return false;
}
}
}
@@ -1,42 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ResourceRedirector
{
public static class IntroVoiceClipLoader
{
//public static bool HandleAsset(string assetBundleName, string assetName, Type type, string manifestAssetBundleName, out AssetBundleLoadAssetOperation result)
//{
// if (assetName.StartsWith("bgm") && type == typeof(AudioClip))
// {
// string path;
// switch ((BGM)int.Parse(assetName.Remove(0, 4)))
// {
// case BGM.Title:
// default:
// path = $"{BepInEx.Common.Utility.PluginsDirectory}\\title.wav";
// break;
// case BGM.Custom:
// path = $"{BepInEx.Common.Utility.PluginsDirectory}\\custom.wav";
// break;
// }
// if (File.Exists(path))
// {
// Chainloader.Log($"Loading {path}");
// result = new AssetBundleLoadAssetOperationSimulation(AssetLoader.LoadAudioClip(path, AudioType.WAV));
// return true;
// }
// }
// result = null;
// return false;
//}
}
}
@@ -1,36 +0,0 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("ResourceRedirector")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("ResourceRedirector")]
[assembly: AssemblyCopyright("Copyright © 2018")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("3ea76ca3-45b6-4a1a-b04f-7a1a8c978af6")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
@@ -1,79 +0,0 @@
using BepInEx;
using BepInEx.Common;
using System;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
namespace ResourceRedirector
{
public class ResourceRedirector : BaseUnityPlugin
{
public override string ID => "com.bepis.bepinex.resourceredirector";
public override string Name => "Asset Emulator";
public override Version Version => new Version("1.3");
public static string EmulatedDir => Path.Combine(Utility.ExecutingDirectory, "abdata-emulated");
public static bool EmulationEnabled;
public delegate bool AssetHandler(string assetBundleName, string assetName, Type type, string manifestAssetBundleName, out AssetBundleLoadAssetOperation result);
public static List<AssetHandler> AssetResolvers = new List<AssetHandler>();
void Awake()
{
Hooks.InstallHooks();
EmulationEnabled = Directory.Exists(EmulatedDir);
AssetResolvers.Add(BGMLoader.HandleAsset);
}
public static AssetBundleLoadAssetOperation HandleAsset(string assetBundleName, string assetName, Type type, string manifestAssetBundleName, ref AssetBundleLoadAssetOperation __result)
{
foreach (var handler in AssetResolvers)
{
if (handler.Invoke(assetBundleName, assetName, type, manifestAssetBundleName, out AssetBundleLoadAssetOperation result))
return result;
}
//emulate asset load
string dir = Path.Combine(EmulatedDir, assetBundleName.Replace('/', '\\').Replace(".unity3d", ""));
if (Directory.Exists(dir))
{
if (type == typeof(Texture2D))
{
string path = Path.Combine(dir, $"{assetName}.png");
if (!File.Exists(path))
return __result;
BepInLogger.Log($"Loading emulated asset {path}");
return new AssetBundleLoadAssetOperationSimulation(AssetLoader.LoadTexture(path));
}
else if (type == typeof(AudioClip))
{
string path = Path.Combine(dir, $"{assetName}.wav");
if (!File.Exists(path))
return __result;
BepInLogger.Log($"Loading emulated asset {path}");
return new AssetBundleLoadAssetOperationSimulation(AssetLoader.LoadAudioClip(path, AudioType.WAV));
}
}
//otherwise return normal asset
return __result;
}
}
}
@@ -1,68 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{3EA76CA3-45B6-4A1A-B04F-7A1A8C978AF6}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>ResourceRedirector</RootNamespace>
<AssemblyName>ResourceRedirector</AssemblyName>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>K:\BepInEx\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>K:\BepInEx\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="0Harmony">
<HintPath>..\..\lib\0Harmony.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Assembly-CSharp">
<HintPath>..\..\lib\Assembly-CSharp.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
<Reference Include="UnityEngine">
<HintPath>..\..\lib\UnityEngine.dll</HintPath>
<Private>False</Private>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="AssetLoader.cs" />
<Compile Include="Loaders\BGMLoader.cs" />
<Compile Include="Hooks.cs" />
<Compile Include="Loaders\IntroVoiceClipLoader.cs" />
<Compile Include="ResourceRedirector.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\BepInEx\BepInEx.csproj">
<Project>{4ffba620-f5ed-47f9-b90c-dad1316fd9b9}</Project>
<Name>BepInEx</Name>
<Private>False</Private>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
-142
View File
@@ -1,142 +0,0 @@
using System.Collections.Generic;
using UnityEngine;
namespace alphaShot
{
//code from essu and Kenzato
public static class AlphaShot
{
public static byte[] Capture(int ResolutionX, int ResolutionY, int DownscalingRate, int AntiAliasing)
{
//File.WriteAllLines(GameObject.FindObjectsOfType<SkinnedMeshRenderer>().Select(x => x.material.shader.name).Distinct().OrderBy(x => x).ToArray();
var c = Camera.main;
var t1 = PerformCapture(true, ResolutionX * DownscalingRate, ResolutionY * DownscalingRate, AntiAliasing);
var t2 = PerformCapture(false, ResolutionX * DownscalingRate, ResolutionY * DownscalingRate, AntiAliasing);
var p1 = t1.GetPixels();
var p2 = t2.GetPixels();
for (int i = 0; i < p1.Length; i++)
{
var pp1 = p1[i];
var pp2 = p2[i];
var pp1a = pp1.a;
var pp2a = pp2.a;
pp1.a = 1.0f;
pp2.a = 1.0f;
p1[i] = Color.Lerp(pp1, pp2, pp2a);
p1[i].a = Mathf.Clamp01(pp2a * 4);
}
t1.SetPixels(p1);
t1.Apply();
TextureScale.Bilinear(t1, ResolutionX, ResolutionY);
byte[] output = t1.EncodeToPNG();
GameObject.Destroy(t1);
GameObject.Destroy(t2);
return output;
}
public static Texture2D PerformCapture(bool captureAlphaOnly, int ResolutionX, int ResolutionY, int AntiAliasing)
{
var go = new GameObject();
Camera RenderCam = go.AddComponent<Camera>();
RenderCam.CopyFrom(Camera.main);
CopyComponents(Camera.main.gameObject, RenderCam.gameObject);
var backRenderTexture = RenderCam.targetTexture;
var backRect = RenderCam.rect;
var oldBackground = RenderCam.backgroundColor;
var oldFlags = RenderCam.clearFlags;
var width = ResolutionX;
var height = ResolutionY;
var tex = new Texture2D(width, height, TextureFormat.ARGB32, false);
var rt = RenderTexture.GetTemporary(width, height, 32, RenderTextureFormat.Default, RenderTextureReadWrite.Default, AntiAliasing);
var lst = new List<SkinnedMeshRenderer>();
if (captureAlphaOnly)
{
Graphics.SetRenderTarget(rt);
GL.Clear(true, true, Color.clear);
Graphics.SetRenderTarget(null);
}
else
{
foreach (var smr in GameObject.FindObjectsOfType<SkinnedMeshRenderer>())
if (smr.enabled)
{
//if (smr.material.renderQueue > 2500 || smr.material.renderQueue == -1 && smr.material.shader.renderQueue > 2500)
if (smr.material.shader.name == "Shader Forge/PBRsp_alpha" ||
smr.material.shader.name == "Shader Forge/PBRsp_alpha_culloff" ||
smr.material.shader.name == "Shader Forge/PBRsp_texture_alpha" ||
smr.material.shader.name == "Shader Forge/PBRsp_texture_alpha_culloff" ||
smr.material.shader.name == "Unlit/Transparent")
{
lst.Add(smr);
smr.enabled = false;
}
}
}
RenderCam.backgroundColor = new Color(0f, 0f, 0f, 0f);
RenderCam.clearFlags = captureAlphaOnly ? CameraClearFlags.Depth : CameraClearFlags.Color;
RenderCam.targetTexture = rt;
RenderCam.rect = new Rect(0, 0, 1f, 1f);
RenderCam.Render();
RenderCam.targetTexture = backRenderTexture;
RenderCam.rect = backRect;
RenderTexture.active = rt;
tex.ReadPixels(new Rect(0f, 0f, width, height), 0, 0);
tex.Apply();
RenderTexture.active = null;
RenderCam.backgroundColor = oldBackground;
RenderCam.clearFlags = oldFlags;
RenderTexture.ReleaseTemporary(rt);
foreach (var smr in lst)
smr.enabled = true;
return tex;
}
static void CopyComponents(GameObject original, GameObject target)
{
foreach (Component component in original.GetComponents<Component>())
{
var newComponent = CopyComponent(component, target);
if (component is MonoBehaviour)
{
var behavior = (MonoBehaviour)component;
(newComponent as MonoBehaviour).enabled = behavior.enabled;
}
}
}
//https://answers.unity.com/questions/458207/copy-a-component-at-runtime.html
static Component CopyComponent(Component original, GameObject destination)
{
System.Type type = original.GetType();
Component copy = destination.AddComponent(type);
// Copied fields can be restricted with BindingFlags
System.Reflection.FieldInfo[] fields = type.GetFields();
foreach (System.Reflection.FieldInfo field in fields)
{
field.SetValue(copy, field.GetValue(original));
}
return copy;
}
}
}
-74
View File
@@ -1,74 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UnityEngine;
namespace Screencap
{
public static class LegacyRenderer
{
public static byte[] RenderCamera(int ResolutionX, int ResolutionY, int DownscalingRate, int AntiAliasing)
{
var go = new GameObject();
Camera renderCam = go.AddComponent<Camera>();
renderCam.CopyFrom(Camera.main);
CopyComponents(Camera.main.gameObject, renderCam.gameObject);
renderCam.targetTexture = new RenderTexture(ResolutionX * DownscalingRate, ResolutionY * DownscalingRate, 32); //((int)cam.pixelRect.width, (int)cam.pixelRect.height, 32);
renderCam.aspect = renderCam.targetTexture.width / (float)renderCam.targetTexture.height;
renderCam.targetTexture.antiAliasing = AntiAliasing;
RenderTexture currentRT = RenderTexture.active;
RenderTexture.active = renderCam.targetTexture;
renderCam.clearFlags = CameraClearFlags.Skybox;
renderCam.Render();
Texture2D image = new Texture2D(ResolutionX * DownscalingRate, ResolutionY * DownscalingRate);
image.ReadPixels(new Rect(0, 0, ResolutionX * DownscalingRate, ResolutionY * DownscalingRate), 0, 0);
TextureScale.Bilinear(image, ResolutionX, ResolutionY);
image.Apply();
RenderTexture.active = currentRT;
GameObject.Destroy(renderCam.targetTexture);
GameObject.Destroy(renderCam);
byte[] result = image.EncodeToPNG();
GameObject.Destroy(image);
return result;
}
static void CopyComponents(GameObject original, GameObject target)
{
foreach (Component component in original.GetComponents<Component>())
{
var newComponent = CopyComponent(component, target);
if (component is MonoBehaviour)
{
var behavior = (MonoBehaviour)component;
(newComponent as MonoBehaviour).enabled = behavior.enabled;
}
}
}
//https://answers.unity.com/questions/458207/copy-a-component-at-runtime.html
static Component CopyComponent(Component original, GameObject destination)
{
System.Type type = original.GetType();
Component copy = destination.AddComponent(type);
// Copied fields can be restricted with BindingFlags
System.Reflection.FieldInfo[] fields = type.GetFields();
foreach (System.Reflection.FieldInfo field in fields)
{
field.SetValue(copy, field.GetValue(original));
}
return copy;
}
}
}
@@ -1,36 +0,0 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Screencap")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Screencap")]
[assembly: AssemblyCopyright("Copyright © 2018")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("6a9d08c0-4482-4d1a-9368-9f41b7126f9e")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
-62
View File
@@ -1,62 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{6A9D08C0-4482-4D1A-9368-9F41B7126F9E}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Screencap</RootNamespace>
<AssemblyName>Screencap</AssemblyName>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>K:\BepInEx\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>K:\BepInEx\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Assembly-CSharp">
<HintPath>..\..\lib\Assembly-CSharp.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
<Reference Include="UnityEngine">
<HintPath>..\..\lib\UnityEngine.dll</HintPath>
<Private>False</Private>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="AlphaShot.cs" />
<Compile Include="LegacyRenderer.cs" />
<Compile Include="ScreenshotManager.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\BepInEx\BepInEx.csproj">
<Project>{4ffba620-f5ed-47f9-b90c-dad1316fd9b9}</Project>
<Name>BepInEx</Name>
<Private>False</Private>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
-239
View File
@@ -1,239 +0,0 @@
using alphaShot;
using BepInEx;
using BepInEx.Common;
using Illusion.Game;
using System;
using System.Collections;
using System.IO;
using UnityEngine;
namespace Screencap
{
public class ScreenshotManager : BaseUnityPlugin
{
public override string ID => "com.bepis.bepinex.screenshotmanager";
public override string Name => "Screenshot Manager";
public override Version Version => new Version("2.0");
Event ScreenKeyEvent = Event.KeyboardEvent("f9");
Event CharacterKeyEvent = Event.KeyboardEvent("f11");
Event CharacterSettingsKeyEvent = Event.KeyboardEvent("#f11");
private string screenshotDir = Utility.CombinePaths(Utility.ExecutingDirectory, "UserData", "cap");
#region Config properties
private int ResolutionX
{
get => int.Parse(this.GetEntry("resolution-x", "1024"));
set => this.SetEntry("resolution-x", value.ToString());
}
private int ResolutionY
{
get => int.Parse(this.GetEntry("resolution-y", "1024"));
set => this.SetEntry("resolution-y", value.ToString());
}
private int AntiAliasing
{
get => int.Parse(this.GetEntry("antialiasing", "4"));
set => this.SetEntry("antialiasing", value.ToString());
}
private int DownscalingRate
{
get => int.Parse(this.GetEntry("downscalerate", "1"));
set => this.SetEntry("downscalerate", value.ToString());
}
private int RenderMethod
{
get => int.Parse(this.GetEntry("rendermethod", "1"));
set => this.SetEntry("rendermethod", value.ToString());
}
#endregion
void Awake()
{
if (!Directory.Exists(screenshotDir))
Directory.CreateDirectory(screenshotDir);
}
void Update()
{
if (UnityEngine.Event.current.Equals(CharacterSettingsKeyEvent))
{
showingUI = !showingUI;
}
else if (UnityEngine.Event.current.Equals(ScreenKeyEvent))
{
string filename = Path.Combine(screenshotDir, $"Koikatsu -{DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss")}.png");
StartCoroutine(TakeScreenshot(filename));
}
else if (UnityEngine.Event.current.Equals(CharacterKeyEvent))
{
string filename = Path.Combine(screenshotDir, $"Koikatsu Char-{DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss")}.png");
TakeCharScreenshot(filename);
}
}
IEnumerator TakeScreenshot(string filename)
{
Application.CaptureScreenshot(filename);
Illusion.Game.Utils.Sound.Play(SystemSE.photo);
while (!File.Exists(filename))
yield return new WaitForSeconds(0.01f);
BepInLogger.Log($"Screenshot saved to {filename}", true);
}
void TakeCharScreenshot(string filename)
{
Camera.main.backgroundColor = Color.clear;
switch (RenderMethod)
{
case 0: //legacy
default:
File.WriteAllBytes(filename, LegacyRenderer.RenderCamera(ResolutionX, ResolutionY, DownscalingRate, AntiAliasing));
break;
//case 1: //alphashot
// File.WriteAllBytes(filename, AlphaShot.Capture(ResolutionX, ResolutionY, DownscalingRate, AntiAliasing));
// break;
}
Illusion.Game.Utils.Sound.Play(SystemSE.photo);
BepInLogger.Log($"Character screenshot saved to {filename}", true);
}
#region UI
private Rect UI = new Rect(20, 20, 160, 250);
private bool showingUI = false;
void OnGUI()
{
if (showingUI)
UI = GUI.Window(Name.GetHashCode() + 0, UI, WindowFunction, "Rendering settings");
}
void WindowFunction(int windowID)
{
GUI.Label(new Rect(0, 20, 160, 20), "Output resolution", new GUIStyle
{
alignment = TextAnchor.MiddleCenter,
normal = new GUIStyleState
{
textColor = Color.white
}
});
GUI.Label(new Rect(0, 40, 160, 20), "x", new GUIStyle
{
alignment = TextAnchor.MiddleCenter,
normal = new GUIStyleState
{
textColor = Color.white
}
});
string resX = GUI.TextField(new Rect(10, 40, 60, 20), ResolutionX.ToString());
string resY = GUI.TextField(new Rect(90, 40, 60, 20), ResolutionY.ToString());
bool screenSize = GUI.Button(new Rect(10, 65, 140, 20), "Set to screen size");
GUI.Label(new Rect(0, 90, 160, 20), "Downscaling rate", new GUIStyle
{
alignment = TextAnchor.MiddleCenter,
normal = new GUIStyleState
{
textColor = Color.white
}
});
int downscale = (int)Math.Round(GUI.HorizontalSlider(new Rect(10, 113, 120, 20), DownscalingRate, 1, 4));
GUI.Label(new Rect(0, 110, 150, 20), $"{downscale}x", new GUIStyle
{
alignment = TextAnchor.UpperRight,
normal = new GUIStyleState
{
textColor = Color.white
}
});
GUI.Label(new Rect(0, 130, 160, 20), "Antialiasing", new GUIStyle
{
alignment = TextAnchor.MiddleCenter,
normal = new GUIStyleState
{
textColor = Color.white
}
});
int antia = (int)Math.Round(GUI.HorizontalSlider(new Rect(10, 153, 120, 20), AntiAliasing, 1, 16));
GUI.Label(new Rect(0, 150, 154, 20), $"{antia}x", new GUIStyle
{
alignment = TextAnchor.UpperRight,
normal = new GUIStyleState
{
textColor = Color.white
}
});
GUI.Label(new Rect(0, 170, 160, 20), "Render method", new GUIStyle
{
alignment = TextAnchor.MiddleCenter,
normal = new GUIStyleState
{
textColor = Color.white
}
});
int renderMethod = GUI.SelectionGrid(new Rect(10, 190, 140, 50), RenderMethod, new[] { "Legacy", "AlphaShot" }, 1);
if (GUI.changed)
{
BepInEx.Config.SaveOnConfigSet = false;
if (int.TryParse(resX, out int x))
ResolutionX = Mathf.Clamp(x, 2, 4096);
if (int.TryParse(resY, out int y))
ResolutionY = Mathf.Clamp(y, 2, 4096);
if (screenSize)
{
ResolutionX = Screen.width;
ResolutionY = Screen.height;
}
DownscalingRate = downscale;
AntiAliasing = antia;
RenderMethod = renderMethod;
BepInEx.Config.SaveOnConfigSet = true;
BepInEx.Config.SaveConfig();
}
GUI.DragWindow();
}
#endregion
}
}
-178
View File
@@ -1,178 +0,0 @@
using ChaCustom;
using Harmony;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using UnityEngine;
namespace SliderUnlocker
{
public static class Hooks
{
public static void InstallHooks()
{
var harmony = HarmonyInstance.Create("com.bepis.bepinex.sliderunlocker");
MethodInfo original = AccessTools.Method(typeof(CustomBase), "ConvertTextFromRate");
HarmonyMethod postfix = new HarmonyMethod(typeof(Hooks).GetMethod("ConvertTextFromRateHook"));
harmony.Patch(original, null, postfix);
original = AccessTools.Method(typeof(CustomBase), "ConvertRateFromText");
postfix = new HarmonyMethod(typeof(Hooks).GetMethod("ConvertRateFromTextHook"));
harmony.Patch(original, null, postfix);
original = AccessTools.Method(typeof(Mathf), "Clamp", new Type[] { typeof(float), typeof(float), typeof(float) });
postfix = new HarmonyMethod(typeof(Hooks).GetMethod("MathfClampHook"));
harmony.Patch(original, null, postfix);
original = typeof(AnimationKeyInfo).GetMethods().Where(x => x.Name.Contains("GetInfo")).ToArray()[0];
var prefix = new HarmonyMethod(typeof(Hooks).GetMethod("GetInfoSingularPreHook"));
postfix = new HarmonyMethod(typeof(Hooks).GetMethod("GetInfoSingularPostHook"));
harmony.Patch(original, prefix, postfix);
original = typeof(AnimationKeyInfo).GetMethods().Where(x => x.Name.Contains("GetInfo")).ToArray()[1];
prefix = new HarmonyMethod(typeof(Hooks).GetMethod("GetInfoPreHook"));
postfix = new HarmonyMethod(typeof(Hooks).GetMethod("GetInfoPostHook"));
harmony.Patch(original, prefix, postfix);
}
private static FieldInfo akf_dictInfo = (typeof(AnimationKeyInfo).GetField("dictInfo", BindingFlags.NonPublic | BindingFlags.Instance));
public static void ConvertTextFromRateHook(ref string __result, int min, int max, float value)
{
if (min == 0 && max == 100)
__result = Math.Round(100 * value).ToString();
}
public static void ConvertRateFromTextHook(ref float __result, int min, int max, string buf)
{
if (min == 0 && max == 100)
{
if (buf.IsNullOrEmpty())
{
__result = 0f;
}
else
{
if (!float.TryParse(buf, out float val))
{
__result = 0f;
}
else
{
__result = val / 100;
}
}
}
}
public static void MathfClampHook(ref float __result, float value, float min, float max)
{
if (min == 0f && max == 100f)
__result = value;
}
public static void GetInfoPreHook(ref float __state, string name, ref float rate, ref Vector3[] value, bool[] flag)
{
__state = rate;
if (rate > 1)
rate = 1f;
if (rate < 0)
rate = 0f;
}
public static void GetInfoSingularPreHook(ref float __state, string name, ref float rate, ref Vector3 value, byte type)
{
__state = rate;
if (rate > 1)
rate = 1f;
if (rate < 0)
rate = 0f;
}
public static void GetInfoSingularPostHook(AnimationKeyInfo __instance, bool __result, float __state, string name, float rate, ref Vector3 value, byte type)
{
if (!__result)
return;
rate = __state;
if (rate < 0f || rate > 1f)
{
var dictInfo = (Dictionary<string, List<AnimationKeyInfo.AnmKeyInfo>>)akf_dictInfo.GetValue(__instance);
List<AnimationKeyInfo.AnmKeyInfo> list = dictInfo[name];
switch (type)
{
case 0:
value = SliderMath.CalculatePosition(list, rate);
break;
case 1:
value = SliderMath.SafeCalculateRotation(value, name, list, rate);
break;
default:
value = SliderMath.CalculateScale(list, rate);
break;
}
}
}
public static void GetInfoPostHook(AnimationKeyInfo __instance, bool __result, float __state, string name, float rate, ref Vector3[] value, bool[] flag)
{
if (!__result)
return;
rate = __state;
if (rate < 0f || rate > 1f)
{
var dictInfo = (Dictionary<string, List<AnimationKeyInfo.AnmKeyInfo>>)akf_dictInfo.GetValue(__instance);
List<AnimationKeyInfo.AnmKeyInfo> list = dictInfo[name];
if (flag[0])
{
value[0] = SliderMath.CalculatePosition(list, rate);
}
if (flag[1])
{
value[1] = SliderMath.SafeCalculateRotation(value[1], name, list, rate);
}
if (flag[2])
{
value[2] = SliderMath.CalculateScale(list, rate);
}
}
}
}
}
@@ -1,36 +0,0 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("SliderUnlocker")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("SliderUnlocker")]
[assembly: AssemblyCopyright("Copyright © 2018")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("9db058d4-cf5a-4280-9150-a62c22fc3cb0")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
-87
View File
@@ -1,87 +0,0 @@
using System.Collections.Generic;
using UnityEngine;
using static AnimationKeyInfo;
namespace SliderUnlocker
{
public static class SliderMath
{
public static Vector3 CalculateScale(List<AnmKeyInfo> list, float rate)
{
Vector3 min = list[0].scl;
Vector3 max = list[list.Count - 1].scl;
return min + (max - min) * rate;
}
public static Vector3 CalculatePosition(List<AnmKeyInfo> list, float rate)
{
Vector3 min = list[0].pos;
Vector3 max = list[list.Count - 1].pos;
return min + (max - min) * rate;
}
public static Vector3 CalculateRotation(List<AnmKeyInfo> list, float rate)
{
Vector3 rot1 = list[0].rot;
Vector3 rot2 = list[1].rot;
Vector3 rot3 = list[list.Count - 1].rot;
Vector3 vector = rot2 - rot1;
Vector3 vector2 = rot3 - rot1;
bool xFlag = vector.x >= 0f;
bool yFlag = vector.y >= 0f;
bool zFlag = vector.z >= 0f;
if (vector2.x > 0f && !xFlag)
{
vector2.x -= 360f;
}
else if (vector2.x < 0f && xFlag)
{
vector2.x += 360f;
}
if (vector2.y > 0f && !yFlag)
{
vector2.y -= 360f;
}
else if (vector2.y < 0f && yFlag)
{
vector2.y += 360f;
}
if (vector2.z > 0f && !zFlag)
{
vector2.z -= 360f;
}
else if (vector2.z < 0f && zFlag)
{
vector2.z += 360f;
}
if (rate < 0f)
{
return rot1 - vector2 * Mathf.Abs(rate);
}
return rot3 + vector2 * Mathf.Abs(rate - 1f);
}
public static Vector3 SafeCalculateRotation(Vector3 original, string name, List<AnmKeyInfo> list, float rate)
{
if (!(name.StartsWith("cf_a_bust") && name.EndsWith("_size")) && //breast fix
!(name.Contains("thigh") && name.Contains("01"))) //thigh fix
{
return CalculateRotation(list, rate);
}
else
{
return original;
}
}
}
}
-86
View File
@@ -1,86 +0,0 @@
using BepInEx;
using ChaCustom;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
namespace SliderUnlocker
{
public class SliderUnlocker : BaseUnityPlugin
{
public override string ID => "com.bepis.bepinex.sliderunlocker";
public override string Name => "Slider Unlocker";
public override Version Version => new Version("1.5");
public static float Minimum = -1.0f;
public static float Maximum = 2.0f;
void Awake()
{
Hooks.InstallHooks();
}
void LevelFinishedLoading(Scene scene, LoadSceneMode mode)
{
SetAllSliders(scene, Minimum, Maximum);
}
public void SetAllSliders(Scene scene, float minimum, float maximum)
{
List<object> cvsInstances = new List<object>();
Assembly illusion = typeof(CvsAccessory).Assembly;
var sceneObjects = scene.GetRootGameObjects();
foreach (Type type in illusion.GetTypes())
{
if (type.Name.ToUpper().StartsWith("CVS") &&
type != typeof(CvsDrawCtrl) &&
type != typeof(CvsColor))
{
foreach (var obj in sceneObjects)
{
cvsInstances.AddRange(obj.GetComponentsInChildren(type));
}
}
}
foreach (object cvs in cvsInstances)
{
if (cvs == null)
continue;
var fields = cvs.GetType().GetFields(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public)
.Where(x => typeof(Slider).IsAssignableFrom(x.FieldType));
foreach (Slider slider in fields.Select(x => x.GetValue(cvs)))
{
if (slider == null)
continue;
slider.minValue = minimum;
slider.maxValue = maximum;
}
}
}
#region MonoBehaviour
void OnEnable()
{
SceneManager.sceneLoaded += LevelFinishedLoading;
}
void OnDisable()
{
SceneManager.sceneLoaded -= LevelFinishedLoading;
}
#endregion
}
}
@@ -1,74 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{9DB058D4-CF5A-4280-9150-A62C22FC3CB0}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>SliderUnlocker</RootNamespace>
<AssemblyName>SliderUnlocker</AssemblyName>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>K:\BepInEx\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>K:\BepInEx\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="0Harmony">
<HintPath>..\..\lib\0Harmony.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Assembly-CSharp">
<HintPath>..\..\lib\Assembly-CSharp.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
<Reference Include="TextMeshPro-1.0.55.56.0b12">
<HintPath>..\..\lib\TextMeshPro-1.0.55.56.0b12.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="UnityEngine">
<HintPath>..\..\lib\UnityEngine.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="UnityEngine.UI">
<HintPath>..\..\lib\UnityEngine.UI.dll</HintPath>
<Private>False</Private>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Hooks.cs" />
<Compile Include="SliderMath.cs" />
<Compile Include="SliderUnlocker.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\BepInEx\BepInEx.csproj">
<Project>{4ffba620-f5ed-47f9-b90c-dad1316fd9b9}</Project>
<Name>BepInEx</Name>
<Private>False</Private>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
BIN
View File
Binary file not shown.