├── .github └── workflows │ ├── build.yaml │ ├── documentation.yml │ ├── package.yaml │ ├── release.yaml │ └── tests.yaml ├── .gitignore ├── .vsconfig ├── Assembly-CSharp-Editor.csproj ├── Assets ├── MackySoft.meta ├── MackySoft │ ├── MackySoft.Modiferty.meta │ └── MackySoft.Modiferty │ │ ├── Editor.meta │ │ ├── Editor │ │ ├── MackySoft.Modiferty.Editor.asmdef │ │ ├── MackySoft.Modiferty.Editor.asmdef.meta │ │ ├── ModifiablePropertyDrawer.cs │ │ └── ModifiablePropertyDrawer.cs.meta │ │ ├── Example.meta │ │ ├── Example │ │ ├── Runtime.meta │ │ └── Runtime │ │ │ ├── Character.cs │ │ │ ├── Character.cs.meta │ │ │ ├── MackySoft.Modiferty.Example.asmdef │ │ │ └── MackySoft.Modiferty.Example.asmdef.meta │ │ ├── External.meta │ │ ├── External │ │ ├── UniRx.meta │ │ └── UniRx │ │ │ ├── Runtime.meta │ │ │ ├── Runtime │ │ │ ├── MackySoft.Modiferty.UniRx.asmdef │ │ │ ├── MackySoft.Modiferty.UniRx.asmdef.meta │ │ │ ├── Modifiers.meta │ │ │ ├── Modifiers │ │ │ │ ├── ReactiveOperatorModifierBase.cs │ │ │ │ ├── ReactiveOperatorModifierBase.cs.meta │ │ │ │ ├── ReactiveSetModifier.cs │ │ │ │ └── ReactiveSetModifier.cs.meta │ │ │ ├── Properties.meta │ │ │ ├── Properties │ │ │ │ ├── ReactiveModifiableFloat.cs │ │ │ │ ├── ReactiveModifiableFloat.cs.meta │ │ │ │ ├── ReactiveModifiableInt.cs │ │ │ │ └── ReactiveModifiableInt.cs.meta │ │ │ ├── ReactiveModifiableProperty.cs │ │ │ ├── ReactiveModifiableProperty.cs.meta │ │ │ ├── ReactiveModifierList.cs │ │ │ └── ReactiveModifierList.cs.meta │ │ │ ├── Tests.meta │ │ │ └── Tests │ │ │ ├── Editor.meta │ │ │ └── Editor │ │ │ ├── MackySoft.Modiferty.UniRx.Editor.Tests.asmdef │ │ │ ├── MackySoft.Modiferty.UniRx.Editor.Tests.asmdef.meta │ │ │ ├── ReactiveModifiableIntTests.cs │ │ │ ├── ReactiveModifiableIntTests.cs.meta │ │ │ ├── ReactiveModifierListTests.cs │ │ │ └── ReactiveModifierListTests.cs.meta │ │ ├── Runtime.meta │ │ ├── Runtime │ │ ├── IModifiablePropertyExtensions.cs │ │ ├── IModifiablePropertyExtensions.cs.meta │ │ ├── IModifier.cs │ │ ├── IModifier.cs.meta │ │ ├── MackySoft.Modiferty.Runtime.asmdef │ │ ├── MackySoft.Modiferty.Runtime.asmdef.meta │ │ ├── ModifieableProperty.cs │ │ ├── ModifieableProperty.cs.meta │ │ ├── ModifierList.cs │ │ ├── ModifierList.cs.meta │ │ ├── ModifierListExtensions.cs │ │ ├── ModifierListExtensions.cs.meta │ │ ├── Modifiers.meta │ │ ├── Modifiers │ │ │ ├── CreateModifier.cs │ │ │ ├── CreateModifier.cs.meta │ │ │ ├── OperatorModifierBase.cs │ │ │ ├── OperatorModifierBase.cs.meta │ │ │ ├── SetModifier.cs │ │ │ └── SetModifier.cs.meta │ │ ├── Properties.meta │ │ ├── Properties │ │ │ ├── ModifiableFloat.cs │ │ │ ├── ModifiableFloat.cs.meta │ │ │ ├── ModifiableInt.cs │ │ │ └── ModifiableInt.cs.meta │ │ ├── Utilities.meta │ │ └── Utilities │ │ │ ├── RoundUtility.cs │ │ │ └── RoundUtility.cs.meta │ │ ├── Tests.meta │ │ ├── Tests │ │ ├── Editor.meta │ │ └── Editor │ │ │ ├── MackySoft.Modiferty.Tests.Editor.asmdef │ │ │ ├── MackySoft.Modiferty.Tests.Editor.asmdef.meta │ │ │ ├── ModifiableIntTests.cs │ │ │ └── ModifiableIntTests.cs.meta │ │ ├── package.json │ │ └── package.json.meta ├── PackageTools.meta └── PackageTools │ ├── Editor.meta │ └── Editor │ ├── UnityPackageExporter.cs │ └── UnityPackageExporter.cs.meta ├── Documentation ├── changelog │ ├── CHANGELOG.md │ └── toc.yml ├── docfx.json ├── filterConfig.yml └── toc.yml ├── LICENSE ├── MackySoft.Modiferty.Editor.Tests.csproj ├── MackySoft.Modiferty.Editor.csproj ├── MackySoft.Modiferty.Example.csproj ├── MackySoft.Modiferty.UniRx.Editor.Tests.csproj ├── MackySoft.Modiferty.UniRx.csproj ├── MackySoft.Modiferty.csproj ├── Modiferty.sln ├── Packages ├── manifest.json └── packages-lock.json ├── ProjectSettings ├── AudioManager.asset ├── ClusterInputManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── NavMeshAreas.asset ├── PackageManagerSettings.asset ├── Physics2DSettings.asset ├── PresetManager.asset ├── ProjectSettings.asset ├── ProjectVersion.txt ├── QualitySettings.asset ├── TagManager.asset ├── TimeManager.asset ├── UnityConnectSettings.asset ├── VFXManager.asset ├── VersionControlSettings.asset └── XRSettings.asset ├── README.md ├── UniRx.csproj └── _config.yml /.github/workflows/build.yaml: -------------------------------------------------------------------------------- 1 | name: Build 2 | 3 | on: 4 | pull_request: {} 5 | push: { branches: [main] } 6 | 7 | jobs: 8 | build: 9 | name: ${{ matrix.targetPlatform }} 10 | if: "((github.event_name == 'push' && github.repository_owner == 'mackysoft') || startsWith(github.event.pull_request.head.label, 'mackysoft:'))" 11 | runs-on: ubuntu-latest 12 | strategy: 13 | fail-fast: false 14 | matrix: 15 | targetPlatform: 16 | - StandaloneOSX # Build a macOS standalone (Intel 64-bit). 17 | - StandaloneWindows # Build a Windows standalone. 18 | - StandaloneWindows64 # Build a Windows 64-bit standalone. 19 | - StandaloneLinux64 # Build a Linux 64-bit standalone. 20 | - iOS # Build an iOS player. 21 | - Android # Build an Android .apk standalone app. 22 | - WebGL # WebGL. 23 | 24 | steps: 25 | # Checkout 26 | - name: Checkout 27 | uses: actions/checkout@v2 28 | with: 29 | fetch-depth: 0 30 | lfs: true 31 | 32 | # Cache 33 | - name: Cache 34 | uses: actions/cache@v2 35 | with: 36 | path: Library 37 | key: Library-${{ matrix.targetPlatform }} 38 | restore-keys: Library- 39 | 40 | # Build 41 | - name: Build 42 | uses: game-ci/unity-builder@v2 43 | env: 44 | UNITY_LICENSE: ${{ secrets.UNITY_LICENSE_2020 }} 45 | with: 46 | targetPlatform: ${{ matrix.targetPlatform }} -------------------------------------------------------------------------------- /.github/workflows/documentation.yml: -------------------------------------------------------------------------------- 1 | name: Documentation 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | 8 | jobs: 9 | # Build the documentation 10 | build: 11 | runs-on: windows-latest # Required by DocFX 12 | steps: 13 | - name: Checkout 14 | uses: actions/checkout@v2 15 | # with: 16 | # submodules: true 17 | 18 | - name: Install DocFX 19 | run: choco install -y docfx 20 | 21 | - name: Use README.md as index.md 22 | run: cp README.md Documentation/index.md 23 | 24 | - name: Build 25 | run: docfx Documentation/docfx.json 26 | 27 | # Upload the generated documentation 28 | - name: Upload site artifact 29 | uses: actions/upload-artifact@v1 30 | with: 31 | name: _site 32 | path: _site # Must equals the 'build.dest' value on your docfx.json 33 | 34 | # Deploy the generated documentation to the gh-pages branch 35 | deploy: 36 | needs: build 37 | runs-on: ubuntu-latest 38 | steps: 39 | - name: Checkout 40 | uses: actions/checkout@v2 41 | # with: 42 | # submodules: true 43 | 44 | # Download the generated documentation 45 | - name: Download site artifact 46 | uses: actions/download-artifact@v1 47 | with: 48 | name: _site 49 | 50 | - name: Deploy 51 | uses: peaceiris/actions-gh-pages@v3 52 | with: 53 | github_token: ${{ secrets.GITHUB_TOKEN }} 54 | publish_branch: gh-pages 55 | publish_dir: _site -------------------------------------------------------------------------------- /.github/workflows/package.yaml: -------------------------------------------------------------------------------- 1 | name: Export Package 2 | 3 | on: 4 | pull_request: {} 5 | push: { branches: [main] } 6 | 7 | env: 8 | UNITY_LICENSE: ${{ secrets.UNITY_LICENSE_2020 }} 9 | 10 | jobs: 11 | build: 12 | name: Build UnityPackage 13 | runs-on: ubuntu-latest 14 | steps: 15 | # Checkout 16 | - name: Checkout repository 17 | uses: actions/checkout@v2 18 | with: 19 | lfs: true 20 | 21 | # Cache 22 | - name: Cache 23 | uses: actions/cache@v2 24 | with: 25 | path: Library 26 | key: Library 27 | restore-keys: Library- 28 | 29 | # Build 30 | - name: Build .unitypackage 31 | uses: game-ci/unity-builder@v2 32 | with: 33 | unityVersion: 2020.3.4f1 34 | buildMethod: MackySoft.PackageTools.Editor.UnityPackageExporter.Export 35 | 36 | # Upload 37 | - name: Upload .unitypackage 38 | uses: actions/upload-artifact@v2 39 | with: 40 | name: Unity Package 41 | path: Build -------------------------------------------------------------------------------- /.github/workflows/release.yaml: -------------------------------------------------------------------------------- 1 | name: Release 2 | 3 | on: 4 | workflow_dispatch: 5 | inputs: 6 | tag: 7 | description: "tag: git tag you want create. (sample 1.0.0)" 8 | required: true 9 | 10 | env: 11 | GIT_TAG: ${{ github.event.inputs.tag }} 12 | 13 | jobs: 14 | update-packagejson: 15 | runs-on: ubuntu-latest 16 | env: 17 | TARGET_FILE: ./Assets/MackySoft/MackySoft.Modiferty/package.json 18 | outputs: 19 | sha: ${{ steps.commit.outputs.sha }} 20 | steps: 21 | - uses: actions/checkout@v2 22 | - name: Output package.json (Before) 23 | run: cat ${{ env.TARGET_FILE}} 24 | 25 | - name: Update package.json to version ${{ env.GIT_TAG }} 26 | run: sed -i -e "s/\(\"version\":\) \"\(.*\)\",/\1 \"${{ env.GIT_TAG }}\",/" ${{ env.TARGET_FILE }} 27 | 28 | - name: Check update 29 | id: check_update 30 | run: | 31 | cat ${{ env.TARGET_FILE}} 32 | git diff --exit-code || echo "::set-output name=changed::1" 33 | 34 | - name: Commit files 35 | id: commit 36 | if: steps.check_update.outputs.changed == '1' 37 | run: | 38 | git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com" 39 | git config --local user.name "github-actions[bot]" 40 | git commit -m "feat: Update package.json to ${{ env.GIT_TAG }}" -a 41 | echo "::set-output name=sha::$(git rev-parse HEAD)" 42 | 43 | - name: Check sha 44 | run: echo "SHA ${SHA}" 45 | env: 46 | SHA: ${{ steps.commit.outputs.sha }} 47 | 48 | - name: Create Tag 49 | if: steps.check_update.outputs.changed == '1' 50 | run: git tag ${{ env.GIT_TAG }} 51 | 52 | - name: Push changes 53 | if: steps.check_update.outputs.changed == '1' 54 | uses: ad-m/github-push-action@master 55 | with: 56 | github_token: ${{ secrets.GITHUB_TOKEN }} 57 | branch: ${{ github.ref }} 58 | tags: true 59 | 60 | build: 61 | needs: [update-packagejson] 62 | strategy: 63 | matrix: 64 | unity: ["2020.3.8f1"] 65 | include: 66 | - unityVersion: 2020.3.8f1 67 | license: UNITY_LICENSE_2020 68 | runs-on: ubuntu-latest 69 | timeout-minutes: 15 70 | steps: 71 | - run: echo ${{ needs.update-packagejson.outputs.sha }} 72 | - uses: actions/checkout@v2 73 | with: 74 | ref: ${{ needs.update-packagejson.outputs.sha }} 75 | 76 | - name: Export unitypackage 77 | uses: game-ci/unity-builder@v2 78 | env: 79 | UNITY_LICENSE: ${{ secrets[matrix.license] }} 80 | with: 81 | projectPath: . 82 | unityVersion: ${{ matrix.unityVersion }} 83 | targetPlatform: StandaloneLinux64 84 | buildMethod: MackySoft.PackageTools.Editor.UnityPackageExporter.Export 85 | versioning: None 86 | 87 | - name: check all .meta is commited 88 | run: | 89 | if git ls-files --others --exclude-standard -t | grep --regexp='[.]meta$'; then 90 | echo "Detected .meta file generated. Do you forgot commit a .meta file?" 91 | exit 1 92 | else 93 | echo "Great, all .meta files are commited." 94 | fi 95 | working-directory: . 96 | 97 | # Store artifacts. 98 | - uses: actions/upload-artifact@v2 99 | with: 100 | name: Modiferty.unitypackage 101 | path: ./Build/Modiferty.unitypackage 102 | 103 | create-release: 104 | needs: [update-packagejson, build] 105 | runs-on: ubuntu-latest 106 | steps: 107 | # Create Releases 108 | - uses: actions/create-release@v1 109 | id: create_release 110 | env: 111 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 112 | with: 113 | tag_name: ${{ env.GIT_TAG }} 114 | release_name: ${{ env.GIT_TAG }} 115 | commitish: ${{ needs.update-packagejson.outputs.sha }} 116 | draft: true 117 | prerelease: false 118 | 119 | # Download(All) Artifacts to current directory 120 | - uses: actions/download-artifact@v2 121 | 122 | # Upload to Releases(unitypackage) 123 | - uses: actions/upload-release-asset@v1 124 | env: 125 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 126 | with: 127 | upload_url: ${{ steps.create_release.outputs.upload_url }} 128 | asset_path: ./Modiferty.unitypackage/Modiferty.unitypackage 129 | asset_name: Modiferty.unitypackage 130 | asset_content_type: application/octet-stream -------------------------------------------------------------------------------- /.github/workflows/tests.yaml: -------------------------------------------------------------------------------- 1 | name: Tests 2 | 3 | on: [push, pull_request] 4 | 5 | jobs: 6 | test: 7 | name: ${{ matrix.testMode }} on ${{ matrix.unityVersion }} 8 | runs-on: ubuntu-latest 9 | strategy: 10 | fail-fast: false 11 | matrix: 12 | projectPath: 13 | - . 14 | unityVersion: 15 | - 2020.3.8f1 16 | testMode: 17 | - editmode 18 | steps: 19 | # Checkout 20 | - name: Checkout 21 | uses: actions/checkout@v2 22 | with: 23 | lfs: true 24 | 25 | # Cache 26 | - name: Cache 27 | uses: actions/cache@v2 28 | with: 29 | path: ${{ matrix.projectPath }}/Library 30 | key: Library-${{ matrix.projectPath }} 31 | restore-keys: | 32 | Library- 33 | 34 | # Tests 35 | - name: Tests 36 | uses: game-ci/unity-test-runner@v2 37 | id: tests 38 | env: 39 | UNITY_LICENSE: ${{ secrets.UNITY_LICENSE_2020 }} 40 | with: 41 | projectPath: ${{ matrix.projectPath }} 42 | unityVersion: ${{ matrix.unityVersion }} 43 | testMode: ${{ matrix.testMode }} 44 | artifactsPath: ${{ matrix.testMode }}-artifacts 45 | checkName: ${{ matrix.testMode }} Test Results 46 | 47 | # Upload Artifact 48 | - name: Upload Artifact 49 | uses: actions/upload-artifact@v2 50 | if: always() 51 | with: 52 | name: Test results for ${{ matrix.testMode }} 53 | path: ${{ steps.tests.outputs.artifactsPath }} 54 | 55 | reportSlack: 56 | name: ${{ matrix.testMode }} report 57 | runs-on: ubuntu-latest 58 | strategy: 59 | matrix: 60 | testMode: 61 | - editmode 62 | needs: test 63 | steps: 64 | 65 | # Download Artifact 66 | - name: Download Artifact 67 | uses: actions/download-artifact@main 68 | with: 69 | name: Test results for ${{ matrix.testMode }} 70 | path: ${{ matrix.testMode }}-artifacts 71 | 72 | # Clone NUnitXmlReporter 73 | - name: Clone NUnitXmlReporter 74 | run: git clone https://github.com/pCYSl5EDgo/NUnitXmlReporter.git 75 | 76 | # Setup .NET 77 | - name: Setup .NET 78 | uses: actions/setup-dotnet@v1.7.2 79 | with: 80 | dotnet-version: '3.0.100' 81 | 82 | # Report Result to Slack 83 | - name: Report Result to Slack 84 | env: 85 | SLACK: ${{ secrets.SLACK_HOOK }} 86 | run: | 87 | cd NUnitXmlReporter 88 | dotnet run ../${{ matrix.testMode }}-artifacts/${{ matrix.testMode }}-results.xml ../slackJson --slack-block $GITHUB_REPOSITORY $GITHUB_SHA || INPUT_RESULT=$? 89 | cd .. 90 | curl -X POST -H 'ContentX-type:application/json' --data "$(cat slackJson)" $SLACK 91 | exit $INPUT_RESULT -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # This .gitignore file should be placed at the root of your Unity project directory 2 | # 3 | # Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore 4 | # 5 | /[Ll]ibrary/ 6 | /[Tt]emp/ 7 | /[Oo]bj/ 8 | /[Bb]uild/ 9 | /[Bb]uilds/ 10 | /[Ll]ogs/ 11 | /[Uu]ser[Ss]ettings/ 12 | 13 | # MemoryCaptures can get excessive in size. 14 | # They also could contain extremely sensitive data 15 | /[Mm]emoryCaptures/ 16 | 17 | # Asset meta data should only be ignored when the corresponding asset is also ignored 18 | !/[Aa]ssets/**/*.meta 19 | 20 | # Uncomment this line if you wish to ignore the asset store tools plugin 21 | # /[Aa]ssets/AssetStoreTools* 22 | 23 | # Autogenerated Jetbrains Rider plugin 24 | /[Aa]ssets/Plugins/Editor/JetBrains* 25 | 26 | # Visual Studio cache directory 27 | .vs/ 28 | 29 | # Gradle cache directory 30 | .gradle/ 31 | 32 | # Autogenerated VS/MD/Consulo solution and project files 33 | ExportedObj/ 34 | .consulo/ 35 | *.unityproj 36 | *.suo 37 | *.tmp 38 | *.user 39 | *.userprefs 40 | *.pidb 41 | *.booproj 42 | *.svd 43 | *.pdb 44 | *.mdb 45 | *.opendb 46 | *.VC.db 47 | 48 | # Unity3D generated meta files 49 | *.pidb.meta 50 | *.pdb.meta 51 | *.mdb.meta 52 | 53 | # Unity3D generated file on crash reports 54 | sysinfo.txt 55 | 56 | # Builds 57 | *.apk 58 | *.unitypackage 59 | 60 | # Crashlytics generated file 61 | crashlytics-build.properties 62 | 63 | # Packed Addressables 64 | /[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin* 65 | 66 | # Temporary auto-generated Android Assets 67 | /[Aa]ssets/[Ss]treamingAssets/aa.meta 68 | /[Aa]ssets/[Ss]treamingAssets/aa/* 69 | 70 | # Asset Store Tools 71 | /[Aa]ssets/[Aa]ssetStoreTools.meta 72 | /[Aa]ssets/[Aa]ssetStoreTools/ 73 | 74 | # Plugins 75 | /[Aa]ssets/[Pp]lugins.meta 76 | /[Aa]ssets/[Pp]lugins/ 77 | 78 | # Documentation 79 | Documentation/api/ 80 | Documentation/index.* 81 | _site/ 82 | Assets/**/obj* -------------------------------------------------------------------------------- /.vsconfig: -------------------------------------------------------------------------------- 1 | { 2 | "version": "1.0", 3 | "components": [ 4 | "Microsoft.VisualStudio.Workload.ManagedGame" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /Assets/MackySoft.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7cc5a0b424553cc49a8eb10f16c4c558 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2afceae778f65374fab28a90653ed41b 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a9b10a8fb3bdae249ab91c5990832f53 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Editor/MackySoft.Modiferty.Editor.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "MackySoft.Modiferty.Editor", 3 | "references": [ 4 | "GUID:e695879245fa2de4a81d0b0f517b15c3" 5 | ], 6 | "includePlatforms": [ 7 | "Editor" 8 | ], 9 | "excludePlatforms": [], 10 | "allowUnsafeCode": false, 11 | "overrideReferences": false, 12 | "precompiledReferences": [], 13 | "autoReferenced": true, 14 | "defineConstraints": [], 15 | "versionDefines": [], 16 | "noEngineReferences": false 17 | } -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Editor/MackySoft.Modiferty.Editor.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 40928bc94bf6c9d4ab69789b56aaff51 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Editor/ModifiablePropertyDrawer.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEditor; 3 | using MackySoft.Modiferty.Modifiers; 4 | 5 | namespace MackySoft.Modiferty { 6 | 7 | [CustomPropertyDrawer(typeof(ModifieableProperty<>),true)] 8 | public class ModifiablePropertyDrawer : PropertyDrawer { 9 | public override void OnGUI (Rect position,SerializedProperty property,GUIContent label) { 10 | var baseValue = property.FindPropertyRelative("m_BaseValue"); 11 | EditorGUI.PropertyField(position,baseValue,label); 12 | } 13 | } 14 | 15 | [CustomPropertyDrawer(typeof(OperatorModifierBase<,>),true)] 16 | public class RoundingModifierDrawer : PropertyDrawer { 17 | 18 | static readonly float k_PropertyHeight = EditorGUIUtility.singleLineHeight * 2f + EditorGUIUtility.standardVerticalSpacing; 19 | 20 | public override void OnGUI (Rect position,SerializedProperty property,GUIContent label) { 21 | EditorGUI.BeginProperty(position,label,property); 22 | 23 | var baseValue = property.FindPropertyRelative("m_BaseValue"); 24 | var roundingMethod = property.FindPropertyRelative("m_RoundingMethod"); 25 | float roundingMethodWidth = (roundingMethod != null) ? (position.width - EditorGUIUtility.labelWidth) * 0.5f : 0f; 26 | 27 | var baseValuePosition = new Rect(position.x,position.y,position.width - roundingMethodWidth,EditorGUIUtility.singleLineHeight); 28 | EditorGUI.PropertyField(baseValuePosition,baseValue,label); 29 | 30 | if (roundingMethod != null) { 31 | var roundingMethodPosition = new Rect(baseValuePosition.xMax,position.y,roundingMethodWidth,baseValuePosition.height); 32 | EditorGUI.PropertyField(roundingMethodPosition,roundingMethod,GUIContent.none); 33 | } 34 | 35 | var priority = property.FindPropertyRelative("m_Priority"); 36 | EditorGUI.indentLevel++; 37 | var priorityPosition = EditorGUI.IndentedRect(position); 38 | priorityPosition.height = EditorGUIUtility.singleLineHeight; 39 | priorityPosition.y += EditorGUIUtility.standardVerticalSpacing + EditorGUIUtility.singleLineHeight; 40 | EditorGUI.indentLevel--; 41 | EditorGUI.PropertyField(priorityPosition,priority); 42 | 43 | EditorGUI.EndProperty(); 44 | } 45 | 46 | public override float GetPropertyHeight (SerializedProperty property,GUIContent label) { 47 | return k_PropertyHeight; 48 | } 49 | 50 | } 51 | 52 | [CustomPropertyDrawer(typeof(OperatorModifierInt))] 53 | public class OperatorModifierDrawer : PropertyDrawer { 54 | 55 | static readonly float k_PropertyHeight = EditorGUIUtility.singleLineHeight * 3f + EditorGUIUtility.standardVerticalSpacing; 56 | 57 | public override void OnGUI (Rect position,SerializedProperty property,GUIContent label) { 58 | EditorGUI.BeginProperty(position,label,property); 59 | 60 | position.height = EditorGUIUtility.singleLineHeight; 61 | 62 | var type = property.FindPropertyRelative("m_Type"); 63 | EditorGUI.PropertyField(position,type,label); 64 | 65 | var baseValue = property.FindPropertyRelative("m_BaseValue"); 66 | var roundingMethod = property.FindPropertyRelative("m_RoundingMethod"); 67 | float roundingMethodWidth = (roundingMethod != null) ? (position.width - EditorGUIUtility.labelWidth) * 0.5f : 0f; 68 | 69 | EditorGUI.indentLevel++; 70 | var baseValuePosition = EditorGUI.IndentedRect(position); 71 | baseValuePosition.width = baseValuePosition.width - roundingMethodWidth; 72 | baseValuePosition.height = EditorGUIUtility.singleLineHeight; 73 | baseValuePosition.y += EditorGUIUtility.standardVerticalSpacing + EditorGUIUtility.singleLineHeight; 74 | EditorGUI.indentLevel--; 75 | 76 | EditorGUI.PropertyField(baseValuePosition,baseValue); 77 | 78 | if (roundingMethod != null) { 79 | var roundingMethodPosition = new Rect(baseValuePosition.xMax,baseValuePosition.y,roundingMethodWidth,baseValuePosition.height); 80 | EditorGUI.PropertyField(roundingMethodPosition,roundingMethod,GUIContent.none); 81 | } 82 | 83 | var priority = property.FindPropertyRelative("m_Priority"); 84 | var priorityPosition = baseValuePosition; 85 | priorityPosition.width += roundingMethodWidth; 86 | priorityPosition.y += EditorGUIUtility.standardVerticalSpacing + EditorGUIUtility.singleLineHeight; 87 | EditorGUI.PropertyField(priorityPosition,priority); 88 | 89 | EditorGUI.EndProperty(); 90 | } 91 | 92 | public override float GetPropertyHeight (SerializedProperty property,GUIContent label) { 93 | return k_PropertyHeight; 94 | } 95 | 96 | } 97 | } -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Editor/ModifiablePropertyDrawer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 64de5e5b96a4def43beb013c76590d7d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Example.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7632978d3f6a9274383a4ca3224e9444 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Example/Runtime.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 76ac2027284c1734086abae3e7b83edb 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Example/Runtime/Character.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using UnityEngine; 3 | 4 | namespace MackySoft.Modiferty.Example { 5 | public class Character : MonoBehaviour { 6 | 7 | public int health = 3; 8 | public ModifiableInt attackPower = new ModifiableInt(2); 9 | 10 | public void Attack (Character target) { 11 | target.health -= attackPower.Evaluate(); 12 | } 13 | 14 | } 15 | 16 | public class CharacterWithoutModiferty : MonoBehaviour { 17 | 18 | public int health = 3; 19 | public int attackPower = 2; 20 | public int additionalAttackPower = 0; 21 | 22 | public void Attack (Character target) { 23 | target.health -= attackPower + additionalAttackPower; 24 | } 25 | } 26 | 27 | public class Character3 : MonoBehaviour { 28 | public int health = 3; 29 | public int attackPower = 2; 30 | public List attackPowerMultiply = new List(); 31 | 32 | public void Attack (Character target) { 33 | int result = attackPower; 34 | foreach (float multiply in attackPowerMultiply) { 35 | 36 | } 37 | target.health -= attackPower + result; 38 | } 39 | } 40 | 41 | public class PowerUpItemWithoutModiferty : MonoBehaviour { 42 | 43 | } 44 | 45 | } -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Example/Runtime/Character.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ef5b4b4ea1b2e634d8a737050453d9a7 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Example/Runtime/MackySoft.Modiferty.Example.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "MackySoft.Modiferty.Example", 3 | "references": [ 4 | "GUID:e695879245fa2de4a81d0b0f517b15c3" 5 | ], 6 | "includePlatforms": [], 7 | "excludePlatforms": [], 8 | "allowUnsafeCode": false, 9 | "overrideReferences": false, 10 | "precompiledReferences": [], 11 | "autoReferenced": true, 12 | "defineConstraints": [], 13 | "versionDefines": [], 14 | "noEngineReferences": false 15 | } -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Example/Runtime/MackySoft.Modiferty.Example.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f5649f99d5c06384f9fa0d33a38bb489 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/External.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1de632186ba7e8640b8f6713522abfaf 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/External/UniRx.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b05a9bdb45ae2ae4e9d03eb83d7ec69e 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/External/UniRx/Runtime.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 40c358315afa1614dbd8c3cc948f2912 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/External/UniRx/Runtime/MackySoft.Modiferty.UniRx.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "MackySoft.Modiferty.UniRx", 3 | "references": [ 4 | "GUID:e695879245fa2de4a81d0b0f517b15c3", 5 | "GUID:560b04d1a97f54a4e82edc0cbbb69285" 6 | ], 7 | "includePlatforms": [], 8 | "excludePlatforms": [], 9 | "allowUnsafeCode": false, 10 | "overrideReferences": false, 11 | "precompiledReferences": [], 12 | "autoReferenced": true, 13 | "defineConstraints": [ 14 | "MODIFERTY_UNIRX" 15 | ], 16 | "versionDefines": [], 17 | "noEngineReferences": false 18 | } -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/External/UniRx/Runtime/MackySoft.Modiferty.UniRx.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fede8c6c4e4bddd44b1db8410752c53f 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/External/UniRx/Runtime/Modifiers.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: aaf3b70cfd3d66544a16f48b69f07e18 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/External/UniRx/Runtime/Modifiers/ReactiveOperatorModifierBase.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace MackySoft.Modiferty.Modifiers { 4 | 5 | public abstract class ReactiveOperatorModifierBase : ReactiveModifiableProperty, IModifier { 6 | 7 | [SerializeField] 8 | int m_Priority; 9 | 10 | public int Priority { 11 | get => m_Priority; 12 | set => m_Priority = value; 13 | } 14 | 15 | protected ReactiveOperatorModifierBase () : this(default) { 16 | } 17 | protected ReactiveOperatorModifierBase (TRHS baseValue) : base(baseValue) { 18 | } 19 | 20 | public abstract TResult Evaluate (TResult value); 21 | } 22 | 23 | public abstract class ReactiveOperatorModifierBase : ReactiveOperatorModifierBase { 24 | protected ReactiveOperatorModifierBase () : this(default) { 25 | } 26 | protected ReactiveOperatorModifierBase (T baseValue) : base(baseValue) { 27 | } 28 | } 29 | 30 | } -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/External/UniRx/Runtime/Modifiers/ReactiveOperatorModifierBase.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8fa037111b41ea5499194a87469b1540 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/External/UniRx/Runtime/Modifiers/ReactiveSetModifier.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | 4 | namespace MackySoft.Modiferty { 5 | 6 | [Serializable] 7 | public class ReactiveSetModifier : ReactiveModifiableProperty, IModifier { 8 | 9 | [SerializeField] 10 | int m_Priority; 11 | 12 | public int Priority { 13 | get => m_Priority; 14 | set => m_Priority = value; 15 | } 16 | 17 | public ReactiveSetModifier () : this(default) { 18 | } 19 | 20 | public ReactiveSetModifier (T baseValue) : base(baseValue) { 21 | } 22 | 23 | public T Evaluate (T value) { 24 | return Evaluate(); 25 | } 26 | 27 | } 28 | } -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/External/UniRx/Runtime/Modifiers/ReactiveSetModifier.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b003abd632ad82a448d7d636fcfeb4e5 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/External/UniRx/Runtime/Properties.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: db8ecaa3b45a7e94b87b93096c47574e 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/External/UniRx/Runtime/Properties/ReactiveModifiableFloat.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | using MackySoft.Modiferty.Modifiers; 4 | 5 | namespace MackySoft.Modiferty { 6 | 7 | [Serializable] 8 | public class ReactiveModifiableFloat : ReactiveModifiableProperty { 9 | public ReactiveModifiableFloat () : this(default) { 10 | } 11 | 12 | public ReactiveModifiableFloat (float initialValue) : base(initialValue) { 13 | } 14 | } 15 | 16 | #region Operator Modifiers 17 | 18 | [Serializable] 19 | public class ReactiveAdditiveModifierFloat : ReactiveOperatorModifierBase { 20 | 21 | public ReactiveAdditiveModifierFloat () : this(default) { 22 | } 23 | public ReactiveAdditiveModifierFloat (float baseValue) : base(baseValue) { 24 | } 25 | 26 | public override float Evaluate (float value) { 27 | return value + Evaluate(); 28 | } 29 | 30 | } 31 | 32 | [Serializable] 33 | public class ReactiveSubtractiveModifierFloat : ReactiveOperatorModifierBase { 34 | 35 | public ReactiveSubtractiveModifierFloat () : this(default) { 36 | } 37 | public ReactiveSubtractiveModifierFloat (float baseValue) : base(baseValue) { 38 | } 39 | 40 | public override float Evaluate (float value) { 41 | return value - Evaluate(); 42 | } 43 | 44 | } 45 | 46 | [Serializable] 47 | public class ReactiveMultiplyModifierFloat : ReactiveOperatorModifierBase { 48 | 49 | public ReactiveMultiplyModifierFloat () : this(1f) { 50 | } 51 | public ReactiveMultiplyModifierFloat (float baseValue) : base(baseValue) { 52 | } 53 | 54 | public override float Evaluate (float value) { 55 | return value * Evaluate(); 56 | } 57 | 58 | } 59 | 60 | [Serializable] 61 | public class ReactiveDivisionModifierFloat : ReactiveOperatorModifierBase { 62 | 63 | public ReactiveDivisionModifierFloat () : this(1f) { 64 | } 65 | public ReactiveDivisionModifierFloat (float baseValue) : base(baseValue) { 66 | } 67 | 68 | public override float Evaluate (float value) { 69 | return value / Evaluate(); 70 | } 71 | 72 | } 73 | 74 | [Serializable] 75 | public class ReactiveSetModifierFloat : ReactiveSetModifier { 76 | public ReactiveSetModifierFloat () : this(default) { 77 | } 78 | 79 | public ReactiveSetModifierFloat (float baseValue) : base(baseValue) { 80 | } 81 | } 82 | 83 | [Serializable] 84 | public class ReactiveOperatorModifierFloat : ReactiveOperatorModifierBase { 85 | 86 | [SerializeField] 87 | OperatorType m_Type; 88 | 89 | public ReactiveOperatorModifierFloat () { 90 | } 91 | 92 | public ReactiveOperatorModifierFloat (float baseValue) : base(baseValue) { 93 | } 94 | 95 | public OperatorType Type { 96 | get => m_Type; 97 | set => m_Type = value; 98 | } 99 | 100 | public override float Evaluate (float value) { 101 | switch (m_Type) { 102 | case OperatorType.Additive: 103 | return value + Evaluate(); 104 | case OperatorType.Subtractive: 105 | return value - Evaluate(); 106 | case OperatorType.Multiply: 107 | return value * Evaluate(); 108 | case OperatorType.Division: 109 | return value / Evaluate(); 110 | case OperatorType.Set: 111 | return Evaluate(); 112 | default: 113 | throw new NotSupportedException($"{nameof(OperatorType)}.{m_Type} does not supported."); 114 | } 115 | } 116 | } 117 | 118 | #endregion 119 | 120 | 121 | 122 | } -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/External/UniRx/Runtime/Properties/ReactiveModifiableFloat.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 335f201e12f1aec478ef0e90cb6c4bab 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/External/UniRx/Runtime/Properties/ReactiveModifiableInt.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | using MackySoft.Modiferty.Modifiers; 4 | 5 | namespace MackySoft.Modiferty { 6 | 7 | [Serializable] 8 | public class ReactiveModifiableInt : ReactiveModifiableProperty { 9 | public ReactiveModifiableInt () : this(default) { 10 | } 11 | public ReactiveModifiableInt (int baseValue) : base(baseValue) { 12 | } 13 | } 14 | 15 | #region Operator Modifiers 16 | 17 | [Serializable] 18 | public class ReactiveAdditiveModifierInt : ReactiveOperatorModifierBase { 19 | 20 | public ReactiveAdditiveModifierInt () : this(default) { 21 | } 22 | public ReactiveAdditiveModifierInt (int baseValue) : base(baseValue) { 23 | } 24 | 25 | public override int Evaluate (int value) { 26 | return value + Evaluate(); 27 | } 28 | 29 | } 30 | 31 | [Serializable] 32 | public class ReactiveSubtractiveModifierInt : ReactiveOperatorModifierBase { 33 | 34 | public ReactiveSubtractiveModifierInt () : this(default) { 35 | } 36 | public ReactiveSubtractiveModifierInt (int baseValue) : base(baseValue) { 37 | } 38 | 39 | public override int Evaluate (int value) { 40 | return value - Evaluate(); 41 | } 42 | 43 | } 44 | 45 | [Serializable] 46 | public class ReactiveMultiplyModifierInt : ReactiveOperatorModifierBase { 47 | 48 | [SerializeField] 49 | RoundingMethod m_RoundingMethod; 50 | 51 | public RoundingMethod RoundingMethod { 52 | get => m_RoundingMethod; 53 | set => m_RoundingMethod = value; 54 | } 55 | 56 | public ReactiveMultiplyModifierInt () : this(1f) { 57 | } 58 | public ReactiveMultiplyModifierInt (float baseValue) : base(baseValue) { 59 | } 60 | public ReactiveMultiplyModifierInt (float baseValue,RoundingMethod roundingMethod) : this(baseValue) { 61 | m_RoundingMethod = roundingMethod; 62 | } 63 | 64 | public override int Evaluate (int value) { 65 | return (value * Evaluate()).RoundToInt(m_RoundingMethod); 66 | } 67 | 68 | } 69 | 70 | [Serializable] 71 | public class ReactiveDivisionModifierInt : ReactiveOperatorModifierBase { 72 | 73 | [SerializeField] 74 | RoundingMethod m_RoundingMethod; 75 | 76 | public RoundingMethod RoundingMethod { 77 | get => m_RoundingMethod; 78 | set => m_RoundingMethod = value; 79 | } 80 | 81 | public ReactiveDivisionModifierInt () : this(1f) { 82 | } 83 | public ReactiveDivisionModifierInt (float baseValue) : base(baseValue) { 84 | } 85 | public ReactiveDivisionModifierInt (float baseValue,RoundingMethod roundingMethod) : this(baseValue) { 86 | m_RoundingMethod = roundingMethod; 87 | } 88 | 89 | public override int Evaluate (int value) { 90 | return (value / Evaluate()).RoundToInt(m_RoundingMethod); 91 | } 92 | 93 | } 94 | 95 | [Serializable] 96 | public class ReactiveSetModifierInt : ReactiveSetModifier { 97 | public ReactiveSetModifierInt () : this(default) { 98 | } 99 | 100 | public ReactiveSetModifierInt (int baseValue) : base(baseValue) { 101 | } 102 | } 103 | 104 | [Serializable] 105 | public class ReactiveOperatorModifierInt : ReactiveOperatorModifierBase { 106 | 107 | [SerializeField] 108 | OperatorType m_Type; 109 | 110 | [SerializeField] 111 | RoundingMethod m_RoundingMethod; 112 | 113 | public OperatorType Type { 114 | get => m_Type; 115 | set => m_Type = value; 116 | } 117 | 118 | public RoundingMethod RoundingMethod { 119 | get => m_RoundingMethod; 120 | set => m_RoundingMethod = value; 121 | } 122 | 123 | public ReactiveOperatorModifierInt () { 124 | } 125 | 126 | public ReactiveOperatorModifierInt (float baseValue) : base(baseValue) { 127 | } 128 | 129 | public override int Evaluate (int value) { 130 | switch (m_Type) { 131 | case OperatorType.Additive: 132 | return value + Evaluate().RoundToInt(m_RoundingMethod); 133 | case OperatorType.Subtractive: 134 | return value - Evaluate().RoundToInt(m_RoundingMethod); 135 | case OperatorType.Multiply: 136 | return (value * Evaluate()).RoundToInt(m_RoundingMethod); 137 | case OperatorType.Division: 138 | return (value / Evaluate()).RoundToInt(m_RoundingMethod); 139 | case OperatorType.Set: 140 | return Evaluate().RoundToInt(m_RoundingMethod); 141 | default: 142 | throw new NotSupportedException($"{nameof(OperatorType)}.{m_Type} does not supported."); 143 | } 144 | } 145 | } 146 | 147 | #endregion 148 | 149 | } -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/External/UniRx/Runtime/Properties/ReactiveModifiableInt.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cdffeee478dd5cb42818e584014bc354 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/External/UniRx/Runtime/ReactiveModifiableProperty.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UniRx; 3 | 4 | namespace MackySoft.Modiferty { 5 | 6 | public interface IReadOnlyReactiveModifiableProperty : IReadOnlyModifiableProperty, IReadOnlyReactiveProperty { 7 | new IReadOnlyReactiveModifierList Modifiers { get; } 8 | } 9 | 10 | public interface IReactiveModifiableProperty : IReadOnlyReactiveModifiableProperty, IModifiableProperty, IReactiveProperty { 11 | new IReactiveModifierList Modifiers { get; } 12 | } 13 | 14 | [Serializable] 15 | public class ReactiveModifiableProperty : ReactiveProperty, IReactiveModifiableProperty { 16 | 17 | ReactiveModifierList m_Modifiers; 18 | 19 | public T BaseValue { 20 | get => base.Value; 21 | set => base.Value = value; 22 | } 23 | 24 | new T Value { 25 | get => base.Value; 26 | set => base.Value = value; 27 | } 28 | 29 | public IReactiveModifierList Modifiers => m_Modifiers ?? (m_Modifiers = new ReactiveModifierList()); 30 | 31 | public bool HasModifiers => (m_Modifiers != null) && (m_Modifiers.Count > 0); 32 | 33 | public ReactiveModifiableProperty () : this(default) { 34 | } 35 | 36 | public ReactiveModifiableProperty (T baseValue) : base(baseValue) { 37 | } 38 | 39 | public T Evaluate () { 40 | return (m_Modifiers != null) ? m_Modifiers.Evaluate(BaseValue) : BaseValue; 41 | } 42 | 43 | #region Explicit implementation 44 | 45 | IReadOnlyReactiveModifierList IReadOnlyReactiveModifiableProperty.Modifiers => Modifiers; 46 | 47 | IModifierList IModifiableProperty.Modifiers => Modifiers; 48 | 49 | IReadOnlyModifierList IReadOnlyModifiableProperty.Modifiers => Modifiers; 50 | 51 | #endregion 52 | 53 | } 54 | 55 | public static class ReactiveModifiablePropertyExtensions { 56 | 57 | /// 58 | /// Notify BaseValue and Modifiers changes. 59 | /// 60 | public static IObservable> ObserveChanged (this IReadOnlyReactiveModifiableProperty source) { 61 | if (source == null) { 62 | throw new ArgumentNullException(nameof(source)); 63 | } 64 | return Observable.Merge( 65 | source.AsUnitObservable(), 66 | source.Modifiers.ObserveChanged().AsUnitObservable() 67 | ).Select(_ => source); 68 | } 69 | 70 | } 71 | 72 | } -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/External/UniRx/Runtime/ReactiveModifiableProperty.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0347f3ffedb993042afa3a5fa9eee631 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/External/UniRx/Runtime/ReactiveModifierList.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | using System.Collections.Generic; 4 | using UniRx; 5 | 6 | namespace MackySoft.Modiferty { 7 | 8 | public interface IReadOnlyReactiveModifierList : IReadOnlyModifierList, IReadOnlyReactiveCollection> { 9 | 10 | } 11 | 12 | public interface IReactiveModifierList : IReadOnlyReactiveModifierList, IModifierList, IReactiveCollection> { 13 | 14 | } 15 | 16 | [Serializable] 17 | public class ReactiveModifierList : ReactiveCollection>, IReactiveModifierList { 18 | 19 | public ReactiveModifierList () { 20 | } 21 | 22 | public ReactiveModifierList (IEnumerable> collection) : base(collection) { 23 | } 24 | 25 | public ReactiveModifierList (List> list) : base(list) { 26 | } 27 | 28 | public T Evaluate (T value) { 29 | if (Count > 0) { 30 | foreach (var modifier in Items.OrderByDescending(m => m.Priority)) { 31 | value = modifier.Evaluate(value); 32 | } 33 | } 34 | return value; 35 | } 36 | 37 | } 38 | 39 | public static class ReactiveModifierListExtensions { 40 | 41 | /// 42 | /// Notify ModifierList change. 43 | /// 44 | public static IObservable> ObserveChanged (this IReadOnlyReactiveModifierList source) { 45 | if (source == null) { 46 | throw new ArgumentNullException(nameof(source)); 47 | } 48 | return Observable.Merge( 49 | source.ObserveCountChanged().AsUnitObservable(), 50 | source.ObserveReplace().AsUnitObservable(), 51 | source.ObserveMove().AsUnitObservable() 52 | ).Select(_ => source); 53 | } 54 | 55 | } 56 | 57 | } -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/External/UniRx/Runtime/ReactiveModifierList.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f1de91e9bb735b74991af106650e96f3 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/External/UniRx/Tests.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 96bf8a45ed8147f44a7ad9cd285b1890 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/External/UniRx/Tests/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7e6939c3c5bb6b8409dfb97e03662644 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/External/UniRx/Tests/Editor/MackySoft.Modiferty.UniRx.Editor.Tests.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "MackySoft.Modiferty.UniRx.Editor.Tests", 3 | "references": [ 4 | "GUID:e695879245fa2de4a81d0b0f517b15c3", 5 | "GUID:fede8c6c4e4bddd44b1db8410752c53f", 6 | "GUID:27619889b8ba8c24980f49ee34dbb44a", 7 | "GUID:0acc523941302664db1f4e527237feb3", 8 | "GUID:560b04d1a97f54a4e82edc0cbbb69285" 9 | ], 10 | "includePlatforms": [ 11 | "Editor" 12 | ], 13 | "excludePlatforms": [], 14 | "allowUnsafeCode": false, 15 | "overrideReferences": true, 16 | "precompiledReferences": [ 17 | "nunit.framework.dll" 18 | ], 19 | "autoReferenced": false, 20 | "defineConstraints": [ 21 | "MODIFERTY_UNIRX", 22 | "UNITY_INCLUDE_TESTS" 23 | ], 24 | "versionDefines": [], 25 | "noEngineReferences": false 26 | } -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/External/UniRx/Tests/Editor/MackySoft.Modiferty.UniRx.Editor.Tests.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d3ceab4120ebb72489ca82974897ce53 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/External/UniRx/Tests/Editor/ReactiveModifiableIntTests.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using UnityEngine; 3 | using UnityEngine.TestTools; 4 | using UniRx; 5 | using NUnit.Framework; 6 | 7 | namespace MackySoft.Modiferty.Tests { 8 | 9 | public class ReactiveModifiableIntTests { 10 | 11 | [UnityTest] 12 | public IEnumerator ObserveChanged_BaseValue () { 13 | ReactiveModifiableInt property = new ReactiveModifiableInt(0); 14 | var subscription = property.ObserveChanged().First().ToYieldInstruction(); 15 | 16 | property.BaseValue = 1; 17 | 18 | yield return subscription; 19 | 20 | Assert.AreEqual(property.BaseValue,1); 21 | } 22 | 23 | } 24 | } -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/External/UniRx/Tests/Editor/ReactiveModifiableIntTests.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4b98f8bbf3c19ea4cb6e40e2b2ffdcc7 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/External/UniRx/Tests/Editor/ReactiveModifierListTests.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using UnityEngine; 3 | using UnityEngine.TestTools; 4 | using UniRx; 5 | using NUnit.Framework; 6 | 7 | namespace MackySoft.Modiferty.Tests { 8 | public class ReactiveModifierListTests { 9 | 10 | [UnityTest] 11 | public IEnumerator ObserveChanged_Add () { 12 | var modifiers = new ReactiveModifierList(); 13 | 14 | var subscription = modifiers.ObserveChanged().First().ToYieldInstruction(); 15 | 16 | modifiers.Add(new AdditiveModifierInt(1)); 17 | 18 | yield return subscription; 19 | 20 | Assert.AreEqual(modifiers.Count,1); 21 | } 22 | 23 | [UnityTest] 24 | public IEnumerator ObserveChanged_Remove () { 25 | var modifiers = new ReactiveModifierList(); 26 | var modifier = new AdditiveModifierInt(1); 27 | modifiers.Add(modifier); 28 | 29 | var subscription = modifiers.ObserveChanged().First().ToYieldInstruction(); 30 | 31 | modifiers.Remove(modifier); 32 | 33 | yield return subscription; 34 | 35 | Assert.AreEqual(modifiers.Count,0); 36 | } 37 | 38 | [UnityTest] 39 | public IEnumerator ObserveChanged_Insert () { 40 | var modifiers = new ReactiveModifierList(); 41 | modifiers.Add(new AdditiveModifierInt(1)); 42 | 43 | var subscription = modifiers.ObserveChanged().First().ToYieldInstruction(); 44 | 45 | modifiers.Insert(0,new SubtractiveModifierInt(1)); 46 | 47 | yield return subscription; 48 | 49 | Assert.AreEqual(modifiers.Count,2); 50 | } 51 | 52 | [UnityTest] 53 | public IEnumerator ObserveChanged_Move () { 54 | var modifiers = new ReactiveModifierList(); 55 | modifiers.Add(new AdditiveModifierInt(1)); 56 | 57 | var targetModifier = new SubtractiveModifierInt(1); 58 | modifiers.Add(targetModifier); 59 | 60 | var subscription = modifiers.ObserveChanged().First().ToYieldInstruction(); 61 | 62 | modifiers.Move(1,0); 63 | 64 | yield return subscription; 65 | 66 | Assert.AreEqual(modifiers.IndexOf(targetModifier),0); 67 | } 68 | 69 | [UnityTest] 70 | public IEnumerator ObserveChanged_Replace () { 71 | var modifiers = new ReactiveModifierList(); 72 | modifiers.Add(new AdditiveModifierInt(1)); 73 | 74 | var subscription = modifiers.ObserveChanged().First().ToYieldInstruction(); 75 | 76 | var targetModifier = new SubtractiveModifierInt(1); 77 | modifiers[0] = targetModifier; 78 | 79 | yield return subscription; 80 | 81 | Assert.AreSame(modifiers[0],targetModifier); 82 | } 83 | 84 | [UnityTest] 85 | public IEnumerator ObserveChanged_Clear () { 86 | var modifiers = new ReactiveModifierList(); 87 | modifiers.Add(new AdditiveModifierInt(1)); 88 | 89 | var subscription = modifiers.ObserveChanged().First().ToYieldInstruction(); 90 | 91 | modifiers.Clear(); 92 | 93 | yield return subscription; 94 | 95 | Assert.AreEqual(modifiers.Count,0); 96 | } 97 | 98 | } 99 | } -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/External/UniRx/Tests/Editor/ReactiveModifierListTests.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ecf74c23baa6461498ea4d2b145c5a5e 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Runtime.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f60ad79deebb96544a59e58ba160a878 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Runtime/IModifiablePropertyExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | 4 | namespace MackySoft.Modiferty { 5 | public static class IModifiablePropertyExtensions { 6 | 7 | public static bool ContainsModifier (this IReadOnlyModifiableProperty source,IModifier modifier) { 8 | return source.Modifiers.Contains(modifier); 9 | } 10 | 11 | /// 12 | /// Shortcut of .Add(modifier); 13 | /// 14 | public static void AddModifier (this IModifiableProperty source,IModifier modifier) { 15 | source.Modifiers.Add(modifier); 16 | } 17 | 18 | public static IDisposable AddModifierAsDisposable (this IModifiableProperty source,IModifier modifier) { 19 | return source.Modifiers.AddModifierAsDisposable(modifier); 20 | } 21 | 22 | /// 23 | /// Shortcut of .Remove(modifier); 24 | /// 25 | public static bool RemoveModifier (this IModifiableProperty source,IModifier modifier) { 26 | return source.Modifiers.Remove(modifier); 27 | } 28 | 29 | /// 30 | /// Shortcut of .Clear(); 31 | /// 32 | public static void ClearModifiers (this IModifiableProperty source) { 33 | source.Modifiers.Clear(); 34 | } 35 | 36 | } 37 | 38 | } -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Runtime/IModifiablePropertyExtensions.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b41a1a5dc9a96e34e800a893fe203445 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Runtime/IModifier.cs: -------------------------------------------------------------------------------- 1 | namespace MackySoft.Modiferty { 2 | 3 | public interface IModifier { 4 | /// 5 | /// Priority of evaluation. 6 | /// See: 7 | /// 8 | int Priority { get; } 9 | } 10 | 11 | public interface IModifier : IModifier { 12 | /// 13 | /// Evaluate the value. 14 | /// 15 | /// Value to be modified. 16 | T Evaluate (T value); 17 | 18 | } 19 | 20 | } -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Runtime/IModifier.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bf64b2d0d69696341a8f315b79ecd3b6 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Runtime/MackySoft.Modiferty.Runtime.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "MackySoft.Modiferty", 3 | "references": [], 4 | "includePlatforms": [], 5 | "excludePlatforms": [], 6 | "allowUnsafeCode": false, 7 | "overrideReferences": false, 8 | "precompiledReferences": [], 9 | "autoReferenced": true, 10 | "defineConstraints": [], 11 | "versionDefines": [], 12 | "noEngineReferences": false 13 | } -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Runtime/MackySoft.Modiferty.Runtime.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e695879245fa2de4a81d0b0f517b15c3 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Runtime/ModifieableProperty.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | 4 | namespace MackySoft.Modiferty { 5 | 6 | public interface IReadOnlyModifiableProperty { 7 | 8 | /// 9 | /// Base value before the evaluation. 10 | /// 11 | T BaseValue { get; } 12 | 13 | /// 14 | /// List of to evaluate base value. 15 | /// 16 | IReadOnlyModifierList Modifiers { get; } 17 | 18 | /// 19 | /// Whether has modifiers. 20 | /// This is used to avoid creating unnecessary ModifierList. 21 | /// 22 | bool HasModifiers { get; } 23 | 24 | /// 25 | /// Evaluate the base value by modifiers. 26 | /// 27 | T Evaluate (); 28 | 29 | } 30 | 31 | public interface IModifiableProperty : IReadOnlyModifiableProperty { 32 | 33 | /// 34 | /// Base value before the evaluation. 35 | /// 36 | new T BaseValue { get; set; } 37 | 38 | /// 39 | /// List of to evaluate base value. 40 | /// 41 | new IModifierList Modifiers { get; } 42 | 43 | } 44 | 45 | [Serializable] 46 | public class ModifieableProperty : IModifiableProperty { 47 | 48 | [SerializeField] 49 | T m_BaseValue; 50 | 51 | [NonSerialized] 52 | ModifierList m_Modifiers; 53 | 54 | public T BaseValue { 55 | get => m_BaseValue; 56 | set => m_BaseValue = value; 57 | } 58 | 59 | public IModifierList Modifiers => m_Modifiers ?? (m_Modifiers = new ModifierList()); 60 | 61 | public bool HasModifiers => (m_Modifiers != null) && (m_Modifiers.Count > 0); 62 | 63 | IReadOnlyModifierList IReadOnlyModifiableProperty.Modifiers => Modifiers; 64 | 65 | public ModifieableProperty () : this(default) { 66 | } 67 | 68 | public ModifieableProperty (T baseValue) { 69 | m_BaseValue = baseValue; 70 | } 71 | 72 | public T Evaluate () { 73 | return (m_Modifiers != null) ? m_Modifiers.Evaluate(m_BaseValue) : m_BaseValue; 74 | } 75 | 76 | } 77 | 78 | } -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Runtime/ModifieableProperty.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 180cdf52ac433fd4da8982901941aff6 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Runtime/ModifierList.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | using System.Collections.Generic; 4 | using System.Collections.ObjectModel; 5 | 6 | namespace MackySoft.Modiferty { 7 | 8 | public interface IReadOnlyModifierList : IReadOnlyList> { 9 | 10 | /// 11 | /// Evaluate the value. 12 | /// 13 | /// Value to be modified. 14 | T Evaluate (T value); 15 | 16 | } 17 | 18 | public interface IModifierList : IList>, IReadOnlyModifierList { 19 | new int Count { get; } 20 | } 21 | 22 | [Serializable] 23 | public class ModifierList : Collection>, IModifierList { 24 | 25 | public T Evaluate (T value) { 26 | if (Items.Count > 0) { 27 | foreach (IModifier modifier in Items.OrderByDescending(m => m.Priority)) { 28 | value = modifier.Evaluate(value); 29 | } 30 | } 31 | return value; 32 | } 33 | 34 | } 35 | 36 | } -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Runtime/ModifierList.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 813b9dfc3f006774bbf70285a160899d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Runtime/ModifierListExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | using System.Collections.Generic; 4 | 5 | namespace MackySoft.Modiferty { 6 | public static class ModifierListExtensions { 7 | 8 | public static bool HasModifier (this IEnumerable source) where TModifier : IModifier { 9 | foreach (IModifier modifier in source) { 10 | if (modifier is TModifier) { 11 | return true; 12 | } 13 | } 14 | return false; 15 | } 16 | 17 | public static TModifier GetModifier (this IEnumerable source) where TModifier : IModifier { 18 | foreach (IModifier modifier in source) { 19 | if (modifier is TModifier result) { 20 | return result; 21 | } 22 | } 23 | return default; 24 | } 25 | 26 | public static IEnumerable GetModifiers (this IEnumerable source) where TModifier : IModifier { 27 | foreach (IModifier modifier in source) { 28 | if (modifier is TModifier result) { 29 | yield return result; 30 | } 31 | } 32 | } 33 | 34 | public static bool TryGetModifier (this IEnumerable source,out TModifier result) where TModifier : IModifier { 35 | result = source.GetModifier(); 36 | return result != null; 37 | } 38 | 39 | public static IDisposable AddModifierAsDisposable (this ICollection> source,IModifier modifier) { 40 | if (source == null) { 41 | throw new ArgumentNullException(nameof(source)); 42 | } 43 | if (modifier == null) { 44 | throw new ArgumentNullException(nameof(modifier)); 45 | } 46 | 47 | source.Add(modifier); 48 | return new ModifierDisposable(source,modifier); 49 | } 50 | 51 | /// 52 | /// Remove all modifiers that match the specified type. 53 | /// 54 | /// Type of Modifier to be removed. 55 | public static int RemoveModifiersAll (this ICollection source) where TModifier : IModifier { 56 | int removedModifiersCount = 0; 57 | foreach (IModifier modifier in source.ToArray()) { 58 | if (modifier is TModifier result) { 59 | source.Remove(result); 60 | removedModifiersCount++; 61 | } 62 | } 63 | return removedModifiersCount; 64 | } 65 | 66 | /// 67 | /// Remove all modifiers that match the condition. 68 | /// 69 | public static int RemoveModifiersAll (this ICollection> source,Predicate> match) { 70 | if (match == null) { 71 | throw new ArgumentNullException(nameof(match)); 72 | } 73 | int removedModifiersCount = 0; 74 | foreach (IModifier modifier in source.ToArray()) { 75 | if (match.Invoke(modifier)) { 76 | source.Remove(modifier); 77 | removedModifiersCount++; 78 | } 79 | } 80 | return removedModifiersCount; 81 | } 82 | 83 | class ModifierDisposable : IDisposable { 84 | 85 | bool m_IsDisposed; 86 | IModifier m_Modifier; 87 | ICollection> m_Collection; 88 | 89 | public ModifierDisposable (ICollection> collection,IModifier modifier) { 90 | m_Modifier = modifier; 91 | m_Collection = collection; 92 | } 93 | 94 | public void Dispose () { 95 | if (!m_IsDisposed) { 96 | m_IsDisposed = true; 97 | m_Collection.Remove(m_Modifier); 98 | 99 | m_Collection = null; 100 | m_Modifier = null; 101 | } 102 | } 103 | } 104 | 105 | } 106 | 107 | } -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Runtime/ModifierListExtensions.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 950183a048662ef458c5ad967eab4eb0 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Runtime/Modifiers.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 09bc4e6a8b4319744bddd5cf2f51790d 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Runtime/Modifiers/CreateModifier.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | 4 | namespace MackySoft.Modiferty { 5 | 6 | /// 7 | /// Create complex modifier improvise. 8 | /// 9 | [Serializable] 10 | public class CreateModifier : IModifier { 11 | 12 | [SerializeField] 13 | int m_Priority; 14 | 15 | [NonSerialized] 16 | Func m_Evaluator; 17 | 18 | public Func Evaluator { 19 | get => m_Evaluator; 20 | set => m_Evaluator = value ?? throw new NullReferenceException($"You cannot set the {nameof(Evaluator)} to null."); 21 | } 22 | 23 | public int Priority { get => m_Priority; set => m_Priority = value; } 24 | 25 | /// Evaluator can not be null. 26 | public CreateModifier (Func evaluator,int priority = 0) { 27 | Evaluator = evaluator ?? throw new ArgumentNullException(nameof(evaluator)); 28 | Priority = priority; 29 | } 30 | 31 | public T Evaluate (T value) { 32 | return Evaluator.Invoke(value); 33 | } 34 | 35 | } 36 | 37 | } -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Runtime/Modifiers/CreateModifier.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2c83ee6317293214fbac0083fd2cd2ac 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Runtime/Modifiers/OperatorModifierBase.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace MackySoft.Modiferty.Modifiers { 4 | 5 | public enum OperatorType { 6 | Additive = 0, 7 | Subtractive = 1, 8 | Multiply = 2, 9 | Division = 3, 10 | Set = 4 11 | } 12 | 13 | public abstract class OperatorModifierBase : ModifieableProperty, IModifier { 14 | 15 | [SerializeField] 16 | int m_Priority; 17 | 18 | public int Priority { 19 | get => m_Priority; 20 | set => m_Priority = value; 21 | } 22 | 23 | protected OperatorModifierBase () : this(default) { 24 | } 25 | 26 | protected OperatorModifierBase (TRHS baseValue) : base(baseValue) { 27 | } 28 | 29 | public abstract TResult Evaluate (TResult value); 30 | 31 | } 32 | 33 | public abstract class OperatorModifierBase : OperatorModifierBase { 34 | protected OperatorModifierBase () : this(default) { 35 | } 36 | 37 | protected OperatorModifierBase (T baseValue) : base(baseValue) { 38 | } 39 | } 40 | 41 | } -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Runtime/Modifiers/OperatorModifierBase.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: baefa1b1f908ffb4e9148bbe42872e58 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Runtime/Modifiers/SetModifier.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | 4 | namespace MackySoft.Modiferty { 5 | 6 | /// 7 | /// The given value ignored and the returns specified value returned. 8 | /// 9 | [Serializable] 10 | public class SetModifier : IModifier { 11 | 12 | [SerializeField] 13 | T m_Value; 14 | 15 | [SerializeField] 16 | int m_Priority; 17 | 18 | public T Value { get => m_Value; set => m_Value = value; } 19 | 20 | public int Priority { get => m_Priority; set => m_Priority = value; } 21 | 22 | public SetModifier (T value,int priority = 0) { 23 | m_Value = value; 24 | Priority = priority; 25 | } 26 | 27 | /// 28 | /// The given value ignored and the returned. 29 | /// 30 | public T Evaluate (T value) { 31 | return m_Value; 32 | } 33 | 34 | } 35 | 36 | } -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Runtime/Modifiers/SetModifier.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9daa8c185bacf5441a2703063aa77279 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Runtime/Properties.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5252e364eadbb3f4e8b25b6e84cfd331 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Runtime/Properties/ModifiableFloat.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | using MackySoft.Modiferty.Modifiers; 4 | 5 | namespace MackySoft.Modiferty { 6 | 7 | [Serializable] 8 | public class ModifiableFloat : ModifieableProperty { 9 | public ModifiableFloat () : this(default) { 10 | } 11 | public ModifiableFloat (float baseValue) : base(baseValue) { 12 | } 13 | } 14 | 15 | #region Operator Modifiers 16 | 17 | [Serializable] 18 | public class AdditiveModifierFloat : OperatorModifierBase { 19 | 20 | public AdditiveModifierFloat () : this(default) { 21 | } 22 | public AdditiveModifierFloat (float baseValue) : base(baseValue) { 23 | } 24 | 25 | public override float Evaluate (float value) { 26 | return value + Evaluate(); 27 | } 28 | 29 | } 30 | 31 | [Serializable] 32 | public class SubtractiveModifierFloat : OperatorModifierBase { 33 | 34 | public SubtractiveModifierFloat () : this(default) { 35 | } 36 | public SubtractiveModifierFloat (float baseValue) : base(baseValue) { 37 | } 38 | 39 | public override float Evaluate (float value) { 40 | return value - Evaluate(); 41 | } 42 | 43 | } 44 | 45 | [Serializable] 46 | public class MultiplyModifierFloat : OperatorModifierBase { 47 | 48 | public MultiplyModifierFloat () : this(1f) { 49 | } 50 | public MultiplyModifierFloat (float baseValue) : base(baseValue) { 51 | } 52 | 53 | public override float Evaluate (float value) { 54 | return value * Evaluate(); 55 | } 56 | 57 | } 58 | 59 | [Serializable] 60 | public class DivisionModifierFloat : OperatorModifierBase { 61 | 62 | public DivisionModifierFloat () : this(1f) { 63 | } 64 | public DivisionModifierFloat (float baseValue) : base(baseValue) { 65 | } 66 | 67 | public override float Evaluate (float value) { 68 | return value / Evaluate(); 69 | } 70 | 71 | } 72 | 73 | /// 74 | /// The given value ignored and the returns specified value returned. 75 | /// 76 | [Serializable] 77 | public class SetModifierFloat : SetModifier { 78 | public SetModifierFloat (float value,int priority = 0) : base(value,priority) { 79 | } 80 | } 81 | 82 | [Serializable] 83 | public class OperatorModifierFloat : OperatorModifierBase { 84 | 85 | [SerializeField] 86 | OperatorType m_Type; 87 | 88 | public OperatorType Type { 89 | get => m_Type; 90 | set => m_Type = value; 91 | } 92 | 93 | public OperatorModifierFloat () { 94 | } 95 | 96 | public OperatorModifierFloat (float baseValue) : base(baseValue) { 97 | } 98 | 99 | public override float Evaluate (float value) { 100 | switch (m_Type) { 101 | case OperatorType.Additive: 102 | return value + Evaluate(); 103 | case OperatorType.Subtractive: 104 | return value - Evaluate(); 105 | case OperatorType.Multiply: 106 | return value * Evaluate(); 107 | case OperatorType.Division: 108 | return value / Evaluate(); 109 | case OperatorType.Set: 110 | return Evaluate(); 111 | default: 112 | throw new NotSupportedException($"{nameof(OperatorType)}.{m_Type} does not supported."); 113 | } 114 | } 115 | } 116 | 117 | #endregion 118 | 119 | } -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Runtime/Properties/ModifiableFloat.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5698c9562181c35498fbf8358f23df70 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Runtime/Properties/ModifiableInt.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | using MackySoft.Modiferty.Modifiers; 4 | 5 | namespace MackySoft.Modiferty { 6 | 7 | [Serializable] 8 | public class ModifiableInt : ModifieableProperty { 9 | public ModifiableInt () : this(default) { 10 | } 11 | public ModifiableInt (int baseValue) : base(baseValue) { 12 | } 13 | } 14 | 15 | #region Operator Modifiers 16 | 17 | [Serializable] 18 | public class AdditiveModifierInt : OperatorModifierBase { 19 | 20 | public AdditiveModifierInt () : this(default) { 21 | } 22 | 23 | public AdditiveModifierInt (int baseValue) : base(baseValue) { 24 | } 25 | 26 | public override int Evaluate (int value) { 27 | return value + Evaluate(); 28 | } 29 | 30 | } 31 | 32 | [Serializable] 33 | public class SubtractiveModifierInt : OperatorModifierBase { 34 | 35 | public SubtractiveModifierInt () : this(default) { 36 | } 37 | public SubtractiveModifierInt (int baseValue) : base(baseValue) { 38 | } 39 | 40 | public override int Evaluate (int value) { 41 | return value - Evaluate(); 42 | } 43 | 44 | } 45 | 46 | [Serializable] 47 | public class MultiplyModifierInt : OperatorModifierBase { 48 | 49 | [SerializeField] 50 | RoundingMethod m_RoundingMethod; 51 | 52 | public RoundingMethod RoundingMethod { 53 | get => m_RoundingMethod; 54 | set => m_RoundingMethod = value; 55 | } 56 | 57 | public MultiplyModifierInt () : this(1f) { 58 | } 59 | public MultiplyModifierInt (float baseValue) : base(baseValue) { 60 | } 61 | public MultiplyModifierInt (float baseValue,RoundingMethod roundingMethod) : this(baseValue) { 62 | m_RoundingMethod = roundingMethod; 63 | } 64 | 65 | public override int Evaluate (int value) { 66 | return (value * Evaluate()).RoundToInt(m_RoundingMethod); 67 | } 68 | 69 | } 70 | 71 | [Serializable] 72 | public class DivisionModifierInt : OperatorModifierBase { 73 | 74 | [SerializeField] 75 | RoundingMethod m_RoundingMethod; 76 | 77 | public RoundingMethod RoundingMethod { 78 | get => m_RoundingMethod; 79 | set => m_RoundingMethod = value; 80 | } 81 | 82 | public DivisionModifierInt () : this(1f) { 83 | } 84 | public DivisionModifierInt (float baseValue) : base(baseValue) { 85 | } 86 | public DivisionModifierInt (float baseValue,RoundingMethod roundingMethod) : this(baseValue) { 87 | m_RoundingMethod = roundingMethod; 88 | } 89 | 90 | public override int Evaluate (int value) { 91 | return (value / Evaluate()).RoundToInt(m_RoundingMethod); 92 | } 93 | 94 | } 95 | 96 | /// 97 | /// The given value ignored and the returns specified value returned. 98 | /// 99 | [Serializable] 100 | public class SetModifierInt : SetModifier { 101 | public SetModifierInt (int value,int priority = 0) : base(value,priority) { 102 | } 103 | } 104 | 105 | [Serializable] 106 | public class OperatorModifierInt : OperatorModifierBase { 107 | 108 | [SerializeField] 109 | OperatorType m_Type; 110 | 111 | [SerializeField] 112 | RoundingMethod m_RoundingMethod; 113 | 114 | public OperatorType Type { 115 | get => m_Type; 116 | set => m_Type = value; 117 | } 118 | 119 | public RoundingMethod RoundingMethod { 120 | get => m_RoundingMethod; 121 | set => m_RoundingMethod = value; 122 | } 123 | 124 | public OperatorModifierInt () { 125 | } 126 | 127 | public OperatorModifierInt (float baseValue) : base(baseValue) { 128 | } 129 | 130 | public override int Evaluate (int value) { 131 | switch (m_Type) { 132 | case OperatorType.Additive: 133 | return value + Evaluate().RoundToInt(m_RoundingMethod); 134 | case OperatorType.Subtractive: 135 | return value - Evaluate().RoundToInt(m_RoundingMethod); 136 | case OperatorType.Multiply: 137 | return (value * Evaluate()).RoundToInt(m_RoundingMethod); 138 | case OperatorType.Division: 139 | return (value / Evaluate()).RoundToInt(m_RoundingMethod); 140 | case OperatorType.Set: 141 | return Evaluate().RoundToInt(m_RoundingMethod); 142 | default: 143 | throw new NotSupportedException($"{nameof(OperatorType)}.{m_Type} does not supported."); 144 | } 145 | } 146 | } 147 | 148 | #endregion 149 | 150 | } -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Runtime/Properties/ModifiableInt.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a33c88cd6223ca4448d9340f93397374 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Runtime/Utilities.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9b95506bad5ad9146985ea9ca346fed8 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Runtime/Utilities/RoundUtility.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace MackySoft.Modiferty { 4 | 5 | public enum RoundingMethod { 6 | Round = 0, 7 | Floor = 1, 8 | Ceil = 2 9 | } 10 | 11 | public static class RoundUtility { 12 | 13 | public static float Round (this float f,RoundingMethod method) { 14 | if (method == RoundingMethod.Round) { 15 | return Mathf.Round(f); 16 | } else if (method == RoundingMethod.Floor) { 17 | return Mathf.Floor(f); 18 | } else { 19 | return Mathf.Ceil(f); 20 | } 21 | } 22 | 23 | public static int RoundToInt (this float f,RoundingMethod method) { 24 | return (int)Round(f,method); 25 | } 26 | 27 | } 28 | 29 | } -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Runtime/Utilities/RoundUtility.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0861d17ecc90edf4aaacef868cc94529 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Tests.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0e8b18a70fe8dbf4b911bc1c190d5593 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Tests/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 27c4db94e77098944a1f816a9a2c8df4 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Tests/Editor/MackySoft.Modiferty.Tests.Editor.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "MackySoft.Modiferty.Editor.Tests", 3 | "references": [ 4 | "GUID:e695879245fa2de4a81d0b0f517b15c3", 5 | "GUID:40928bc94bf6c9d4ab69789b56aaff51", 6 | "GUID:27619889b8ba8c24980f49ee34dbb44a", 7 | "GUID:0acc523941302664db1f4e527237feb3" 8 | ], 9 | "includePlatforms": [ 10 | "Editor" 11 | ], 12 | "excludePlatforms": [], 13 | "allowUnsafeCode": false, 14 | "overrideReferences": true, 15 | "precompiledReferences": [ 16 | "nunit.framework.dll" 17 | ], 18 | "autoReferenced": false, 19 | "defineConstraints": [ 20 | "UNITY_INCLUDE_TESTS" 21 | ], 22 | "versionDefines": [], 23 | "noEngineReferences": false 24 | } -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Tests/Editor/MackySoft.Modiferty.Tests.Editor.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 296276afe57279a4db8260a76292d480 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Tests/Editor/ModifiableIntTests.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | using NUnit.Framework; 4 | 5 | namespace MackySoft.Modiferty.Tests { 6 | 7 | public class ModifiableIntTests { 8 | 9 | [Test] 10 | public void Solo ([Random(-99999,99999,10)] int baseValue) { 11 | var property = new ModifiableInt(baseValue); 12 | Assert.AreEqual(baseValue,property.Evaluate()); 13 | } 14 | 15 | [Test] 16 | public void Additive ( 17 | [Random(-99999,99999,10)] int baseValue, 18 | [Random(-99999,99999,10)] int add 19 | ) { 20 | var property = new ModifiableInt(baseValue); 21 | property.AddModifier(new AdditiveModifierInt(add)); 22 | Assert.AreEqual(baseValue + add,property.Evaluate()); 23 | } 24 | 25 | [Test] 26 | public void Subtractive ( 27 | [Random(-99999,99999,10)] int baseValue, 28 | [Random(-99999,99999,10)] int subtract 29 | ) { 30 | var property = new ModifiableInt(baseValue); 31 | property.AddModifier(new SubtractiveModifierInt(subtract)); 32 | Assert.AreEqual(baseValue - subtract,property.Evaluate()); 33 | } 34 | 35 | [Test] 36 | public void Multiply ( 37 | [Random(-99999,99999,10)] int baseValue, 38 | [Random(-10f,10f,10)] float multiplier, 39 | [Values] RoundingMethod method 40 | ) { 41 | var property = new ModifiableInt(baseValue); 42 | property.AddModifier(new MultiplyModifierInt(multiplier,method)); 43 | Assert.AreEqual(RoundUtility.RoundToInt(baseValue * multiplier,method),property.Evaluate()); 44 | } 45 | 46 | [Test] 47 | public void Division ( 48 | [Random(-99999,99999,10)] int baseValue, 49 | [Random(-10f,10f,10)] float division, 50 | [Values] RoundingMethod method 51 | ) { 52 | var property = new ModifiableInt(baseValue); 53 | property.AddModifier(new DivisionModifierInt(division,method)); 54 | Assert.AreEqual(RoundUtility.RoundToInt(baseValue / division,method),property.Evaluate()); 55 | } 56 | 57 | [Test] 58 | public void AddModifierAsDisposable () { 59 | var property = new ModifiableInt(0); 60 | 61 | IDisposable disposable = property.AddModifierAsDisposable(new AdditiveModifierInt(1)); 62 | int beforeDisposedValue = property.Evaluate(); 63 | 64 | disposable.Dispose(); 65 | 66 | int afterDisposedValue = property.Evaluate(); 67 | Assert.AreNotEqual(beforeDisposedValue,afterDisposedValue); 68 | } 69 | 70 | } 71 | } -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/Tests/Editor/ModifiableIntTests.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 538fada3fbf85f145af08e49ea25f59f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "com.mackysoft.modiferty", 3 | "displayName": "Modiferty", 4 | "version": "1.1.2", 5 | "unity": "2019.4", 6 | "description": "Property Modification for Unity.", 7 | "keywords": [ "Modiferty" ], 8 | "license": "MIT", 9 | "dependencies": {} 10 | } -------------------------------------------------------------------------------- /Assets/MackySoft/MackySoft.Modiferty/package.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8f6d0b753e7317f4aa8c0e1d841452a6 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/PackageTools.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5bddc361c940411409071c6fcf515202 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/PackageTools/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dcc1148481889924d91760737bcc6516 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/PackageTools/Editor/UnityPackageExporter.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | using System.Linq; 3 | using UnityEngine; 4 | using UnityEditor; 5 | 6 | namespace MackySoft.PackageTools.Editor { 7 | 8 | public static class UnityPackageExporter { 9 | 10 | // The name of the unitypackage to output. 11 | const string k_PackageName = "Modiferty"; 12 | 13 | // The path to the package under the `Assets/` folder. 14 | const string k_PackagePath = "MackySoft"; 15 | 16 | // Path to export to. 17 | const string k_ExportPath = "Build"; 18 | 19 | const string k_SearchPattern = "*"; 20 | const string k_PackageToolsFolderName = "PackageTools"; 21 | const string k_ResourcesFolderName = "Resources"; 22 | 23 | [MenuItem("Tools/Modiferty/Export Package")] 24 | public static void Export () { 25 | ExportPackage($"{k_ExportPath}/{k_PackageName}.unitypackage"); 26 | } 27 | 28 | 29 | public static string ExportPackage (string exportPath) { 30 | // Ensure export path. 31 | var dir = new FileInfo(exportPath).Directory; 32 | if (dir != null && !dir.Exists) { 33 | dir.Create(); 34 | } 35 | 36 | // Export 37 | AssetDatabase.ExportPackage( 38 | GetAssetPaths(), 39 | exportPath, 40 | ExportPackageOptions.Default 41 | ); 42 | 43 | return Path.GetFullPath(exportPath); 44 | } 45 | 46 | public static string[] GetAssetPaths () { 47 | var path = Path.Combine(Application.dataPath,k_PackagePath); 48 | var assets = Directory.EnumerateFiles(path,k_SearchPattern,SearchOption.AllDirectories) 49 | .Where(x => !x.Contains(k_PackageToolsFolderName) && !x.Contains(k_ResourcesFolderName)) 50 | .Select(x => "Assets" + x.Replace(Application.dataPath,"").Replace(@"\","/")) 51 | .ToArray(); 52 | return assets; 53 | } 54 | 55 | } 56 | } -------------------------------------------------------------------------------- /Assets/PackageTools/Editor/UnityPackageExporter.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 18e0101a13bd4d541a4622e86ec18b4e 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Documentation/changelog/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to this project will be documented in this file. 4 | 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). 7 | 8 | ## [1.1.2] - 2021-05-16 9 | ### Added 10 | - Added upm support. 11 | - Added the `OperatorModifierInt`. 12 | - Added the `OperatorModifierFloat`. 13 | - Added the `ReactiveOperatorModifierInt`. 14 | - Added the `ReactiveOperatorModifierFloat`. 15 | 16 | ## [1.1.1] - 2020-11-27 17 | ### Added 18 | - Added unit tests. 19 | 20 | ### Changed 21 | - UniRx Integration runtime code moved to `Runtime` folder. 22 | - `ReactiveModifiableProperty` / `ReactiveModifierList`.`ObserveChanged` now observe `ReactiveModifierList.ObserveMove`. 23 | 24 | ## [1.1.0] - 2020-11-27 25 | ### Added 26 | - Added UniRx integration. (https://github.com/neuecc/UniRx) 27 | - Define `MODIFERTY_UNIRX` and enable it. 28 | - Added `IModifierList.AddModifierAsDisposable` extension method. 29 | 30 | ### Changed 31 | - Renamed assembly name `MackySoft.Modiferty.Runtime` to `MackySoft.Modiferty`. 32 | - `OperatorModifiers` now inherit from `ModifiableProperty`. 33 | - The Modifier(s) suffix has been applied to the extension methods defined in `IModifiablePropertyExtensions`. 34 | - `Multiply / DivisionModifierInt` now must specify the `RoundingMethod`. 35 | 36 | ## [1.0.3] - 2020-05-24 37 | ### Changed 38 | - Changed type of multiply value of `MultiplyModifierInt` to float. 39 | - Changed type of division value of `DivisionModifierInt` to float. 40 | 41 | ## [1.0.2] - 2020-05-23 42 | ### Added 43 | - Added extension methods for `ModifierList`. 44 | 45 | ### Changed 46 | - Renamed assembly `MackySoft.Modiferty` to `MackySoft.Modiferty.Runtime`. 47 | - Renamed folder `Scripts` to `Runtime`. 48 | 49 | ## [1.0.1] - 2020-05-20 50 | ### Added 51 | - Added `ModifierList` extension methods. 52 | - Extracted the `IModifier` from `IModifier`. 53 | 54 | ## [1.0.0] - 2020-05-19 55 | First release -------------------------------------------------------------------------------- /Documentation/changelog/toc.yml: -------------------------------------------------------------------------------- 1 | - name: Changelog 2 | href: CHANGELOG.md -------------------------------------------------------------------------------- /Documentation/docfx.json: -------------------------------------------------------------------------------- 1 | { 2 | "metadata": [ 3 | { 4 | "src": [ 5 | { 6 | "src": "..", 7 | "files": [ 8 | "Assets/**/*.cs" 9 | ], 10 | "exclude": [ 11 | "Assets/Plugins/**" 12 | ] 13 | } 14 | ], 15 | "globalNamespaceId": "Global", 16 | "filter": "filterConfig.yml", 17 | "dest": "api" 18 | } 19 | ], 20 | "build": { 21 | "globalMetadata": { 22 | "_appTitle": "Modiferty", 23 | "_appFooter": "Modiferty - Property Modification for Unity", 24 | "_enableSearch": true, 25 | "_enableNewTab": true, 26 | "_disableContribution": true 27 | }, 28 | "content": [ 29 | { 30 | "files": [ 31 | "toc.yml", 32 | "index.md" 33 | ] 34 | }, 35 | { 36 | "src": "api", 37 | "files": [ 38 | "*.yml" 39 | ], 40 | "dest": "api" 41 | }, 42 | { 43 | "src": "changelog", 44 | "files": [ 45 | "toc.yml", 46 | "*.md" 47 | ], 48 | "dest": "changelog" 49 | } 50 | ], 51 | "overwrite": [ 52 | { 53 | "src": "..", 54 | "files": [ 55 | "Assets/Scripts/**/*.md" 56 | ] 57 | } 58 | ], 59 | "resource": [ 60 | { 61 | "files": [ 62 | "resources/**/*" 63 | ] 64 | } 65 | ], 66 | "sitemap": { 67 | "baseUrl": "https://mackysoft.github.io/Modiferty", 68 | "changefreq": "weekly", 69 | "fileOptions": { 70 | "api/*": { 71 | "changefreq": "daily" 72 | } 73 | } 74 | }, 75 | "xref": [ 76 | "https://normanderwan.github.io/UnityXrefMaps/xrefmap.yml" 77 | ], 78 | "xrefService": [ 79 | "https://xref.docs.microsoft.com/query?uid={uid}" 80 | ], 81 | "dest": "../_site" 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /Documentation/filterConfig.yml: -------------------------------------------------------------------------------- 1 | apiRules: 2 | - include: 3 | uidRegex: ^MackySoft\.Modiferty$ 4 | type: Namespace 5 | - include: 6 | uidRegex: ^MackySoft\.Modiferty$\.Editor 7 | type: Namespace 8 | - include: 9 | uidRegex: ^Global 10 | type: Namespace 11 | - exclude: 12 | uidRegex: .* 13 | type: Namespace 14 | - exclude: 15 | uidRegex: ^MackySoft\.Modiferty$\.Example 16 | type: Namespace -------------------------------------------------------------------------------- /Documentation/toc.yml: -------------------------------------------------------------------------------- 1 | - name: Scripting API 2 | href: api/ 3 | - name: Changelog 4 | href: changelog/ -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2020 Hiroya Aramaki 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /MackySoft.Modiferty.UniRx.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 8.0 5 | 6 | 7 | Debug 8 | AnyCPU 9 | 10.0.20506 10 | 2.0 11 | 12 | {2D74497B-FAAD-BF48-1CFF-FBC96B1B4A72} 13 | Library 14 | Properties 15 | MackySoft.Modiferty.UniRx 16 | v4.7.1 17 | 512 18 | . 19 | 20 | 21 | true 22 | full 23 | false 24 | Temp\Bin\Debug\ 25 | DEBUG;TRACE;UNITY_2020_3_8;UNITY_2020_3;UNITY_2020;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2018_4_OR_NEWER;UNITY_2019_1_OR_NEWER;UNITY_2019_2_OR_NEWER;UNITY_2019_3_OR_NEWER;UNITY_2019_4_OR_NEWER;UNITY_2020_1_OR_NEWER;UNITY_2020_2_OR_NEWER;UNITY_2020_3_OR_NEWER;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;USE_SEARCH_ENGINE_API;SCENE_TEMPLATE_MODULE;ENABLE_AR;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_EVENT_QUEUE;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_TEXTURE_STREAMING;ENABLE_VIRTUALTEXTURING;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_UNITYWEBREQUEST;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;ENABLE_MANAGED_AUDIO_JOBS;INCLUDE_DYNAMIC_GI;ENABLE_MONO_BDWGC;ENABLE_SCRIPTING_GC_WBARRIERS;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_VIDEO;PLATFORM_STANDALONE;PLATFORM_STANDALONE_WIN;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_OUT_OF_PROCESS_CRASH_HANDLER;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;PLATFORM_UPDATES_TIME_OUTSIDE_OF_PLAYER_LOOP;GFXDEVICE_WAITFOREVENT_MESSAGEPUMP;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_STANDARD_2_0;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_DIRECTOR;ENABLE_LOCALIZATION;ENABLE_SPRITES;ENABLE_TERRAIN;ENABLE_TILEMAP;ENABLE_TIMELINE;ENABLE_LEGACY_INPUT_MANAGER;MODIFERTY_UNIRX;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER 26 | prompt 27 | 4 28 | 0169 29 | False 30 | 31 | 32 | pdbonly 33 | true 34 | Temp\bin\Release\ 35 | prompt 36 | 4 37 | 0169 38 | False 39 | 40 | 41 | true 42 | true 43 | false 44 | false 45 | false 46 | 47 | 48 | {E097FAD1-6243-4DAD-9C02-E9B9EFC3FFC1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 49 | Package 50 | 2.0.7 51 | Game:1 52 | StandaloneWindows64:19 53 | 2020.3.8f1 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.dll 70 | 71 | 72 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.ARModule.dll 73 | 74 | 75 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.AccessibilityModule.dll 76 | 77 | 78 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.AnimationModule.dll 79 | 80 | 81 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.AssetBundleModule.dll 82 | 83 | 84 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.AudioModule.dll 85 | 86 | 87 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.ClusterInputModule.dll 88 | 89 | 90 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.ClusterRendererModule.dll 91 | 92 | 93 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.CoreModule.dll 94 | 95 | 96 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.CrashReportingModule.dll 97 | 98 | 99 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.DSPGraphModule.dll 100 | 101 | 102 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.GIModule.dll 103 | 104 | 105 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.GameCenterModule.dll 106 | 107 | 108 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.GridModule.dll 109 | 110 | 111 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.HotReloadModule.dll 112 | 113 | 114 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.IMGUIModule.dll 115 | 116 | 117 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.ImageConversionModule.dll 118 | 119 | 120 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.InputModule.dll 121 | 122 | 123 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.InputLegacyModule.dll 124 | 125 | 126 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.JSONSerializeModule.dll 127 | 128 | 129 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.LocalizationModule.dll 130 | 131 | 132 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.PerformanceReportingModule.dll 133 | 134 | 135 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.PhysicsModule.dll 136 | 137 | 138 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.Physics2DModule.dll 139 | 140 | 141 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.ProfilerModule.dll 142 | 143 | 144 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.RuntimeInitializeOnLoadManagerInitializerModule.dll 145 | 146 | 147 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.SharedInternalsModule.dll 148 | 149 | 150 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.SpriteMaskModule.dll 151 | 152 | 153 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.SpriteShapeModule.dll 154 | 155 | 156 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.StreamingModule.dll 157 | 158 | 159 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.SubstanceModule.dll 160 | 161 | 162 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.TLSModule.dll 163 | 164 | 165 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.TextCoreModule.dll 166 | 167 | 168 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.TextRenderingModule.dll 169 | 170 | 171 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.UIModule.dll 172 | 173 | 174 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.UNETModule.dll 175 | 176 | 177 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.UnityConnectModule.dll 178 | 179 | 180 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.UnityCurlModule.dll 181 | 182 | 183 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.UnityTestProtocolModule.dll 184 | 185 | 186 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.UnityWebRequestModule.dll 187 | 188 | 189 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.UnityWebRequestAssetBundleModule.dll 190 | 191 | 192 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.UnityWebRequestAudioModule.dll 193 | 194 | 195 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.UnityWebRequestWWWModule.dll 196 | 197 | 198 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.VFXModule.dll 199 | 200 | 201 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEngine.VirtualTexturingModule.dll 202 | 203 | 204 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEditor.dll 205 | 206 | 207 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEditor.CoreModule.dll 208 | 209 | 210 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEditor.GraphViewModule.dll 211 | 212 | 213 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEditor.PackageManagerUIModule.dll 214 | 215 | 216 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEditor.SceneTemplateModule.dll 217 | 218 | 219 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEditor.UIElementsModule.dll 220 | 221 | 222 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEditor.UIElementsSamplesModule.dll 223 | 224 | 225 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEditor.UIServiceModule.dll 226 | 227 | 228 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\Managed\UnityEngine\UnityEditor.UnityConnectModule.dll 229 | 230 | 231 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\ref\2.0.0\netstandard.dll 232 | 233 | 234 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\Microsoft.Win32.Primitives.dll 235 | 236 | 237 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.AppContext.dll 238 | 239 | 240 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Collections.Concurrent.dll 241 | 242 | 243 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Collections.dll 244 | 245 | 246 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Collections.NonGeneric.dll 247 | 248 | 249 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Collections.Specialized.dll 250 | 251 | 252 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.ComponentModel.dll 253 | 254 | 255 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.ComponentModel.EventBasedAsync.dll 256 | 257 | 258 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.ComponentModel.Primitives.dll 259 | 260 | 261 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.ComponentModel.TypeConverter.dll 262 | 263 | 264 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Console.dll 265 | 266 | 267 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Data.Common.dll 268 | 269 | 270 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Diagnostics.Contracts.dll 271 | 272 | 273 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Diagnostics.Debug.dll 274 | 275 | 276 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Diagnostics.FileVersionInfo.dll 277 | 278 | 279 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Diagnostics.Process.dll 280 | 281 | 282 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Diagnostics.StackTrace.dll 283 | 284 | 285 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Diagnostics.TextWriterTraceListener.dll 286 | 287 | 288 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Diagnostics.Tools.dll 289 | 290 | 291 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Diagnostics.TraceSource.dll 292 | 293 | 294 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Diagnostics.Tracing.dll 295 | 296 | 297 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Drawing.Primitives.dll 298 | 299 | 300 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Dynamic.Runtime.dll 301 | 302 | 303 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Globalization.Calendars.dll 304 | 305 | 306 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Globalization.dll 307 | 308 | 309 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Globalization.Extensions.dll 310 | 311 | 312 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.IO.Compression.dll 313 | 314 | 315 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.IO.Compression.ZipFile.dll 316 | 317 | 318 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.IO.dll 319 | 320 | 321 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.IO.FileSystem.dll 322 | 323 | 324 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.IO.FileSystem.DriveInfo.dll 325 | 326 | 327 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.IO.FileSystem.Primitives.dll 328 | 329 | 330 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.IO.FileSystem.Watcher.dll 331 | 332 | 333 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.IO.IsolatedStorage.dll 334 | 335 | 336 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.IO.MemoryMappedFiles.dll 337 | 338 | 339 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.IO.Pipes.dll 340 | 341 | 342 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.IO.UnmanagedMemoryStream.dll 343 | 344 | 345 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Linq.dll 346 | 347 | 348 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Linq.Expressions.dll 349 | 350 | 351 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Linq.Parallel.dll 352 | 353 | 354 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Linq.Queryable.dll 355 | 356 | 357 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Net.Http.dll 358 | 359 | 360 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Net.NameResolution.dll 361 | 362 | 363 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Net.NetworkInformation.dll 364 | 365 | 366 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Net.Ping.dll 367 | 368 | 369 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Net.Primitives.dll 370 | 371 | 372 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Net.Requests.dll 373 | 374 | 375 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Net.Security.dll 376 | 377 | 378 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Net.Sockets.dll 379 | 380 | 381 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Net.WebHeaderCollection.dll 382 | 383 | 384 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Net.WebSockets.Client.dll 385 | 386 | 387 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Net.WebSockets.dll 388 | 389 | 390 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.ObjectModel.dll 391 | 392 | 393 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Reflection.dll 394 | 395 | 396 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Reflection.Extensions.dll 397 | 398 | 399 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Reflection.Primitives.dll 400 | 401 | 402 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Resources.Reader.dll 403 | 404 | 405 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Resources.ResourceManager.dll 406 | 407 | 408 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Resources.Writer.dll 409 | 410 | 411 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Runtime.CompilerServices.VisualC.dll 412 | 413 | 414 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Runtime.dll 415 | 416 | 417 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Runtime.Extensions.dll 418 | 419 | 420 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Runtime.Handles.dll 421 | 422 | 423 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Runtime.InteropServices.dll 424 | 425 | 426 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Runtime.InteropServices.RuntimeInformation.dll 427 | 428 | 429 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Runtime.Numerics.dll 430 | 431 | 432 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Runtime.Serialization.Formatters.dll 433 | 434 | 435 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Runtime.Serialization.Json.dll 436 | 437 | 438 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Runtime.Serialization.Primitives.dll 439 | 440 | 441 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Runtime.Serialization.Xml.dll 442 | 443 | 444 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Security.Claims.dll 445 | 446 | 447 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Security.Cryptography.Algorithms.dll 448 | 449 | 450 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Security.Cryptography.Csp.dll 451 | 452 | 453 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Security.Cryptography.Encoding.dll 454 | 455 | 456 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Security.Cryptography.Primitives.dll 457 | 458 | 459 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Security.Cryptography.X509Certificates.dll 460 | 461 | 462 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Security.Principal.dll 463 | 464 | 465 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Security.SecureString.dll 466 | 467 | 468 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Text.Encoding.dll 469 | 470 | 471 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Text.Encoding.Extensions.dll 472 | 473 | 474 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Text.RegularExpressions.dll 475 | 476 | 477 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Threading.dll 478 | 479 | 480 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Threading.Overlapped.dll 481 | 482 | 483 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Threading.Tasks.dll 484 | 485 | 486 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Threading.Tasks.Parallel.dll 487 | 488 | 489 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Threading.Thread.dll 490 | 491 | 492 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Threading.ThreadPool.dll 493 | 494 | 495 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Threading.Timer.dll 496 | 497 | 498 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.ValueTuple.dll 499 | 500 | 501 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Xml.ReaderWriter.dll 502 | 503 | 504 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Xml.XDocument.dll 505 | 506 | 507 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Xml.XmlDocument.dll 508 | 509 | 510 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Xml.XmlSerializer.dll 511 | 512 | 513 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Xml.XPath.dll 514 | 515 | 516 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netstandard\System.Xml.XPath.XDocument.dll 517 | 518 | 519 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\Extensions\2.0.0\System.Numerics.Vectors.dll 520 | 521 | 522 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\Extensions\2.0.0\System.Runtime.InteropServices.WindowsRuntime.dll 523 | 524 | 525 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netfx\mscorlib.dll 526 | 527 | 528 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netfx\System.ComponentModel.Composition.dll 529 | 530 | 531 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netfx\System.Core.dll 532 | 533 | 534 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netfx\System.Data.dll 535 | 536 | 537 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netfx\System.dll 538 | 539 | 540 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netfx\System.Drawing.dll 541 | 542 | 543 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netfx\System.IO.Compression.FileSystem.dll 544 | 545 | 546 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netfx\System.Net.dll 547 | 548 | 549 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netfx\System.Numerics.dll 550 | 551 | 552 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netfx\System.Runtime.Serialization.dll 553 | 554 | 555 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netfx\System.ServiceModel.Web.dll 556 | 557 | 558 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netfx\System.Transactions.dll 559 | 560 | 561 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netfx\System.Web.dll 562 | 563 | 564 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netfx\System.Windows.dll 565 | 566 | 567 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netfx\System.Xml.dll 568 | 569 | 570 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netfx\System.Xml.Linq.dll 571 | 572 | 573 | C:\Program Files\Unity\Hub\Editor\2020.3.8f1\Editor\Data\NetStandard\compat\2.0.0\shims\netfx\System.Xml.Serialization.dll 574 | 575 | 576 | Library\ScriptAssemblies\UniRx.dll 577 | 578 | 579 | Library\ScriptAssemblies\UnityEditor.UI.dll 580 | 581 | 582 | Library\ScriptAssemblies\UnityEngine.UI.dll 583 | 584 | 585 | 586 | 587 | {0E839CF3-21C1-5D65-9AD9-77677FA25C3B} 588 | MackySoft.Modiferty 589 | 590 | 591 | 592 | 593 | 600 | 601 | -------------------------------------------------------------------------------- /Modiferty.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MackySoft.Modiferty.UniRx", "MackySoft.Modiferty.UniRx.csproj", "{2D74497B-FAAD-BF48-1CFF-FBC96B1B4A72}" 5 | EndProject 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MackySoft.Modiferty", "MackySoft.Modiferty.csproj", "{0E839CF3-21C1-5D65-9AD9-77677FA25C3B}" 7 | EndProject 8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MackySoft.Modiferty.Example", "MackySoft.Modiferty.Example.csproj", "{30754986-0801-F858-658A-1AC6F9177A56}" 9 | EndProject 10 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MackySoft.Modiferty.Editor.Tests", "MackySoft.Modiferty.Editor.Tests.csproj", "{939662F6-295E-F2A1-22E5-49F0857FB394}" 11 | EndProject 12 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MackySoft.Modiferty.UniRx.Editor.Tests", "MackySoft.Modiferty.UniRx.Editor.Tests.csproj", "{65C09A01-888D-B064-3BBD-BB1F0ECEA093}" 13 | EndProject 14 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Assembly-CSharp-Editor", "Assembly-CSharp-Editor.csproj", "{1415FCD1-B4E6-D3B0-7160-5D421BFDF8D0}" 15 | EndProject 16 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MackySoft.Modiferty.Editor", "MackySoft.Modiferty.Editor.csproj", "{F80A642E-308A-0522-3EC0-AA74C2C7BB37}" 17 | EndProject 18 | Global 19 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 20 | Debug|Any CPU = Debug|Any CPU 21 | Release|Any CPU = Release|Any CPU 22 | EndGlobalSection 23 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 24 | {2D74497B-FAAD-BF48-1CFF-FBC96B1B4A72}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 25 | {2D74497B-FAAD-BF48-1CFF-FBC96B1B4A72}.Debug|Any CPU.Build.0 = Debug|Any CPU 26 | {2D74497B-FAAD-BF48-1CFF-FBC96B1B4A72}.Release|Any CPU.ActiveCfg = Release|Any CPU 27 | {2D74497B-FAAD-BF48-1CFF-FBC96B1B4A72}.Release|Any CPU.Build.0 = Release|Any CPU 28 | {0E839CF3-21C1-5D65-9AD9-77677FA25C3B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 29 | {0E839CF3-21C1-5D65-9AD9-77677FA25C3B}.Debug|Any CPU.Build.0 = Debug|Any CPU 30 | {0E839CF3-21C1-5D65-9AD9-77677FA25C3B}.Release|Any CPU.ActiveCfg = Release|Any CPU 31 | {0E839CF3-21C1-5D65-9AD9-77677FA25C3B}.Release|Any CPU.Build.0 = Release|Any CPU 32 | {30754986-0801-F858-658A-1AC6F9177A56}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 33 | {30754986-0801-F858-658A-1AC6F9177A56}.Debug|Any CPU.Build.0 = Debug|Any CPU 34 | {30754986-0801-F858-658A-1AC6F9177A56}.Release|Any CPU.ActiveCfg = Release|Any CPU 35 | {30754986-0801-F858-658A-1AC6F9177A56}.Release|Any CPU.Build.0 = Release|Any CPU 36 | {939662F6-295E-F2A1-22E5-49F0857FB394}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 37 | {939662F6-295E-F2A1-22E5-49F0857FB394}.Debug|Any CPU.Build.0 = Debug|Any CPU 38 | {939662F6-295E-F2A1-22E5-49F0857FB394}.Release|Any CPU.ActiveCfg = Release|Any CPU 39 | {939662F6-295E-F2A1-22E5-49F0857FB394}.Release|Any CPU.Build.0 = Release|Any CPU 40 | {65C09A01-888D-B064-3BBD-BB1F0ECEA093}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 41 | {65C09A01-888D-B064-3BBD-BB1F0ECEA093}.Debug|Any CPU.Build.0 = Debug|Any CPU 42 | {65C09A01-888D-B064-3BBD-BB1F0ECEA093}.Release|Any CPU.ActiveCfg = Release|Any CPU 43 | {65C09A01-888D-B064-3BBD-BB1F0ECEA093}.Release|Any CPU.Build.0 = Release|Any CPU 44 | {1415FCD1-B4E6-D3B0-7160-5D421BFDF8D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 45 | {1415FCD1-B4E6-D3B0-7160-5D421BFDF8D0}.Debug|Any CPU.Build.0 = Debug|Any CPU 46 | {1415FCD1-B4E6-D3B0-7160-5D421BFDF8D0}.Release|Any CPU.ActiveCfg = Release|Any CPU 47 | {1415FCD1-B4E6-D3B0-7160-5D421BFDF8D0}.Release|Any CPU.Build.0 = Release|Any CPU 48 | {F80A642E-308A-0522-3EC0-AA74C2C7BB37}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 49 | {F80A642E-308A-0522-3EC0-AA74C2C7BB37}.Debug|Any CPU.Build.0 = Debug|Any CPU 50 | {F80A642E-308A-0522-3EC0-AA74C2C7BB37}.Release|Any CPU.ActiveCfg = Release|Any CPU 51 | {F80A642E-308A-0522-3EC0-AA74C2C7BB37}.Release|Any CPU.Build.0 = Release|Any CPU 52 | EndGlobalSection 53 | GlobalSection(SolutionProperties) = preSolution 54 | HideSolutionNode = FALSE 55 | EndGlobalSection 56 | EndGlobal 57 | -------------------------------------------------------------------------------- /Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.neuecc.unirx": "https://github.com/neuecc/UniRx.git?path=Assets/Plugins/UniRx/Scripts", 4 | "com.unity.ide.rider": "2.0.7", 5 | "com.unity.ide.visualstudio": "2.0.7", 6 | "com.unity.test-framework": "1.1.24", 7 | "com.unity.ugui": "1.0.0", 8 | "com.unity.modules.animation": "1.0.0", 9 | "com.unity.modules.physics": "1.0.0", 10 | "com.unity.modules.physics2d": "1.0.0", 11 | "com.unity.modules.ui": "1.0.0", 12 | "com.unity.modules.unitywebrequestwww": "1.0.0" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Packages/packages-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.neuecc.unirx": { 4 | "version": "https://github.com/neuecc/UniRx.git?path=Assets/Plugins/UniRx/Scripts", 5 | "depth": 0, 6 | "source": "git", 7 | "dependencies": {}, 8 | "hash": "284d5c50d3f1ddd9fa7df3d382ea904732a9c2ff" 9 | }, 10 | "com.unity.ext.nunit": { 11 | "version": "1.0.6", 12 | "depth": 1, 13 | "source": "registry", 14 | "dependencies": {}, 15 | "url": "https://packages.unity.com" 16 | }, 17 | "com.unity.ide.rider": { 18 | "version": "2.0.7", 19 | "depth": 0, 20 | "source": "registry", 21 | "dependencies": { 22 | "com.unity.test-framework": "1.1.1" 23 | }, 24 | "url": "https://packages.unity.com" 25 | }, 26 | "com.unity.ide.visualstudio": { 27 | "version": "2.0.7", 28 | "depth": 0, 29 | "source": "registry", 30 | "dependencies": { 31 | "com.unity.test-framework": "1.1.9" 32 | }, 33 | "url": "https://packages.unity.com" 34 | }, 35 | "com.unity.test-framework": { 36 | "version": "1.1.24", 37 | "depth": 0, 38 | "source": "registry", 39 | "dependencies": { 40 | "com.unity.ext.nunit": "1.0.6", 41 | "com.unity.modules.imgui": "1.0.0", 42 | "com.unity.modules.jsonserialize": "1.0.0" 43 | }, 44 | "url": "https://packages.unity.com" 45 | }, 46 | "com.unity.ugui": { 47 | "version": "1.0.0", 48 | "depth": 0, 49 | "source": "builtin", 50 | "dependencies": { 51 | "com.unity.modules.ui": "1.0.0", 52 | "com.unity.modules.imgui": "1.0.0" 53 | } 54 | }, 55 | "com.unity.modules.animation": { 56 | "version": "1.0.0", 57 | "depth": 0, 58 | "source": "builtin", 59 | "dependencies": {} 60 | }, 61 | "com.unity.modules.assetbundle": { 62 | "version": "1.0.0", 63 | "depth": 1, 64 | "source": "builtin", 65 | "dependencies": {} 66 | }, 67 | "com.unity.modules.audio": { 68 | "version": "1.0.0", 69 | "depth": 1, 70 | "source": "builtin", 71 | "dependencies": {} 72 | }, 73 | "com.unity.modules.imageconversion": { 74 | "version": "1.0.0", 75 | "depth": 1, 76 | "source": "builtin", 77 | "dependencies": {} 78 | }, 79 | "com.unity.modules.imgui": { 80 | "version": "1.0.0", 81 | "depth": 1, 82 | "source": "builtin", 83 | "dependencies": {} 84 | }, 85 | "com.unity.modules.jsonserialize": { 86 | "version": "1.0.0", 87 | "depth": 1, 88 | "source": "builtin", 89 | "dependencies": {} 90 | }, 91 | "com.unity.modules.physics": { 92 | "version": "1.0.0", 93 | "depth": 0, 94 | "source": "builtin", 95 | "dependencies": {} 96 | }, 97 | "com.unity.modules.physics2d": { 98 | "version": "1.0.0", 99 | "depth": 0, 100 | "source": "builtin", 101 | "dependencies": {} 102 | }, 103 | "com.unity.modules.ui": { 104 | "version": "1.0.0", 105 | "depth": 0, 106 | "source": "builtin", 107 | "dependencies": {} 108 | }, 109 | "com.unity.modules.unitywebrequest": { 110 | "version": "1.0.0", 111 | "depth": 1, 112 | "source": "builtin", 113 | "dependencies": {} 114 | }, 115 | "com.unity.modules.unitywebrequestassetbundle": { 116 | "version": "1.0.0", 117 | "depth": 1, 118 | "source": "builtin", 119 | "dependencies": { 120 | "com.unity.modules.assetbundle": "1.0.0", 121 | "com.unity.modules.unitywebrequest": "1.0.0" 122 | } 123 | }, 124 | "com.unity.modules.unitywebrequestaudio": { 125 | "version": "1.0.0", 126 | "depth": 1, 127 | "source": "builtin", 128 | "dependencies": { 129 | "com.unity.modules.unitywebrequest": "1.0.0", 130 | "com.unity.modules.audio": "1.0.0" 131 | } 132 | }, 133 | "com.unity.modules.unitywebrequestwww": { 134 | "version": "1.0.0", 135 | "depth": 0, 136 | "source": "builtin", 137 | "dependencies": { 138 | "com.unity.modules.unitywebrequest": "1.0.0", 139 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 140 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 141 | "com.unity.modules.audio": "1.0.0", 142 | "com.unity.modules.assetbundle": "1.0.0", 143 | "com.unity.modules.imageconversion": "1.0.0" 144 | } 145 | } 146 | } 147 | } 148 | -------------------------------------------------------------------------------- /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 | serializedVersion: 2 7 | m_Volume: 1 8 | Rolloff Scale: 1 9 | Doppler Factor: 1 10 | Default Speaker Mode: 2 11 | m_SampleRate: 0 12 | m_DSPBufferSize: 1024 13 | m_VirtualVoiceCount: 512 14 | m_RealVoiceCount: 32 15 | m_SpatializerPlugin: 16 | m_AmbisonicDecoderPlugin: 17 | m_DisableAudio: 0 18 | m_VirtualizeEffects: 1 19 | m_RequestedDSPBufferSize: 1024 20 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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: 11 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: 0 23 | m_ReuseCollisionCallbacks: 1 24 | m_ClothInterCollisionSettingsToggle: 0 25 | m_ContactPairsMode: 0 26 | m_BroadphaseType: 0 27 | m_WorldBounds: 28 | m_Center: {x: 0, y: 0, z: 0} 29 | m_Extent: {x: 250, y: 250, z: 250} 30 | m_WorldSubdivisions: 8 31 | m_FrictionType: 0 32 | m_EnableEnhancedDeterminism: 0 33 | m_EnableUnifiedHeightmaps: 1 34 | m_DefaultMaxAngluarSpeed: 7 35 | -------------------------------------------------------------------------------- /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 | m_configObjects: {} 9 | -------------------------------------------------------------------------------- /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: 9 7 | m_ExternalVersionControlSupport: Visible Meta Files 8 | m_SerializationMode: 2 9 | m_LineEndingsForNewScripts: 0 10 | m_DefaultBehaviorMode: 0 11 | m_PrefabRegularEnvironment: {fileID: 0} 12 | m_PrefabUIEnvironment: {fileID: 0} 13 | m_SpritePackerMode: 0 14 | m_SpritePackerPaddingPower: 1 15 | m_EtcTextureCompressorBehavior: 1 16 | m_EtcTextureFastCompressor: 1 17 | m_EtcTextureNormalCompressor: 2 18 | m_EtcTextureBestCompressor: 4 19 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp;asmref 20 | m_ProjectGenerationRootNamespace: 21 | m_CollabEditorSettings: 22 | inProgressEnabled: 1 23 | m_EnableTextureStreamingInEditMode: 1 24 | m_EnableTextureStreamingInPlayMode: 1 25 | m_AsyncShaderCompilation: 1 26 | m_EnterPlayModeOptionsEnabled: 0 27 | m_EnterPlayModeOptions: 3 28 | m_ShowLightmapResolutionOverlay: 1 29 | m_UseLegacyProbeSampleCount: 0 30 | m_AssetPipelineMode: 1 31 | m_CacheServerMode: 0 32 | m_CacheServerEndpoint: 33 | m_CacheServerNamespacePrefix: default 34 | m_CacheServerEnableDownload: 1 35 | m_CacheServerEnableUpload: 1 36 | -------------------------------------------------------------------------------- /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: 13 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 | m_PreloadedShaders: [] 39 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, 40 | type: 0} 41 | m_CustomRenderPipeline: {fileID: 0} 42 | m_TransparencySortMode: 0 43 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 44 | m_DefaultRenderingPath: 1 45 | m_DefaultMobileRenderingPath: 1 46 | m_TierSettings: [] 47 | m_LightmapStripping: 0 48 | m_FogStripping: 0 49 | m_InstancingStripping: 0 50 | m_LightmapKeepPlain: 1 51 | m_LightmapKeepDirCombined: 1 52 | m_LightmapKeepDynamicPlain: 1 53 | m_LightmapKeepDynamicDirCombined: 1 54 | m_LightmapKeepShadowMask: 1 55 | m_LightmapKeepSubtractive: 1 56 | m_FogKeepLinear: 1 57 | m_FogKeepExp: 1 58 | m_FogKeepExp2: 1 59 | m_AlbedoSwatchInfos: [] 60 | m_LightsUseLinearIntensity: 0 61 | m_LightsUseColorTemperature: 0 62 | m_LogWhenShaderIsCompiled: 0 63 | m_AllowEnlightenSupportForUpgradedProject: 0 64 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /ProjectSettings/PackageManagerSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &1 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 61 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | m_EnablePreviewPackages: 0 16 | m_EnablePackageDependencies: 0 17 | m_AdvancedSettingsExpanded: 1 18 | m_ScopedRegistriesSettingsExpanded: 1 19 | oneTimeWarningShown: 0 20 | m_Registries: 21 | - m_Id: main 22 | m_Name: 23 | m_Url: https://packages.unity.com 24 | m_Scopes: [] 25 | m_IsDefault: 1 26 | m_Capabilities: 7 27 | m_UserSelectedRegistryName: 28 | m_UserAddingNewScopedRegistry: 0 29 | m_RegistryInfoDraft: 30 | m_ErrorMessage: 31 | m_Original: 32 | m_Id: 33 | m_Name: 34 | m_Url: 35 | m_Scopes: [] 36 | m_IsDefault: 0 37 | m_Capabilities: 0 38 | m_Modified: 0 39 | m_Name: 40 | m_Url: 41 | m_Scopes: 42 | - 43 | m_SelectedScopeIndex: 0 44 | -------------------------------------------------------------------------------- /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: 4 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_JobOptions: 23 | serializedVersion: 2 24 | useMultithreading: 0 25 | useConsistencySorting: 0 26 | m_InterpolationPosesPerJob: 100 27 | m_NewContactsPerJob: 30 28 | m_CollideContactsPerJob: 100 29 | m_ClearFlagsPerJob: 200 30 | m_ClearBodyForcesPerJob: 200 31 | m_SyncDiscreteFixturesPerJob: 50 32 | m_SyncContinuousFixturesPerJob: 50 33 | m_FindNearestContactsPerJob: 100 34 | m_UpdateTriggerContactsPerJob: 100 35 | m_IslandSolverCostThreshold: 100 36 | m_IslandSolverBodyCostScale: 1 37 | m_IslandSolverContactCostScale: 10 38 | m_IslandSolverJointCostScale: 10 39 | m_IslandSolverBodiesPerJob: 50 40 | m_IslandSolverContactsPerJob: 50 41 | m_AutoSimulation: 1 42 | m_QueriesHitTriggers: 1 43 | m_QueriesStartInColliders: 1 44 | m_CallbacksOnDisable: 1 45 | m_ReuseCollisionCallbacks: 1 46 | m_AutoSyncTransforms: 0 47 | m_AlwaysShowColliders: 0 48 | m_ShowColliderSleep: 1 49 | m_ShowColliderContacts: 0 50 | m_ShowColliderAABB: 0 51 | m_ContactArrowScale: 0.2 52 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 53 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 54 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 55 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 56 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 57 | -------------------------------------------------------------------------------- /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 | serializedVersion: 2 7 | m_DefaultPresets: {} 8 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!129 &1 4 | PlayerSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 22 7 | productGUID: da68b6856e8dbb14d8f283c185686559 8 | AndroidProfiler: 0 9 | AndroidFilterTouchesWhenObscured: 0 10 | AndroidEnableSustainedPerformanceMode: 0 11 | defaultScreenOrientation: 4 12 | targetDevice: 2 13 | useOnDemandResources: 0 14 | accelerometerFrequency: 60 15 | companyName: MackySoft 16 | productName: Modiferty 17 | defaultCursor: {fileID: 0} 18 | cursorHotspot: {x: 0, y: 0} 19 | m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} 20 | m_ShowUnitySplashScreen: 1 21 | m_ShowUnitySplashLogo: 1 22 | m_SplashScreenOverlayOpacity: 1 23 | m_SplashScreenAnimation: 1 24 | m_SplashScreenLogoStyle: 1 25 | m_SplashScreenDrawMode: 0 26 | m_SplashScreenBackgroundAnimationZoom: 1 27 | m_SplashScreenLogoAnimationZoom: 1 28 | m_SplashScreenBackgroundLandscapeAspect: 1 29 | m_SplashScreenBackgroundPortraitAspect: 1 30 | m_SplashScreenBackgroundLandscapeUvs: 31 | serializedVersion: 2 32 | x: 0 33 | y: 0 34 | width: 1 35 | height: 1 36 | m_SplashScreenBackgroundPortraitUvs: 37 | serializedVersion: 2 38 | x: 0 39 | y: 0 40 | width: 1 41 | height: 1 42 | m_SplashScreenLogos: [] 43 | m_VirtualRealitySplashScreen: {fileID: 0} 44 | m_HolographicTrackingLossScreen: {fileID: 0} 45 | defaultScreenWidth: 1024 46 | defaultScreenHeight: 768 47 | defaultScreenWidthWeb: 960 48 | defaultScreenHeightWeb: 600 49 | m_StereoRenderingPath: 0 50 | m_ActiveColorSpace: 0 51 | m_MTRendering: 1 52 | mipStripping: 0 53 | numberOfMipsStripped: 0 54 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000 55 | iosShowActivityIndicatorOnLoading: -1 56 | androidShowActivityIndicatorOnLoading: -1 57 | iosUseCustomAppBackgroundBehavior: 0 58 | iosAllowHTTPDownload: 1 59 | allowedAutorotateToPortrait: 1 60 | allowedAutorotateToPortraitUpsideDown: 1 61 | allowedAutorotateToLandscapeRight: 1 62 | allowedAutorotateToLandscapeLeft: 1 63 | useOSAutorotation: 1 64 | use32BitDisplayBuffer: 1 65 | preserveFramebufferAlpha: 0 66 | disableDepthAndStencilBuffers: 0 67 | androidStartInFullscreen: 1 68 | androidRenderOutsideSafeArea: 1 69 | androidUseSwappy: 0 70 | androidBlitType: 0 71 | defaultIsNativeResolution: 1 72 | macRetinaSupport: 1 73 | runInBackground: 1 74 | captureSingleScreen: 0 75 | muteOtherAudioSources: 0 76 | Prepare IOS For Recording: 0 77 | Force IOS Speakers When Recording: 0 78 | deferSystemGesturesMode: 0 79 | hideHomeButton: 0 80 | submitAnalytics: 1 81 | usePlayerLog: 1 82 | bakeCollisionMeshes: 0 83 | forceSingleInstance: 0 84 | useFlipModelSwapchain: 1 85 | resizableWindow: 0 86 | useMacAppStoreValidation: 0 87 | macAppStoreCategory: public.app-category.games 88 | gpuSkinning: 1 89 | xboxPIXTextureCapture: 0 90 | xboxEnableAvatar: 0 91 | xboxEnableKinect: 0 92 | xboxEnableKinectAutoTracking: 0 93 | xboxEnableFitness: 0 94 | visibleInBackground: 1 95 | allowFullscreenSwitch: 1 96 | fullscreenMode: 1 97 | xboxSpeechDB: 0 98 | xboxEnableHeadOrientation: 0 99 | xboxEnableGuest: 0 100 | xboxEnablePIXSampling: 0 101 | metalFramebufferOnly: 0 102 | xboxOneResolution: 0 103 | xboxOneSResolution: 0 104 | xboxOneXResolution: 3 105 | xboxOneMonoLoggingLevel: 0 106 | xboxOneLoggingLevel: 1 107 | xboxOneDisableEsram: 0 108 | xboxOneEnableTypeOptimization: 0 109 | xboxOnePresentImmediateThreshold: 0 110 | switchQueueCommandMemory: 0 111 | switchQueueControlMemory: 16384 112 | switchQueueComputeMemory: 262144 113 | switchNVNShaderPoolsGranularity: 33554432 114 | switchNVNDefaultPoolsGranularity: 16777216 115 | switchNVNOtherPoolsGranularity: 16777216 116 | switchNVNMaxPublicTextureIDCount: 0 117 | switchNVNMaxPublicSamplerIDCount: 0 118 | stadiaPresentMode: 0 119 | stadiaTargetFramerate: 0 120 | vulkanNumSwapchainBuffers: 3 121 | vulkanEnableSetSRGBWrite: 0 122 | vulkanEnablePreTransform: 0 123 | vulkanEnableLateAcquireNextImage: 0 124 | m_SupportedAspectRatios: 125 | 4:3: 1 126 | 5:4: 1 127 | 16:10: 1 128 | 16:9: 1 129 | Others: 1 130 | bundleVersion: 0.1 131 | preloadedAssets: [] 132 | metroInputSource: 0 133 | wsaTransparentSwapchain: 0 134 | m_HolographicPauseOnTrackingLoss: 1 135 | xboxOneDisableKinectGpuReservation: 1 136 | xboxOneEnable7thCore: 1 137 | vrSettings: 138 | enable360StereoCapture: 0 139 | isWsaHolographicRemotingEnabled: 0 140 | enableFrameTimingStats: 0 141 | useHDRDisplay: 0 142 | D3DHDRBitDepth: 0 143 | m_ColorGamuts: 00000000 144 | targetPixelDensity: 30 145 | resolutionScalingMode: 0 146 | androidSupportedAspectRatio: 1 147 | androidMaxAspectRatio: 2.1 148 | applicationIdentifier: 149 | Standalone: com.MackySoft.Modiferty 150 | buildNumber: 151 | Standalone: 0 152 | iPhone: 0 153 | tvOS: 0 154 | overrideDefaultApplicationIdentifier: 0 155 | AndroidBundleVersionCode: 1 156 | AndroidMinSdkVersion: 19 157 | AndroidTargetSdkVersion: 0 158 | AndroidPreferredInstallLocation: 1 159 | aotOptions: 160 | stripEngineCode: 1 161 | iPhoneStrippingLevel: 0 162 | iPhoneScriptCallOptimization: 0 163 | ForceInternetPermission: 0 164 | ForceSDCardPermission: 0 165 | CreateWallpaper: 0 166 | APKExpansionFiles: 0 167 | keepLoadedShadersAlive: 0 168 | StripUnusedMeshComponents: 1 169 | VertexChannelCompressionMask: 4054 170 | iPhoneSdkVersion: 988 171 | iOSTargetOSVersionString: 11.0 172 | tvOSSdkVersion: 0 173 | tvOSRequireExtendedGameController: 0 174 | tvOSTargetOSVersionString: 11.0 175 | uIPrerenderedIcon: 0 176 | uIRequiresPersistentWiFi: 0 177 | uIRequiresFullScreen: 1 178 | uIStatusBarHidden: 1 179 | uIExitOnSuspend: 0 180 | uIStatusBarStyle: 0 181 | appleTVSplashScreen: {fileID: 0} 182 | appleTVSplashScreen2x: {fileID: 0} 183 | tvOSSmallIconLayers: [] 184 | tvOSSmallIconLayers2x: [] 185 | tvOSLargeIconLayers: [] 186 | tvOSLargeIconLayers2x: [] 187 | tvOSTopShelfImageLayers: [] 188 | tvOSTopShelfImageLayers2x: [] 189 | tvOSTopShelfImageWideLayers: [] 190 | tvOSTopShelfImageWideLayers2x: [] 191 | iOSLaunchScreenType: 0 192 | iOSLaunchScreenPortrait: {fileID: 0} 193 | iOSLaunchScreenLandscape: {fileID: 0} 194 | iOSLaunchScreenBackgroundColor: 195 | serializedVersion: 2 196 | rgba: 0 197 | iOSLaunchScreenFillPct: 100 198 | iOSLaunchScreenSize: 100 199 | iOSLaunchScreenCustomXibPath: 200 | iOSLaunchScreeniPadType: 0 201 | iOSLaunchScreeniPadImage: {fileID: 0} 202 | iOSLaunchScreeniPadBackgroundColor: 203 | serializedVersion: 2 204 | rgba: 0 205 | iOSLaunchScreeniPadFillPct: 100 206 | iOSLaunchScreeniPadSize: 100 207 | iOSLaunchScreeniPadCustomXibPath: 208 | iOSLaunchScreenCustomStoryboardPath: 209 | iOSLaunchScreeniPadCustomStoryboardPath: 210 | iOSDeviceRequirements: [] 211 | iOSURLSchemes: [] 212 | iOSBackgroundModes: 0 213 | iOSMetalForceHardShadows: 0 214 | metalEditorSupport: 1 215 | metalAPIValidation: 1 216 | iOSRenderExtraFrameOnPause: 0 217 | iosCopyPluginsCodeInsteadOfSymlink: 0 218 | appleDeveloperTeamID: 219 | iOSManualSigningProvisioningProfileID: 220 | tvOSManualSigningProvisioningProfileID: 221 | iOSManualSigningProvisioningProfileType: 0 222 | tvOSManualSigningProvisioningProfileType: 0 223 | appleEnableAutomaticSigning: 0 224 | iOSRequireARKit: 0 225 | iOSAutomaticallyDetectAndAddCapabilities: 1 226 | appleEnableProMotion: 0 227 | shaderPrecisionModel: 0 228 | clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea 229 | templatePackageId: com.unity.template.3d@4.2.8 230 | templateDefaultScene: Assets/Scenes/SampleScene.unity 231 | useCustomMainManifest: 0 232 | useCustomLauncherManifest: 0 233 | useCustomMainGradleTemplate: 0 234 | useCustomLauncherGradleManifest: 0 235 | useCustomBaseGradleTemplate: 0 236 | useCustomGradlePropertiesTemplate: 0 237 | useCustomProguardFile: 0 238 | AndroidTargetArchitectures: 1 239 | AndroidSplashScreenScale: 0 240 | androidSplashScreen: {fileID: 0} 241 | AndroidKeystoreName: 242 | AndroidKeyaliasName: 243 | AndroidBuildApkPerCpuArchitecture: 0 244 | AndroidTVCompatibility: 0 245 | AndroidIsGame: 1 246 | AndroidEnableTango: 0 247 | androidEnableBanner: 1 248 | androidUseLowAccuracyLocation: 0 249 | androidUseCustomKeystore: 0 250 | m_AndroidBanners: 251 | - width: 320 252 | height: 180 253 | banner: {fileID: 0} 254 | androidGamepadSupportLevel: 0 255 | AndroidMinifyWithR8: 0 256 | AndroidMinifyRelease: 0 257 | AndroidMinifyDebug: 0 258 | AndroidValidateAppBundleSize: 1 259 | AndroidAppBundleSizeToValidate: 150 260 | m_BuildTargetIcons: [] 261 | m_BuildTargetPlatformIcons: [] 262 | m_BuildTargetBatching: 263 | - m_BuildTarget: Standalone 264 | m_StaticBatching: 1 265 | m_DynamicBatching: 0 266 | - m_BuildTarget: tvOS 267 | m_StaticBatching: 1 268 | m_DynamicBatching: 0 269 | - m_BuildTarget: Android 270 | m_StaticBatching: 1 271 | m_DynamicBatching: 0 272 | - m_BuildTarget: iPhone 273 | m_StaticBatching: 1 274 | m_DynamicBatching: 0 275 | - m_BuildTarget: WebGL 276 | m_StaticBatching: 0 277 | m_DynamicBatching: 0 278 | m_BuildTargetGraphicsJobs: 279 | - m_BuildTarget: MacStandaloneSupport 280 | m_GraphicsJobs: 0 281 | - m_BuildTarget: Switch 282 | m_GraphicsJobs: 1 283 | - m_BuildTarget: MetroSupport 284 | m_GraphicsJobs: 1 285 | - m_BuildTarget: AppleTVSupport 286 | m_GraphicsJobs: 0 287 | - m_BuildTarget: BJMSupport 288 | m_GraphicsJobs: 1 289 | - m_BuildTarget: LinuxStandaloneSupport 290 | m_GraphicsJobs: 1 291 | - m_BuildTarget: PS4Player 292 | m_GraphicsJobs: 1 293 | - m_BuildTarget: iOSSupport 294 | m_GraphicsJobs: 0 295 | - m_BuildTarget: WindowsStandaloneSupport 296 | m_GraphicsJobs: 1 297 | - m_BuildTarget: XboxOnePlayer 298 | m_GraphicsJobs: 1 299 | - m_BuildTarget: LuminSupport 300 | m_GraphicsJobs: 0 301 | - m_BuildTarget: AndroidPlayer 302 | m_GraphicsJobs: 0 303 | - m_BuildTarget: WebGLSupport 304 | m_GraphicsJobs: 0 305 | m_BuildTargetGraphicsJobMode: 306 | - m_BuildTarget: PS4Player 307 | m_GraphicsJobMode: 0 308 | - m_BuildTarget: XboxOnePlayer 309 | m_GraphicsJobMode: 0 310 | m_BuildTargetGraphicsAPIs: 311 | - m_BuildTarget: AndroidPlayer 312 | m_APIs: 150000000b000000 313 | m_Automatic: 0 314 | - m_BuildTarget: iOSSupport 315 | m_APIs: 10000000 316 | m_Automatic: 1 317 | - m_BuildTarget: AppleTVSupport 318 | m_APIs: 10000000 319 | m_Automatic: 1 320 | - m_BuildTarget: WebGLSupport 321 | m_APIs: 0b000000 322 | m_Automatic: 1 323 | m_BuildTargetVRSettings: 324 | - m_BuildTarget: Standalone 325 | m_Enabled: 0 326 | m_Devices: 327 | - Oculus 328 | - OpenVR 329 | openGLRequireES31: 0 330 | openGLRequireES31AEP: 0 331 | openGLRequireES32: 0 332 | m_TemplateCustomTags: {} 333 | mobileMTRendering: 334 | Android: 1 335 | iPhone: 1 336 | tvOS: 1 337 | m_BuildTargetGroupLightmapEncodingQuality: [] 338 | m_BuildTargetGroupLightmapSettings: [] 339 | m_BuildTargetNormalMapEncoding: [] 340 | playModeTestRunnerEnabled: 0 341 | runPlayModeTestAsEditModeTest: 0 342 | actionOnDotNetUnhandledException: 1 343 | enableInternalProfiler: 0 344 | logObjCUncaughtExceptions: 1 345 | enableCrashReportAPI: 0 346 | cameraUsageDescription: 347 | locationUsageDescription: 348 | microphoneUsageDescription: 349 | switchNMETAOverride: 350 | switchNetLibKey: 351 | switchSocketMemoryPoolSize: 6144 352 | switchSocketAllocatorPoolSize: 128 353 | switchSocketConcurrencyLimit: 14 354 | switchScreenResolutionBehavior: 2 355 | switchUseCPUProfiler: 0 356 | switchUseGOLDLinker: 0 357 | switchApplicationID: 0x01004b9000490000 358 | switchNSODependencies: 359 | switchTitleNames_0: 360 | switchTitleNames_1: 361 | switchTitleNames_2: 362 | switchTitleNames_3: 363 | switchTitleNames_4: 364 | switchTitleNames_5: 365 | switchTitleNames_6: 366 | switchTitleNames_7: 367 | switchTitleNames_8: 368 | switchTitleNames_9: 369 | switchTitleNames_10: 370 | switchTitleNames_11: 371 | switchTitleNames_12: 372 | switchTitleNames_13: 373 | switchTitleNames_14: 374 | switchTitleNames_15: 375 | switchPublisherNames_0: 376 | switchPublisherNames_1: 377 | switchPublisherNames_2: 378 | switchPublisherNames_3: 379 | switchPublisherNames_4: 380 | switchPublisherNames_5: 381 | switchPublisherNames_6: 382 | switchPublisherNames_7: 383 | switchPublisherNames_8: 384 | switchPublisherNames_9: 385 | switchPublisherNames_10: 386 | switchPublisherNames_11: 387 | switchPublisherNames_12: 388 | switchPublisherNames_13: 389 | switchPublisherNames_14: 390 | switchPublisherNames_15: 391 | switchIcons_0: {fileID: 0} 392 | switchIcons_1: {fileID: 0} 393 | switchIcons_2: {fileID: 0} 394 | switchIcons_3: {fileID: 0} 395 | switchIcons_4: {fileID: 0} 396 | switchIcons_5: {fileID: 0} 397 | switchIcons_6: {fileID: 0} 398 | switchIcons_7: {fileID: 0} 399 | switchIcons_8: {fileID: 0} 400 | switchIcons_9: {fileID: 0} 401 | switchIcons_10: {fileID: 0} 402 | switchIcons_11: {fileID: 0} 403 | switchIcons_12: {fileID: 0} 404 | switchIcons_13: {fileID: 0} 405 | switchIcons_14: {fileID: 0} 406 | switchIcons_15: {fileID: 0} 407 | switchSmallIcons_0: {fileID: 0} 408 | switchSmallIcons_1: {fileID: 0} 409 | switchSmallIcons_2: {fileID: 0} 410 | switchSmallIcons_3: {fileID: 0} 411 | switchSmallIcons_4: {fileID: 0} 412 | switchSmallIcons_5: {fileID: 0} 413 | switchSmallIcons_6: {fileID: 0} 414 | switchSmallIcons_7: {fileID: 0} 415 | switchSmallIcons_8: {fileID: 0} 416 | switchSmallIcons_9: {fileID: 0} 417 | switchSmallIcons_10: {fileID: 0} 418 | switchSmallIcons_11: {fileID: 0} 419 | switchSmallIcons_12: {fileID: 0} 420 | switchSmallIcons_13: {fileID: 0} 421 | switchSmallIcons_14: {fileID: 0} 422 | switchSmallIcons_15: {fileID: 0} 423 | switchManualHTML: 424 | switchAccessibleURLs: 425 | switchLegalInformation: 426 | switchMainThreadStackSize: 1048576 427 | switchPresenceGroupId: 428 | switchLogoHandling: 0 429 | switchReleaseVersion: 0 430 | switchDisplayVersion: 1.0.0 431 | switchStartupUserAccount: 0 432 | switchTouchScreenUsage: 0 433 | switchSupportedLanguagesMask: 0 434 | switchLogoType: 0 435 | switchApplicationErrorCodeCategory: 436 | switchUserAccountSaveDataSize: 0 437 | switchUserAccountSaveDataJournalSize: 0 438 | switchApplicationAttribute: 0 439 | switchCardSpecSize: -1 440 | switchCardSpecClock: -1 441 | switchRatingsMask: 0 442 | switchRatingsInt_0: 0 443 | switchRatingsInt_1: 0 444 | switchRatingsInt_2: 0 445 | switchRatingsInt_3: 0 446 | switchRatingsInt_4: 0 447 | switchRatingsInt_5: 0 448 | switchRatingsInt_6: 0 449 | switchRatingsInt_7: 0 450 | switchRatingsInt_8: 0 451 | switchRatingsInt_9: 0 452 | switchRatingsInt_10: 0 453 | switchRatingsInt_11: 0 454 | switchRatingsInt_12: 0 455 | switchLocalCommunicationIds_0: 456 | switchLocalCommunicationIds_1: 457 | switchLocalCommunicationIds_2: 458 | switchLocalCommunicationIds_3: 459 | switchLocalCommunicationIds_4: 460 | switchLocalCommunicationIds_5: 461 | switchLocalCommunicationIds_6: 462 | switchLocalCommunicationIds_7: 463 | switchParentalControl: 0 464 | switchAllowsScreenshot: 1 465 | switchAllowsVideoCapturing: 1 466 | switchAllowsRuntimeAddOnContentInstall: 0 467 | switchDataLossConfirmation: 0 468 | switchUserAccountLockEnabled: 0 469 | switchSystemResourceMemory: 16777216 470 | switchSupportedNpadStyles: 22 471 | switchNativeFsCacheSize: 32 472 | switchIsHoldTypeHorizontal: 0 473 | switchSupportedNpadCount: 8 474 | switchSocketConfigEnabled: 0 475 | switchTcpInitialSendBufferSize: 32 476 | switchTcpInitialReceiveBufferSize: 64 477 | switchTcpAutoSendBufferSizeMax: 256 478 | switchTcpAutoReceiveBufferSizeMax: 256 479 | switchUdpSendBufferSize: 9 480 | switchUdpReceiveBufferSize: 42 481 | switchSocketBufferEfficiency: 4 482 | switchSocketInitializeEnabled: 1 483 | switchNetworkInterfaceManagerInitializeEnabled: 1 484 | switchPlayerConnectionEnabled: 1 485 | switchUseNewStyleFilepaths: 0 486 | switchUseMicroSleepForYield: 1 487 | switchMicroSleepForYieldTime: 25 488 | ps4NPAgeRating: 12 489 | ps4NPTitleSecret: 490 | ps4NPTrophyPackPath: 491 | ps4ParentalLevel: 11 492 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000 493 | ps4Category: 0 494 | ps4MasterVersion: 01.00 495 | ps4AppVersion: 01.00 496 | ps4AppType: 0 497 | ps4ParamSfxPath: 498 | ps4VideoOutPixelFormat: 0 499 | ps4VideoOutInitialWidth: 1920 500 | ps4VideoOutBaseModeInitialWidth: 1920 501 | ps4VideoOutReprojectionRate: 60 502 | ps4PronunciationXMLPath: 503 | ps4PronunciationSIGPath: 504 | ps4BackgroundImagePath: 505 | ps4StartupImagePath: 506 | ps4StartupImagesFolder: 507 | ps4IconImagesFolder: 508 | ps4SaveDataImagePath: 509 | ps4SdkOverride: 510 | ps4BGMPath: 511 | ps4ShareFilePath: 512 | ps4ShareOverlayImagePath: 513 | ps4PrivacyGuardImagePath: 514 | ps4ExtraSceSysFile: 515 | ps4NPtitleDatPath: 516 | ps4RemotePlayKeyAssignment: -1 517 | ps4RemotePlayKeyMappingDir: 518 | ps4PlayTogetherPlayerCount: 0 519 | ps4EnterButtonAssignment: 1 520 | ps4ApplicationParam1: 0 521 | ps4ApplicationParam2: 0 522 | ps4ApplicationParam3: 0 523 | ps4ApplicationParam4: 0 524 | ps4DownloadDataSize: 0 525 | ps4GarlicHeapSize: 2048 526 | ps4ProGarlicHeapSize: 2560 527 | playerPrefsMaxSize: 32768 528 | ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ 529 | ps4pnSessions: 1 530 | ps4pnPresence: 1 531 | ps4pnFriends: 1 532 | ps4pnGameCustomData: 1 533 | playerPrefsSupport: 0 534 | enableApplicationExit: 0 535 | resetTempFolder: 1 536 | restrictedAudioUsageRights: 0 537 | ps4UseResolutionFallback: 0 538 | ps4ReprojectionSupport: 0 539 | ps4UseAudio3dBackend: 0 540 | ps4UseLowGarlicFragmentationMode: 1 541 | ps4SocialScreenEnabled: 0 542 | ps4ScriptOptimizationLevel: 0 543 | ps4Audio3dVirtualSpeakerCount: 14 544 | ps4attribCpuUsage: 0 545 | ps4PatchPkgPath: 546 | ps4PatchLatestPkgPath: 547 | ps4PatchChangeinfoPath: 548 | ps4PatchDayOne: 0 549 | ps4attribUserManagement: 0 550 | ps4attribMoveSupport: 0 551 | ps4attrib3DSupport: 0 552 | ps4attribShareSupport: 0 553 | ps4attribExclusiveVR: 0 554 | ps4disableAutoHideSplash: 0 555 | ps4videoRecordingFeaturesUsed: 0 556 | ps4contentSearchFeaturesUsed: 0 557 | ps4CompatibilityPS5: 0 558 | ps4GPU800MHz: 1 559 | ps4attribEyeToEyeDistanceSettingVR: 0 560 | ps4IncludedModules: [] 561 | ps4attribVROutputEnabled: 0 562 | monoEnv: 563 | splashScreenBackgroundSourceLandscape: {fileID: 0} 564 | splashScreenBackgroundSourcePortrait: {fileID: 0} 565 | blurSplashScreenBackground: 1 566 | spritePackerPolicy: 567 | webGLMemorySize: 16 568 | webGLExceptionSupport: 1 569 | webGLNameFilesAsHashes: 0 570 | webGLDataCaching: 1 571 | webGLDebugSymbols: 0 572 | webGLEmscriptenArgs: 573 | webGLModulesDirectory: 574 | webGLTemplate: APPLICATION:Default 575 | webGLAnalyzeBuildSize: 0 576 | webGLUseEmbeddedResources: 0 577 | webGLCompressionFormat: 1 578 | webGLWasmArithmeticExceptions: 0 579 | webGLLinkerTarget: 1 580 | webGLThreadsSupport: 0 581 | webGLDecompressionFallback: 0 582 | scriptingDefineSymbols: 583 | 1: MODIFERTY_UNIRX 584 | additionalCompilerArguments: {} 585 | platformArchitecture: {} 586 | scriptingBackend: {} 587 | il2cppCompilerConfiguration: {} 588 | managedStrippingLevel: {} 589 | incrementalIl2cppBuild: {} 590 | suppressCommonWarnings: 1 591 | allowUnsafeCode: 0 592 | useDeterministicCompilation: 1 593 | useReferenceAssemblies: 1 594 | enableRoslynAnalyzers: 1 595 | additionalIl2CppArgs: 596 | scriptingRuntimeVersion: 1 597 | gcIncremental: 0 598 | assemblyVersionValidation: 1 599 | gcWBarrierValidation: 0 600 | apiCompatibilityLevelPerPlatform: {} 601 | m_RenderingPath: 1 602 | m_MobileRenderingPath: 1 603 | metroPackageName: Template_3D 604 | metroPackageVersion: 605 | metroCertificatePath: 606 | metroCertificatePassword: 607 | metroCertificateSubject: 608 | metroCertificateIssuer: 609 | metroCertificateNotAfter: 0000000000000000 610 | metroApplicationDescription: Template_3D 611 | wsaImages: {} 612 | metroTileShortName: 613 | metroTileShowName: 0 614 | metroMediumTileShowName: 0 615 | metroLargeTileShowName: 0 616 | metroWideTileShowName: 0 617 | metroSupportStreamingInstall: 0 618 | metroLastRequiredScene: 0 619 | metroDefaultTileSize: 1 620 | metroTileForegroundText: 2 621 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} 622 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, 623 | a: 1} 624 | metroSplashScreenUseBackgroundColor: 0 625 | platformCapabilities: {} 626 | metroTargetDeviceFamilies: {} 627 | metroFTAName: 628 | metroFTAFileTypes: [] 629 | metroProtocolName: 630 | XboxOneProductId: 631 | XboxOneUpdateKey: 632 | XboxOneSandboxId: 633 | XboxOneContentId: 634 | XboxOneTitleId: 635 | XboxOneSCId: 636 | XboxOneGameOsOverridePath: 637 | XboxOnePackagingOverridePath: 638 | XboxOneAppManifestOverridePath: 639 | XboxOneVersion: 1.0.0.0 640 | XboxOnePackageEncryption: 0 641 | XboxOnePackageUpdateGranularity: 2 642 | XboxOneDescription: 643 | XboxOneLanguage: 644 | - enus 645 | XboxOneCapability: [] 646 | XboxOneGameRating: {} 647 | XboxOneIsContentPackage: 0 648 | XboxOneEnhancedXboxCompatibilityMode: 0 649 | XboxOneEnableGPUVariability: 1 650 | XboxOneSockets: {} 651 | XboxOneSplashScreen: {fileID: 0} 652 | XboxOneAllowedProductIds: [] 653 | XboxOnePersistentLocalStorageSize: 0 654 | XboxOneXTitleMemory: 8 655 | XboxOneOverrideIdentityName: 656 | XboxOneOverrideIdentityPublisher: 657 | vrEditorSettings: {} 658 | cloudServicesEnabled: 659 | UNet: 1 660 | luminIcon: 661 | m_Name: 662 | m_ModelFolderPath: 663 | m_PortalFolderPath: 664 | luminCert: 665 | m_CertPath: 666 | m_SignPackage: 1 667 | luminIsChannelApp: 0 668 | luminVersion: 669 | m_VersionCode: 1 670 | m_VersionName: 671 | apiCompatibilityLevel: 6 672 | activeInputHandler: 0 673 | cloudProjectId: 674 | framebufferDepthMemorylessMode: 0 675 | qualitySettingsNames: [] 676 | projectName: 677 | organizationId: 678 | cloudEnabled: 0 679 | legacyClampBlendShapeWeights: 0 680 | virtualTexturingSupportEnabled: 0 681 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2020.3.8f1 2 | m_EditorVersionWithRevision: 2020.3.8f1 (507919d4fff5) 3 | -------------------------------------------------------------------------------- /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: 5 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 | streamingMipmapsActive: 0 33 | streamingMipmapsAddAllCameras: 1 34 | streamingMipmapsMemoryBudget: 512 35 | streamingMipmapsRenderersPerFrame: 512 36 | streamingMipmapsMaxLevelReduction: 2 37 | streamingMipmapsMaxFileIORequests: 1024 38 | particleRaycastBudget: 4 39 | asyncUploadTimeSlice: 2 40 | asyncUploadBufferSize: 16 41 | asyncUploadPersistentBuffer: 1 42 | resolutionScalingFixedDPIFactor: 1 43 | excludedTargetPlatforms: [] 44 | - serializedVersion: 2 45 | name: Low 46 | pixelLightCount: 0 47 | shadows: 0 48 | shadowResolution: 0 49 | shadowProjection: 1 50 | shadowCascades: 1 51 | shadowDistance: 20 52 | shadowNearPlaneOffset: 3 53 | shadowCascade2Split: 0.33333334 54 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 55 | shadowmaskMode: 0 56 | blendWeights: 2 57 | textureQuality: 0 58 | anisotropicTextures: 0 59 | antiAliasing: 0 60 | softParticles: 0 61 | softVegetation: 0 62 | realtimeReflectionProbes: 0 63 | billboardsFaceCameraPosition: 0 64 | vSyncCount: 0 65 | lodBias: 0.4 66 | maximumLODLevel: 0 67 | streamingMipmapsActive: 0 68 | streamingMipmapsAddAllCameras: 1 69 | streamingMipmapsMemoryBudget: 512 70 | streamingMipmapsRenderersPerFrame: 512 71 | streamingMipmapsMaxLevelReduction: 2 72 | streamingMipmapsMaxFileIORequests: 1024 73 | particleRaycastBudget: 16 74 | asyncUploadTimeSlice: 2 75 | asyncUploadBufferSize: 16 76 | asyncUploadPersistentBuffer: 1 77 | resolutionScalingFixedDPIFactor: 1 78 | excludedTargetPlatforms: [] 79 | - serializedVersion: 2 80 | name: Medium 81 | pixelLightCount: 1 82 | shadows: 1 83 | shadowResolution: 0 84 | shadowProjection: 1 85 | shadowCascades: 1 86 | shadowDistance: 20 87 | shadowNearPlaneOffset: 3 88 | shadowCascade2Split: 0.33333334 89 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 90 | shadowmaskMode: 0 91 | blendWeights: 2 92 | textureQuality: 0 93 | anisotropicTextures: 1 94 | antiAliasing: 0 95 | softParticles: 0 96 | softVegetation: 0 97 | realtimeReflectionProbes: 0 98 | billboardsFaceCameraPosition: 0 99 | vSyncCount: 1 100 | lodBias: 0.7 101 | maximumLODLevel: 0 102 | streamingMipmapsActive: 0 103 | streamingMipmapsAddAllCameras: 1 104 | streamingMipmapsMemoryBudget: 512 105 | streamingMipmapsRenderersPerFrame: 512 106 | streamingMipmapsMaxLevelReduction: 2 107 | streamingMipmapsMaxFileIORequests: 1024 108 | particleRaycastBudget: 64 109 | asyncUploadTimeSlice: 2 110 | asyncUploadBufferSize: 16 111 | asyncUploadPersistentBuffer: 1 112 | resolutionScalingFixedDPIFactor: 1 113 | excludedTargetPlatforms: [] 114 | - serializedVersion: 2 115 | name: High 116 | pixelLightCount: 2 117 | shadows: 2 118 | shadowResolution: 1 119 | shadowProjection: 1 120 | shadowCascades: 2 121 | shadowDistance: 40 122 | shadowNearPlaneOffset: 3 123 | shadowCascade2Split: 0.33333334 124 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 125 | shadowmaskMode: 1 126 | blendWeights: 2 127 | textureQuality: 0 128 | anisotropicTextures: 1 129 | antiAliasing: 0 130 | softParticles: 0 131 | softVegetation: 1 132 | realtimeReflectionProbes: 1 133 | billboardsFaceCameraPosition: 1 134 | vSyncCount: 1 135 | lodBias: 1 136 | maximumLODLevel: 0 137 | streamingMipmapsActive: 0 138 | streamingMipmapsAddAllCameras: 1 139 | streamingMipmapsMemoryBudget: 512 140 | streamingMipmapsRenderersPerFrame: 512 141 | streamingMipmapsMaxLevelReduction: 2 142 | streamingMipmapsMaxFileIORequests: 1024 143 | particleRaycastBudget: 256 144 | asyncUploadTimeSlice: 2 145 | asyncUploadBufferSize: 16 146 | asyncUploadPersistentBuffer: 1 147 | resolutionScalingFixedDPIFactor: 1 148 | excludedTargetPlatforms: [] 149 | - serializedVersion: 2 150 | name: Very High 151 | pixelLightCount: 3 152 | shadows: 2 153 | shadowResolution: 2 154 | shadowProjection: 1 155 | shadowCascades: 2 156 | shadowDistance: 70 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: 2 164 | antiAliasing: 2 165 | softParticles: 1 166 | softVegetation: 1 167 | realtimeReflectionProbes: 1 168 | billboardsFaceCameraPosition: 1 169 | vSyncCount: 1 170 | lodBias: 1.5 171 | maximumLODLevel: 0 172 | streamingMipmapsActive: 0 173 | streamingMipmapsAddAllCameras: 1 174 | streamingMipmapsMemoryBudget: 512 175 | streamingMipmapsRenderersPerFrame: 512 176 | streamingMipmapsMaxLevelReduction: 2 177 | streamingMipmapsMaxFileIORequests: 1024 178 | particleRaycastBudget: 1024 179 | asyncUploadTimeSlice: 2 180 | asyncUploadBufferSize: 16 181 | asyncUploadPersistentBuffer: 1 182 | resolutionScalingFixedDPIFactor: 1 183 | excludedTargetPlatforms: [] 184 | - serializedVersion: 2 185 | name: Ultra 186 | pixelLightCount: 4 187 | shadows: 2 188 | shadowResolution: 2 189 | shadowProjection: 1 190 | shadowCascades: 4 191 | shadowDistance: 150 192 | shadowNearPlaneOffset: 3 193 | shadowCascade2Split: 0.33333334 194 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 195 | shadowmaskMode: 1 196 | blendWeights: 4 197 | textureQuality: 0 198 | anisotropicTextures: 2 199 | antiAliasing: 2 200 | softParticles: 1 201 | softVegetation: 1 202 | realtimeReflectionProbes: 1 203 | billboardsFaceCameraPosition: 1 204 | vSyncCount: 1 205 | lodBias: 2 206 | maximumLODLevel: 0 207 | streamingMipmapsActive: 0 208 | streamingMipmapsAddAllCameras: 1 209 | streamingMipmapsMemoryBudget: 512 210 | streamingMipmapsRenderersPerFrame: 512 211 | streamingMipmapsMaxLevelReduction: 2 212 | streamingMipmapsMaxFileIORequests: 1024 213 | particleRaycastBudget: 4096 214 | asyncUploadTimeSlice: 2 215 | asyncUploadBufferSize: 16 216 | asyncUploadPersistentBuffer: 1 217 | resolutionScalingFixedDPIFactor: 1 218 | excludedTargetPlatforms: [] 219 | m_PerPlatformDefaultQuality: 220 | Android: 2 221 | Lumin: 5 222 | Nintendo 3DS: 5 223 | Nintendo Switch: 5 224 | PS4: 5 225 | PSP2: 2 226 | Stadia: 5 227 | Standalone: 5 228 | WebGL: 3 229 | Windows Store Apps: 5 230 | XboxOne: 5 231 | iPhone: 2 232 | tvOS: 2 233 | -------------------------------------------------------------------------------- /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 | - 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 | -------------------------------------------------------------------------------- /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.02 7 | Maximum Allowed Timestep: 0.33333334 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /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 | serializedVersion: 1 7 | m_Enabled: 0 8 | m_TestMode: 0 9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events 10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events 11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com 12 | m_TestInitMode: 0 13 | CrashReportingSettings: 14 | m_EventUrl: https://perf-events.cloud.unity3d.com 15 | m_Enabled: 0 16 | m_LogBufferSize: 10 17 | m_CaptureEditorExceptions: 1 18 | UnityPurchasingSettings: 19 | m_Enabled: 0 20 | m_TestMode: 0 21 | UnityAnalyticsSettings: 22 | m_Enabled: 0 23 | m_TestMode: 0 24 | m_InitializeOnStartup: 1 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 | -------------------------------------------------------------------------------- /ProjectSettings/VFXManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!937362698 &1 4 | VFXManager: 5 | m_ObjectHideFlags: 0 6 | m_IndirectShader: {fileID: 0} 7 | m_CopyBufferShader: {fileID: 0} 8 | m_SortShader: {fileID: 0} 9 | m_StripUpdateShader: {fileID: 0} 10 | m_RenderPipeSettingsPath: 11 | m_FixedTimeStep: 0.016666668 12 | m_MaxDeltaTime: 0.05 13 | -------------------------------------------------------------------------------- /ProjectSettings/VersionControlSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!890905787 &1 4 | VersionControlSettings: 5 | m_ObjectHideFlags: 0 6 | m_Mode: Visible Meta Files 7 | m_CollabEditorSettings: 8 | inProgressEnabled: 1 9 | -------------------------------------------------------------------------------- /ProjectSettings/XRSettings.asset: -------------------------------------------------------------------------------- 1 | { 2 | "m_SettingKeys": [ 3 | "VR Device Disabled", 4 | "VR Device User Alert" 5 | ], 6 | "m_SettingValues": [ 7 | "False", 8 | "False" 9 | ] 10 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Modiferty - Property Modification 2 | 3 | **Created by Hiroya Aramaki ([Makihiro](https://twitter.com/makihiro_dev))** 4 | 5 | [![Tests](https://github.com/mackysoft/Modiferty/actions/workflows/tests.yaml/badge.svg)](https://github.com/mackysoft/Modiferty/actions/workflows/tests.yaml) 6 | [![Build](https://github.com/mackysoft/Modiferty/actions/workflows/build.yaml/badge.svg)](https://github.com/mackysoft/Modiferty/actions/workflows/build.yaml) 7 | [![Release](https://img.shields.io/github/v/release/mackysoft/Modiferty)](https://github.com/mackysoft/Modiferty/releases) 8 | [![openupm](https://img.shields.io/npm/v/com.mackysoft.modiferty?label=openupm®istry_uri=https://package.openupm.com)](https://openupm.com/packages/com.mackysoft.modiferty/) 9 | 10 | ## What is Modiferty ? 11 | 12 | Modiferty is a great solution for making modifications to properties. 13 | 14 | In games, there are often situations in which the status of characters, weapons, etc. temporarily change. 15 | 16 | Modiferty can be used in the following situations. 17 | 18 | - Want to modify the in-game character status temporally. 19 | 20 | ## Table of Contents 21 | 22 | - [Installation](#installation) 23 | - [Usage](#usage) 24 | - [Using ModifierList](#using-modifierlist) 25 | - [Modifier Types](#modifier-types) 26 | - [Set Modifier](#set-modifier) 27 | - [Create Modifier](#create-modifier) 28 | - [External Assets](#external-assets) 29 | - [UniRx](#unirx) 30 | - [Author Info](#author-info) 31 | - [License](#license) 32 | 33 | # Installation 34 | 35 | Download any version from releases. 36 | 37 | Releases: https://github.com/mackysoft/Modiferty/releases 38 | 39 | # Usage 40 | 41 | Add "MackySoft.Modiferty" namespace into using area. 42 | 43 | ```cs 44 | using MackySoft.Modiferty; 45 | ``` 46 | 47 | The following code implements a temporary increase the character attack power. 48 | 49 | ```cs 50 | public class Character : MonoBehaviour { 51 | 52 | public int health = 3; 53 | public ModifiableInt attackPower = new ModifiableInt(baseValue: 1); 54 | 55 | public void Attack (Character target){ 56 | target.health -= attackPower.Evaluate(); 57 | } 58 | 59 | } 60 | 61 | public class PowerUpItem : MonoBehaviour { 62 | 63 | public AdditiveModifierInt additivePower = new AdditiveModifierInt(1); 64 | 65 | public void Modify (Character target){ 66 | target.attackPower.Modifiers.Add(additivePower); 67 | 68 | // Same as below. 69 | // target.attackPower.AddModifier(additivePower); 70 | } 71 | 72 | } 73 | ``` 74 | 75 | ## Using ModifierList 76 | 77 | If you want to modify the value without using ModifiableProperty, use a ModifierList. 78 | 79 | ```cs 80 | ModifierList m_DamageModifiers = new ModifierList; 81 | 82 | // Add something modifiers. 83 | m_DamageModifiers.Add(modifier); 84 | 85 | // Evaluate the damage. 86 | int evaluatedDamage = m_DamageModifiers.Evaluate(damage); 87 | ``` 88 | 89 | ModifiableList is also used in the ModifiableProperty implementation. 90 | 91 | 92 | # Modifier Types 93 | 94 | Basic operator modifiers are provided. 95 | 96 | - Additive Modifier 97 | - Subtractive Modifier 98 | - Multiply Modifier 99 | - Division Modifier 100 | 101 | A variety of other unique modifiers are also available. 102 | 103 | ## Set Modifier 104 | 105 | The given value ignored and the specified value returned. 106 | 107 | ```cs 108 | var setModifier = new SetModifierInt(0); 109 | 110 | character.attackPower.AddModifier(setModifier); 111 | 112 | // result is always 0. 113 | int result = character.attackPower.Evaluate(); 114 | ``` 115 | 116 | ## Create Modifier 117 | 118 | The lambda formula allows you to improvise complex modifiers. 119 | 120 | ```cs 121 | var createModifier = new CreateModifier(value => { 122 | int result; 123 | 124 | // Do something process... 125 | 126 | return result; 127 | }); 128 | ``` 129 | 130 | # External Assets 131 | 132 | Modiferty supports integration with some external assets. 133 | 134 | ## UniRx 135 | 136 | Install UniRx and define `MODIFERTY_UNIRX` to enable integration with UniRx. 137 | 138 | UniRx: [https://github.com/neuecc/UniRx](https://github.com/neuecc/UniRx) 139 | 140 | The integration with UniRx mainly adds the following APIs to allow you to observe the values of Modiferty. 141 | 142 | - `ReactiveModifierList` 143 | - `ReactiveModifiableProperty` 144 | 145 | ```cs 146 | using UnityEngine; 147 | using UnityEngine.UI; 148 | using MackySoft.Modiferty; 149 | using UniRx; 150 | 151 | public class Character : MonoBehaviour { 152 | 153 | // Define attackPower as ReactiveModifiableProperty. 154 | public ReactiveModifiableInt attackPower = new ReactiveModifiableInt(baseValue: 1); 155 | 156 | . . . . . 157 | 158 | } 159 | 160 | public class CharacterAttackPowerUI : MonoBehaviour { 161 | 162 | public Character character; 163 | public Text attackPowerTsxt; 164 | 165 | void Awake () { 166 | // You can observe changes BaseValue and Modifiers. 167 | character.attackPower.ObserveChanged().Subscribe(property => { 168 | 169 | // Apply the attackPower change to the text. 170 | attackPowerText.text = property.Evaluate(); 171 | }); 172 | } 173 | } 174 | ``` 175 | 176 | 177 | # Author Info 178 | 179 | Hiroya Aramaki is a indie game developer in Japan. 180 | 181 | - Blog: [https://mackysoft.net/blog](https://mackysoft.net/blog) 182 | - Twitter: [https://twitter.com/makihiro_dev](https://twitter.com/makihiro_dev) 183 | 184 | # License 185 | 186 | This library is under the MIT License. 187 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-cayman --------------------------------------------------------------------------------