@@ -176,14 +176,14 @@ Loadercanvas.width = 20 * 6 / 3
176176let firstclick = true
177177let run = false
178178let allow = true
179- let opacity = { o : 0 }
179+ let opacity = 0
180180let opacityallowance = false
181181canvas . 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} )
200200function 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
233223function 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
246256document . addEventListener ( 'click' , ( ) => {
@@ -263,19 +273,17 @@ renderer.setSize(window.innerWidth, window.innerHeight);
263273main . appendChild ( renderer . domElement ) ;
264274
265275
276+
266277const distanceZ = camera . position . z + 40 ;
267278const fov = camera . fov * ( Math . PI / 180 ) ;
268279
269280const height = 2 * Math . tan ( fov / 2 ) * distanceZ ;
270281
271282const width = 505.7840285242011 ;
272283
273- drawlines ( pheta , undefined , - 3 )
274-
275284// Object setup
276285
277286
278- let loaderanimationr ;
279287const loader = new GLTFLoader ( ) ;
280288const dracoLoader = new DRACOLoader ( ) ;
281289dracoLoader . setDecoderPath ( 'https://www.gstatic.com/draco/v1/decoders/' ) ;
@@ -284,41 +292,6 @@ loader.setDRACOLoader(dracoLoader);
284292const gltf = await loaderg . loadAsync ( 'https://cdn.jsdelivr.net/gh/Subsussp/THE@gh-pages/3D/Apollo/Statue.glb' ) ;
285293const 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
323296let 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 ( {
0 commit comments