Skip to content

progress

Creates a reactive state object that tracks Three.js asset loading progress. Hooks into THREE.DefaultLoadingManager to monitor all asset loading operations.

import { progress } from 'angular-three-soba/loaders';
@Component({...})
class MyComponent {
loadingState = progress();
constructor() {
effect(() => {
if (this.loadingState.active()) {
console.log(`Loading: ${this.loadingState.progress()}%`);
}
});
// Check for errors
effect(() => {
const errors = this.loadingState.errors();
if (errors.length > 0) {
console.error('Failed to load:', errors);
}
});
}
}

Returns a signal state object with the following properties:

PropertyTypeDescription
errorsSignal<string[]>Array of URLs that failed to load
activeSignal<boolean>Whether loading is in progress
progressSignal<number>Loading progress percentage (0-100)
itemSignal<string>URL of the currently loading item
loadedSignal<number>Number of items loaded
totalSignal<number>Total number of items to load
@Component({
selector: 'app-loading',
template: `
@if (loading.active()) {
<div class="loading-overlay">
<div class="progress-bar">
<div class="progress-fill" [style.width.%]="loading.progress()"></div>
</div>
<p>Loading {{ loading.item() }}...</p>
<p>{{ loading.loaded() }} / {{ loading.total() }}</p>
</div>
}
`,
})
class LoadingIndicator {
loading = progress();
}