private void UpdateInterno(TGC.Core.Camara.TgcCamera Camara, TgcD3dInput Input, float ElapsedTime) { //ElapsedTime = 0.01f; CoordenadaEsferica anguloNave = new CoordenadaEsferica(xwing.GetCoordenadaEsferica().acimutal, xwing.GetCoordenadaEsferica().polar + DESVIO_ANGULO_POLAR); CalcularDeltaAcimutal(ElapsedTime, anguloNave); CalcularDeltaPolar(ElapsedTime, anguloNave); RueditaMouse(Input); cameraPosition = CommonHelper.SumarVectores(xwing.GetPosition(), GetDistancePoint()); lookAtCamera = xwing.GetPosition(); Camara.SetCamera(cameraPosition, lookAtCamera); }
private void CalcularDeltaPolar(float ElapsedTime, CoordenadaEsferica anguloNave) { float deltaPolar = anguloNave.polar - this.coordenadaEsferica.polar; if (Math.Abs(deltaPolar) > velocidadAngular * ElapsedTime) { if (deltaPolar < 0 && deltaPolar > -FastMath.PI / 2 || deltaPolar > FastMath.PI) { this.coordenadaEsferica = new CoordenadaEsferica( this.coordenadaEsferica.acimutal, this.coordenadaEsferica.polar - velocidadAngular * ElapsedTime); } else { this.coordenadaEsferica = new CoordenadaEsferica( this.coordenadaEsferica.acimutal, this.coordenadaEsferica.polar + velocidadAngular * ElapsedTime); } } }
private void CalcularDeltaAcimutal(float ElapsedTime, CoordenadaEsferica anguloNave) { float deltaAcimutal = anguloNave.acimutal - this.coordenadaEsferica.acimutal; if (Math.Abs(deltaAcimutal) > velocidadAngular * ElapsedTime) { if (deltaAcimutal < 0 && deltaAcimutal > -FastMath.PI || deltaAcimutal > FastMath.PI) { this.coordenadaEsferica = new CoordenadaEsferica( this.coordenadaEsferica.acimutal - velocidadAngular * ElapsedTime, this.coordenadaEsferica.polar); } else { this.coordenadaEsferica = new CoordenadaEsferica( this.coordenadaEsferica.acimutal + velocidadAngular * ElapsedTime, this.coordenadaEsferica.polar); } } }
/// <summary> /// Es el encargado de modificar la camara siguiendo a la nave /// </summary> public FollowingCamera(Xwing xwing)//@debe ser creada dsps del xwing { this.xwing = xwing; this.coordenadaEsferica = xwing.GetCoordenadaEsferica(); }