Refactor ParticlesComponent: simplify plane creation, remove legacy handler, and enhance quadrant logic with material updates.
This commit is contained in:
parent
1875f050c6
commit
49fe335c73
|
|
@ -225,12 +225,11 @@ export class ParticlesComponent implements OnInit, AfterViewInit {
|
|||
|
||||
// Create the intersection plane
|
||||
private createIntersectionPlane(): void {
|
||||
// Make the plane larger to cover 1 block above and below the player (3 blocks tall total)
|
||||
const planeGeometry = new THREE.PlaneGeometry(2, 3);
|
||||
const planeGeometry = new THREE.PlaneGeometry(3, 3);
|
||||
const planeMaterial = new THREE.MeshBasicMaterial({
|
||||
color: 0x00ff00,
|
||||
color: 0x00AA00,
|
||||
transparent: true,
|
||||
opacity: 0.2,
|
||||
opacity: 0.05,
|
||||
side: THREE.DoubleSide
|
||||
});
|
||||
|
||||
|
|
@ -297,11 +296,6 @@ export class ParticlesComponent implements OnInit, AfterViewInit {
|
|||
}
|
||||
}
|
||||
|
||||
// Legacy handler for backward compatibility
|
||||
private onMouseClick(event: MouseEvent): void {
|
||||
// This is now handled by onMouseUp
|
||||
}
|
||||
|
||||
// Add a particle at the specified position
|
||||
private addParticle(x: number, y: number, z: number): void {
|
||||
// Create a visual representation of the particle
|
||||
|
|
@ -362,18 +356,24 @@ export class ParticlesComponent implements OnInit, AfterViewInit {
|
|||
this.camera.position.z
|
||||
);
|
||||
|
||||
// Determine which quadrant the camera is in (0-90, 90-180, 180-270, 270-360 degrees)
|
||||
const quadrant = Math.floor((cameraAngle + Math.PI) / (Math.PI / 2)) % 4;
|
||||
// Determine which quadrant the camera is in with a 45-degree offset
|
||||
// Adding Math.PI/4 (45 degrees) to the angle before determining the quadrant
|
||||
// This shifts the quadrant boundaries by 45 degrees
|
||||
const quadrant = Math.floor((cameraAngle + Math.PI + Math.PI / 4) / (Math.PI / 2)) % 4;
|
||||
|
||||
// Rotate the plane to face the camera
|
||||
if (quadrant === 0) {
|
||||
this.intersectionPlane.rotation.y = 0; // Camera in front
|
||||
this.updateFrameMaterial(0x00AA00);
|
||||
} else if (quadrant === 1) {
|
||||
this.intersectionPlane.rotation.y = Math.PI / 2; // Camera on right
|
||||
this.updateFrameMaterial(0x0000AA);
|
||||
} else if (quadrant === 2) {
|
||||
this.intersectionPlane.rotation.y = Math.PI; // Camera behind
|
||||
this.updateFrameMaterial(0x00AA00);
|
||||
} else {
|
||||
this.intersectionPlane.rotation.y = -Math.PI / 2; // Camera on left
|
||||
this.updateFrameMaterial(0x0000AA);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -381,6 +381,15 @@ export class ParticlesComponent implements OnInit, AfterViewInit {
|
|||
this.renderer.render(this.scene, this.camera);
|
||||
}
|
||||
|
||||
public updateFrameMaterial(color: number) {
|
||||
this.intersectionPlane.material = new THREE.MeshBasicMaterial({
|
||||
color: color,
|
||||
transparent: true,
|
||||
opacity: 0.05,
|
||||
side: THREE.DoubleSide
|
||||
});
|
||||
}
|
||||
|
||||
// Add a new frame
|
||||
public addFrame(): void {
|
||||
const frameId = `frame${this.frames.length + 1}`;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user