Skip to content

Commit 9ea35a3

Browse files
committed
Added and optimized the loader and it's working now and i kinda like it
1 parent 0287a1f commit 9ea35a3

3 files changed

Lines changed: 82 additions & 328 deletions

File tree

homepage.js

Lines changed: 75 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -176,14 +176,14 @@ Loadercanvas.width = 20 * 6 / 3
176176
let firstclick = true
177177
let run = false
178178
let allow = true
179-
let opacity = {o:0}
179+
let opacity = 0
180180
let opacityallowance = false
181181
canvas.addEventListener('click',async (e)=>{
182182
if(!allow || firstclick){
183183
e.preventDefault()
184184
return
185185
}
186-
opacity.o = !run ? 0 : 1
186+
opacity = !run ? 0 : 1
187187
run = !run
188188
if(run){
189189
audio.muted = false
@@ -199,40 +199,29 @@ canvas.addEventListener('click',async (e)=>{
199199
})
200200
function drawlines(pheta,startingH = canvas.height,off = 0){
201201
ctx.beginPath()
202-
if(!opacityallowance){
203-
ctx2.beginPath()
204-
}
205202
for(let i =0; i < canvas.width / 6 ;i++){
206203
let y = Math.sin((pheta + i * .5))
207204
ctx.moveTo(10.5 + i * 4,startingH )
208-
ctx.lineTo(10.5 + i * 4,startingH + off + (y * 7 - 8) * opacity.o * speed * 2 )
209-
if(!opacityallowance){
210-
ctx2.moveTo(10.5 + i * 4,startingH )
211-
ctx2.lineTo(10.5 + i * 4,startingH + off + (y * 7 - 8) * opacity.o * speed )
212-
}
205+
ctx.lineTo(10.5 + i * 4,startingH + off + (y * 7 - 8) * opacity* speed * 2 )
213206
}
214-
if(opacity.o < 1 && run && opacityallowance){
215-
opacity.o = +(opacity.o + 0.04).toFixed(2);
207+
if(opacity< 1 && run && opacityallowance){
208+
opacity= +(opacity+ 0.04).toFixed(2);
216209
}
217-
if(opacity.o == 1 && opacityallowance){
210+
if(opacity== 1 && opacityallowance){
218211
allow = true
219212
}
220-
if(opacity.o > 0 && !run && opacityallowance){
221-
opacity.o = +(opacity.o - 0.01).toFixed(2);
222-
}if(opacity.o == 0 && opacityallowance){
213+
if(opacity> 0 && !run && opacityallowance){
214+
opacity= +(opacity- 0.01).toFixed(2);
215+
}if(opacity== 0 && opacityallowance){
223216
allow = true
224217
}
225218
ctx.strokeStyle = "#ffffff";
226219
ctx.lineWidth = 1;
227220
ctx.stroke()
228-
ctx2.strokeStyle = "#ffffff";
229-
ctx2.lineWidth = 1;
230-
ctx2.stroke()
231221
}
232222

233223
function loop(){
234224
ctx.clearRect(0, 0, canvas.width, canvas.height);
235-
ctx2.clearRect(0, 0, Loadercanvas.width, Loadercanvas.height);
236225
if(pheta >= 360){
237226
pheta = 0
238227
}
@@ -241,6 +230,27 @@ function loop(){
241230
drawlines(phetaR,undefined,-3)
242231
animateId = requestAnimationFrame(loop)
243232
}
233+
drawlines(pheta,undefined,-3)
234+
235+
let loaderanimationr;
236+
let factor = {o:0};
237+
if(window.scrollY == 0){
238+
function DrawLines(){
239+
ctx2.clearRect(0, 0, Loadercanvas.width, Loadercanvas.height);
240+
ctx2.beginPath()
241+
for(let i =0; i < Loadercanvas.width / 6 ;i++){
242+
let rand = Math.random()
243+
let alpha = Math.min(1, ((rand*i / 2 ) + factor.o));
244+
ctx2.beginPath();
245+
ctx2.strokeStyle = `rgba(255,255,255,${alpha})`;
246+
ctx2.moveTo(10.5 + i * 4, Loadercanvas.height);
247+
ctx2.lineTo(10.5 + i * 4, Loadercanvas.height - 3 );
248+
ctx2.stroke();
249+
}
250+
}
251+
DrawLines()
252+
loaderanimationr = setInterval(DrawLines, 300);
253+
}
244254

245255

246256
document.addEventListener('click',()=>{
@@ -263,19 +273,17 @@ renderer.setSize(window.innerWidth, window.innerHeight);
263273
main.appendChild(renderer.domElement);
264274

265275

276+
266277
const distanceZ = camera.position.z + 40;
267278
const fov = camera.fov * (Math.PI / 180);
268279

269280
const height = 2 * Math.tan(fov / 2) * distanceZ;
270281

271282
const width = 505.7840285242011;
272283

273-
drawlines(pheta,undefined,-3)
274-
275284
// Object setup
276285

277286

278-
let loaderanimationr;
279287
const loader = new GLTFLoader();
280288
const dracoLoader = new DRACOLoader();
281289
dracoLoader.setDecoderPath('https://www.gstatic.com/draco/v1/decoders/');
@@ -284,41 +292,6 @@ loader.setDRACOLoader(dracoLoader);
284292
const gltf = await loaderg.loadAsync('https://cdn.jsdelivr.net/gh/Subsussp/THE@gh-pages/3D/Apollo/Statue.glb');
285293
const glb = await loader.loadAsync( 'https://cdn.jsdelivr.net/gh/Subsussp/THE@gh-pages/3D/Statue.glb' )
286294

287-
let timeline = gsap.timeline({
288-
delay:1.4,
289-
defaults:{
290-
ease:'power3.inOut',
291-
duration:3,
292-
}
293-
})
294-
timeline.to('#wave2',{
295-
scale:1,
296-
x:window.innerWidth/ 2 - 60,
297-
y:-window.innerHeight/ 2 + 50,
298-
// onStart:()=>{
299-
300-
// }
301-
})
302-
.to('#loader-cont',{
303-
opacity:0
304-
},"<")
305-
.to('#wave',{
306-
opacity:1,
307-
duration:3,
308-
onComplete:()=>{
309-
opacityallowance = true
310-
}
311-
}).to('#wave2',{
312-
opacity:0,
313-
duration:3,
314-
onComplete:()=>{
315-
document.getElementById('loader-cont').remove()
316-
Loadercanvas.remove()
317-
cancelAnimationFrame(loaderanimationr)
318-
}
319-
},'<')
320-
321-
322295

323296
let gmaterial = new THREE.MeshStandardMaterial({color: 0xffffff,
324297
roughness: 0.2,
@@ -1258,8 +1231,8 @@ gsap.to(activecamera.position, {
12581231
if(scrollinst != '0'){
12591232
scrollinst = 1 - e.progress
12601233
First.style.transform = `translateY(${e.progress * 35 - 20}px) scale(${ 0.6 + 0.2 * e.progress })`
1261-
second.style.opacity = e.progress * 0.4 + .4
1262-
second.style.transform = `translateY(${e.progress * 25}px) scale(${ e.progress * 0.2 + 0.8 })`
1234+
second.style.opacity = e.progress * 0.6 + .4
1235+
second.style.transform = `translateY(${e.progress * 30 - 5}px) scale(${ e.progress * 0.2 + 0.8 })`
12631236
third.style.opacity = 1.0 - e.progress * 0.6
12641237
third.style.transform = `translateY(${e.progress * 35}px) scale(${ 1 - 0.2 * e.progress })`
12651238
}
@@ -1353,6 +1326,48 @@ function animate(time){
13531326
TWEEN.update(time);
13541327
if(firstRender){
13551328
firstRender = false
1329+
if(window.scrollY == 0){
1330+
let timeline = gsap.timeline({
1331+
defaults:{
1332+
ease:'power4.inOut',
1333+
duration:3,
1334+
}
1335+
})
1336+
timeline.to('#wave2',{
1337+
scale:1,
1338+
x:window.innerWidth/ 2 - 60,
1339+
y:-window.innerHeight/ 2 + 50,
1340+
})
1341+
.to('#loader-cont',{
1342+
opacity:0
1343+
},"<")
1344+
1345+
.to('#wave',{
1346+
opacity:1,
1347+
duration:2,
1348+
onComplete:()=>{
1349+
opacityallowance = true
1350+
}
1351+
1352+
})
1353+
.to(factor,{
1354+
o:1,
1355+
duration:2
1356+
},"<-.5")
1357+
.to('#wave2',{
1358+
opacity:0,
1359+
duration:2,
1360+
onComplete:()=>{
1361+
document.getElementById('loader-cont').remove()
1362+
Loadercanvas.remove()
1363+
clearInterval(loaderanimationr)
1364+
}
1365+
},'<')
1366+
}else{
1367+
Loadercanvas.remove()
1368+
document.getElementById('loader-cont').remove()
1369+
1370+
}
13561371
document.getElementById('statue').innerText = names[0]
13571372
document.getElementById('description').innerText = description[0]
13581373
new TWEEN.Tween(statue2.position).to({

index.html

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
position: fixed;
2222
z-index: 900;
2323
top: 50%;
24-
right: 0%;
24+
right: .9dvw;
2525
width: 36px;
2626
transform: translateY(-50%);
2727
}
@@ -127,7 +127,7 @@
127127
top: 5.5em;
128128
}
129129
#Second{
130-
transform: scale(0.8);
130+
transform: translateY(-5px) scale(0.8);
131131
transform-origin: center;
132132
}
133133
#First{
@@ -182,10 +182,10 @@
182182
<g id="Third">
183183
<path id="Rectangle 1" d="M30 121C42 121 115 121 124 121C133 121 135 141 124 141C113 141 41 141 30 141C19 141 18 121 30 121Z" fill="white"/>
184184
</g>
185-
<g id="Second" style="opacity: .4;">
185+
<g id="Second" style="opacity: .4;">
186186
<path id="Rectangle 1_2" d="M30 87C42 87 115 87 124 87C133 87 135 107 124 107C113 107 41 107 30 107C19 107 18 87 30 87Z" fill="white"/>
187187
</g>
188-
<g id="First" style="opacity: .4;">
188+
<g id="First" style="opacity: .4;">
189189
<path id="Rectangle 1_3" d="M30 53C42 53 115 53 124 53C133 53 135 73 124 73C113 73 41 73 30 73C19 73 18 53 30 53Z" fill="white"/>
190190
</g>
191191
</svg>
@@ -427,14 +427,14 @@
427427
</li>
428428
</ul>
429429
</nav>
430-
<div id="loader-cont" style="background-color: black;width: 100%;height: 100%;position: absolute;z-index: 400;">
430+
<div id="loader-cont" style="background-color: black;width: 100%;height: 100%;position: fixed;z-index: 400;">
431431
</div>
432-
<canvas id="wave2" style="position: absolute;top: 50%;left: 50%;transform: translate(-50%,-50%) scale(1.5);transform-origin: center;z-index: 500;">
432+
<canvas id="wave2" style="position: fixed;top: 50%;left: 50%;transform: translate(-50%,-50%) scale(1.5);transform-origin: center;z-index: 500;">
433433
</canvas>
434434
<div id="main">
435435
</div>
436436
<audio id="audio" autoplay muted src="music/Farfromanyroad.ogg" style="display:none"></audio>
437-
<!-- <div style="position: absolute;top: 50%;left: 50%;transform: translate(-50%,-50%);width: 140px;height: 180px;cursor: pointer;z-index: 500;user-select: none; outline: none;" class="disposable sfxbtn centerBtn"></div> -->
437+
<div style="position: absolute;top: 50%;left: 50%;transform: translate(-50%,-50%);width: 140px;height: 180px;user-select: none; outline: none;" class="disposable sfxbtn centerBtn"></div>
438438

439439
<svg viewBox="0 0 500 250" class="is disposable Mysvg" id="twisty">
440440
<path id="sad-arc" d="M 50 150 C 150 150, 250 100, 450 150" fill="transparent"/>

0 commit comments

Comments
 (0)