Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ internal Val_Trigger(VRCSDK2.VRC_Trigger vrcTrigger)
}


class Emu_Trigger : MonoBehaviour
public class Emu_Trigger : MonoBehaviour
{
// [SerializeField] // TODO Make trigger definition visible with Unity inspector to debug scene.
Val_Trigger vrcTrigger;
Expand Down Expand Up @@ -355,7 +355,7 @@ private LayerMask GetLayerMaskOf(VRCSDK2.VRC_Trigger.TriggerType triggerType)
{
if (vrcTrigger == null)
{
Iwlog.Error(gameObject, "vrcTrigger == null");
Iwlog.Trace(gameObject, "vrcTrigger == null");
return Enumerable.Empty<VRCSDK2.VRC_Trigger.TriggerEvent>();
}

Expand Down Expand Up @@ -739,9 +739,13 @@ private ActionResult Execute_SpawnObject(GameObject receiver, VRCSDK2.VRC_EventH
// true: includeInactive
foreach (var comp in newOne.GetComponentsInChildren<VRCSDK2.VRC_Trigger>(true))
{
comp.gameObject.AddComponent<Emu_Trigger>();
comp.gameObject.GetOrAddComponent<Emu_Trigger>();
}

// In-scene prefab references are spawned as inactive game objects.
// Usually the root object has an OnSpawn -> SetGameObjectActive true,
// but the Emu_Trigger cannot execute before the object is Awake().
// To workaround this, we force the newly spawned object active.
newOne.SetActive(true);
foreach (var comp in newOne.GetComponentsInChildren<Emu_Trigger>(false))
{
comp.ExecuteTriggers(VRCSDK2.VRC_Trigger.TriggerType.OnSpawn);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ static private void Setup_TriggersComponents()
}

// Emu_Trigger find brother VRC_Trigger by itself
var emu_trigger = triggerComp.gameObject.AddComponent<Emu_Trigger>();
var emu_trigger = triggerComp.gameObject.GetOrAddComponent<Emu_Trigger>();

emu_trigger.debugString = triggerComp.gameObject.name;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,11 @@ private static Dictionary<string, T> makeAssetPathMap<T>(List<T> objects)

#if UNITY_EDITOR // This implementation requires UnityEditor.
foreach (T obj in objects) {
var p = UnityEditor.AssetDatabase.GetAssetPath(obj);
var p = UnityEditor.AssetDatabase.GetAssetPath(obj);
if (p == null || p.Length == 0) {
// in-scene prefab references use the object name.
p = obj.name;
}
Iwlog.Trace("asset path='" + p + "'");
if (map.ContainsKey(p)) {
Iwlog.Warn("Duplicate?: path='" + p + "'");
Expand Down