diff --git a/src/bit-systems/media-loading.ts b/src/bit-systems/media-loading.ts index af9c1f1ddb..98832a80dd 100644 --- a/src/bit-systems/media-loading.ts +++ b/src/bit-systems/media-loading.ts @@ -29,7 +29,8 @@ import { ObjectMenuTarget, Rigidbody, MediaLoaderOffset, - MediaVideo + MediaVideo, + NetworkedTransform } from "../bit-components"; import { inflatePhysicsShape, Shape } from "../inflators/physics-shape"; import { ErrorObject } from "../prefabs/error-object"; @@ -341,6 +342,9 @@ const mediaRefreshQuery = defineQuery([MediaRefresh]); const mediaRefreshEnterQuery = enterQuery(mediaRefreshQuery); export function mediaLoadingSystem(world: HubsWorld) { mediaLoadingEnterQuery(world).forEach(function (eid) { + const mediaLoaderObj = world.eid2obj.get(eid)!; + mediaLoaderObj.visible = false; + const mediaLoaderEids = findAncestorsWithComponent(world, MediaLoader, eid); mediaLoaderEids.forEach(mediaLoaderEid => { MediaLoader.count[mediaLoaderEid]++; @@ -366,6 +370,9 @@ export function mediaLoadingSystem(world: HubsWorld) { MediaVideoLoaderData.delete(eid); } + const mediaLoaderObj = world.eid2obj.get(eid)!; + mediaLoaderObj.visible = true; + const mediaLoaderEids = findAncestorsWithComponent(world, MediaLoader, eid); for (let i = 0; i < mediaLoaderEids.length; i++) { const mediaLoaderEid = mediaLoaderEids[i]; @@ -399,6 +406,14 @@ export function mediaLoadingSystem(world: HubsWorld) { } }); + mediaLoadingQuery(world).forEach(eid => { + const mediaLoaderObj = world.eid2obj.get(eid)!; + transformPosition.fromArray(NetworkedTransform.position[eid]); + if (mediaLoaderObj.position.near(transformPosition, 0.001)) { + mediaLoaderObj.visible = true; + } + }); + mediaLoadedEnterQuery(world).forEach(() => APP.scene?.emit("listed_media_changed")); mediaLoadedExitQuery(world).forEach(() => APP.scene?.emit("listed_media_changed")); diff --git a/types/three.d.ts b/types/three.d.ts index 39c6fd7838..5ef7d9bbe8 100644 --- a/types/three.d.ts +++ b/types/three.d.ts @@ -24,4 +24,8 @@ declare module "three" { interface Mesh { reflectionProbeMode: "static" | "dynamic" | false; } + + interface Vector3 { + near: Function; + } }