You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

155 lines
3.4 KiB

import React, { useRef, useEffect } from 'react';
import { Container, Icon } from 'semantic-ui-react';
import * as THREE from 'three/build/three.module';
import { Ship } from './spaceport/Ship';
export const Footer = () => {
const footerRef = useRef();
useEffect(() => {
if (!footerRef.current) return;
let t = 0.01;
const shipInterval = 2;
let nextShip = shipInterval;
var scene = new THREE.Scene();
const renderer = new THREE.WebGLRenderer({ antialias: true });
renderer.setSize(
footerRef.current.clientWidth,
footerRef.current.clientHeight
);
const camera = new THREE.PerspectiveCamera(65, 1, 0.01, 1000);
camera.position.set(4, 1, 4);
camera.lookAt(new THREE.Vector3(-8, 0, -2));
scene.add(camera);
footerRef.current.appendChild(renderer.domElement);
let ships = [];
const ship = new Ship();
scene.add(ship.mesh);
ships.push(ship);
const animate = () => {
const deltaTime = 0.075;
t += deltaTime;
// get mouse
if (t > nextShip) {
console.log('bing');
const ship = new Ship();
scene.add(ship.mesh);
ships.push(ship);
nextShip += shipInterval + (Math.random() - 0.5) * 2;
}
for (const ship of ships) {
ship.update({ deltaTime });
if (ship.kill) {
console.log('killing ship');
scene.remove(ship.mesh);
}
}
ships = ships.filter((s) => !s.kill);
requestAnimationFrame(animate);
renderer.render(scene, camera);
};
animate();
renderer.render(scene, camera);
}, [footerRef]);
return (
<div className="footer" ref={footerRef}>
<Container className="footer-content">
<p>
<img
alt="site logo"
src="/logo-short.svg"
className="logo"
/>
</p>
<p className="text">
Contact us:{' '}
<a
href="mailto:info@protospace.ca"
target="_blank"
rel="noopener noreferrer"
>
info@protospace.ca
</a>
</p>
<p className="text">
Created and hosted by Protospace members for Protospace
members.
</p>
<p className="text">
Spaceport is free and open-source software.{' '}
<a
href="https://github.com/Protospace/spaceport"
target="_blank"
rel="noopener noreferrer"
>
Click here
</a>{' '}
to view the source code and license.
</p>
<p>
<a
href="https://instagram.com/protospace"
target="_blank"
rel="noopener noreferrer"
aria-label="link to our instagram"
>
<Icon name="instagram" size="large" />
</a>
<a
href="https://twitter.com/protospace"
target="_blank"
rel="noopener noreferrer"
aria-label="link to our twitter"
>
<Icon name="twitter" size="large" />
</a>
<a
href="https://youtube.com/user/calgaryprotospace/playlists"
target="_blank"
rel="noopener noreferrer"
aria-label="link to our youtube"
>
<Icon name="youtube" size="large" />
</a>
<a
href="https://github.com/Protospace"
target="_blank"
rel="noopener noreferrer"
aria-label="link to our github"
>
<Icon name="github" size="large" />
</a>
<a
href="https://docs.my.protospace.ca"
target="_blank"
rel="noopener noreferrer"
aria-label="link to our docs"
>
<Icon name="book" size="large" />
</a>
</p>
<p>© 2020 Calgary Protospace Ltd.</p>
</Container>
</div>
);
};