void CActor::IR_OnMouseMove(int dx, int dy) { if(hud_adj_mode) { g_player_hud->tune (Ivector().set(dx,dy,0)); return; } PIItem iitem = inventory().ActiveItem(); if(iitem && iitem->cast_hud_item()) iitem->cast_hud_item()->ResetSubStateTime(); if (Remote()) return; if(m_holder) { m_holder->OnMouseMove(dx,dy); return; } float LookFactor = GetLookFactor(); CCameraBase* C = cameras [cam_active]; float scale = (C->f_fov/g_fov)*psMouseSens * psMouseSensScale/50.f / LookFactor; if (dx){ float d = float(dx)*scale; cam_Active()->Move((d<0)?kLEFT:kRIGHT, _abs(d)); } if (dy){ float d = ((psMouseInvert.test(1))?-1:1)*float(dy)*scale*3.f/4.f; cam_Active()->Move((d>0)?kUP:kDOWN, _abs(d)); } }
void ElementsNN::define_input() { no_types = 12; no_inputs = 2*no_types + 1 + 0; //use elements float H [] = {1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}; float C [] = {0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}; float N [] = {0.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}; float O [] = {0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}; float F [] = {0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}; float NA[] = {0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0}; float P [] = {0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0}; float S [] = {0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0}; float CL[] = {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0}; float CA[] = {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0}; float BR[] = {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0}; float I [] = {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0}; //convert to vectors vector<float> Hvector ( H, H + 12 ); vector<float> Cvector ( C, C + 12 ); vector<float> Nvector ( N, N + 12 ); vector<float> Ovector ( O, O + 12 ); vector<float> Fvector ( F, F + 12 ); vector<float> NAvector (NA,NA + 12 ); vector<float> Pvector ( P, P + 12 ); vector<float> Svector ( S, S + 12 ); vector<float> CLvector (CL,CL + 12 ); vector<float> CAvector (CA,CA + 12 ); vector<float> BRvector (BR,BR + 12 ); vector<float> Ivector ( I, I + 12 ); //map vectors types["H" ] = Hvector; types["C" ] = Cvector; types["N" ] = Nvector; types["O" ] = Ovector; types["F" ] = Fvector; types["NA"] = NAvector; types["P" ] = Pvector; types["S" ] = Svector; types["CL"] = CLvector; types["CA"] = CAvector; types["BR"] = BRvector; types["I" ] = Ivector; }
void CActor::IR_OnMouseWheel(int direction) { if(hud_adj_mode) { g_player_hud->tune (Ivector().set(0,0,direction)); return; } if(inventory().Action( (direction>0)? (u16)kWPN_ZOOM_DEC:(u16)kWPN_ZOOM_INC , CMD_START)) return; if (direction>0) OnNextWeaponSlot (); else OnPrevWeaponSlot (); }
void Normalize(Real **vf, const Real *b,int sides) /* Normalize a symmetric matrix F (vf) by solving a diagonal matrix D (diag) so that the row sums in matrix DFD coincides with those given in vector b. The Newton method is used to solve the diagonal matrix D. */ { /* Criteria for ending the iteration */ int itmax = 10; Real eps = 1e-20; Real **jac,*rest,*diag,sum; int i,j,k,it; int *indx; printf("Normalization of matrices is currently not supported\n"); printf("If you want to reactivate it, rewrite the LU decomposition\n"); return; jac = Rmatrix(1,sides,1,sides); rest = Rvector(1,sides); diag = Rvector(1,sides); indx = Ivector(1,sides); for (i=1;i<=sides;i++) diag[i] = 1.; for(it=1;it<=itmax;it++) { /* Calculate the residual sum(DAD)-b. */ for (i=1; i<=sides; i++) { sum = 0.; for (j=1; j<=sides; j++) sum += diag[j] * vf[i][j]; sum *= diag[i]; rest[i] = sum - b[i]; } sum = 0.; for (i=1; i<=sides; i++) sum += rest[i]*rest[i]/b[i]; sum /= sides; if(sum < eps) break; /* Make the Jacobian matrix. */ for (i=1; i<=sides; i++) { jac[i][i] = 0.; for(j=1; j<=sides; j++) jac[i][j] = diag[i]*vf[i][j]; for(k=1; k<=sides;k++) jac[i][i] += diag[k]*vf[i][k]; } /* Solve the equation jac * x = rest using Numerical Recipes routines. */ /* These have been removed due to copyright violiation */ /* New approximation. */ for (i=1; i<=sides; i++) diag[i] -= rest[i]; } /* Normalize the viewfactors. */ for (i=1; i<=sides; i++) for (j=1; j<=sides; j++) vf[i][j] *= diag[i] * diag[j]; free_Rmatrix(jac,1,sides,1,sides); free_Rvector(rest,1,sides); free_Rvector(diag,1,sides); free_Ivector(indx,1,sides); }