So as I see it jump is always true and it is with in the rel distance x, y, z
Yes it is. You should see why by looking at your code, especially the bits you added very recently
So as I see it jump is always true and it is with in the rel distance x, y, z
Should I be able to see the relpos x, y, z in the debugger?
I wonder if the if Jump == true shouldn't be at the first of this.
void WORMHOLE::clbkPostStep(double simt, double simdt, double mjd)
{
for (UINT i = 0; i < oapiGetVesselCount(); i++)
{
OBJHANDLE hvessel = oapiGetVesselByIndex(i);
if (jump == true){
if (hvessel != GetHandle())
{
VECTOR3 vesselpos = _V(0, 0, 0);
VECTOR3 gatepos = _V(0, 0, 0);
VECTOR3 relpos = _V(0, 0, 0);
oapiGetGlobalPos(hvessel, &vesselpos);
oapiGetGlobalPos(GetHandle(), &gatepos);
relpos = vesselpos - gatepos;
double triggerdistance = 200;
VECTOR3 gaterelative_pos = _V(0, 0, 0);
oapiGlobalToLocal(GetHandle(), &relpos, &gaterelative_pos);
// if ((gaterelative_pos.x<-500) || (gaterelative_pos.x>500) || (gaterelative_pos.y<-500) || (gaterelative_pos.y>500) || (gaterelative_pos.x<-10) || (gaterelative_pos.x>10)) jump = true;
//double distance = length(relpos);
// if (distance < triggerdistance) jump = true;
if (((gaterelative_pos.x<-500) || (gaterelative_pos.x>500) || (gaterelative_pos.y<-500) || (gaterelative_pos.y>500)) && ((gaterelative_pos.z<-10) || (gaterelative_pos.z>10)))//ship is near gate and key pressed
{
VESSELSTATUS2 vs_vessel, vs_other_gate;
memset(&vs_vessel, 0, sizeof(vs_vessel));
memset(&vs_other_gate, 0, sizeof(vs_other_gate));
vs_vessel.version = 2;
vs_other_gate.version = 2;
VESSEL *v;
v = oapiGetVesselInterface(hvessel);
v->GetStatusEx(&vs_vessel);
OBJHANDLE h_other_gate;
char myname[16];
char GateA[16];
sprintf(myname, GetName());
sprintf(GateA, "Gate_A");
if (strcmp(myname, GateA) == 0)
{
h_other_gate = oapiGetVesselByName("Gate_B");
}
else{
h_other_gate = oapiGetVesselByName("Gate_A");
}
VESSEL *v_other_gate;
v_other_gate = oapiGetVesselInterface(h_other_gate);
v_other_gate->GetStatusEx(&vs_other_gate);
vs_vessel.rbody = vs_other_gate.rbody;
vs_vessel.rpos = vs_other_gate.rpos;
vs_vessel.vrot = vs_other_gate.vrot;
vs_vessel.arot = vs_other_gate.arot;
VECTOR3 outvel = _V(rvel.x, rvel.y, rvel.z);
VECTOR3 rofs;
GlobalRot(outvel, rofs);
vs_vessel.rvel.x = vs_other_gate.rvel.x + rofs.x;
vs_vessel.rvel.y = vs_other_gate.rvel.y + rofs.y;
vs_vessel.rvel.z = vs_other_gate.rvel.z + rofs.z;
jump = false;
v->DefSetStateEx(&vs_vessel);
}
}
}
}
}
+ &relpos 0x00aefb58 {data=0x00aefb58 {-0.26056367321808022, 0.24045060385748118, -2.9722131190885874e-009} x=...} VECTOR3 *
- gaterelative_pos {data=0x00aefb18 {0.00000000000000000, 0.00000000000000000, 1.7491605412344125e-239} x=0.00000000000000000 ...} VECTOR3
- gaterelative_pos {data=0x00aefb20 {0.00000000000000000, 1.7491605412344125e-239, 0.00000000000000000} x=0.00000000000000000 ...} VECTOR3
- gaterelative_pos {data=0x00aefb14 {0.00000000000000000, 0.00000000000000000, 0.00000000000000000} x=0.00000000000000000 ...} VECTOR3
Then I go to the next breakpoint. This is to see if the vessel is close enough. but now gaterelposition are all zeros?
and since it goes pass that the dg isn't moved
for (UINT i = 0; i < oapiGetVesselCount(); i++)
{
OBJHANDLE hvessel = oapiGetVesselByIndex(i);
if (jump == true){
if (hvessel != GetHandle())
{
VECTOR3 vesselpos = _V(0, 0, 0);
VECTOR3 gatepos = _V(0, 0, 0);
VECTOR3 relpos = _V(0, 0, 0);
oapiGetGlobalPos(hvessel, &vesselpos);
oapiGetGlobalPos(GetHandle(), &gatepos);
relpos = vesselpos - gatepos;
double triggerdistance = 200;
VECTOR3 gaterelative_pos = _V(0, 0, 0);
oapiGlobalToLocal(GetHandle(), &relpos, &gaterelative_pos);
if hvessel is NOT a gate
if (((gaterelative_pos.x<-500) || (gaterelative_pos.x>500) || (gaterelative_pos.y<-500) || (gaterelative_pos.y>500)) && ((gaterelative_pos.z<-10) || (gaterelative_pos.z>10)))//ship is near gate and key pressed
{
so if gaterelposition.x is in between -500 and 500 or so if gaterelposition.y is in between -500 and 500 and gaterelposition.z is in between -10 and 10.
if (((gaterelative_pos.x<-500) || (gaterelative_pos.x>500) || (gaterelative_pos.y<-500) || (gaterelative_pos.y>500)) && ((gaterelative_pos.z<-10) || (gaterelative_pos.z>10)))//ship is near gate and key pressed
{
so if gaterelposition.x is in between -500 and 500
if gaterelative_pos.x is less than -500 or gaterelative_pos.x>500
void WORMHOLE::clbkPostStep(double simt, double simdt, double mjd)
{
for (UINT i = 0; i < oapiGetVesselCount(); i++)
{
OBJHANDLE hvessel = oapiGetVesselByIndex(i);
if (jump == true){
if (hvessel != GetHandle())
{
VECTOR3 vesselpos = _V(0, 0, 0);
VECTOR3 gatepos = _V(0, 0, 0);
VECTOR3 relpos = _V(0, 0, 0);
oapiGetGlobalPos(hvessel, &vesselpos);
oapiGetGlobalPos(GetHandle(), &gatepos);
relpos = vesselpos - gatepos;
// double triggerdistance = 200;
VECTOR3 gaterelative_pos = _V(-1, -1, -1);
oapiGlobalToLocal(GetHandle(), &relpos, &gaterelative_pos);
// if ((gaterelative_pos.x<-500) || (gaterelative_pos.x>500) || (gaterelative_pos.y<-500) || (gaterelative_pos.y>500) || (gaterelative_pos.x<-10) || (gaterelative_pos.x>10)) jump = true;
//double distance = length(relpos);
// if (distance < triggerdistance) jump = true;
if ((-500<gaterelative_pos.x>500) && (-500<gaterelative_pos.y>500) && (-10<gaterelative_pos.z>10))
So I want (-500>gaterelative_pos.x<500)
void WORMHOLE::clbkPostStep(double simt, double simdt, double mjd)
{
for (UINT i = 0; i < oapiGetVesselCount(); i++)
{
OBJHANDLE hvessel = oapiGetVesselByIndex(i);
if (jump == true){
if (hvessel != GetHandle())
{
VECTOR3 vesselpos = _V(0, 0, 0);
VECTOR3 gatepos = _V(0, 0, 0);
VECTOR3 relpos = _V(0, 0, 0);
oapiGetGlobalPos(hvessel, &vesselpos);
oapiGetGlobalPos(GetHandle(), &gatepos);
relpos = vesselpos - gatepos;
// double triggerdistance = 200;
VECTOR3 gaterelative_pos = _V(-1, -1, -1);
oapiGlobalToLocal(GetHandle(), &relpos, &gaterelative_pos);
// if ((gaterelative_pos.x<-500) || (gaterelative_pos.x>500) || (gaterelative_pos.y<-500) || (gaterelative_pos.y>500) || (gaterelative_pos.x<-10) || (gaterelative_pos.x>10)) jump = true;
//double distance = length(relpos);
// if (distance < triggerdistance) jump = true;
if ((-500<gaterelative_pos.x>500) && (-500<gaterelative_pos.y>500) && (-10<gaterelative_pos.z>10))//ship is near gate and key pressed
I get this :
WORMHOLE.CPP(103): warning C4804: '>' : unsafe use of type 'bool' in operation
if ((-500<gaterelative_pos.x) && (gaterelative_pos.x>500))