diff --git a/Packages/com.mimylab.fukuroudon/CHANGELOG.md b/Packages/com.mimylab.fukuroudon/CHANGELOG.md index 10469ab..d291ec6 100644 --- a/Packages/com.mimylab.fukuroudon/CHANGELOG.md +++ b/Packages/com.mimylab.fukuroudon/CHANGELOG.md @@ -6,6 +6,12 @@ 利用手順は[こちら](https://github.com/mimyquality/FukuroUdon/wiki)からご確認ください。 +## [1.18.2] - 2024/5/4 + +- **Added** + - General + - Boundary Cullingを追加しました。ViewPoint Trackerの対象として使うコンポーネントです。 + ## [1.18.1] - 2024/4/17 - **Fixed** @@ -429,6 +435,7 @@ - 0.2.7バージョンで、later-joiner視点でjoin直後が非アクティブだと同期しなかったのを修正しました。 - 他人がピックアップした際にオブジェクトが一瞬跳ねる現象を低減しました。 +[1.18.2]: https://github.com/mimyquality/FukuroUdon/releases/tag/1.18.2 [1.18.1]: https://github.com/mimyquality/FukuroUdon/releases/tag/1.18.1 [1.18.0]: https://github.com/mimyquality/FukuroUdon/releases/tag/1.18.0 [1.17.0]: https://github.com/mimyquality/FukuroUdon/releases/tag/1.17.0 diff --git a/Packages/com.mimylab.fukuroudon/Runtime/AmbientSoundAssistant/Scripts/BoundaryCulling.asset b/Packages/com.mimylab.fukuroudon/Runtime/AmbientSoundAssistant/Scripts/BoundaryCulling.asset new file mode 100644 index 0000000..81e1c1b --- /dev/null +++ b/Packages/com.mimylab.fukuroudon/Runtime/AmbientSoundAssistant/Scripts/BoundaryCulling.asset @@ -0,0 +1,412 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c333ccfdd0cbdbc4ca30cef2dd6e6b9b, type: 3} + m_Name: BoundaryCulling + m_EditorClassIdentifier: + serializedUdonProgramAsset: {fileID: 11400000, guid: d10cbfb6cb8796140980089221530fcb, type: 2} + udonAssembly: + assemblyError: + sourceCsScript: {fileID: 11500000, guid: e40357aa87837184e81fb6c902a3f10d, type: 3} + scriptVersion: 2 + compiledVersion: 2 + behaviourSyncMode: 1 + hasInteractEvent: 0 + scriptID: -3494015841569052130 + serializationData: + SerializedFormat: 2 + SerializedBytes: + ReferencedUnityObjects: [] + SerializedBytesString: + Prefab: {fileID: 0} + PrefabModificationsReferencedUnityObjects: [] + PrefabModifications: [] + SerializationNodes: + - Name: fieldDefinitions + Entry: 7 + Data: 0|System.Collections.Generic.Dictionary`2[[System.String, mscorlib],[UdonSharp.Compiler.FieldDefinition, + UdonSharp.Editor]], mscorlib + - Name: comparer + Entry: 7 + Data: 1|System.Collections.Generic.GenericEqualityComparer`1[[System.String, + mscorlib]], mscorlib + - Name: + Entry: 8 + Data: + - Name: + Entry: 12 + Data: 6 + - Name: + Entry: 7 + Data: + - Name: $k + Entry: 1 + Data: _meshRenderer + - Name: $v + Entry: 7 + Data: 2|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: _meshRenderer + - Name: k__BackingField + Entry: 7 + Data: 3|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: UnityEngine.MeshRenderer[], UnityEngine.CoreModule + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 9 + Data: 3 + - Name: k__BackingField + Entry: 7 + Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib + - Name: + Entry: 6 + Data: + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 5 + Data: true + - Name: _fieldAttributes + Entry: 7 + Data: 4|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 2 + - Name: + Entry: 7 + Data: 5|UnityEngine.HeaderAttribute, UnityEngine.CoreModule + - Name: header + Entry: 1 + Data: Targets + - Name: + Entry: 8 + Data: + - Name: + Entry: 7 + Data: 6|UnityEngine.SerializeField, UnityEngine.CoreModule + - Name: + Entry: 8 + Data: + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 7 + Data: + - Name: $k + Entry: 1 + Data: _skinnedMeshRenderer + - Name: $v + Entry: 7 + Data: 7|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: _skinnedMeshRenderer + - Name: k__BackingField + Entry: 7 + Data: 8|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: UnityEngine.SkinnedMeshRenderer[], UnityEngine.CoreModule + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 9 + Data: 8 + - Name: k__BackingField + Entry: 7 + Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib + - Name: + Entry: 6 + Data: + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 5 + Data: true + - Name: _fieldAttributes + Entry: 7 + Data: 9|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 1 + - Name: + Entry: 7 + Data: 10|UnityEngine.SerializeField, UnityEngine.CoreModule + - Name: + Entry: 8 + Data: + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 7 + Data: + - Name: $k + Entry: 1 + Data: _point + - Name: $v + Entry: 7 + Data: 11|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: _point + - Name: k__BackingField + Entry: 7 + Data: 12|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: UnityEngine.Transform, UnityEngine.CoreModule + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 9 + Data: 12 + - Name: k__BackingField + Entry: 7 + Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib + - Name: + Entry: 6 + Data: + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 5 + Data: true + - Name: _fieldAttributes + Entry: 7 + Data: 13|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 2 + - Name: + Entry: 7 + Data: 14|UnityEngine.HeaderAttribute, UnityEngine.CoreModule + - Name: header + Entry: 1 + Data: Bound Settings + - Name: + Entry: 8 + Data: + - Name: + Entry: 7 + Data: 15|UnityEngine.SerializeField, UnityEngine.CoreModule + - Name: + Entry: 8 + Data: + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 7 + Data: + - Name: $k + Entry: 1 + Data: _normal + - Name: $v + Entry: 7 + Data: 16|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: _normal + - Name: k__BackingField + Entry: 7 + Data: 17|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: UnityEngine.Vector3, UnityEngine.CoreModule + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 9 + Data: 17 + - Name: k__BackingField + Entry: 7 + Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib + - Name: + Entry: 6 + Data: + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 5 + Data: true + - Name: _fieldAttributes + Entry: 7 + Data: 18|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 1 + - Name: + Entry: 7 + Data: 19|UnityEngine.SerializeField, UnityEngine.CoreModule + - Name: + Entry: 8 + Data: + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 7 + Data: + - Name: $k + Entry: 1 + Data: _prevEnabled + - Name: $v + Entry: 7 + Data: 20|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: _prevEnabled + - Name: k__BackingField + Entry: 7 + Data: 21|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: System.Boolean, mscorlib + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 9 + Data: 21 + - Name: k__BackingField + Entry: 7 + Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib + - Name: + Entry: 6 + Data: + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 5 + Data: false + - Name: _fieldAttributes + Entry: 7 + Data: 22|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 7 + Data: + - Name: $k + Entry: 1 + Data: _initialized + - Name: $v + Entry: 7 + Data: 23|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: _initialized + - Name: k__BackingField + Entry: 9 + Data: 21 + - Name: k__BackingField + Entry: 9 + Data: 21 + - Name: k__BackingField + Entry: 7 + Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib + - Name: + Entry: 6 + Data: + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 5 + Data: false + - Name: _fieldAttributes + Entry: 7 + Data: 24|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: diff --git a/Packages/com.mimylab.fukuroudon/Runtime/AmbientSoundAssistant/Scripts/BoundaryCulling.asset.meta b/Packages/com.mimylab.fukuroudon/Runtime/AmbientSoundAssistant/Scripts/BoundaryCulling.asset.meta new file mode 100644 index 0000000..8f828c9 --- /dev/null +++ b/Packages/com.mimylab.fukuroudon/Runtime/AmbientSoundAssistant/Scripts/BoundaryCulling.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d9f23329e5d0b1a49a4b5100f2b156a4 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.mimylab.fukuroudon/Runtime/AmbientSoundAssistant/Scripts/BoundaryCulling.cs b/Packages/com.mimylab.fukuroudon/Runtime/AmbientSoundAssistant/Scripts/BoundaryCulling.cs new file mode 100644 index 0000000..46a3ee9 --- /dev/null +++ b/Packages/com.mimylab.fukuroudon/Runtime/AmbientSoundAssistant/Scripts/BoundaryCulling.cs @@ -0,0 +1,68 @@ +/* +Copyright (c) 2024 Mimy Quality +Released under the MIT license +https://opensource.org/licenses/mit-license.php +*/ + +namespace MimyLab +{ + using UdonSharp; + using UnityEngine; + using VRC.SDKBase; + using VRC.Udon; + + [AddComponentMenu("Fukuro Udon/General/Boundary Culling")] + [UdonBehaviourSyncMode(BehaviourSyncMode.None)] + public class BoundaryCulling : IViewPointReceiver + { + [Header("Targets")] + [SerializeField] + private MeshRenderer[] _meshRenderer = new MeshRenderer[0]; + [SerializeField] + private SkinnedMeshRenderer[] _skinnedMeshRenderer = new SkinnedMeshRenderer[0]; + + [Header("Bound Settings")] + [SerializeField] + private Transform _point; + [SerializeField] + private Vector3 _normal = Vector3.up; + + private bool _prevEnabled = true; + + private bool _initialized = false; + private void Initialize() + { + if (_initialized) { return; } + + if (!_point) _point = transform; + ToggleTargetsEnabled(!_prevEnabled); + + _initialized = true; + } + + public override void ReceiveViewPoint(Vector3 position, Quaternion rotation) + { + Initialize(); + + var direction = position - _point.position; + var borderNormal = _point.rotation * _normal; + ToggleTargetsEnabled(Vector3.Dot(borderNormal, direction) >= 0); + } + + private void ToggleTargetsEnabled(bool value) + { + if (value != _prevEnabled) + { + foreach (var target in _meshRenderer) + { + if (target) { target.enabled = value; } + } + foreach (var target in _skinnedMeshRenderer) + { + if (target) { target.enabled = value; } + } + _prevEnabled = value; + } + } + } +} diff --git a/Packages/com.mimylab.fukuroudon/Runtime/AmbientSoundAssistant/Scripts/BoundaryCulling.cs.meta b/Packages/com.mimylab.fukuroudon/Runtime/AmbientSoundAssistant/Scripts/BoundaryCulling.cs.meta new file mode 100644 index 0000000..c943188 --- /dev/null +++ b/Packages/com.mimylab.fukuroudon/Runtime/AmbientSoundAssistant/Scripts/BoundaryCulling.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e40357aa87837184e81fb6c902a3f10d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.mimylab.fukuroudon/package.json b/Packages/com.mimylab.fukuroudon/package.json index f1738e1..792fd17 100644 --- a/Packages/com.mimylab.fukuroudon/package.json +++ b/Packages/com.mimylab.fukuroudon/package.json @@ -1,7 +1,7 @@ { "name": "com.mimylab.fukuroudon", "displayName": "Fukuro Udon", - "version": "1.18.1", + "version": "1.18.2", "description": "MimyLab's U# utilitiy pack for VPM.", "unity": "2019.4", "author": { diff --git a/Packages/vpm-manifest.json b/Packages/vpm-manifest.json index f0b4e41..5ad11f3 100644 --- a/Packages/vpm-manifest.json +++ b/Packages/vpm-manifest.json @@ -39,11 +39,11 @@ "dependencies": {} }, "dev.onevr.vrworldtoolkit": { - "version": "3.0.1", + "version": "3.1.0", "dependencies": {} }, "net.ureishi.qvpen": { - "version": "3.2.12", + "version": "3.2.13", "dependencies": { "com.vrchat.worlds": "^3.4.0" }