├── mist_house.jpg
├── FFXIVHousingSim
├── Assets
│ ├── InterfaceHandler.cs
│ ├── DataHandler.cs.meta
│ ├── DebugTimer.cs.meta
│ ├── CameraHandler.cs.meta
│ ├── FastObjImporter.cs.meta
│ ├── InputHandler.cs.meta
│ ├── InterfaceHandler.cs.meta
│ ├── Shader
│ │ ├── FF14 World NonBlend.shader.meta
│ │ ├── blueNoiseTex.dds
│ │ ├── FF14 World Cutout.shader.meta
│ │ ├── FF14 World TexBlend.shader.meta
│ │ ├── FF14 World Cutout AA Sway.shader.meta
│ │ ├── blueNoiseTex.dds.meta
│ │ ├── FF14 World Cutout.shader
│ │ └── FF14 World NonBlend.shader
│ ├── Gizmos
│ │ ├── Cinemachine
│ │ │ ├── cm_logo_lg.png
│ │ │ └── cm_logo_lg.png.meta
│ │ └── Cinemachine.meta
│ ├── JsonDotNet
│ │ ├── JsonDotNet201Source.zip
│ │ ├── link.xml.meta
│ │ ├── Documentation
│ │ │ ├── Json Net for Unity 2.0.1.pdf
│ │ │ └── Json Net for Unity 2.0.1.pdf.meta
│ │ ├── JsonDotNet201Source.zip.meta
│ │ ├── Assemblies.meta
│ │ ├── Assemblies
│ │ │ ├── AOT
│ │ │ │ └── Newtonsoft.Json.XML.meta
│ │ │ ├── Windows
│ │ │ │ └── Newtonsoft.Json.XML.meta
│ │ │ ├── AOT.meta
│ │ │ ├── Standalone
│ │ │ │ └── Newtonsoft.Json.XML.meta
│ │ │ ├── Windows.meta
│ │ │ └── Standalone.meta
│ │ ├── Documentation.meta
│ │ └── link.xml
│ ├── Scenes
│ │ └── MainScene.unity.meta
│ ├── Gizmos.meta
│ ├── Scenes.meta
│ ├── Shader.meta
│ ├── JsonDotNet.meta
│ ├── Plugins.meta
│ ├── Resources.meta
│ ├── Prefabs
│ │ ├── PostProcess.prefab.meta
│ │ ├── PostProcess Profile.asset.meta
│ │ └── PostProcess.prefab
│ ├── StartupScript.cs.meta
│ ├── MaterialHandler.cs.meta
│ ├── InputHandler.cs
│ ├── DebugTimer.cs
│ ├── Resources
│ │ └── FFXIVHSLib.dll.meta
│ ├── StartupScript.cs
│ ├── CameraHandler.cs
│ ├── FastObjImporter.cs
│ ├── MaterialHandler.cs
│ └── DataHandler.cs
├── ProjectSettings
│ ├── ProjectVersion.txt
│ ├── ClusterInputManager.asset
│ ├── NetworkManager.asset
│ ├── TimeManager.asset
│ ├── EditorBuildSettings.asset
│ ├── AudioManager.asset
│ ├── TagManager.asset
│ ├── EditorSettings.asset
│ ├── PresetManager.asset
│ ├── UnityConnectSettings.asset
│ ├── DynamicsManager.asset
│ ├── Physics2DSettings.asset
│ ├── NavMeshAreas.asset
│ ├── GraphicsSettings.asset
│ ├── QualitySettings.asset
│ └── InputManager.asset
└── .gitignore
├── .gitmodules
├── FFXIVHSLauncher
├── Properties
│ ├── Settings.settings
│ ├── Settings.Designer.cs
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ └── Resources.resx
├── App.config
├── packages.config
├── App.xaml
├── App.xaml.cs
├── WardSettings.json
├── LoadingWindow.xaml.cs
├── LoadingWindow.xaml
├── Extensions.cs
├── app.manifest
├── MainWindow.xaml
├── FFXHIVHSLauncher.csproj
└── ObjectFileWriter.cs
├── FFXIVHSLib
├── packages.config
├── Properties
│ └── AssemblyInfo.cs
├── FFXIVHSLib.csproj
├── FFXIVHSPaths.cs
└── FFXIVHSData.cs
├── README.md
├── FFXIVHSLauncher.sln
└── .gitignore
/mist_house.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/takhlaq/FFXIVHousingSim/HEAD/mist_house.jpg
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/InterfaceHandler.cs:
--------------------------------------------------------------------------------
1 | public class InterfaceHandler
2 | {
3 |
4 | }
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "SaintCoinach"]
2 | path = SaintCoinach
3 | url = https://github.com/takhlaq/SaintCoinach.git
4 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/DataHandler.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: cd30a9d6cf1a40c1a3eb6bace78dffbe
3 | timeCreated: 1531779437
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/DebugTimer.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 537184db3a4245478d9382283225930b
3 | timeCreated: 1530905484
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/CameraHandler.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 21559a6040d243d9bde70a7387856342
3 | timeCreated: 1531719457
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/FastObjImporter.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6923732798ab4f5c91523bb2fbc23535
3 | timeCreated: 1533960640
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/InputHandler.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 4ad9288dbde64f37958882e1d5891500
3 | timeCreated: 1531965501
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/InterfaceHandler.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 0227f71675b942fc84f9fb28ebe84b4d
3 | timeCreated: 1531965495
--------------------------------------------------------------------------------
/FFXIVHousingSim/ProjectSettings/ProjectVersion.txt:
--------------------------------------------------------------------------------
1 | m_EditorVersion: 2019.2.3f1
2 | m_EditorVersionWithRevision: 2019.2.3f1 (8e55c27a4621)
3 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/Shader/FF14 World NonBlend.shader.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: dec4ac9dda7d44bbb91da26aa5c98931
3 | timeCreated: 1531706941
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/Shader/blueNoiseTex.dds:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/takhlaq/FFXIVHousingSim/HEAD/FFXIVHousingSim/Assets/Shader/blueNoiseTex.dds
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/Gizmos/Cinemachine/cm_logo_lg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/takhlaq/FFXIVHousingSim/HEAD/FFXIVHousingSim/Assets/Gizmos/Cinemachine/cm_logo_lg.png
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/JsonDotNet/JsonDotNet201Source.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/takhlaq/FFXIVHousingSim/HEAD/FFXIVHousingSim/Assets/JsonDotNet/JsonDotNet201Source.zip
--------------------------------------------------------------------------------
/FFXIVHousingSim/ProjectSettings/ClusterInputManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!236 &1
4 | ClusterInputManager:
5 | m_ObjectHideFlags: 0
6 | m_Inputs: []
7 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/JsonDotNet/link.xml.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 06314f49bdda26043963578d60a0a7ee
3 | TextScriptImporter:
4 | userData:
5 | assetBundleName:
6 | assetBundleVariant:
7 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/JsonDotNet/Documentation/Json Net for Unity 2.0.1.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/takhlaq/FFXIVHousingSim/HEAD/FFXIVHousingSim/Assets/JsonDotNet/Documentation/Json Net for Unity 2.0.1.pdf
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/Scenes/MainScene.unity.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 84042235652f7ca42aca0184707563dd
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/Gizmos.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: eae0f0168f623fd47b3828f9b4624f18
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/Scenes.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 4f704ae4b4f98ae41a0bce26658850c1
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/Shader.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a19755791a90e8c48b9746f940093a35
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/ProjectSettings/NetworkManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!149 &1
4 | NetworkManager:
5 | m_ObjectHideFlags: 0
6 | m_DebugLevel: 0
7 | m_Sendrate: 15
8 | m_AssetToPrefab: {}
9 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/JsonDotNet.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: e32e77b30e394ee448e7cd7e045e5029
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/Plugins.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: e0019ca3c9d0c3f40936ded8b37d464e
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/Resources.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: bb4d89bf28b52434a9fabdd229131e88
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/Gizmos/Cinemachine.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: e6f81b14a3717f945bd27090c8c40e59
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/FFXIVHSLauncher/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/JsonDotNet/JsonDotNet201Source.zip.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 9a6f8c7c1ea72ce46831c5e1b6150d0c
3 | timeCreated: 1466790933
4 | licenseType: Store
5 | DefaultImporter:
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/Prefabs/PostProcess.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 38469fa9b8e629944b4e0c5bcc7ba4d0
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 100100000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/Prefabs/PostProcess Profile.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6f4d547e22ad47f488d42863b40ad3c3
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/JsonDotNet/Assemblies.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 577d9725f58264943855b8ac185531fe
3 | folderAsset: yes
4 | timeCreated: 1466788344
5 | licenseType: Store
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/JsonDotNet/Assemblies/AOT/Newtonsoft.Json.XML.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: aadad8ac54f29e44583510294ac5c312
3 | timeCreated: 1466788355
4 | licenseType: Store
5 | TextScriptImporter:
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/JsonDotNet/Assemblies/Windows/Newtonsoft.Json.XML.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 36f7323c55864364d8bb88c736e4bca6
3 | timeCreated: 1466788355
4 | licenseType: Store
5 | TextScriptImporter:
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/JsonDotNet/Assemblies/AOT.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 14f21d7a1e53a8c4e87b25526a7eb63c
3 | folderAsset: yes
4 | timeCreated: 1466788345
5 | licenseType: Store
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/JsonDotNet/Assemblies/Standalone/Newtonsoft.Json.XML.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d6807fedb8dcaf04682d2c84f0ab753f
3 | timeCreated: 1466788355
4 | licenseType: Store
5 | TextScriptImporter:
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/JsonDotNet/Documentation.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 76f828f47ce26cc43991113c6a39dbbf
3 | folderAsset: yes
4 | timeCreated: 1466010535
5 | licenseType: Store
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/JsonDotNet/Documentation/Json Net for Unity 2.0.1.pdf.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 4e7d9a07cc3f02a41a575406e7230846
3 | timeCreated: 1466788421
4 | licenseType: Store
5 | DefaultImporter:
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/ProjectSettings/TimeManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!5 &1
4 | TimeManager:
5 | m_ObjectHideFlags: 0
6 | Fixed Timestep: 0.0167
7 | Maximum Allowed Timestep: 0.1
8 | m_TimeScale: 1
9 | Maximum Particle Timestep: 0.03
10 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/JsonDotNet/Assemblies/Windows.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 1418141139a6ac443b18cb05c0643a29
3 | folderAsset: yes
4 | timeCreated: 1466788345
5 | licenseType: Store
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/JsonDotNet/Assemblies/Standalone.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 01ef782d02bb1994dbe418b69432552b
3 | folderAsset: yes
4 | timeCreated: 1466788344
5 | licenseType: Store
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/Shader/FF14 World Cutout.shader.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 58cb601a74d76424c92a1410492a753d
3 | timeCreated: 1531648649
4 | licenseType: Free
5 | ShaderImporter:
6 | defaultTextures: []
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/Shader/FF14 World TexBlend.shader.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 28748717704d24d49822c6db505f8310
3 | timeCreated: 1531648531
4 | licenseType: Free
5 | ShaderImporter:
6 | defaultTextures: []
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/FFXIVHSLauncher/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/FFXIVHSLib/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/JsonDotNet/link.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/FFXIVHSLauncher/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/StartupScript.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 7190f251b63996945998aa3c4b6a993d
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/ProjectSettings/EditorBuildSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1045 &1
4 | EditorBuildSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_Scenes:
8 | - enabled: 0
9 | path:
10 | guid: 00000000000000000000000000000000
11 | m_configObjects: {}
12 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/MaterialHandler.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 7a89cd12d85b387458628137433a47a6
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/InputHandler.cs:
--------------------------------------------------------------------------------
1 | using UnityEngine;
2 | using UnityEngine.Events;
3 | using UnityEngine.EventSystems;
4 |
5 | public class InputHandler : MonoBehaviour
6 | {
7 |
8 | void Start()
9 | {
10 |
11 | }
12 |
13 | void Update()
14 | {
15 |
16 | }
17 |
18 |
19 |
20 | }
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/Shader/FF14 World Cutout AA Sway.shader.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 642bd2ae81fdff349a2abebaf5fa2b02
3 | timeCreated: 1531649030
4 | licenseType: Free
5 | ShaderImporter:
6 | defaultTextures:
7 | - _Noise: {fileID: 2800000, guid: d64d980827f3b5849a76e117c205e181, type: 3}
8 | userData:
9 | assetBundleName:
10 | assetBundleVariant:
11 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/Shader/blueNoiseTex.dds.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d64d980827f3b5849a76e117c205e181
3 | timeCreated: 1521259598
4 | licenseType: Free
5 | IHVImageFormatImporter:
6 | textureSettings:
7 | filterMode: 1
8 | aniso: 1
9 | mipBias: 0
10 | wrapMode: 0
11 | isReadable: 0
12 | userData:
13 | assetBundleName:
14 | assetBundleVariant:
15 |
--------------------------------------------------------------------------------
/FFXIVHSLauncher/App.xaml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/FFXIVHSLauncher/App.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Configuration;
4 | using System.Data;
5 | using System.Linq;
6 | using System.Threading.Tasks;
7 | using System.Windows;
8 |
9 | namespace FFXIVHSLauncher
10 | {
11 | ///
12 | /// Interaction logic for App.xaml
13 | ///
14 | public partial class App : Application
15 | {
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/ProjectSettings/AudioManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!11 &1
4 | AudioManager:
5 | m_ObjectHideFlags: 0
6 | m_Volume: 1
7 | Rolloff Scale: 1
8 | Doppler Factor: 1
9 | Default Speaker Mode: 2
10 | m_SampleRate: 0
11 | m_DSPBufferSize: 1024
12 | m_VirtualVoiceCount: 512
13 | m_RealVoiceCount: 32
14 | m_SpatializerPlugin:
15 | m_AmbisonicDecoderPlugin:
16 | m_DisableAudio: 0
17 | m_VirtualizeEffects: 1
18 |
--------------------------------------------------------------------------------
/FFXIVHSLauncher/WardSettings.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "ward": 0,
4 | "group": "BG_017",
5 | "subdivisionSuffix": "copy_",
6 | "plotName": "s1h1_a0_toti"
7 | },
8 | {
9 | "ward": 1,
10 | "group": "BG_001",
11 | "subdivisionSuffix": "copy_",
12 | "plotName": "f1h1_t1_toti"
13 | },
14 | {
15 | "ward": 2,
16 | "group": "bg_w1_grd0",
17 | "subdivisionSuffix": "copy_",
18 | "plotName": "w1h1_w1_grd"
19 | },
20 | {
21 | "ward": 3,
22 | "group": "e1h1_hou01",
23 | "subdivisionSuffix": "copy_",
24 | "plotName": "e1h1_e0_prp"
25 | }
26 | ]
27 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/DebugTimer.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Diagnostics;
3 | using UnityEngine;
4 | using Debug = UnityEngine.Debug;
5 |
6 | public class DebugTimer
7 | {
8 | Stopwatch sw = new Stopwatch();
9 |
10 | public DebugTimer()
11 | {
12 |
13 | }
14 |
15 | public void startInitial()
16 | {
17 | sw.Start();
18 | }
19 |
20 | public void registerEvent(String eventName)
21 | {
22 | Debug.LogFormat("Event {0}: took {1} ms.", eventName, sw.ElapsedMilliseconds);
23 | sw.Reset();
24 | sw.Start();
25 | }
26 |
27 | }
--------------------------------------------------------------------------------
/FFXIVHousingSim/.gitignore:
--------------------------------------------------------------------------------
1 | [Ll]ibrary/
2 | [Tt]emp/
3 | [Oo]bj/
4 | [Bb]uild/
5 | [Bb]uilds/
6 | Assets/AssetStoreTools*
7 |
8 | # Visual Studio cache directory
9 | .vs/
10 |
11 | # Autogenerated VS/MD/Consulo solution and project files
12 | ExportedObj/
13 | .consulo/
14 | *.csproj
15 | *.unityproj
16 | *.sln
17 | *.suo
18 | *.tmp
19 | *.user
20 | *.userprefs
21 | *.pidb
22 | *.booproj
23 | *.svd
24 | *.pdb
25 | *.opendb
26 |
27 | # Unity3D generated meta files
28 | *.pidb.meta
29 | *.pdb.meta
30 |
31 | # Unity3D Generated File On Crash Reports
32 | sysinfo.txt
33 |
34 | # Builds
35 | *.apk
36 | *.unitypackage
37 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/ProjectSettings/TagManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!78 &1
4 | TagManager:
5 | serializedVersion: 2
6 | tags: []
7 | layers:
8 | - Default
9 | - TransparentFX
10 | - Ignore Raycast
11 | -
12 | - Water
13 | - UI
14 | -
15 | -
16 | - PostProcessing
17 | -
18 | -
19 | -
20 | -
21 | -
22 | -
23 | -
24 | -
25 | -
26 | -
27 | -
28 | -
29 | -
30 | -
31 | -
32 | -
33 | -
34 | -
35 | -
36 | -
37 | -
38 | -
39 | -
40 | m_SortingLayers:
41 | - name: Default
42 | uniqueID: 0
43 | locked: 0
44 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/Resources/FFXIVHSLib.dll.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8fa873217ce4dbf46b4e02c2d4e0de83
3 | PluginImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | iconMap: {}
7 | executionOrder: {}
8 | isPreloaded: 0
9 | isOverridable: 0
10 | platformData:
11 | - first:
12 | Any:
13 | second:
14 | enabled: 1
15 | settings: {}
16 | - first:
17 | Editor: Editor
18 | second:
19 | enabled: 0
20 | settings:
21 | DefaultValueInitialized: true
22 | - first:
23 | Windows Store Apps: WindowsStoreApps
24 | second:
25 | enabled: 0
26 | settings:
27 | CPU: AnyCPU
28 | userData:
29 | assetBundleName:
30 | assetBundleVariant:
31 |
--------------------------------------------------------------------------------
/FFXIVHSLauncher/LoadingWindow.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using System.Windows;
7 | using System.Windows.Controls;
8 | using System.Windows.Data;
9 | using System.Windows.Documents;
10 | using System.Windows.Input;
11 | using System.Windows.Media;
12 | using System.Windows.Media.Imaging;
13 | using System.Windows.Shapes;
14 |
15 | namespace FFXIVHSLauncher
16 | {
17 | ///
18 | /// Interaction logic for Window1.xaml
19 | ///
20 | public partial class LoadingWindow : Window
21 | {
22 | public LoadingWindow()
23 | {
24 | InitializeComponent();
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/ProjectSettings/EditorSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!159 &1
4 | EditorSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 7
7 | m_ExternalVersionControlSupport: Visible Meta Files
8 | m_SerializationMode: 2
9 | m_LineEndingsForNewScripts: 2
10 | m_DefaultBehaviorMode: 0
11 | m_SpritePackerMode: 0
12 | m_SpritePackerPaddingPower: 1
13 | m_EtcTextureCompressorBehavior: 1
14 | m_EtcTextureFastCompressor: 1
15 | m_EtcTextureNormalCompressor: 2
16 | m_EtcTextureBestCompressor: 4
17 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef
18 | m_ProjectGenerationRootNamespace:
19 | m_UserGeneratedProjectSuffix:
20 | m_CollabEditorSettings:
21 | inProgressEnabled: 1
22 | m_EnableTextureStreamingInPlayMode: 1
23 |
--------------------------------------------------------------------------------
/FFXIVHSLauncher/LoadingWindow.xaml:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/StartupScript.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.IO;
4 | using System.Linq;
5 | using System.Text;
6 | using FFXIVHSLib;
7 | using UnityEngine;
8 | using Quaternion = UnityEngine.Quaternion;
9 |
10 | public class StartupScript : MonoBehaviour
11 | {
12 | private static bool debug = false;
13 |
14 | void Start()
15 | {
16 | DataHandler.defaultGameObjects = Resources.FindObjectsOfTypeAll();
17 |
18 | DebugTimer timer = new DebugTimer();
19 | timer.registerEvent("Begin");
20 |
21 | //DataHandler.territory = Territory.S1H1;
22 | DataHandler.teriStr = "z2e1";
23 |
24 | timer.registerEvent("TerritoryLoad");
25 |
26 | Debug.Log("Startupscript finished.");
27 | }
28 |
29 | // Update is called once per frame
30 | void Update () {
31 |
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/ProjectSettings/PresetManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1386491679 &1
4 | PresetManager:
5 | m_ObjectHideFlags: 0
6 | m_DefaultList:
7 | - type:
8 | m_NativeTypeID: 108
9 | m_ManagedTypePPtr: {fileID: 0}
10 | m_ManagedTypeFallback:
11 | defaultPresets:
12 | - m_Preset: {fileID: 2655988077585873504, guid: c1cf8506f04ef2c4a88b64b6c4202eea,
13 | type: 2}
14 | - type:
15 | m_NativeTypeID: 1020
16 | m_ManagedTypePPtr: {fileID: 0}
17 | m_ManagedTypeFallback:
18 | defaultPresets:
19 | - m_Preset: {fileID: 2655988077585873504, guid: 0cd792cc87e492d43b4e95b205fc5cc6,
20 | type: 2}
21 | - type:
22 | m_NativeTypeID: 1006
23 | m_ManagedTypePPtr: {fileID: 0}
24 | m_ManagedTypeFallback:
25 | defaultPresets:
26 | - m_Preset: {fileID: 2655988077585873504, guid: 7a99f8aa944efe94cb9bd74562b7d5f9,
27 | type: 2}
28 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/ProjectSettings/UnityConnectSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!310 &1
4 | UnityConnectSettings:
5 | m_ObjectHideFlags: 0
6 | m_Enabled: 1
7 | m_TestMode: 0
8 | m_TestEventUrl:
9 | m_TestConfigUrl:
10 | m_TestInitMode: 0
11 | CrashReportingSettings:
12 | m_EventUrl: https://perf-events.cloud.unity3d.com/api/events/crashes
13 | m_NativeEventUrl: https://perf-events.cloud.unity3d.com/symbolicate
14 | m_Enabled: 0
15 | m_CaptureEditorExceptions: 1
16 | UnityPurchasingSettings:
17 | m_Enabled: 0
18 | m_TestMode: 0
19 | UnityAnalyticsSettings:
20 | m_Enabled: 1
21 | m_InitializeOnStartup: 1
22 | m_TestMode: 0
23 | m_TestEventUrl:
24 | m_TestConfigUrl:
25 | UnityAdsSettings:
26 | m_Enabled: 0
27 | m_InitializeOnStartup: 1
28 | m_TestMode: 0
29 | m_IosGameId:
30 | m_AndroidGameId:
31 | m_GameIds: {}
32 | m_GameId:
33 | PerformanceReportingSettings:
34 | m_Enabled: 0
35 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/ProjectSettings/DynamicsManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!55 &1
4 | PhysicsManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 7
7 | m_Gravity: {x: 0, y: -9.81, z: 0}
8 | m_DefaultMaterial: {fileID: 0}
9 | m_BounceThreshold: 2
10 | m_SleepThreshold: 0.005
11 | m_DefaultContactOffset: 0.01
12 | m_DefaultSolverIterations: 6
13 | m_DefaultSolverVelocityIterations: 1
14 | m_QueriesHitBackfaces: 0
15 | m_QueriesHitTriggers: 1
16 | m_EnableAdaptiveForce: 0
17 | m_ClothInterCollisionDistance: 0
18 | m_ClothInterCollisionStiffness: 0
19 | m_ContactsGeneration: 1
20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
21 | m_AutoSimulation: 1
22 | m_AutoSyncTransforms: 1
23 | m_ClothInterCollisionSettingsToggle: 0
24 | m_ContactPairsMode: 0
25 | m_BroadphaseType: 0
26 | m_WorldBounds:
27 | m_Center: {x: 0, y: 0, z: 0}
28 | m_Extent: {x: 250, y: 250, z: 250}
29 | m_WorldSubdivisions: 8
30 |
--------------------------------------------------------------------------------
/FFXIVHSLauncher/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace FFXIVHSLauncher.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.1.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/FFXIVHSLib/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("FFXIVHSLib")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("FFXIVHSLib")]
13 | [assembly: AssemblyCopyright("Copyright © 2018")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("e2444754-17ae-4267-b9dc-f055f6eb5217")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/ProjectSettings/Physics2DSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!19 &1
4 | Physics2DSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 3
7 | m_Gravity: {x: 0, y: -9.81}
8 | m_DefaultMaterial: {fileID: 0}
9 | m_VelocityIterations: 8
10 | m_PositionIterations: 3
11 | m_VelocityThreshold: 1
12 | m_MaxLinearCorrection: 0.2
13 | m_MaxAngularCorrection: 8
14 | m_MaxTranslationSpeed: 100
15 | m_MaxRotationSpeed: 360
16 | m_BaumgarteScale: 0.2
17 | m_BaumgarteTimeOfImpactScale: 0.75
18 | m_TimeToSleep: 0.5
19 | m_LinearSleepTolerance: 0.01
20 | m_AngularSleepTolerance: 2
21 | m_DefaultContactOffset: 0.01
22 | m_AutoSimulation: 1
23 | m_QueriesHitTriggers: 1
24 | m_QueriesStartInColliders: 1
25 | m_ChangeStopsCallbacks: 0
26 | m_CallbacksOnDisable: 1
27 | m_AutoSyncTransforms: 1
28 | m_AlwaysShowColliders: 0
29 | m_ShowColliderSleep: 1
30 | m_ShowColliderContacts: 0
31 | m_ShowColliderAABB: 0
32 | m_ContactArrowScale: 0.2
33 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412}
34 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432}
35 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745}
36 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804}
37 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
38 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/ProjectSettings/NavMeshAreas.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!126 &1
4 | NavMeshProjectSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | areas:
8 | - name: Walkable
9 | cost: 1
10 | - name: Not Walkable
11 | cost: 1
12 | - name: Jump
13 | cost: 2
14 | - name:
15 | cost: 1
16 | - name:
17 | cost: 1
18 | - name:
19 | cost: 1
20 | - name:
21 | cost: 1
22 | - name:
23 | cost: 1
24 | - name:
25 | cost: 1
26 | - name:
27 | cost: 1
28 | - name:
29 | cost: 1
30 | - name:
31 | cost: 1
32 | - name:
33 | cost: 1
34 | - name:
35 | cost: 1
36 | - name:
37 | cost: 1
38 | - name:
39 | cost: 1
40 | - name:
41 | cost: 1
42 | - name:
43 | cost: 1
44 | - name:
45 | cost: 1
46 | - name:
47 | cost: 1
48 | - name:
49 | cost: 1
50 | - name:
51 | cost: 1
52 | - name:
53 | cost: 1
54 | - name:
55 | cost: 1
56 | - name:
57 | cost: 1
58 | - name:
59 | cost: 1
60 | - name:
61 | cost: 1
62 | - name:
63 | cost: 1
64 | - name:
65 | cost: 1
66 | - name:
67 | cost: 1
68 | - name:
69 | cost: 1
70 | - name:
71 | cost: 1
72 | m_LastAgentTypeID: -887442657
73 | m_Settings:
74 | - serializedVersion: 2
75 | agentTypeID: 0
76 | agentRadius: 0.5
77 | agentHeight: 2
78 | agentSlope: 45
79 | agentClimb: 0.75
80 | ledgeDropHeight: 0
81 | maxJumpAcrossDistance: 0
82 | minRegionArea: 2
83 | manualCellSize: 0
84 | cellSize: 0.16666667
85 | manualTileSize: 0
86 | tileSize: 256
87 | accuratePlacement: 0
88 | debug:
89 | m_Flags: 0
90 | m_SettingNames:
91 | - Humanoid
92 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/Gizmos/Cinemachine/cm_logo_lg.png.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 9e6321b48dd2fc94e955d502669475a2
3 | TextureImporter:
4 | fileIDToRecycleName: {}
5 | externalObjects: {}
6 | serializedVersion: 6
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 1
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | grayScaleToAlpha: 0
27 | generateCubemap: 6
28 | cubemapConvolution: 0
29 | seamlessCubemap: 0
30 | textureFormat: 1
31 | maxTextureSize: 2048
32 | textureSettings:
33 | serializedVersion: 2
34 | filterMode: -1
35 | aniso: -1
36 | mipBias: -100
37 | wrapU: -1
38 | wrapV: -1
39 | wrapW: -1
40 | nPOTScale: 1
41 | lightmap: 0
42 | compressionQuality: 50
43 | spriteMode: 0
44 | spriteExtrude: 1
45 | spriteMeshType: 1
46 | alignment: 0
47 | spritePivot: {x: 0.5, y: 0.5}
48 | spritePixelsToUnits: 100
49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
50 | spriteGenerateFallbackPhysicsShape: 1
51 | alphaUsage: 1
52 | alphaIsTransparency: 0
53 | spriteTessellationDetail: -1
54 | textureType: 0
55 | textureShape: 1
56 | singleChannelComponent: 0
57 | maxTextureSizeSet: 0
58 | compressionQualitySet: 0
59 | textureFormatSet: 0
60 | platformSettings:
61 | - serializedVersion: 2
62 | buildTarget: DefaultTexturePlatform
63 | maxTextureSize: 2048
64 | resizeAlgorithm: 0
65 | textureFormat: -1
66 | textureCompression: 1
67 | compressionQuality: 50
68 | crunchedCompression: 0
69 | allowsAlphaSplitting: 0
70 | overridden: 0
71 | androidETC2FallbackOverride: 0
72 | spriteSheet:
73 | serializedVersion: 2
74 | sprites: []
75 | outline: []
76 | physicsShape: []
77 | bones: []
78 | spriteID:
79 | vertices: []
80 | indices:
81 | edges: []
82 | weights: []
83 | spritePackingTag:
84 | userData:
85 | assetBundleName:
86 | assetBundleVariant:
87 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/Prefabs/PostProcess.prefab:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1001 &100100000
4 | Prefab:
5 | m_ObjectHideFlags: 1
6 | serializedVersion: 2
7 | m_Modification:
8 | m_TransformParent: {fileID: 0}
9 | m_Modifications: []
10 | m_RemovedComponents: []
11 | m_SourcePrefab: {fileID: 0}
12 | m_RootGameObject: {fileID: 1132704550635262}
13 | m_IsPrefabAsset: 1
14 | --- !u!1 &1132704550635262
15 | GameObject:
16 | m_ObjectHideFlags: 0
17 | m_CorrespondingSourceObject: {fileID: 0}
18 | m_PrefabInternal: {fileID: 100100000}
19 | serializedVersion: 6
20 | m_Component:
21 | - component: {fileID: 4860980344212488}
22 | - component: {fileID: 65043997086684000}
23 | - component: {fileID: 114789492361863998}
24 | m_Layer: 8
25 | m_Name: PostProcess
26 | m_TagString: Untagged
27 | m_Icon: {fileID: 0}
28 | m_NavMeshLayer: 0
29 | m_StaticEditorFlags: 0
30 | m_IsActive: 1
31 | --- !u!4 &4860980344212488
32 | Transform:
33 | m_ObjectHideFlags: 1
34 | m_CorrespondingSourceObject: {fileID: 0}
35 | m_PrefabInternal: {fileID: 100100000}
36 | m_GameObject: {fileID: 1132704550635262}
37 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
38 | m_LocalPosition: {x: 0, y: 0, z: 0}
39 | m_LocalScale: {x: 1, y: 1, z: 1}
40 | m_Children: []
41 | m_Father: {fileID: 0}
42 | m_RootOrder: 0
43 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
44 | --- !u!65 &65043997086684000
45 | BoxCollider:
46 | m_ObjectHideFlags: 1
47 | m_CorrespondingSourceObject: {fileID: 0}
48 | m_PrefabInternal: {fileID: 100100000}
49 | m_GameObject: {fileID: 1132704550635262}
50 | m_Material: {fileID: 0}
51 | m_IsTrigger: 1
52 | m_Enabled: 1
53 | serializedVersion: 2
54 | m_Size: {x: 1, y: 1, z: 1}
55 | m_Center: {x: 0, y: 0, z: 0}
56 | --- !u!114 &114789492361863998
57 | MonoBehaviour:
58 | m_ObjectHideFlags: 1
59 | m_CorrespondingSourceObject: {fileID: 0}
60 | m_PrefabInternal: {fileID: 100100000}
61 | m_GameObject: {fileID: 1132704550635262}
62 | m_Enabled: 1
63 | m_EditorHideFlags: 0
64 | m_Script: {fileID: 11500000, guid: 8b9a305e18de0c04dbd257a21cd47087, type: 3}
65 | m_Name:
66 | m_EditorClassIdentifier:
67 | sharedProfile: {fileID: 11400000, guid: 6f4d547e22ad47f488d42863b40ad3c3, type: 2}
68 | isGlobal: 0
69 | blendDistance: 0
70 | weight: 1
71 | priority: 0
72 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/ProjectSettings/GraphicsSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!30 &1
4 | GraphicsSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 12
7 | m_Deferred:
8 | m_Mode: 1
9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0}
10 | m_DeferredReflections:
11 | m_Mode: 1
12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0}
13 | m_ScreenSpaceShadows:
14 | m_Mode: 1
15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0}
16 | m_LegacyDeferred:
17 | m_Mode: 1
18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0}
19 | m_DepthNormals:
20 | m_Mode: 1
21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0}
22 | m_MotionVectors:
23 | m_Mode: 1
24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0}
25 | m_LightHalo:
26 | m_Mode: 1
27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0}
28 | m_LensFlare:
29 | m_Mode: 1
30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0}
31 | m_AlwaysIncludedShaders:
32 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}
33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0}
34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0}
35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0}
36 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0}
37 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}
38 | - {fileID: 17000, guid: 0000000000000000f000000000000000, type: 0}
39 | - {fileID: 16000, guid: 0000000000000000f000000000000000, type: 0}
40 | m_PreloadedShaders: []
41 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000,
42 | type: 0}
43 | m_CustomRenderPipeline: {fileID: 0}
44 | m_TransparencySortMode: 0
45 | m_TransparencySortAxis: {x: 0, y: 0, z: 1}
46 | m_DefaultRenderingPath: 1
47 | m_DefaultMobileRenderingPath: 1
48 | m_TierSettings: []
49 | m_LightmapStripping: 0
50 | m_FogStripping: 0
51 | m_InstancingStripping: 0
52 | m_LightmapKeepPlain: 1
53 | m_LightmapKeepDirCombined: 1
54 | m_LightmapKeepDynamicPlain: 1
55 | m_LightmapKeepDynamicDirCombined: 1
56 | m_LightmapKeepShadowMask: 1
57 | m_LightmapKeepSubtractive: 1
58 | m_FogKeepLinear: 1
59 | m_FogKeepExp: 1
60 | m_FogKeepExp2: 1
61 | m_AlbedoSwatchInfos: []
62 | m_LightsUseLinearIntensity: 0
63 | m_LightsUseColorTemperature: 0
64 |
--------------------------------------------------------------------------------
/FFXIVHSLauncher/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Resources;
3 | using System.Runtime.CompilerServices;
4 | using System.Runtime.InteropServices;
5 | using System.Windows;
6 |
7 | // General Information about an assembly is controlled through the following
8 | // set of attributes. Change these attribute values to modify the information
9 | // associated with an assembly.
10 | [assembly: AssemblyTitle("FFXIVHSLauncher")]
11 | [assembly: AssemblyDescription("")]
12 | [assembly: AssemblyConfiguration("")]
13 | [assembly: AssemblyCompany("")]
14 | [assembly: AssemblyProduct("FFXIVHSLauncher")]
15 | [assembly: AssemblyCopyright("Copyright © 2018")]
16 | [assembly: AssemblyTrademark("")]
17 | [assembly: AssemblyCulture("")]
18 |
19 | // Setting ComVisible to false makes the types in this assembly not visible
20 | // to COM components. If you need to access a type in this assembly from
21 | // COM, set the ComVisible attribute to true on that type.
22 | [assembly: ComVisible(false)]
23 |
24 | //In order to begin building localizable applications, set
25 | //CultureYouAreCodingWith in your .csproj file
26 | //inside a . For example, if you are using US english
27 | //in your source files, set the to en-US. Then uncomment
28 | //the NeutralResourceLanguage attribute below. Update the "en-US" in
29 | //the line below to match the UICulture setting in the project file.
30 |
31 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
32 |
33 |
34 | [assembly: ThemeInfo(
35 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
36 | //(used if a resource is not found in the page,
37 | // or application resource dictionaries)
38 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
39 | //(used if a resource is not found in the page,
40 | // app, or any theme specific resource dictionaries)
41 | )]
42 |
43 |
44 | // Version information for an assembly consists of the following four values:
45 | //
46 | // Major Version
47 | // Minor Version
48 | // Build Number
49 | // Revision
50 | //
51 | // You can specify all the values or you can default the Build and Revision Numbers
52 | // by using the '*' as shown below:
53 | // [assembly: AssemblyVersion("1.0.*")]
54 | [assembly: AssemblyVersion("1.0.0.0")]
55 | [assembly: AssemblyFileVersion("1.0.0.0")]
56 |
--------------------------------------------------------------------------------
/FFXIVHSLauncher/Extensions.cs:
--------------------------------------------------------------------------------
1 | using System.IO;
2 | using FFXIVHSLib;
3 | using SaintCoinach.Graphics;
4 | using SharpDX;
5 | using Quaternion = FFXIVHSLib.Quaternion;
6 | using Vector3 = FFXIVHSLib.Vector3;
7 |
8 | namespace FFXIVHSLauncher
9 | {
10 | static class Extensions
11 | {
12 | public static MapModelEntry ToMapModelEntry(this TransformedModel t, int modelId)
13 | {
14 | //Id
15 | MapModelEntry m = new MapModelEntry();
16 | m.modelId = modelId;
17 |
18 | //Translation, rotation, scale
19 | Transform entryTransform = new Transform();
20 |
21 | entryTransform.translation = new Vector3(t.Translation.X, t.Translation.Y, t.Translation.Z);
22 |
23 | Matrix rotationMatrix = Matrix.Identity *
24 | Matrix.RotationX(t.Rotation.X) *
25 | Matrix.RotationY(t.Rotation.Y) *
26 | Matrix.RotationZ(t.Rotation.Z);
27 | Quaternion rotationQuaternion = ExtractRotationQuaternion(rotationMatrix);
28 | entryTransform.rotation = rotationQuaternion;
29 |
30 | entryTransform.scale = new Vector3(t.Scale.X, t.Scale.Y, t.Scale.Z);
31 |
32 | m.transform = entryTransform;
33 | return m;
34 | }
35 |
36 | public static MapModel ToMapModel(this ModelDefinition m)
37 | {
38 | MapModel mModel = new MapModel();
39 |
40 | mModel.modelPath = m.File.Path;
41 | mModel.modelName = Path.GetFileNameWithoutExtension(mModel.modelPath.Substring(mModel.modelPath.LastIndexOf('/') + 1));
42 | mModel.numMeshes = m.GetModel(ModelQuality.High).Meshes.Length;
43 |
44 | return mModel;
45 | }
46 |
47 | public static Quaternion ExtractRotationQuaternion(this Matrix m)
48 | {
49 | SharpDX.Quaternion dxRot = SharpDX.Quaternion.RotationMatrix(m);
50 | return new Quaternion(dxRot.X, dxRot.Y, dxRot.Z, dxRot.W);
51 | }
52 |
53 | public static Vector3 ToLibVector3(this SaintCoinach.Graphics.Vector3 v)
54 | {
55 | return new Vector3(v.X, v.Y, v.Z);
56 | }
57 |
58 | public static Quaternion ToQuaternion(this Vector3 v)
59 | {
60 | Matrix m = Matrix.Identity *
61 | Matrix.RotationX(v.x) *
62 | Matrix.RotationY(v.y) *
63 | Matrix.RotationZ(v.z);
64 |
65 | SharpDX.Quaternion dxQuat = SharpDX.Quaternion.RotationMatrix(m);
66 |
67 | return new Quaternion(dxQuat.X, dxQuat.Y, dxQuat.Z, dxQuat.W);
68 | }
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/FFXIVHSLauncher/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace FFXIVHSLauncher.Properties {
12 | using System;
13 |
14 |
15 | ///
16 | /// A strongly-typed resource class, for looking up localized strings, etc.
17 | ///
18 | // This class was auto-generated by the StronglyTypedResourceBuilder
19 | // class via a tool like ResGen or Visual Studio.
20 | // To add or remove a member, edit your .ResX file then rerun ResGen
21 | // with the /str option, or rebuild your VS project.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Resources() {
33 | }
34 |
35 | ///
36 | /// Returns the cached ResourceManager instance used by this class.
37 | ///
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 | internal static global::System.Resources.ResourceManager ResourceManager {
40 | get {
41 | if (object.ReferenceEquals(resourceMan, null)) {
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("FFXIVHSLauncher.Properties.Resources", typeof(Resources).Assembly);
43 | resourceMan = temp;
44 | }
45 | return resourceMan;
46 | }
47 | }
48 |
49 | ///
50 | /// Overrides the current thread's CurrentUICulture property for all
51 | /// resource lookups using this strongly typed resource class.
52 | ///
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 | internal static global::System.Globalization.CultureInfo Culture {
55 | get {
56 | return resourceCulture;
57 | }
58 | set {
59 | resourceCulture = value;
60 | }
61 | }
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/FFXIVHSLauncher/app.manifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
52 |
53 |
54 |
60 |
61 |
62 |
76 |
77 |
78 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/CameraHandler.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Runtime.InteropServices;
4 | using System.Xml.Xsl;
5 | using Cinemachine;
6 | using FFXIVHSLib;
7 | using UnityEngine;
8 | using UnityEngine.EventSystems;
9 | using UnityEngine.UIElements;
10 | using Vector3 = UnityEngine.Vector3;
11 | using Quaternion = UnityEngine.Quaternion;
12 |
13 | [RequireComponent(typeof(Camera))]
14 | public class CameraHandler : MonoBehaviour
15 | {
16 | public CinemachineFreeLook FreeLook;
17 |
18 | //Keep track of where we are
19 | private Plot _centeredPlot;
20 | private GameObject _center;
21 | private Vector3 _defaultLook = new Vector3(90, 0, 0);
22 |
23 | public Territory _territory;
24 | private int _plotView = 1;
25 | private bool _subdiv;
26 |
27 | void Start()
28 | {
29 | UpdatePlotView();
30 | }
31 |
32 | void Update()
33 | {
34 | if (Input.GetKeyDown(KeyCode.W))
35 | {
36 |
37 | }
38 | if (Input.GetKeyDown(KeyCode.LeftArrow))
39 | {
40 | if (_plotView != 1)
41 | _plotView--;
42 | UpdatePlotView();
43 | }
44 |
45 | if (Input.GetKeyDown(KeyCode.RightArrow))
46 | {
47 | if (_plotView != 30)
48 | _plotView++;
49 | UpdatePlotView();
50 | }
51 |
52 | if (Input.GetKeyDown(KeyCode.LeftControl))
53 | {
54 | _subdiv = !_subdiv;
55 | UpdatePlotView();
56 | }
57 |
58 | if (Input.GetKeyDown(KeyCode.Mouse0))
59 | {
60 | FreeLook.m_XAxis.m_InputAxisName = "Mouse X";
61 | FreeLook.m_YAxis.m_InputAxisName = "Mouse Y";
62 |
63 | UnityEngine.Cursor.lockState = CursorLockMode.Locked;
64 | }
65 | else if (Input.GetKeyUp(KeyCode.Mouse0))
66 | {
67 | FreeLook.m_XAxis.m_InputAxisName = "";
68 | FreeLook.m_YAxis.m_InputAxisName = "";
69 |
70 | FreeLook.m_XAxis.m_InputAxisValue = 0f;
71 | FreeLook.m_YAxis.m_InputAxisValue = 0f;
72 |
73 | UnityEngine.Cursor.lockState = CursorLockMode.None;
74 | }
75 |
76 | if (Input.mouseScrollDelta.y != 0)
77 | {
78 | float mwheel = -1 * Input.mouseScrollDelta.y;
79 | CinemachineFreeLook.Orbit[] orbits = FreeLook.m_Orbits;
80 | if (orbits[0].m_Radius + mwheel > 3 && orbits[0].m_Radius + mwheel < 70)
81 | {
82 | for (int i = 0; i < orbits.Length - 1; i++)
83 | {
84 | orbits[i].m_Height += mwheel;
85 | orbits[i].m_Radius += mwheel;
86 | }
87 | }
88 | }
89 | }
90 |
91 | private void UpdatePlotView()
92 | {
93 | //_centeredPlot = DataHandler.GetPlot(_territory, _plotView, _subdiv);
94 | //Debug.LogFormat("Plot {0} selected at {1} {2} {3}", _centeredPlot.index,
95 | // _centeredPlot.position.x, _centeredPlot.position.y, _centeredPlot.position.z);
96 |
97 | if (_center != null)
98 | Destroy(_center);
99 | _center = new GameObject();
100 | _center.transform.position = new Vector3(0, 0, 0); //??_centeredPlot?.position;
101 | FreeLook.LookAt = _center.transform;
102 | //FreeLook.Follow = _center.transform;
103 |
104 | transform.position = new Vector3(0, 0, 0) + new Vector3(0, 50, 0);
105 | transform.rotation = Quaternion.Euler(_defaultLook);
106 | }
107 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | Note: This project is currently on hold during the college semester.
2 |
3 | # FFXIVHousingSim
4 | The current release should be considered pre-alpha and contains exploratory code not really meant for actual use.
5 | The goal of this project is to develop a housing simulator for Final Fantasy 14. Its current design uses a WPF-based asset exporter and a Unity-based map viewer.
6 |
7 | 
8 |
9 | In-game there are a variety of customization options for the exterior and interior of the home, as well as yard objects and indoor furniture. In the current retail version of FFXIV, there is no ability to preview these items unless someone obtains them and takes screenshots, or places them in their public home.
10 |
11 | ## Main goals
12 | - Extraction of FFXIV models for use with the Unity project
13 | - Extraction of necessary FFXIV data such as model positions and housing fixtures for use with the Unity project
14 | - Loading of assets such as the two above
15 | - Ability to select an in-game plot to add a house at similar to retail FFXIV
16 | - Ability to customize the exterior of the house with different fixtures as well as their color
17 | - Ability to place any yard object at any plot
18 | - Ability to customize the interior of the house with different fixtures
19 | - Ability to place any furnishings in the interior of any house
20 |
21 | ## Current state
22 | The project is being actively developed by myself. It uses [ufx's fork of SaintCoinach](https://github.com/ufx/SaintCoinach) with a very minor fix of mine for reading game assets.
23 |
24 | Currently, the project has some functionality including (assume all functionality is incomplete):
25 | - Extraction of FFXIV models for use with the Unity project
26 | - Extraction of necessary FFXIV data such as model positions and housing fixtures for use with the Unity project
27 | - Loading of assets such as the two above
28 | - Rudimentary plot selection and camera movement
29 | - Early implementation of housing exterior loading
30 |
31 | ## How to use it
32 | 0. Make sure you have the game installed and updated.
33 | 1. Clone the repository, clone the submodule
34 | 2. Open the SaintCoinach solution and restore the NuGet packages, then build SaintCoinach.
35 | 3. Open the FFXIVHSLauncher solution and restore the NuGet packages.
36 | Change the string 'root' in `FFXIVHSLib.FFXIVHSPaths` to point to the folder you'd like the programs to use and build the solution.
37 | If the reference to UnityEngine.dll is broken, at the top of Visual Studio, click Tools > NuGet Package Manager > Package Manager Console. Once it appears, enter `Add-Unity3DReference -AssemblyName UnityEngine -ProjectName FFXIVHSLib` and press enter. If this doesn't work, make sure you restored the NuGet packages.
38 | A post-build script copies FFXIVHSLib.dll to the Unity project. If this doesn't take place, copy it manually.
39 | 4. Select a territory and click all buttons under 'Extract', but click '__Extract Map JSON__' and '__Ext Housing JSON__' __twice__. This is what extracts models.
40 | 5. Open the Unity project by opening the folder "FFXIVHousingSim" in the root directory of the repository you cloned. Click File > Open > Navigate into Scenes > MainScene.unity.
41 | 6. You may need to install the asset store packages used in the project. Open the asset store from Window > General > Asset Store and search for and import "json.net".
42 | Click Window > Package Manager. In the top left, click the "All" tab. Click Cinemachine in the left list box. Click "Install" in the top right.
43 | 6. Change the ward to your extracted ward in `StartupScript.cs` and click Play.
44 | 6. After a few seconds you should have a loaded map! If you want to play around with exterior fixtures, modify the ward folder's `Landset.json` file by hand and relaunch the 'game'.
45 |
46 | The above documentation may be incorrect at any time and is untested. Visual Studio is used for the Launcher, and JetBrains Rider is used for the Unity code.
47 |
--------------------------------------------------------------------------------
/FFXIVHSLib/FFXIVHSLib.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {E2444754-17AE-4267-B9DC-F055F6EB5217}
8 | Library
9 | Properties
10 | FFXIVHSLib
11 | FFXIVHSLib
12 | v3.5
13 | 512
14 |
15 |
16 |
17 |
18 | true
19 | full
20 | false
21 | bin\Debug\
22 | DEBUG;TRACE
23 | prompt
24 | 4
25 |
26 |
27 | pdbonly
28 | true
29 | bin\Release\
30 | TRACE
31 | prompt
32 | 4
33 |
34 |
35 |
36 | ..\packages\Newtonsoft.Json.12.0.1\lib\net35\Newtonsoft.Json.dll
37 |
38 |
39 | $(SharpDXPackageBinDir)\SharpDX.dll
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 | copy /Y "$(TargetPath)" "$(SolutionDir)FFXIVHousingSim\Assets\Resources"
62 | echo Lib dll copied to Unity project. Unity may hang for a moment if open.
63 | echo If this does not work, you will have to copy the dll to Unity yourself.
64 |
65 |
66 |
67 |
68 | This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
69 |
70 |
71 |
72 |
--------------------------------------------------------------------------------
/FFXIVHSLauncher/MainWindow.xaml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/FFXIVHSLib/FFXIVHSPaths.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.IO;
4 | using System.Linq;
5 | using System.Text;
6 |
7 | namespace FFXIVHSLib
8 | {
9 | ///
10 | /// Class that handles paths used by both WPF and Unity.
11 | /// Any path that is a directory will end with "Directory", and the
12 | /// returned string will end with a '\' backslash.
13 | /// It is safe to assume that if a directory is returned, then it exists.
14 | ///
15 | public static class FFXIVHSPaths
16 | {
17 | //TODO decide on a main path or make it like a setting or something
18 | private const string root = @"E:\coding\repositories\ffxiv related\FFXIVHousingSim\Out";
19 | private const string GameDirectory = @"C:\Program Files (x86)\SquareEnix\FINAL FANTASY XIV - A Realm Reborn\";
20 |
21 | private static void CreateDirectoryIfNotExists(string path)
22 | {
23 | if (!Directory.Exists(path))
24 | Directory.CreateDirectory(path);
25 | }
26 |
27 | public static string GetGameDirectory()
28 | {
29 | //If this doesn't exist just stop messing with me.
30 | return GameDirectory;
31 | }
32 |
33 | public static string GetRootDirectory()
34 | {
35 | CreateDirectoryIfNotExists(root);
36 | return root;
37 | }
38 |
39 | public static string GetWardSettingsJson()
40 | {
41 | string path = Path.Combine(Path.GetFullPath(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "..\\..\\")), "WardSettings.json");
42 |
43 | return path;
44 | }
45 |
46 | public static string GetWardInfoJson()
47 | {
48 | string path = Path.Combine(GetRootDirectory(), "WardInfo.json");
49 |
50 | return path;
51 | }
52 |
53 | public static string GetTerritoryDirectory(Territory territory)
54 | {
55 | string path = Path.Combine(root, territory.ToString().ToLowerInvariant() + "\\");
56 |
57 | CreateDirectoryIfNotExists(path);
58 |
59 | return path;
60 | }
61 |
62 | public static string GetTerritoryDirectory(string territory)
63 | {
64 | string path = Path.Combine(root, territory.ToLowerInvariant() + "\\");
65 |
66 | CreateDirectoryIfNotExists(path);
67 |
68 | return path;
69 | }
70 |
71 | public static string GetTerritoryObjectsDirectory(Territory territory)
72 | {
73 | string path = Path.Combine(GetTerritoryDirectory(territory), "objects\\");
74 |
75 | CreateDirectoryIfNotExists(path);
76 |
77 | return path;
78 | }
79 |
80 | public static string GetTerritoryObjectsDirectory(string territory)
81 | {
82 | string path = Path.Combine(GetTerritoryDirectory(territory), "objects\\");
83 |
84 | CreateDirectoryIfNotExists(path);
85 |
86 | return path;
87 | }
88 |
89 | public static string GetTerritoryJson(string territory)
90 | {
91 | string path = Path.Combine(GetTerritoryDirectory(territory), territory.ToLowerInvariant() + ".json");
92 |
93 | return path;
94 | }
95 |
96 | public static string GetTerritoryJson(Territory territory)
97 | {
98 | string path = Path.Combine(GetTerritoryDirectory(territory), territory.ToString().ToLowerInvariant() + ".json");
99 |
100 | return path;
101 | }
102 |
103 | public static string GetWardLandsetJson(Territory territory)
104 | {
105 | string path = Path.Combine(GetTerritoryDirectory(territory), "Landset.json");
106 |
107 | return path;
108 | }
109 |
110 | public static string GetHousingExteriorDirectory()
111 | {
112 | string path = Path.Combine(root, "HousingExterior\\");
113 |
114 | CreateDirectoryIfNotExists(path);
115 |
116 | return path;
117 | }
118 |
119 | public static string GetHousingExteriorObjectsDirectory()
120 | {
121 | string path = Path.Combine(GetHousingExteriorDirectory(), "objects\\");
122 |
123 | CreateDirectoryIfNotExists(path);
124 |
125 | return path;
126 | }
127 |
128 | public static string GetHousingExteriorJson()
129 | {
130 | string path = Path.Combine(GetHousingExteriorDirectory(), "HousingExterior.json");
131 |
132 | return path;
133 | }
134 |
135 | public static string GetHousingExteriorBlueprintSetJson()
136 | {
137 | string path = Path.Combine(GetHousingExteriorDirectory(), "HousingExteriorBlueprintSet.json");
138 |
139 | return path;
140 | }
141 | }
142 | }
143 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/ProjectSettings/QualitySettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!47 &1
4 | QualitySettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 5
7 | m_CurrentQuality: 4
8 | m_QualitySettings:
9 | - serializedVersion: 2
10 | name: Very Low
11 | pixelLightCount: 0
12 | shadows: 0
13 | shadowResolution: 0
14 | shadowProjection: 1
15 | shadowCascades: 1
16 | shadowDistance: 15
17 | shadowNearPlaneOffset: 3
18 | shadowCascade2Split: 0.33333334
19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
20 | shadowmaskMode: 0
21 | blendWeights: 1
22 | textureQuality: 1
23 | anisotropicTextures: 0
24 | antiAliasing: 0
25 | softParticles: 0
26 | softVegetation: 0
27 | realtimeReflectionProbes: 0
28 | billboardsFaceCameraPosition: 0
29 | vSyncCount: 0
30 | lodBias: 0.3
31 | maximumLODLevel: 0
32 | particleRaycastBudget: 4
33 | asyncUploadTimeSlice: 2
34 | asyncUploadBufferSize: 4
35 | resolutionScalingFixedDPIFactor: 1
36 | excludedTargetPlatforms: []
37 | - serializedVersion: 2
38 | name: Low
39 | pixelLightCount: 0
40 | shadows: 0
41 | shadowResolution: 0
42 | shadowProjection: 1
43 | shadowCascades: 1
44 | shadowDistance: 20
45 | shadowNearPlaneOffset: 3
46 | shadowCascade2Split: 0.33333334
47 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
48 | shadowmaskMode: 0
49 | blendWeights: 2
50 | textureQuality: 0
51 | anisotropicTextures: 0
52 | antiAliasing: 0
53 | softParticles: 0
54 | softVegetation: 0
55 | realtimeReflectionProbes: 0
56 | billboardsFaceCameraPosition: 0
57 | vSyncCount: 0
58 | lodBias: 0.4
59 | maximumLODLevel: 0
60 | particleRaycastBudget: 16
61 | asyncUploadTimeSlice: 2
62 | asyncUploadBufferSize: 4
63 | resolutionScalingFixedDPIFactor: 1
64 | excludedTargetPlatforms: []
65 | - serializedVersion: 2
66 | name: Medium
67 | pixelLightCount: 1
68 | shadows: 1
69 | shadowResolution: 0
70 | shadowProjection: 1
71 | shadowCascades: 1
72 | shadowDistance: 20
73 | shadowNearPlaneOffset: 3
74 | shadowCascade2Split: 0.33333334
75 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
76 | shadowmaskMode: 0
77 | blendWeights: 2
78 | textureQuality: 0
79 | anisotropicTextures: 1
80 | antiAliasing: 0
81 | softParticles: 0
82 | softVegetation: 0
83 | realtimeReflectionProbes: 0
84 | billboardsFaceCameraPosition: 0
85 | vSyncCount: 1
86 | lodBias: 0.7
87 | maximumLODLevel: 0
88 | particleRaycastBudget: 64
89 | asyncUploadTimeSlice: 2
90 | asyncUploadBufferSize: 4
91 | resolutionScalingFixedDPIFactor: 1
92 | excludedTargetPlatforms: []
93 | - serializedVersion: 2
94 | name: High
95 | pixelLightCount: 2
96 | shadows: 2
97 | shadowResolution: 1
98 | shadowProjection: 1
99 | shadowCascades: 2
100 | shadowDistance: 40
101 | shadowNearPlaneOffset: 3
102 | shadowCascade2Split: 0.33333334
103 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
104 | shadowmaskMode: 1
105 | blendWeights: 2
106 | textureQuality: 0
107 | anisotropicTextures: 1
108 | antiAliasing: 2
109 | softParticles: 0
110 | softVegetation: 1
111 | realtimeReflectionProbes: 1
112 | billboardsFaceCameraPosition: 1
113 | vSyncCount: 1
114 | lodBias: 1
115 | maximumLODLevel: 0
116 | particleRaycastBudget: 256
117 | asyncUploadTimeSlice: 2
118 | asyncUploadBufferSize: 4
119 | resolutionScalingFixedDPIFactor: 1
120 | excludedTargetPlatforms: []
121 | - serializedVersion: 2
122 | name: Very High
123 | pixelLightCount: 3
124 | shadows: 2
125 | shadowResolution: 2
126 | shadowProjection: 1
127 | shadowCascades: 2
128 | shadowDistance: 40
129 | shadowNearPlaneOffset: 3
130 | shadowCascade2Split: 0.33333334
131 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
132 | shadowmaskMode: 1
133 | blendWeights: 4
134 | textureQuality: 0
135 | anisotropicTextures: 1
136 | antiAliasing: 4
137 | softParticles: 1
138 | softVegetation: 1
139 | realtimeReflectionProbes: 1
140 | billboardsFaceCameraPosition: 1
141 | vSyncCount: 1
142 | lodBias: 1.5
143 | maximumLODLevel: 0
144 | particleRaycastBudget: 1024
145 | asyncUploadTimeSlice: 2
146 | asyncUploadBufferSize: 4
147 | resolutionScalingFixedDPIFactor: 1
148 | excludedTargetPlatforms: []
149 | - serializedVersion: 2
150 | name: Ultra
151 | pixelLightCount: 4
152 | shadows: 2
153 | shadowResolution: 2
154 | shadowProjection: 1
155 | shadowCascades: 4
156 | shadowDistance: 150
157 | shadowNearPlaneOffset: 3
158 | shadowCascade2Split: 0.33333334
159 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
160 | shadowmaskMode: 1
161 | blendWeights: 4
162 | textureQuality: 0
163 | anisotropicTextures: 1
164 | antiAliasing: 4
165 | softParticles: 1
166 | softVegetation: 1
167 | realtimeReflectionProbes: 1
168 | billboardsFaceCameraPosition: 1
169 | vSyncCount: 1
170 | lodBias: 2
171 | maximumLODLevel: 0
172 | particleRaycastBudget: 4096
173 | asyncUploadTimeSlice: 2
174 | asyncUploadBufferSize: 4
175 | resolutionScalingFixedDPIFactor: 1
176 | excludedTargetPlatforms: []
177 | m_PerPlatformDefaultQuality:
178 | Android: 2
179 | Nintendo 3DS: 5
180 | Nintendo Switch: 5
181 | PS4: 5
182 | PSP2: 2
183 | Standalone: 5
184 | Tizen: 2
185 | WebGL: 3
186 | WiiU: 5
187 | Windows Store Apps: 5
188 | XboxOne: 5
189 | iPhone: 2
190 | tvOS: 2
191 |
--------------------------------------------------------------------------------
/FFXIVHSLauncher/Properties/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 | text/microsoft-resx
107 |
108 |
109 | 2.0
110 |
111 |
112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
113 |
114 |
115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
--------------------------------------------------------------------------------
/FFXIVHSLauncher.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 15
4 | VisualStudioVersion = 15.0.27703.2026
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SaintCoinach", "SaintCoinach\SaintCoinach\SaintCoinach.csproj", "{8A7D65EB-3DE3-4631-B286-CC73A3126002}"
7 | EndProject
8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DotSquish", "SaintCoinach\DotSquish\DotSquish.csproj", "{F9681545-4BEA-4FD3-9AB9-A67BD37AB36D}"
9 | EndProject
10 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "YamlDotNet", "SaintCoinach\YamlDotNet\YamlDotNet.csproj", "{BF32DE1B-6276-4341-B212-F8862ADBBA7A}"
11 | EndProject
12 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FFXIVHSLib", "FFXIVHSLib\FFXIVHSLib.csproj", "{E2444754-17AE-4267-B9DC-F055F6EB5217}"
13 | EndProject
14 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FFXHIVHSLauncher", "FFXIVHSLauncher\FFXHIVHSLauncher.csproj", "{633736F6-41D5-4FDF-B0EE-FB57C11E8925}"
15 | EndProject
16 | Global
17 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
18 | Debug|Any CPU = Debug|Any CPU
19 | Debug|x64 = Debug|x64
20 | Release|Any CPU = Release|Any CPU
21 | Release|x64 = Release|x64
22 | Release-Unsigned|Any CPU = Release-Unsigned|Any CPU
23 | Release-Unsigned|x64 = Release-Unsigned|x64
24 | EndGlobalSection
25 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
26 | {8A7D65EB-3DE3-4631-B286-CC73A3126002}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
27 | {8A7D65EB-3DE3-4631-B286-CC73A3126002}.Debug|Any CPU.Build.0 = Debug|Any CPU
28 | {8A7D65EB-3DE3-4631-B286-CC73A3126002}.Debug|x64.ActiveCfg = Debug|Any CPU
29 | {8A7D65EB-3DE3-4631-B286-CC73A3126002}.Debug|x64.Build.0 = Debug|Any CPU
30 | {8A7D65EB-3DE3-4631-B286-CC73A3126002}.Release|Any CPU.ActiveCfg = Release|Any CPU
31 | {8A7D65EB-3DE3-4631-B286-CC73A3126002}.Release|Any CPU.Build.0 = Release|Any CPU
32 | {8A7D65EB-3DE3-4631-B286-CC73A3126002}.Release|x64.ActiveCfg = Release|Any CPU
33 | {8A7D65EB-3DE3-4631-B286-CC73A3126002}.Release|x64.Build.0 = Release|Any CPU
34 | {8A7D65EB-3DE3-4631-B286-CC73A3126002}.Release-Unsigned|Any CPU.ActiveCfg = Release|Any CPU
35 | {8A7D65EB-3DE3-4631-B286-CC73A3126002}.Release-Unsigned|Any CPU.Build.0 = Release|Any CPU
36 | {8A7D65EB-3DE3-4631-B286-CC73A3126002}.Release-Unsigned|x64.ActiveCfg = Release|Any CPU
37 | {8A7D65EB-3DE3-4631-B286-CC73A3126002}.Release-Unsigned|x64.Build.0 = Release|Any CPU
38 | {F9681545-4BEA-4FD3-9AB9-A67BD37AB36D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
39 | {F9681545-4BEA-4FD3-9AB9-A67BD37AB36D}.Debug|Any CPU.Build.0 = Debug|Any CPU
40 | {F9681545-4BEA-4FD3-9AB9-A67BD37AB36D}.Debug|x64.ActiveCfg = Debug|Any CPU
41 | {F9681545-4BEA-4FD3-9AB9-A67BD37AB36D}.Debug|x64.Build.0 = Debug|Any CPU
42 | {F9681545-4BEA-4FD3-9AB9-A67BD37AB36D}.Release|Any CPU.ActiveCfg = Release|Any CPU
43 | {F9681545-4BEA-4FD3-9AB9-A67BD37AB36D}.Release|Any CPU.Build.0 = Release|Any CPU
44 | {F9681545-4BEA-4FD3-9AB9-A67BD37AB36D}.Release|x64.ActiveCfg = Release|Any CPU
45 | {F9681545-4BEA-4FD3-9AB9-A67BD37AB36D}.Release|x64.Build.0 = Release|Any CPU
46 | {F9681545-4BEA-4FD3-9AB9-A67BD37AB36D}.Release-Unsigned|Any CPU.ActiveCfg = Release|Any CPU
47 | {F9681545-4BEA-4FD3-9AB9-A67BD37AB36D}.Release-Unsigned|Any CPU.Build.0 = Release|Any CPU
48 | {F9681545-4BEA-4FD3-9AB9-A67BD37AB36D}.Release-Unsigned|x64.ActiveCfg = Release|Any CPU
49 | {F9681545-4BEA-4FD3-9AB9-A67BD37AB36D}.Release-Unsigned|x64.Build.0 = Release|Any CPU
50 | {BF32DE1B-6276-4341-B212-F8862ADBBA7A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
51 | {BF32DE1B-6276-4341-B212-F8862ADBBA7A}.Debug|Any CPU.Build.0 = Debug|Any CPU
52 | {BF32DE1B-6276-4341-B212-F8862ADBBA7A}.Debug|x64.ActiveCfg = Debug|Any CPU
53 | {BF32DE1B-6276-4341-B212-F8862ADBBA7A}.Debug|x64.Build.0 = Debug|Any CPU
54 | {BF32DE1B-6276-4341-B212-F8862ADBBA7A}.Release|Any CPU.ActiveCfg = Release-Unsigned|Any CPU
55 | {BF32DE1B-6276-4341-B212-F8862ADBBA7A}.Release|Any CPU.Build.0 = Release-Unsigned|Any CPU
56 | {BF32DE1B-6276-4341-B212-F8862ADBBA7A}.Release|x64.ActiveCfg = Release-Unsigned|Any CPU
57 | {BF32DE1B-6276-4341-B212-F8862ADBBA7A}.Release|x64.Build.0 = Release-Unsigned|Any CPU
58 | {BF32DE1B-6276-4341-B212-F8862ADBBA7A}.Release-Unsigned|Any CPU.ActiveCfg = Release-Unsigned|Any CPU
59 | {BF32DE1B-6276-4341-B212-F8862ADBBA7A}.Release-Unsigned|Any CPU.Build.0 = Release-Unsigned|Any CPU
60 | {BF32DE1B-6276-4341-B212-F8862ADBBA7A}.Release-Unsigned|x64.ActiveCfg = Release-Unsigned|Any CPU
61 | {BF32DE1B-6276-4341-B212-F8862ADBBA7A}.Release-Unsigned|x64.Build.0 = Release-Unsigned|Any CPU
62 | {E2444754-17AE-4267-B9DC-F055F6EB5217}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
63 | {E2444754-17AE-4267-B9DC-F055F6EB5217}.Debug|Any CPU.Build.0 = Debug|Any CPU
64 | {E2444754-17AE-4267-B9DC-F055F6EB5217}.Debug|x64.ActiveCfg = Debug|Any CPU
65 | {E2444754-17AE-4267-B9DC-F055F6EB5217}.Debug|x64.Build.0 = Debug|Any CPU
66 | {E2444754-17AE-4267-B9DC-F055F6EB5217}.Release|Any CPU.ActiveCfg = Release|Any CPU
67 | {E2444754-17AE-4267-B9DC-F055F6EB5217}.Release|Any CPU.Build.0 = Release|Any CPU
68 | {E2444754-17AE-4267-B9DC-F055F6EB5217}.Release|x64.ActiveCfg = Release|Any CPU
69 | {E2444754-17AE-4267-B9DC-F055F6EB5217}.Release|x64.Build.0 = Release|Any CPU
70 | {E2444754-17AE-4267-B9DC-F055F6EB5217}.Release-Unsigned|Any CPU.ActiveCfg = Release|Any CPU
71 | {E2444754-17AE-4267-B9DC-F055F6EB5217}.Release-Unsigned|Any CPU.Build.0 = Release|Any CPU
72 | {E2444754-17AE-4267-B9DC-F055F6EB5217}.Release-Unsigned|x64.ActiveCfg = Release|Any CPU
73 | {E2444754-17AE-4267-B9DC-F055F6EB5217}.Release-Unsigned|x64.Build.0 = Release|Any CPU
74 | {633736F6-41D5-4FDF-B0EE-FB57C11E8925}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
75 | {633736F6-41D5-4FDF-B0EE-FB57C11E8925}.Debug|Any CPU.Build.0 = Debug|Any CPU
76 | {633736F6-41D5-4FDF-B0EE-FB57C11E8925}.Debug|x64.ActiveCfg = Debug|x64
77 | {633736F6-41D5-4FDF-B0EE-FB57C11E8925}.Debug|x64.Build.0 = Debug|x64
78 | {633736F6-41D5-4FDF-B0EE-FB57C11E8925}.Release|Any CPU.ActiveCfg = Release|Any CPU
79 | {633736F6-41D5-4FDF-B0EE-FB57C11E8925}.Release|Any CPU.Build.0 = Release|Any CPU
80 | {633736F6-41D5-4FDF-B0EE-FB57C11E8925}.Release|x64.ActiveCfg = Release|x64
81 | {633736F6-41D5-4FDF-B0EE-FB57C11E8925}.Release|x64.Build.0 = Release|x64
82 | {633736F6-41D5-4FDF-B0EE-FB57C11E8925}.Release-Unsigned|Any CPU.ActiveCfg = Release|Any CPU
83 | {633736F6-41D5-4FDF-B0EE-FB57C11E8925}.Release-Unsigned|Any CPU.Build.0 = Release|Any CPU
84 | {633736F6-41D5-4FDF-B0EE-FB57C11E8925}.Release-Unsigned|x64.ActiveCfg = Release|x64
85 | {633736F6-41D5-4FDF-B0EE-FB57C11E8925}.Release-Unsigned|x64.Build.0 = Release|x64
86 | EndGlobalSection
87 | GlobalSection(SolutionProperties) = preSolution
88 | HideSolutionNode = FALSE
89 | EndGlobalSection
90 | GlobalSection(ExtensibilityGlobals) = postSolution
91 | SolutionGuid = {00E279DD-6615-420B-818D-FA9541BD4106}
92 | EndGlobalSection
93 | EndGlobal
94 |
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/Shader/FF14 World Cutout.shader:
--------------------------------------------------------------------------------
1 | // Made with Amplify Shader Editor
2 | // Available at the Unity Asset Store - http://u3d.as/y3X
3 | Shader "Silent/FF14 World Cutout"
4 | {
5 | Properties
6 | {
7 | _Cutoff( "Mask Clip Value", Float ) = 0.5
8 | [NoScaleOffset]_Albedo0("Albedo 0", 2D) = "white" {}
9 | [NoScaleOffset][Normal]_NormalMap0("Normal Map 0", 2D) = "bump" {}
10 | [NoScaleOffset]_Metallic0("Metallic 0", 2D) = "black" {}
11 | _EmissionPow("Emission Pow", Range( 0 , 10)) = 0
12 | [Toggle(_APPLYVERTEXCOLOURING_ON)] _ApplyVertexColouring("Apply Vertex Colouring", Float) = 0
13 | [HideInInspector] _texcoord( "", 2D ) = "white" {}
14 | [HideInInspector] __dirty( "", Int ) = 1
15 | }
16 |
17 | SubShader
18 | {
19 | Tags{ "RenderType" = "TransparentCutout" "Queue" = "AlphaTest+0" "IsEmissive" = "true" }
20 | Cull Off
21 | CGPROGRAM
22 | #pragma target 5.0
23 | #pragma multi_compile_instancing
24 | #pragma shader_feature _APPLYVERTEXCOLOURING_ON
25 | #pragma surface surf Standard keepalpha addshadow fullforwardshadows
26 | struct Input
27 | {
28 | float2 uv_texcoord;
29 | float4 vertexColor : COLOR;
30 | };
31 |
32 | uniform sampler2D _NormalMap0;
33 | uniform sampler2D _Albedo0;
34 | uniform sampler2D _Metallic0;
35 | uniform float _EmissionPow;
36 | uniform float _Cutoff = 0.5;
37 |
38 | void surf( Input i , inout SurfaceOutputStandard o )
39 | {
40 | float2 uv_NormalMap03 = i.uv_texcoord;
41 | o.Normal = UnpackNormal( tex2D( _NormalMap0, uv_NormalMap03 ) );
42 | float2 uv_Albedo02 = i.uv_texcoord;
43 | float4 tex2DNode2 = tex2D( _Albedo0, uv_Albedo02 );
44 | o.Albedo = tex2DNode2.rgb;
45 | float2 uv_Metallic04 = i.uv_texcoord;
46 | float4 break64 = tex2D( _Metallic0, uv_Metallic04 );
47 | #ifdef _APPLYVERTEXCOLOURING_ON
48 | float4 staticSwitch74 = ( float4( 0,0,0,0 ) + -0.5 + i.vertexColor );
49 | #else
50 | float4 staticSwitch74 = tex2DNode2;
51 | #endif
52 | float4 AlbedoFinal71 = staticSwitch74;
53 | o.Emission = ( break64.a * AlbedoFinal71 * _EmissionPow ).rgb;
54 | o.Metallic = break64.b;
55 | o.Smoothness = break64;
56 | o.Alpha = 1;
57 | clip( tex2DNode2.a - _Cutoff );
58 | }
59 |
60 | ENDCG
61 | }
62 | Fallback "Diffuse"
63 | CustomEditor "ASEMaterialInspector"
64 | }
65 | /*ASEBEGIN
66 | Version=15301
67 | 2146;515;1687;1598;1246.894;1122.455;1.226319;True;False
68 | Node;AmplifyShaderEditor.VertexColorNode;54;-455.6009,-237.7999;Float;False;0;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
69 | Node;AmplifyShaderEditor.RangedFloatNode;95;-417.7131,-63.52338;Float;False;Constant;_Float0;Float 0;8;0;Create;True;0;0;False;0;-0.5;0;0;0;0;1;FLOAT;0
70 | Node;AmplifyShaderEditor.SimpleAddOpNode;83;-160.9803,-235.6643;Float;False;3;3;0;COLOR;0,0,0,0;False;1;FLOAT;0;False;2;COLOR;0,0,0,0;False;1;COLOR;0
71 | Node;AmplifyShaderEditor.SamplerNode;2;-1033.894,-180.5342;Float;True;Property;_Albedo0;Albedo 0;1;1;[NoScaleOffset];Create;True;0;0;False;0;None;None;True;0;False;white;Auto;False;Object;-1;Auto;Texture2D;6;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
72 | Node;AmplifyShaderEditor.StaticSwitch;74;-77.07983,-515.3254;Float;False;Property;_ApplyVertexColouring;Apply Vertex Colouring;5;0;Create;True;0;0;False;0;0;0;0;True;;Toggle;2;Key0;Key1;9;1;COLOR;0,0,0,0;False;0;COLOR;0,0,0,0;False;2;COLOR;0,0,0,0;False;3;COLOR;0,0,0,0;False;4;COLOR;0,0,0,0;False;5;COLOR;0,0,0,0;False;6;COLOR;0,0,0,0;False;7;COLOR;0,0,0,0;False;8;COLOR;0,0,0,0;False;1;COLOR;0
73 | Node;AmplifyShaderEditor.SamplerNode;4;-936.0978,797.7661;Float;True;Property;_Metallic0;Metallic 0;3;1;[NoScaleOffset];Create;True;0;0;False;0;None;None;True;0;False;black;Auto;False;Object;-1;Auto;Texture2D;6;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
74 | Node;AmplifyShaderEditor.BreakToComponentsNode;64;-528.9376,820.2851;Float;False;COLOR;1;0;COLOR;0,0,0,0;False;16;FLOAT;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4;FLOAT;5;FLOAT;6;FLOAT;7;FLOAT;8;FLOAT;9;FLOAT;10;FLOAT;11;FLOAT;12;FLOAT;13;FLOAT;14;FLOAT;15
75 | Node;AmplifyShaderEditor.RegisterLocalVarNode;71;346.3309,-494.1566;Float;False;AlbedoFinal;-1;True;1;0;COLOR;0,0,0,0;False;1;COLOR;0
76 | Node;AmplifyShaderEditor.GetLocalVarNode;73;-486.852,1019.953;Float;False;71;0;1;COLOR;0
77 | Node;AmplifyShaderEditor.RangedFloatNode;6;-533.3942,1125.066;Float;False;Property;_EmissionPow;Emission Pow;4;0;Create;True;0;0;False;0;0;0;0;10;0;1;FLOAT;0
78 | Node;AmplifyShaderEditor.GetLocalVarNode;72;-478.5316,17.48549;Float;False;71;0;1;COLOR;0
79 | Node;AmplifyShaderEditor.SamplerNode;3;-1022.85,60.7894;Float;True;Property;_NormalMap0;Normal Map 0;2;2;[NoScaleOffset];[Normal];Create;True;0;0;False;0;None;None;True;0;True;bump;Auto;True;Object;-1;Auto;Texture2D;6;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;5;FLOAT3;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
80 | Node;AmplifyShaderEditor.SimpleMultiplyOpNode;5;-105.1217,934.5651;Float;False;3;3;0;FLOAT;1;False;1;COLOR;0,0,0,0;False;2;FLOAT;0;False;1;COLOR;0
81 | Node;AmplifyShaderEditor.LerpOp;40;-403.0685,389.4814;Float;False;3;0;FLOAT;0.18;False;1;FLOAT;0.81;False;2;FLOAT;0;False;1;FLOAT;0
82 | Node;AmplifyShaderEditor.StandardSurfaceOutputNode;0;74.60001,43.59999;Float;False;True;7;Float;ASEMaterialInspector;0;0;Standard;Silent/FF14 World Cutout;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;False;False;False;Off;0;False;-1;0;False;-1;False;0;0;False;0;Masked;0.5;True;True;0;False;TransparentCutout;;AlphaTest;All;True;True;True;True;True;True;True;True;True;True;True;True;True;True;True;True;True;0;False;-1;False;0;False;-1;255;False;-1;255;False;-1;0;False;-1;0;False;-1;0;False;-1;0;False;-1;0;False;-1;0;False;-1;0;False;-1;0;False;-1;False;2;15;10;25;False;0.5;True;0;0;False;-1;0;False;-1;0;0;False;-1;0;False;-1;-1;False;-1;-1;False;-1;0;False;0;0,0,0,0;VertexOffset;True;False;Cylindrical;False;Relative;0;;0;-1;-1;-1;0;0;0;False;0;0;0;False;-1;-1;0;False;-1;16;0;FLOAT3;0,0,0;False;1;FLOAT3;0,0,0;False;2;FLOAT3;0,0,0;False;3;FLOAT;0;False;4;FLOAT;0;False;5;FLOAT;0;False;6;FLOAT3;0,0,0;False;7;FLOAT3;0,0,0;False;8;FLOAT;0;False;9;FLOAT;0;False;10;FLOAT;0;False;13;FLOAT3;0,0,0;False;11;FLOAT3;0,0,0;False;12;FLOAT3;0,0,0;False;14;FLOAT4;0,0,0,0;False;15;FLOAT3;0,0,0;False;0
83 | WireConnection;83;1;95;0
84 | WireConnection;83;2;54;0
85 | WireConnection;74;1;2;0
86 | WireConnection;74;0;83;0
87 | WireConnection;64;0;4;0
88 | WireConnection;71;0;74;0
89 | WireConnection;5;0;64;3
90 | WireConnection;5;1;73;0
91 | WireConnection;5;2;6;0
92 | WireConnection;40;2;64;0
93 | WireConnection;0;0;2;0
94 | WireConnection;0;1;3;0
95 | WireConnection;0;2;5;0
96 | WireConnection;0;3;64;2
97 | WireConnection;0;4;64;0
98 | WireConnection;0;10;2;4
99 | ASEEND*/
100 | //CHKSM=5A3B58F1E8D0710EEA3C617FC6587720773104C0
--------------------------------------------------------------------------------
/FFXIVHousingSim/ProjectSettings/InputManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!13 &1
4 | InputManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_Axes:
8 | - serializedVersion: 3
9 | m_Name: Horizontal
10 | descriptiveName:
11 | descriptiveNegativeName:
12 | negativeButton: left
13 | positiveButton: right
14 | altNegativeButton: a
15 | altPositiveButton: d
16 | gravity: 3
17 | dead: 0.001
18 | sensitivity: 3
19 | snap: 1
20 | invert: 0
21 | type: 0
22 | axis: 0
23 | joyNum: 0
24 | - serializedVersion: 3
25 | m_Name: Vertical
26 | descriptiveName:
27 | descriptiveNegativeName:
28 | negativeButton: down
29 | positiveButton: up
30 | altNegativeButton: s
31 | altPositiveButton: w
32 | gravity: 3
33 | dead: 0.001
34 | sensitivity: 3
35 | snap: 1
36 | invert: 0
37 | type: 0
38 | axis: 0
39 | joyNum: 0
40 | - serializedVersion: 3
41 | m_Name: Fire1
42 | descriptiveName:
43 | descriptiveNegativeName:
44 | negativeButton:
45 | positiveButton: left ctrl
46 | altNegativeButton:
47 | altPositiveButton: mouse 0
48 | gravity: 1000
49 | dead: 0.001
50 | sensitivity: 1000
51 | snap: 0
52 | invert: 0
53 | type: 0
54 | axis: 0
55 | joyNum: 0
56 | - serializedVersion: 3
57 | m_Name: Fire2
58 | descriptiveName:
59 | descriptiveNegativeName:
60 | negativeButton:
61 | positiveButton: left alt
62 | altNegativeButton:
63 | altPositiveButton: mouse 1
64 | gravity: 1000
65 | dead: 0.001
66 | sensitivity: 1000
67 | snap: 0
68 | invert: 0
69 | type: 0
70 | axis: 0
71 | joyNum: 0
72 | - serializedVersion: 3
73 | m_Name: Fire3
74 | descriptiveName:
75 | descriptiveNegativeName:
76 | negativeButton:
77 | positiveButton: left shift
78 | altNegativeButton:
79 | altPositiveButton: mouse 2
80 | gravity: 1000
81 | dead: 0.001
82 | sensitivity: 1000
83 | snap: 0
84 | invert: 0
85 | type: 0
86 | axis: 0
87 | joyNum: 0
88 | - serializedVersion: 3
89 | m_Name: Jump
90 | descriptiveName:
91 | descriptiveNegativeName:
92 | negativeButton:
93 | positiveButton: space
94 | altNegativeButton:
95 | altPositiveButton:
96 | gravity: 1000
97 | dead: 0.001
98 | sensitivity: 1000
99 | snap: 0
100 | invert: 0
101 | type: 0
102 | axis: 0
103 | joyNum: 0
104 | - serializedVersion: 3
105 | m_Name: Mouse X
106 | descriptiveName:
107 | descriptiveNegativeName:
108 | negativeButton:
109 | positiveButton:
110 | altNegativeButton:
111 | altPositiveButton:
112 | gravity: 0
113 | dead: 0
114 | sensitivity: 0.1
115 | snap: 0
116 | invert: 0
117 | type: 1
118 | axis: 0
119 | joyNum: 0
120 | - serializedVersion: 3
121 | m_Name: Mouse Y
122 | descriptiveName:
123 | descriptiveNegativeName:
124 | negativeButton:
125 | positiveButton:
126 | altNegativeButton:
127 | altPositiveButton:
128 | gravity: 0
129 | dead: 0
130 | sensitivity: 0.1
131 | snap: 0
132 | invert: 0
133 | type: 1
134 | axis: 1
135 | joyNum: 0
136 | - serializedVersion: 3
137 | m_Name: Mouse ScrollWheel
138 | descriptiveName:
139 | descriptiveNegativeName:
140 | negativeButton:
141 | positiveButton:
142 | altNegativeButton:
143 | altPositiveButton:
144 | gravity: 0
145 | dead: 0
146 | sensitivity: 0.1
147 | snap: 0
148 | invert: 0
149 | type: 1
150 | axis: 2
151 | joyNum: 0
152 | - serializedVersion: 3
153 | m_Name: Horizontal
154 | descriptiveName:
155 | descriptiveNegativeName:
156 | negativeButton:
157 | positiveButton:
158 | altNegativeButton:
159 | altPositiveButton:
160 | gravity: 0
161 | dead: 0.19
162 | sensitivity: 1
163 | snap: 0
164 | invert: 0
165 | type: 2
166 | axis: 0
167 | joyNum: 0
168 | - serializedVersion: 3
169 | m_Name: Vertical
170 | descriptiveName:
171 | descriptiveNegativeName:
172 | negativeButton:
173 | positiveButton:
174 | altNegativeButton:
175 | altPositiveButton:
176 | gravity: 0
177 | dead: 0.19
178 | sensitivity: 1
179 | snap: 0
180 | invert: 1
181 | type: 2
182 | axis: 1
183 | joyNum: 0
184 | - serializedVersion: 3
185 | m_Name: Fire1
186 | descriptiveName:
187 | descriptiveNegativeName:
188 | negativeButton:
189 | positiveButton: joystick button 0
190 | altNegativeButton:
191 | altPositiveButton:
192 | gravity: 1000
193 | dead: 0.001
194 | sensitivity: 1000
195 | snap: 0
196 | invert: 0
197 | type: 0
198 | axis: 0
199 | joyNum: 0
200 | - serializedVersion: 3
201 | m_Name: Fire2
202 | descriptiveName:
203 | descriptiveNegativeName:
204 | negativeButton:
205 | positiveButton: joystick button 1
206 | altNegativeButton:
207 | altPositiveButton:
208 | gravity: 1000
209 | dead: 0.001
210 | sensitivity: 1000
211 | snap: 0
212 | invert: 0
213 | type: 0
214 | axis: 0
215 | joyNum: 0
216 | - serializedVersion: 3
217 | m_Name: Fire3
218 | descriptiveName:
219 | descriptiveNegativeName:
220 | negativeButton:
221 | positiveButton: joystick button 2
222 | altNegativeButton:
223 | altPositiveButton:
224 | gravity: 1000
225 | dead: 0.001
226 | sensitivity: 1000
227 | snap: 0
228 | invert: 0
229 | type: 0
230 | axis: 0
231 | joyNum: 0
232 | - serializedVersion: 3
233 | m_Name: Jump
234 | descriptiveName:
235 | descriptiveNegativeName:
236 | negativeButton:
237 | positiveButton: joystick button 3
238 | altNegativeButton:
239 | altPositiveButton:
240 | gravity: 1000
241 | dead: 0.001
242 | sensitivity: 1000
243 | snap: 0
244 | invert: 0
245 | type: 0
246 | axis: 0
247 | joyNum: 0
248 | - serializedVersion: 3
249 | m_Name: Submit
250 | descriptiveName:
251 | descriptiveNegativeName:
252 | negativeButton:
253 | positiveButton: return
254 | altNegativeButton:
255 | altPositiveButton: joystick button 0
256 | gravity: 1000
257 | dead: 0.001
258 | sensitivity: 1000
259 | snap: 0
260 | invert: 0
261 | type: 0
262 | axis: 0
263 | joyNum: 0
264 | - serializedVersion: 3
265 | m_Name: Submit
266 | descriptiveName:
267 | descriptiveNegativeName:
268 | negativeButton:
269 | positiveButton: enter
270 | altNegativeButton:
271 | altPositiveButton: space
272 | gravity: 1000
273 | dead: 0.001
274 | sensitivity: 1000
275 | snap: 0
276 | invert: 0
277 | type: 0
278 | axis: 0
279 | joyNum: 0
280 | - serializedVersion: 3
281 | m_Name: Cancel
282 | descriptiveName:
283 | descriptiveNegativeName:
284 | negativeButton:
285 | positiveButton: escape
286 | altNegativeButton:
287 | altPositiveButton: joystick button 1
288 | gravity: 1000
289 | dead: 0.001
290 | sensitivity: 1000
291 | snap: 0
292 | invert: 0
293 | type: 0
294 | axis: 0
295 | joyNum: 0
296 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 | ##
4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
5 |
6 | # User-specific files
7 | *.suo
8 | *.user
9 | *.userosscache
10 | *.sln.docstates
11 |
12 | # User-specific files (MonoDevelop/Xamarin Studio)
13 | *.userprefs
14 |
15 | # Build results
16 | [Dd]ebug/
17 | [Dd]ebugPublic/
18 | [Rr]elease/
19 | [Rr]eleases/
20 | x64/
21 | x86/
22 | bld/
23 | [Bb]in/
24 | [Oo]bj/
25 | [Ll]og/
26 |
27 | # Visual Studio 2015/2017 cache/options directory
28 | .vs/
29 | # Uncomment if you have tasks that create the project's static files in wwwroot
30 | #wwwroot/
31 |
32 | # Visual Studio 2017 auto generated files
33 | Generated\ Files/
34 |
35 | # MSTest test Results
36 | [Tt]est[Rr]esult*/
37 | [Bb]uild[Ll]og.*
38 |
39 | # NUNIT
40 | *.VisualState.xml
41 | TestResult.xml
42 |
43 | # Build Results of an ATL Project
44 | [Dd]ebugPS/
45 | [Rr]eleasePS/
46 | dlldata.c
47 |
48 | # Benchmark Results
49 | BenchmarkDotNet.Artifacts/
50 |
51 | # .NET Core
52 | project.lock.json
53 | project.fragment.lock.json
54 | artifacts/
55 |
56 | # StyleCop
57 | StyleCopReport.xml
58 |
59 | # Files built by Visual Studio
60 | *_i.c
61 | *_p.c
62 | *_h.h
63 | *.ilk
64 | # Only meta files in the VS project
65 | FFXIVHSLauncher/**/*.meta
66 | *.obj
67 | *.iobj
68 | *.pch
69 | *.pdb
70 | *.ipdb
71 | *.pgc
72 | *.pgd
73 | *.rsp
74 | *.sbr
75 | *.tlb
76 | *.tli
77 | *.tlh
78 | *.tmp
79 | *.tmp_proj
80 | *.log
81 | *.vspscc
82 | *.vssscc
83 | .builds
84 | *.pidb
85 | *.svclog
86 | *.scc
87 |
88 | # Chutzpah Test files
89 | _Chutzpah*
90 |
91 | # Visual C++ cache files
92 | ipch/
93 | *.aps
94 | *.ncb
95 | *.opendb
96 | *.opensdf
97 | *.sdf
98 | *.cachefile
99 | *.VC.db
100 | *.VC.VC.opendb
101 |
102 | # Visual Studio profiler
103 | *.psess
104 | *.vsp
105 | *.vspx
106 | *.sap
107 |
108 | # Visual Studio Trace Files
109 | *.e2e
110 |
111 | # TFS 2012 Local Workspace
112 | $tf/
113 |
114 | # Guidance Automation Toolkit
115 | *.gpState
116 |
117 | # ReSharper is a .NET coding add-in
118 | _ReSharper*/
119 | *.[Rr]e[Ss]harper
120 | *.DotSettings.user
121 |
122 | # JustCode is a .NET coding add-in
123 | .JustCode
124 |
125 | # TeamCity is a build add-in
126 | _TeamCity*
127 |
128 | # DotCover is a Code Coverage Tool
129 | *.dotCover
130 |
131 | # AxoCover is a Code Coverage Tool
132 | .axoCover/*
133 | !.axoCover/settings.json
134 |
135 | # Visual Studio code coverage results
136 | *.coverage
137 | *.coveragexml
138 |
139 | # NCrunch
140 | _NCrunch_*
141 | .*crunch*.local.xml
142 | nCrunchTemp_*
143 |
144 | # MightyMoose
145 | *.mm.*
146 | AutoTest.Net/
147 |
148 | # Web workbench (sass)
149 | .sass-cache/
150 |
151 | # Installshield output folder
152 | [Ee]xpress/
153 |
154 | # DocProject is a documentation generator add-in
155 | DocProject/buildhelp/
156 | DocProject/Help/*.HxT
157 | DocProject/Help/*.HxC
158 | DocProject/Help/*.hhc
159 | DocProject/Help/*.hhk
160 | DocProject/Help/*.hhp
161 | DocProject/Help/Html2
162 | DocProject/Help/html
163 |
164 | # Click-Once directory
165 | publish/
166 |
167 | # Publish Web Output
168 | *.[Pp]ublish.xml
169 | *.azurePubxml
170 | # Note: Comment the next line if you want to checkin your web deploy settings,
171 | # but database connection strings (with potential passwords) will be unencrypted
172 | *.pubxml
173 | *.publishproj
174 |
175 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
176 | # checkin your Azure Web App publish settings, but sensitive information contained
177 | # in these scripts will be unencrypted
178 | PublishScripts/
179 |
180 | # NuGet Packages
181 | *.nupkg
182 | # The packages folder can be ignored because of Package Restore
183 | **/[Pp]ackages/*
184 | # except build/, which is used as an MSBuild target.
185 | !**/[Pp]ackages/build/
186 | # Uncomment if necessary however generally it will be regenerated when needed
187 | #!**/[Pp]ackages/repositories.config
188 | # NuGet v3's project.json files produces more ignorable files
189 | *.nuget.props
190 | *.nuget.targets
191 |
192 | # Microsoft Azure Build Output
193 | csx/
194 | *.build.csdef
195 |
196 | # Microsoft Azure Emulator
197 | ecf/
198 | rcf/
199 |
200 | # Windows Store app package directories and files
201 | AppPackages/
202 | BundleArtifacts/
203 | Package.StoreAssociation.xml
204 | _pkginfo.txt
205 | *.appx
206 |
207 | # Visual Studio cache files
208 | # files ending in .cache can be ignored
209 | *.[Cc]ache
210 | # but keep track of directories ending in .cache
211 | !*.[Cc]ache/
212 |
213 | # Others
214 | ClientBin/
215 | ~$*
216 | *~
217 | *.dbmdl
218 | *.dbproj.schemaview
219 | *.jfm
220 | *.pfx
221 | *.publishsettings
222 | orleans.codegen.cs
223 |
224 | # Including strong name files can present a security risk
225 | # (https://github.com/github/gitignore/pull/2483#issue-259490424)
226 | #*.snk
227 |
228 | # Since there are multiple workflows, uncomment next line to ignore bower_components
229 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
230 | #bower_components/
231 |
232 | # RIA/Silverlight projects
233 | Generated_Code/
234 |
235 | # Backup & report files from converting an old project file
236 | # to a newer Visual Studio version. Backup files are not needed,
237 | # because we have git ;-)
238 | _UpgradeReport_Files/
239 | Backup*/
240 | UpgradeLog*.XML
241 | UpgradeLog*.htm
242 | ServiceFabricBackup/
243 | *.rptproj.bak
244 |
245 | # SQL Server files
246 | *.mdf
247 | *.ldf
248 | *.ndf
249 |
250 | # Business Intelligence projects
251 | *.rdl.data
252 | *.bim.layout
253 | *.bim_*.settings
254 | *.rptproj.rsuser
255 |
256 | # Microsoft Fakes
257 | FakesAssemblies/
258 |
259 | # GhostDoc plugin setting file
260 | *.GhostDoc.xml
261 |
262 | # Node.js Tools for Visual Studio
263 | .ntvs_analysis.dat
264 | node_modules/
265 |
266 | # Visual Studio 6 build log
267 | *.plg
268 |
269 | # Visual Studio 6 workspace options file
270 | *.opt
271 |
272 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
273 | *.vbw
274 |
275 | # Visual Studio LightSwitch build output
276 | **/*.HTMLClient/GeneratedArtifacts
277 | **/*.DesktopClient/GeneratedArtifacts
278 | **/*.DesktopClient/ModelManifest.xml
279 | **/*.Server/GeneratedArtifacts
280 | **/*.Server/ModelManifest.xml
281 | _Pvt_Extensions
282 |
283 | # Paket dependency manager
284 | .paket/paket.exe
285 | paket-files/
286 |
287 | # FAKE - F# Make
288 | .fake/
289 |
290 | # JetBrains Rider
291 | .idea/
292 | *.sln.iml
293 |
294 | # CodeRush
295 | .cr/
296 |
297 | # Python Tools for Visual Studio (PTVS)
298 | __pycache__/
299 | *.pyc
300 |
301 | # Cake - Uncomment if you are using it
302 | # tools/**
303 | # !tools/packages.config
304 |
305 | # Tabs Studio
306 | *.tss
307 |
308 | # Telerik's JustMock configuration file
309 | *.jmconfig
310 |
311 | # BizTalk build output
312 | *.btp.cs
313 | *.btm.cs
314 | *.odx.cs
315 | *.xsd.cs
316 |
317 | # OpenCover UI analysis results
318 | OpenCover/
319 |
320 | # Azure Stream Analytics local run output
321 | ASALocalRun/
322 |
323 | # MSBuild Binary and Structured Log
324 | *.binlog
325 |
326 | # NVidia Nsight GPU debugger configuration file
327 | *.nvuser
328 |
329 | # MFractors (Xamarin productivity tool) working folder
330 | .mfractor/
331 |
332 | # Local History for Visual Studio
333 | .localhistory/
334 |
--------------------------------------------------------------------------------
/FFXIVHSLauncher/FFXHIVHSLauncher.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {633736F6-41D5-4FDF-B0EE-FB57C11E8925}
8 | WinExe
9 | FFXIVHSLauncher
10 | FFXIVHSLauncher
11 | v4.6.1
12 | 512
13 | {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
14 | 4
15 | true
16 |
17 |
18 |
19 |
20 |
21 | AnyCPU
22 | true
23 | full
24 | false
25 | bin\Debug\
26 | DEBUG;TRACE
27 | prompt
28 | 4
29 |
30 |
31 | AnyCPU
32 | pdbonly
33 | true
34 | bin\Release\
35 | TRACE
36 | prompt
37 | 4
38 |
39 |
40 | true
41 | bin\x64\Debug\
42 | DEBUG;TRACE
43 | full
44 | x64
45 | prompt
46 | MinimumRecommendedRules.ruleset
47 | true
48 |
49 |
50 | bin\x64\Release\
51 | TRACE
52 | true
53 | pdbonly
54 | x64
55 | prompt
56 | MinimumRecommendedRules.ruleset
57 | true
58 |
59 |
60 | app.manifest
61 |
62 |
63 |
64 | ..\packages\Newtonsoft.Json.12.0.1\lib\net45\Newtonsoft.Json.dll
65 |
66 |
67 | False
68 | $(SharpDXPackageBinDir)\SharpDX.dll
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 | 4.0
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 | MSBuild:Compile
92 | Designer
93 |
94 |
95 |
96 | LoadingWindow.xaml
97 |
98 |
99 | MSBuild:Compile
100 | Designer
101 |
102 |
103 | App.xaml
104 | Code
105 |
106 |
107 |
108 | MainWindow.xaml
109 | Code
110 |
111 |
112 | Designer
113 | MSBuild:Compile
114 |
115 |
116 |
117 |
118 |
119 | Code
120 |
121 |
122 | True
123 | True
124 | Resources.resx
125 |
126 |
127 | True
128 | Settings.settings
129 | True
130 |
131 |
132 | ResXFileCodeGenerator
133 | Resources.Designer.cs
134 |
135 |
136 | Designer
137 |
138 |
139 |
140 | SettingsSingleFileGenerator
141 | Settings.Designer.cs
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 | {e2444754-17ae-4267-b9dc-f055f6eb5217}
150 | FFXIVHSLib
151 |
152 |
153 | {8a7d65eb-3de3-4631-b286-cc73a3126002}
154 | SaintCoinach
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 | This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
165 |
166 |
167 |
168 |
--------------------------------------------------------------------------------
/FFXIVHSLauncher/ObjectFileWriter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.IO;
4 | using SaintCoinach.Graphics;
5 |
6 | namespace FFXIVHSLauncher
7 | {
8 | public static class ObjectFileWriter
9 | {
10 | private static bool debug = true;
11 |
12 | public static void WriteObjectFile(String path, ModelFile mdlFile)
13 | {
14 | Model mdl = mdlFile.GetModelDefinition().GetModel(ModelQuality.High);
15 |
16 | Mesh[] meshes = mdl.Meshes;
17 |
18 | List vsList = new List();
19 | List vcList = new List();
20 | List vtList = new List();
21 | List nmList = new List();
22 | List inList = new List();
23 |
24 | for (int i = 0; i < meshes.Length; i++)
25 | {
26 | EnumerateFromVertices(meshes[i].Vertices, ref vsList, ref vcList, ref vtList, ref nmList);
27 | EnumerateIndices(meshes[i].Indices, ref inList);
28 |
29 | WriteObjectFileForMesh(path, mdl.Meshes[i].Material.Get(), mdl.Definition, i, vsList, vcList, vtList, nmList, inList);
30 |
31 | vsList.Clear();
32 | vcList.Clear();
33 | vtList.Clear();
34 | nmList.Clear();
35 | inList.Clear();
36 | }
37 | }
38 |
39 | private static void EnumerateFromVertices(Vertex[] verts, ref List vsList, ref List vcList,
40 | ref List vtList, ref List nmList)
41 | {
42 | for (int i = 0; i < verts.Length; i++)
43 | {
44 | Vector3 vs = new Vector3();
45 | Vector4 vc = new Vector4();
46 | Vector4 vt = new Vector4();
47 | Vector3 nm = new Vector3();
48 |
49 | Vertex tv = verts[i];
50 |
51 | vs.X = tv.Position.Value.X;
52 | vs.Y = tv.Position.Value.Y;
53 | vs.Z = tv.Position.Value.Z;
54 |
55 | if (tv.Color == null)
56 | {
57 | vc.X = 0;
58 | vc.Y = 0;
59 | vc.W = 0;
60 | vc.Z = 0;
61 | }
62 | else
63 | {
64 | vc.X = tv.Color.Value.X;
65 | vc.Y = tv.Color.Value.Y;
66 | vc.W = tv.Color.Value.W;
67 | vc.Z = tv.Color.Value.Z;
68 | }
69 |
70 | vt.X = tv.UV.Value.X;
71 | vt.Y = -1 * tv.UV.Value.Y;
72 | vt.W = (tv.UV.Value.W == 0) ? vt.X : tv.UV.Value.W;
73 | vt.Z = (tv.UV.Value.Z == 0) ? vt.Y : tv.UV.Value.Z;
74 |
75 | nm.X = tv.Normal.Value.X;
76 | nm.Y = tv.Normal.Value.Y;
77 | nm.Z = tv.Normal.Value.Z;
78 |
79 | vsList.Add(vs);
80 | vcList.Add(vc);
81 | vtList.Add(vt);
82 | nmList.Add(nm);
83 | }
84 | }
85 |
86 | private static void EnumerateIndices(ushort[] indices, ref List inList)
87 | {
88 | for (int i = 0; i < indices.Length; i+=3)
89 | {
90 | Vector3 ind = new Vector3();
91 |
92 | ind.X = indices[i + 0] + 1;
93 | ind.Y = indices[i + 1] + 1;
94 | ind.Z = indices[i + 2] + 1;
95 |
96 | inList.Add(ind);
97 | }
98 | }
99 |
100 | private static void WriteObjectFileForMesh(String path, Material mat, ModelDefinition mdlDef, int meshNumber, List vsList,
101 | List vcList, List vtList, List nmList, List inList)
102 | {
103 | String modelName = mdlDef.File.Path;
104 | int finalSep = modelName.LastIndexOf('/');
105 | modelName = modelName.Substring(finalSep);
106 | modelName = Path.GetFileNameWithoutExtension(modelName);
107 | modelName = modelName + "_" + meshNumber + ".obj";
108 |
109 | StreamWriter sw = new StreamWriter(new FileStream(path + "//" + modelName, FileMode.Create));
110 | sw.WriteLine("#for housing sim :-)");
111 |
112 | //mtl
113 | string mtlPath = @"..\textures\";
114 | string mtlName = mat.Definition.Name;
115 |
116 | int mtlFinalSep = mtlName.LastIndexOf('/');
117 | mtlName = mtlName.Substring(mtlFinalSep + 1);
118 | mtlName = mtlName.Replace(".mtrl", ".mtl");
119 | mtlPath += mtlName;
120 |
121 | sw.WriteLine("mtllib {0}", mtlPath);
122 | sw.WriteLine("usemtl {0}", mtlName.Replace(".mtl", ""));
123 |
124 | WriteMaterial(Path.GetFullPath(Path.Combine(path, mtlPath)), mtlName, mat);
125 |
126 | //verts
127 | sw.WriteLine("#vert");
128 | foreach (Vector3 vert in vsList)
129 | sw.WriteLine("v {0} {1} {2}", (decimal)vert.X, (decimal)vert.Y, (decimal)vert.Z);
130 | sw.WriteLine();
131 |
132 | //colors
133 | sw.WriteLine("#vertex colors");
134 | foreach (Vector4 color in vcList)
135 | {
136 | sw.WriteLine("vc {0} {1} {2} {3}", (decimal)color.W, (decimal)color.X, (decimal)color.Y, (decimal)color.Z);
137 | }
138 | sw.WriteLine();
139 |
140 | //texcoords
141 | sw.WriteLine("#texcoords");
142 | foreach (Vector4 texCoord in vtList)
143 | {
144 | sw.WriteLine("vt {0} {1} {2} {3}", (decimal)texCoord.X, -1 * (decimal)texCoord.Y, (decimal)texCoord.W, -1 * (decimal)texCoord.Z);
145 | }
146 |
147 | sw.WriteLine();
148 |
149 | //normals
150 | sw.WriteLine("#normals");
151 | foreach (Vector3 norm in nmList)
152 | sw.WriteLine("vn {0} {1} {2}", (decimal)norm.X, (decimal)norm.Y, (decimal)norm.Z);
153 | sw.WriteLine();
154 |
155 | //indices
156 | sw.WriteLine("#indices");
157 | foreach (Vector3 ind in inList)
158 | sw.WriteLine("f {0}/{0}/{0} {1}/{1}/{1} {2}/{2}/{2}", (decimal)ind.X, (decimal)ind.Y, (decimal)ind.Z);
159 |
160 | sw.Flush();
161 | sw.Close();
162 | }
163 |
164 | private static void WriteMaterial(String mtlPath, String mtlFileName, Material mat)
165 | {
166 | if (File.Exists(mtlPath))
167 | return;
168 |
169 | String mtlFolder = mtlPath.Substring(0, mtlPath.LastIndexOf(@"\") + 1);
170 |
171 | if (!Directory.Exists(mtlFolder))
172 | Directory.CreateDirectory(mtlFolder);
173 |
174 | List matLines = new List();
175 |
176 | matLines.Add("newmtl " + mtlFileName.Substring(0, mtlFileName.Length - 4));
177 |
178 | foreach (var img in mat.TexturesFiles)
179 | {
180 | String imgName = img.Path;
181 | int imgLastSep = imgName.LastIndexOf('/');
182 | imgName = imgName.Substring(imgLastSep + 1);
183 | imgName = imgName.Replace(".tex", ".dds");
184 |
185 | //Write the image out
186 | if (!File.Exists(mtlFolder + imgName))
187 | {
188 | var ddsBytes = SaintCoinach.Imaging.ImageConverter.GetDDS(img);
189 | if (ddsBytes != null)
190 | {
191 | System.IO.File.WriteAllBytes(mtlFolder + imgName, ddsBytes);
192 | }
193 | else
194 | {
195 | imgName = imgName.Replace(".dds", ".png");
196 | img.GetImage().Save(mtlFolder + imgName);
197 | }
198 | }
199 | String imgSuffix = imgName.Substring(imgName.Length - 6);
200 |
201 | switch (imgSuffix)
202 | {
203 | case "_n.dds":
204 | case "_n.png":
205 | matLines.Add("bump " + imgName);
206 | break;
207 | case "_s.dds":
208 | case "_s.png":
209 | matLines.Add("map_Ks " + imgName);
210 | break;
211 | case "_d.dds":
212 | case "_d.png":
213 | matLines.Add("map_Kd " + imgName);
214 | break;
215 | case "_a.dds":
216 | case "_a.png":
217 | matLines.Add("map_Ka " + imgName);
218 | break;
219 | default:
220 | matLines.Add("map_Ka " + imgName);
221 | break;
222 | }
223 | }
224 | File.WriteAllLines(mtlPath, matLines);
225 | }
226 |
227 | }
228 | }
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/FastObjImporter.cs:
--------------------------------------------------------------------------------
1 | /* FastObjImporter.cs
2 | * by Marc Kusters (Nighteyes)
3 | *
4 | * Used for loading .obj files exported by Blender
5 | * Example usage: Mesh myMesh = FastObjImporter.Instance.ImportFile("path_to_obj_file.obj");
6 | *
7 | * Class was modified for this project to support MaterialHandler, colors, and Vector4 uvs.
8 | */
9 |
10 | using UnityEngine;
11 | using System.Collections.Generic;
12 | using System.IO;
13 | using System.Text;
14 |
15 | public sealed class FastObjImporter
16 | {
17 | private static FastObjImporter _instance;
18 |
19 | public static FastObjImporter Instance
20 | {
21 | get { return _instance ?? (_instance = new FastObjImporter()); }
22 | }
23 |
24 | private string meshName;
25 | private List triangles;
26 | private List vertices;
27 | private List uv;
28 | private List normals;
29 | private List faceData;
30 | private List intArray;
31 | private List colors;
32 |
33 | private const int MIN_POW_10 = -32;
34 | private const int MAX_POW_10 = 32;
35 | private const int NUM_POWS_10 = MAX_POW_10 - MIN_POW_10 + 1;
36 | private static readonly float[] pow10 = GenerateLookupTable();
37 |
38 | // Use this for initialization
39 | public Mesh ImportFile(string filePath)
40 | {
41 | meshName = filePath.Substring(filePath.LastIndexOf('\\') + 1);
42 | meshName = meshName.Substring(0, meshName.Length - 4);
43 | triangles = new List();
44 | vertices = new List();
45 | uv = new List();
46 | normals = new List();
47 | faceData = new List();
48 | intArray = new List();
49 | colors = new List();
50 |
51 | LoadMeshData(filePath);
52 |
53 | Vector3[] newVerts = new Vector3[faceData.Count];
54 | List newUVs = new List();
55 | Vector3[] newNormals = new Vector3[faceData.Count];
56 | Color32[] newColors = new Color32[faceData.Count];
57 |
58 | /* The following foreach loops through the facedata and assigns the appropriate vertex, uv, or normal
59 | * for the appropriate Unity mesh array. */
60 | Debug.Log(filePath);
61 | for (int i = 0; i < faceData.Count; i++)
62 | {
63 | newVerts[i] = vertices[faceData[i].x - 1];
64 | newColors[i] = colors[faceData[i].x - 1];
65 |
66 | if (faceData[i].y >= 1)
67 | newUVs.Add(uv[faceData[i].y - 1]);
68 |
69 | if (faceData[i].z >= 1)
70 | newNormals[i] = normals[faceData[i].z - 1];
71 | }
72 |
73 | Mesh mesh = new Mesh();
74 | mesh.indexFormat = UnityEngine.Rendering.IndexFormat.UInt32;
75 | mesh.name = meshName;
76 | mesh.vertices = newVerts;
77 | mesh.SetUVs(0, newUVs);
78 | mesh.normals = newNormals;
79 | mesh.colors32 = newColors;
80 | mesh.triangles = triangles.ToArray();
81 |
82 | mesh.RecalculateBounds();
83 |
84 | return mesh;
85 | }
86 |
87 | private void LoadMeshData(string fileName)
88 | {
89 | StringBuilder sb = new StringBuilder();
90 | string text = File.ReadAllText(fileName);
91 | int start = 0;
92 | string objectName = null;
93 | bool hasColor = false;
94 | int faceDataCount = 0;
95 |
96 | StringBuilder sbFloat = new StringBuilder();
97 | StringBuilder mtlFile = new StringBuilder();
98 | StringBuilder mtlName = new StringBuilder();
99 |
100 | for (int i = 0; i < text.Length; i++)
101 | {
102 | if (text[i] == '\n')// || text[i] == '#')
103 | {
104 | sb.Remove(0, sb.Length);
105 |
106 | // Start +1 for whitespace '\n'
107 | sb.Append(text, start + 1, i - start);
108 | start = i;
109 |
110 | if (sb[0] == 'o' && sb[1] == ' ')
111 | {
112 | sbFloat.Remove(0, sbFloat.Length);
113 | int j = 2;
114 | while (j < sb.Length)
115 | {
116 | objectName += sb[j];
117 | j++;
118 | }
119 | }
120 | else if (sb[0] == 'm' && sb[1] == 't' && sb[2] == 'l' && sb[3] == 'l' && sb[4] == 'i' && sb[5] == 'b')
121 | {
122 | int splitStart = 6;
123 |
124 | sbFloat.Remove(0, sbFloat.Length);
125 |
126 | while (splitStart < sb.Length)
127 | {
128 | mtlFile.Append(sb[splitStart]);
129 | splitStart++;
130 | }
131 | }
132 | else if (sb[0] == 'u' && sb[1] == 's' && sb[2] == 'e' && sb[3] == 'm' && sb[4] == 't' && sb[5] == 'l')
133 | {
134 | int splitStart = 6;
135 |
136 | sbFloat.Remove(0, sbFloat.Length);
137 |
138 | while (splitStart < sb.Length)
139 | {
140 | mtlName.Append(sb[splitStart]);
141 | splitStart++;
142 | }
143 | }
144 | else if (sb[0] == 'v' && sb[1] == ' ') // Vertices
145 | {
146 | int splitStart = 2;
147 |
148 | vertices.Add(new Vector3(GetFloat(sb, ref splitStart, ref sbFloat),
149 | GetFloat(sb, ref splitStart, ref sbFloat),
150 | GetFloat(sb, ref splitStart, ref sbFloat)));
151 | }
152 | else if (sb[0] == 'v' && sb[1] == 't' && sb[2] == ' ') // UV
153 | {
154 | int splitStart = 3;
155 |
156 | uv.Add(new Vector4(GetFloat(sb, ref splitStart, ref sbFloat),
157 | GetFloat(sb, ref splitStart, ref sbFloat),
158 | GetFloat(sb, ref splitStart, ref sbFloat),
159 | GetFloat(sb, ref splitStart, ref sbFloat)));
160 | }
161 | else if (sb[0] == 'v' && sb[1] == 'n' && sb[2] == ' ') // Normals
162 | {
163 | int splitStart = 3;
164 |
165 | normals.Add(new Vector3(GetFloat(sb, ref splitStart, ref sbFloat),
166 | GetFloat(sb, ref splitStart, ref sbFloat),
167 | GetFloat(sb, ref splitStart, ref sbFloat)));
168 | }
169 | else if (sb[0] == 'v' && sb[1] == 'c' && sb[2] == ' ') // Vertex colors
170 | {
171 | int splitStart = 3;
172 |
173 | //Colors are written a, r, g, b
174 | byte a = Scale(GetFloat(sb, ref splitStart, ref sbFloat));
175 | byte r = Scale(GetFloat(sb, ref splitStart, ref sbFloat));
176 | byte g = Scale(GetFloat(sb, ref splitStart, ref sbFloat));
177 | byte b = Scale(GetFloat(sb, ref splitStart, ref sbFloat));
178 |
179 | if (!hasColor && r + g + b + a > 0)
180 | hasColor = true;
181 |
182 | colors.Add(new Color32(r, g, b, a));
183 | }
184 | else if (sb[0] == 'f' && sb[1] == ' ')
185 | {
186 | int splitStart = 2;
187 |
188 | int j = 1;
189 | intArray.Clear();
190 | int info = 0;
191 | // Add faceData, a face can contain multiple triangles, facedata is stored in following order vert, uv, normal. If uv or normal are / set it to a 0
192 | while (splitStart < sb.Length && char.IsDigit(sb[splitStart]))
193 | {
194 | faceData.Add(new Vector3Int(GetInt(sb, ref splitStart, ref sbFloat),
195 | GetInt(sb, ref splitStart, ref sbFloat),
196 | GetInt(sb, ref splitStart, ref sbFloat)));
197 | j++;
198 |
199 | intArray.Add(faceDataCount);
200 | faceDataCount++;
201 | }
202 |
203 | info += j;
204 | j = 1;
205 | while (j + 2 < info) //Create triangles out of the face data. There will generally be more than 1 triangle per face.
206 | {
207 | triangles.Add(intArray[0]);
208 | triangles.Add(intArray[j]);
209 | triangles.Add(intArray[j + 1]);
210 |
211 | j++;
212 | }
213 | }
214 | }
215 | }
216 |
217 | MaterialHandler mtlHandler = MaterialHandler.GetInstance();
218 | mtlHandler.LoadMaterial(Path.Combine(fileName.Substring(0, fileName.LastIndexOf(@"\")), mtlFile.ToString().Trim()));
219 | mtlHandler.RegisterMaterialForMesh(meshName, mtlName.ToString().Trim());
220 |
221 | if (hasColor)
222 | mtlHandler.SetMaterialShader(mtlName.ToString(), "texblend");
223 | }
224 |
225 | private float GetFloat(StringBuilder sb, ref int start, ref StringBuilder sbFloat)
226 | {
227 | sbFloat.Remove(0, sbFloat.Length);
228 | while (start < sb.Length &&
229 | (char.IsDigit(sb[start]) || sb[start] == '-' || sb[start] == '.'))
230 | {
231 | sbFloat.Append(sb[start]);
232 | start++;
233 | }
234 | start++;
235 |
236 | return ParseFloat(sbFloat);
237 | }
238 |
239 | private int GetInt(StringBuilder sb, ref int start, ref StringBuilder sbInt)
240 | {
241 | sbInt.Remove(0, sbInt.Length);
242 | while (start < sb.Length &&
243 | (char.IsDigit(sb[start])))
244 | {
245 | sbInt.Append(sb[start]);
246 | start++;
247 | }
248 | start++;
249 |
250 | return IntParseFast(sbInt);
251 | }
252 |
253 | private static float[] GenerateLookupTable()
254 | {
255 | var result = new float[(-MIN_POW_10 + MAX_POW_10) * 10];
256 | for (int i = 0; i < result.Length; i++)
257 | result[i] = (float)((i / NUM_POWS_10) *
258 | Mathf.Pow(10, i % NUM_POWS_10 + MIN_POW_10));
259 | return result;
260 | }
261 |
262 | private float ParseFloat(StringBuilder value)
263 | {
264 | float result = 0;
265 | bool negate = false;
266 | int len = value.Length;
267 | int decimalIndex = value.Length;
268 | for (int i = len - 1; i >= 0; i--)
269 | if (value[i] == '.')
270 | { decimalIndex = i; break; }
271 | int offset = -MIN_POW_10 + decimalIndex;
272 | for (int i = 0; i < decimalIndex; i++)
273 | if (i != decimalIndex && value[i] != '-')
274 | result += pow10[(value[i] - '0') * NUM_POWS_10 + offset - i - 1];
275 | else if (value[i] == '-')
276 | negate = true;
277 | for (int i = decimalIndex + 1; i < len; i++)
278 | if (i != decimalIndex)
279 | result += pow10[(value[i] - '0') * NUM_POWS_10 + offset - i];
280 | if (negate)
281 | result = -result;
282 | return result;
283 | }
284 |
285 | private int IntParseFast(StringBuilder value)
286 | {
287 | // An optimized int parse method.
288 | int result = 0;
289 | for (int i = 0; i < value.Length; i++)
290 | {
291 | result = 10 * result + (value[i] - 48);
292 | }
293 | return result;
294 | }
295 |
296 | private byte Scale(float f)
297 | {
298 | return (byte) (f * 255);
299 | }
300 | }
301 |
302 | public sealed class Vector3Int
303 | {
304 | public int x { get; set; }
305 | public int y { get; set; }
306 | public int z { get; set; }
307 |
308 | public Vector3Int(){}
309 |
310 | public Vector3Int(int x, int y, int z)
311 | {
312 | this.x = x;
313 | this.y = y;
314 | this.z = z;
315 | }
316 | }
--------------------------------------------------------------------------------
/FFXIVHousingSim/Assets/MaterialHandler.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections;
3 | using System.Collections.Generic;
4 | using System.IO;
5 | using UnityEngine;
6 | using UnityEngine.UI;
7 |
8 | //TODO write this like fastobjimporter eventually to see if it will increase speed
9 | public class MaterialHandler
10 | {
11 | //Whether or not to actually load textures, or just use default material
12 | private bool DebugLoadFiles = true;
13 |
14 | //This turns every shader into the shader specified by sh if true.
15 | private static bool shOverride = true;
16 | private static Shader sh = Shader.Find("Silent/FF14 World NonBlend");
17 |
18 | //TODO: Refactor to use model ids at some point if needed
19 | //Materials are registered in the object importer which doesn't see IDs
20 | private Dictionary _meshMaterialDictionary = new Dictionary();
21 | private Dictionary _materialDictionary = new Dictionary();
22 | private static readonly MaterialHandler Instance = new MaterialHandler();
23 |
24 | private Shader standard;
25 | private Shader nonBlend;
26 | private Shader texBlend;
27 | private Shader cutout;
28 | private Shader cutoutWind;
29 |
30 | private MaterialHandler()
31 | {
32 | LoadShaders();
33 |
34 | //Always have a backup plan
35 | LoadDefaultMaterial();
36 | }
37 |
38 | private void LoadShaders()
39 | {
40 | if (shOverride)
41 | {
42 | standard = sh;
43 | nonBlend = sh;
44 | texBlend = sh;
45 | cutout = sh;
46 | cutoutWind = sh;
47 | }
48 | else
49 | {
50 | standard = Shader.Find("Standard");
51 | nonBlend = Shader.Find("Silent/FF14 World NonBlend");
52 | texBlend = Shader.Find("Silent/FF14 World TexBlend");
53 | cutout = Shader.Find("Silent/FF14 World Cutout");
54 | cutoutWind = Shader.Find("Silent/FF14 World Cutout (Multisampling + Wind)");
55 | }
56 | }
57 |
58 | public static MaterialHandler GetInstance()
59 | {
60 | return Instance;
61 | }
62 |
63 | private void LoadDefaultMaterial()
64 | {
65 | Material thisMaterial = new Material(standard);
66 | thisMaterial.name = "DefaultMaterial";
67 | Texture2D tex = new Texture2D(1, 1);
68 | thisMaterial.SetTexture("_MainTex", tex);
69 |
70 | _materialDictionary.Add("default", thisMaterial);
71 | RegisterMaterialForMesh("default", "default");
72 | }
73 |
74 | public Boolean LoadMaterial(String materialPath)
75 | {
76 | if (!File.Exists(materialPath))
77 | return false;
78 |
79 | StreamReader stream = File.OpenText(materialPath);
80 | String mtlText = stream.ReadToEnd();
81 | stream.Close();
82 |
83 | Material thisMaterial = new Material(nonBlend);
84 |
85 | using (StringReader str = new StringReader(mtlText))
86 | {
87 | String thisLine = str.ReadLine();
88 |
89 | while (thisLine != null)
90 | {
91 | thisLine = thisLine.Trim();
92 | String[] splitLine = thisLine.Split(' ');
93 |
94 | switch (splitLine[0].Trim())
95 | {
96 | case "newmtl":
97 | if (!String.IsNullOrEmpty(splitLine[1]))
98 | thisMaterial.name = splitLine[1];
99 | Material mat;
100 | if (_materialDictionary.TryGetValue(thisMaterial.name, out mat))
101 | return true;
102 | break;
103 | case "map_Kd":
104 | {
105 | //TODO: fix alpha/cutout
106 |
107 | Texture existingTexture = thisMaterial.GetTexture("_Albedo0");
108 | Texture2D tex;
109 |
110 | bool hasAlphaInDiffuse;
111 | bool isDummy = splitLine[1].Contains("dummy");
112 |
113 | if (isDummy)
114 | {
115 | if (existingTexture != null)
116 | tex = existingTexture as Texture2D;
117 | else
118 | tex = Texture2D.blackTexture;
119 | }
120 | else
121 | tex = LoadTexture(Path.Combine(Directory.GetParent(materialPath).ToString(), splitLine[1].Trim()), out hasAlphaInDiffuse);
122 |
123 | //tex.alphaIsTransparency = true;
124 | // if (hasAlphaInDiffuse)
125 | // thisMaterial.shader = cutout;
126 |
127 | if (tex != null && existingTexture == null)
128 | thisMaterial.SetTexture("_Albedo0", tex);
129 | else if (tex != null)
130 | thisMaterial.SetTexture("_Albedo1", tex);
131 | }
132 | break;
133 | case "bump":
134 | {
135 | Texture existingTexture = thisMaterial.GetTexture("_NormalMap0");
136 | Texture2D tex;
137 | bool isDummy = splitLine[1].Contains("dummy");
138 |
139 | if (isDummy)
140 | {
141 | if (existingTexture != null)
142 | tex = existingTexture as Texture2D;
143 | else
144 | tex = Texture2D.blackTexture;
145 | }
146 | else
147 | tex = LoadTexture(Path.Combine(Directory.GetParent(materialPath).ToString(), splitLine[1].Trim()));
148 |
149 | //tex.alphaIsTransparency = true;
150 | //SetNormalMap(ref tex);
151 |
152 | if (tex != null && existingTexture == null)
153 | thisMaterial.SetTexture("_NormalMap0", tex);
154 | else if (tex != null)
155 | thisMaterial.SetTexture("_NormalMap1", tex);
156 | }
157 | break;
158 | case "map_Ks":
159 | {
160 | Texture existingTexture = thisMaterial.GetTexture("_Metallic0");
161 | Texture2D tex;
162 | bool isDummy = splitLine[1].Contains("dummy");
163 |
164 | if (isDummy)
165 | {
166 | if (existingTexture != null)
167 | tex = existingTexture as Texture2D;
168 | else
169 | tex = Texture2D.blackTexture;
170 | }
171 | else
172 | tex = LoadTexture(Path.Combine(Directory.GetParent(materialPath).ToString(), splitLine[1].Trim()));
173 |
174 | //tex.alphaIsTransparency = true;
175 | if (tex != null && existingTexture == null)
176 | thisMaterial.SetTexture("_Metallic0", tex);
177 | else if (tex != null)
178 | thisMaterial.SetTexture("_Metallic1", tex);
179 | }
180 | break;
181 | // case "map_Ka":
182 | // {
183 | // Texture2D tex = LoadTexture(Path.Combine(Directory.GetParent(materialPath).ToString(),
184 | // splitLine[1].Trim()));
185 | //
186 | // Texture existingTexture = thisMaterial.GetTexture("_EmissionMap");
187 | // if (tex != null && existingTexture == null)
188 | // thisMaterial.SetTexture("_EmissionMap", tex);
189 | // break;
190 | // }
191 | }
192 | thisLine = str.ReadLine();
193 | }
194 | }
195 |
196 | // if (!DebugLoadFiles)
197 | // Debug.LogFormat("Added material named {0} with shader {1}", thisMaterial.name, thisMaterial.shader.name);
198 | _materialDictionary.Add(thisMaterial.name, thisMaterial);
199 | return true;
200 | }
201 |
202 | private Texture2D SetNormalMap2(Texture2D tex) {
203 | Color[] colors = tex.GetPixels();
204 | for(int i=0; i
15 | /// Handles all extracted FFXIV data.
16 | ///
17 | public static class DataHandler
18 | {
19 | private static bool DebugLoadMap = true;
20 | private static bool DebugCustomLoad = false;
21 | private static bool DebugLoadExteriors = false;
22 |
23 | // private static int[] debugCustomLoadList =
24 | // {
25 | // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30
26 | // };
27 |
28 | private static int[] debugCustomLoadList =
29 | {
30 | 126
31 | };
32 |
33 | //Serialized FFXIV data
34 | private static List _wardInfo;
35 | private static HousingExteriorStructure[] _landSet;
36 | private static Dictionary _exteriorFixtures;
37 | private static HousingExteriorBlueprintSet _blueprints;
38 | private static Map _map;
39 |
40 | //Extracted model handling
41 | private static Dictionary _modelMeshes;
42 | private static Dictionary _exteriorFixtureMeshes;
43 | private static Dictionary _exteriorFixtureMeshTransforms;
44 |
45 | private static Territory _territory = (Territory) 999;
46 | private static string _teriStr;
47 |
48 | public static string teriStr
49 | {
50 | get { return _teriStr; }
51 | set
52 | {
53 | if (_teriStr == value)
54 | return;
55 |
56 | _teriStr = value;
57 |
58 | Debug.LogFormat("Territory changed to {0}", value);
59 |
60 | //TODO: When events implemented make this an event
61 | //CameraHandler[] c = Resources.FindObjectsOfTypeAll();
62 | //c[0]._territory = null;
63 |
64 | GameObject[] currentGameObjects = Resources.FindObjectsOfTypeAll();
65 |
66 | //Destroy old objects
67 | if (currentGameObjects.Length > defaultGameObjects.Length)
68 | foreach (GameObject obj in currentGameObjects)
69 | if (!defaultGameObjects.Contains(obj))
70 | UnityEngine.Object.Destroy(obj);
71 |
72 | LoadTerritory();
73 | }
74 | }
75 | public static Territory territory
76 | {
77 | get { return _territory; }
78 | set
79 | {
80 | if (_territory == value)
81 | return;
82 |
83 | _territory = value;
84 | Debug.LogFormat("Territory changed to {0}", value.ToString());
85 |
86 | //TODO: When events implemented make this an event
87 | CameraHandler[] c = Resources.FindObjectsOfTypeAll();
88 | c[0]._territory = value;
89 |
90 | GameObject[] currentGameObjects = Resources.FindObjectsOfTypeAll();
91 |
92 | //Destroy old objects
93 | if (currentGameObjects.Length > defaultGameObjects.Length)
94 | foreach (GameObject obj in currentGameObjects)
95 | if (!defaultGameObjects.Contains(obj))
96 | UnityEngine.Object.Destroy(obj);
97 |
98 | LoadTerritory();
99 | }
100 | }
101 |
102 | public static GameObject[] defaultGameObjects { get; set; }
103 |
104 | private static void LoadWardInfo()
105 | {
106 | string jsonText = File.ReadAllText(FFXIVHSPaths.GetWardInfoJson());
107 |
108 | _wardInfo = JsonConvert.DeserializeObject>(jsonText);
109 | }
110 |
111 | private static void LoadExteriorFixtures()
112 | {
113 | string jsonText = File.ReadAllText(FFXIVHSPaths.GetHousingExteriorJson());
114 |
115 | _exteriorFixtures = JsonConvert.DeserializeObject>(jsonText);
116 | }
117 |
118 | private static void LoadExteriorBlueprints()
119 | {
120 | string jsonText = File.ReadAllText(FFXIVHSPaths.GetHousingExteriorBlueprintSetJson());
121 |
122 | _blueprints = JsonConvert.DeserializeObject(jsonText);
123 | }
124 |
125 | private static void LoadLandset()
126 | {
127 | if (!DebugLoadExteriors)
128 | return;
129 |
130 | if (_exteriorFixtures == null)
131 | LoadExteriorFixtures();
132 |
133 | if (_blueprints == null)
134 | LoadExteriorBlueprints();
135 |
136 | string landSetPath = FFXIVHSPaths.GetWardLandsetJson(territory);
137 |
138 | if (!File.Exists(landSetPath))
139 | {
140 | //Main and subdivision, 60 plots
141 | _landSet = new HousingExteriorStructure[60];
142 | for (int i = 0; i < _landSet.Length; i++)
143 | {
144 | _landSet[i] = new HousingExteriorStructure();
145 | int numFixtureTypes = Enum.GetValues(typeof(FixtureType)).Length;
146 | _landSet[i].fixtures = new int[numFixtureTypes];
147 | }
148 |
149 | string jsonText = JsonConvert.SerializeObject(_landSet, Formatting.Indented);
150 | File.WriteAllText(landSetPath, jsonText);
151 | }
152 | else
153 | {
154 | string jsonText = File.ReadAllText(landSetPath);
155 | _landSet = JsonConvert.DeserializeObject(jsonText);
156 | }
157 |
158 | //TODO: move this, rewrite this ?
159 | for (int plotIndex = 0; plotIndex < _landSet.Length; plotIndex++)
160 | {
161 | Plot plotAt = GetPlot(_territory, plotIndex % 30 + 1, plotIndex > 29);
162 | if (_landSet[plotIndex].size == Size.s)
163 | {
164 | //Verify possibly unset size
165 | _landSet[plotIndex].size = plotAt.size;
166 | }
167 |
168 | if (_landSet[plotIndex].fixtures[(int) FixtureType.fnc - 1] == 0)
169 | _landSet[plotIndex].fixtures[(int) FixtureType.fnc - 1] = DefaultFences.fnc[(int) _territory];
170 |
171 | HousingExteriorBlueprint blueprint = _blueprints.set[(int) _landSet[plotIndex].size];
172 |
173 | //TODO: If you ever figure out how to tell which transforms are for which house size, fix this
174 | string groupName = "{0}_{1:D2}_{2}_house";
175 | string fixedWardName = _territory.ToString().ToLower().Substring(0, _territory.ToString().Length - 1) + '0';
176 | string strSize = _landSet[plotIndex].size.ToString();
177 |
178 | groupName = string.Format(groupName, fixedWardName, plotIndex + 1, strSize);
179 | Debug.Log(groupName);
180 | GameObject parentPlotObject = GameObject.Find(groupName);
181 |
182 | //For each fixture in our landset element
183 | for (int fixtureIndex = 0; fixtureIndex < _landSet[plotIndex].fixtures.Length; fixtureIndex++)
184 | {
185 | if (_landSet[plotIndex].fixtures[fixtureIndex] == 0)
186 | continue;
187 |
188 | FixtureType fixtureType = (FixtureType) fixtureIndex + 1;
189 |
190 | FFXIVHSLib.Transform[][] transformsForModels = null;
191 | Mesh[][][] meshes = GetMeshesForExteriorFixture(_landSet[plotIndex].fixtures[fixtureIndex], ref transformsForModels);
192 |
193 | //For each variant
194 | for (int variantIndex = 0; variantIndex < meshes.Length; variantIndex++)
195 | {
196 | if (blueprint.fixtureTransforms[fixtureType][variantIndex] == null ||
197 | meshes[variantIndex] == null)
198 | continue;
199 |
200 | //The set of gameobjects for this variant, 1 gameobject per model
201 | GameObject[] objects = new GameObject[meshes[variantIndex].Length];
202 |
203 | for (int modelIndex = 0; modelIndex < objects.Length; modelIndex++)
204 | {
205 | objects[modelIndex] = AddMeshToNewGameObject(meshes[variantIndex][modelIndex]);
206 | }
207 |
208 | foreach (FFXIVHSLib.Transform t in blueprint.fixtureTransforms[fixtureType][variantIndex])
209 | {
210 | GameObject variantBaseObject = new GameObject();
211 | variantBaseObject.GetComponent().SetParent(parentPlotObject.transform);
212 | variantBaseObject.GetComponent().localPosition = t.translation;
213 | variantBaseObject.GetComponent().localRotation = t.rotation;
214 | variantBaseObject.GetComponent().localScale = t.scale;
215 | variantBaseObject.name = string.Format("bp{0}_ft{1}_v{2}", _landSet[plotIndex].size, fixtureType, variantIndex);
216 |
217 | for (int modelIndex = 0; modelIndex < objects.Length; modelIndex++)
218 | {
219 | if (objects[modelIndex] == null)
220 | continue;
221 |
222 | FFXIVHSLib.Transform modelTransform = transformsForModels[variantIndex][modelIndex];
223 |
224 | GameObject addedModel = UnityEngine.Object.Instantiate(objects[modelIndex]);
225 | addedModel.GetComponent().SetParent(variantBaseObject.GetComponent());
226 | addedModel.GetComponent().localPosition = modelTransform.translation;
227 | addedModel.GetComponent().localRotation = modelTransform.rotation;
228 | addedModel.GetComponent().localScale = modelTransform.scale;
229 | addedModel.name = addedModel.name.Replace("(Clone)", "_") + string.Format("{0}_{1}_{2}", fixtureIndex, variantIndex, modelIndex);
230 | addedModel.SetActive(true);
231 |
232 | UnityEngine.Object.Destroy(objects[modelIndex]);
233 | }
234 | }
235 | }
236 | }
237 | }
238 | }
239 |
240 | private static void LoadMapTerrainInfo()
241 | {
242 | UnityEngine.Debug.Log(teriStr);//
243 | string jsonText = File.ReadAllText(FFXIVHSPaths.GetTerritoryJson(teriStr));
244 | //
245 | _map = JsonConvert.DeserializeObject