I just put a older CRT top on the aft CRT. MAy need to redo the texture?
This one is not functional
oapiVCSetAreaClickmode_Quadrilateral(AID_CCTV1_BUTTONS, _V(-1.009228, 2.914146, 12.2876), _V(-.9044127, 2.913743, 12.2876), _V(-1.007414, 2.906084, 12.2876), _V(-.9030017, 2.90568, 12.2876));
// D. Beachy: register+activate MFD power buttons
const double powerButtonRadius = 0.01; // radius of power button on each MFD
oapiVCRegisterArea(AID_CCTV1_PWR, PANEL_REDRAW_NEVER, PANEL_MOUSE_LBDOWN | PANEL_MOUSE_ONREPLAY);
oapiVCSetAreaClickmode_Spherical(AID_CCTV1_PWR, _V(-1.079, 3.0613, 12.412), .01);
Yes. I can do that also. But you need to add no clipping as you get clipped by the bay and hardware.All the payload bay cameras pan and tilt.
If each camera was a vessel you could use it's view point on the CCTV.
void Atlantis::RegisterVC_AftMFD ()
{
SURFHANDLE tex1 = oapiGetTextureHandle (hOrbiterVCMesh, 20);
// activate MFD function buttons
oapiVCSetAreaClickmode_Quadrilateral(AID_CCTV1_BUTTONS, _V(-1.009214, 2.905935, 12.39062), _V(-0.906, 2.906741, 12.285), _V(-1.007, 2.913594, 12.392), _V(-0.903 , 2.914401, 12.288));
oapiVCSetAreaClickmode_Quadrilateral(AID_CCTV2_BUTTONS, _V(-0.9271295, 2.69396, 12.31786), _V(-0.9271295, 2.694549, 12.285), _V(-0.9271295, 2.701223, 12.31629), _V(-0.9271295, 2.702009 , 12.41936));
// D. Beachy: register+activate MFD power buttons
const double powerButtonRadius = 0.01; // radius of power button on each MFD
oapiVCRegisterArea(AID_CCTV1_PWR, PANEL_REDRAW_NEVER, PANEL_MOUSE_LBDOWN | PANEL_MOUSE_ONREPLAY);
oapiVCRegisterArea(AID_CCTV2_PWR, PANEL_REDRAW_NEVER, PANEL_MOUSE_LBDOWN | PANEL_MOUSE_ONREPLAY);
oapiVCSetAreaClickmode_Spherical(AID_CCTV1_PWR, _V(-1.079, 3.0613, 12.412), .01);
oapiVCSetAreaClickmode_Spherical(AID_CCTV2_PWR, _V(-1.0401, 2.8382, 12.443), .01);
oapiVCRegisterArea(AID_CCTV1_BUTTONS, _R(0, 99, 255, 112), PANEL_REDRAW_USER, PANEL_MOUSE_LBDOWN | PANEL_MOUSE_LBUP | PANEL_MOUSE_LBPRESSED | PANEL_MOUSE_ONREPLAY, PANEL_MAP_BACKGROUND, tex1);
oapiVCRegisterArea(AID_CCTV2_BUTTONS, _R(0, 113, 255, 126), PANEL_REDRAW_USER, PANEL_MOUSE_LBDOWN | PANEL_MOUSE_LBUP | PANEL_MOUSE_LBPRESSED | PANEL_MOUSE_ONREPLAY, PANEL_MAP_BACKGROUND, tex1);}
bool Atlantis::clbkVCMouseEvent (int id, int event, VECTOR3 &p)
{
static bool counting = false;
static double t0 = 0.0;
switch (id) {
// handle MFD selection buttons
case AID_CDR1_BUTTONS:
case AID_PLT1_BUTTONS:
case AID_MFD1_BUTTONS:
case AID_CCTV1_BUTTONS:
case AID_CCTV2_BUTTONS:
//case AID_MFDA_BUTTONS:
{
int mfd = id-AID_CDR1_BUTTONS+MFD_LEFT;
int bt = (int)(p.x*5.99);
if (bt < 5) oapiProcessMFDButton (mfd, bt, event);
else {
if (event & PANEL_MOUSE_LBDOWN) {
t0 = oapiGetSysTime();
counting = true;
} else if ((event & PANEL_MOUSE_LBUP) && counting) {
oapiSendMFDKey (mfd, OAPI_KEY_F2);
counting = false;
} else if ((event & PANEL_MOUSE_LBPRESSED) && counting && (oapiGetSysTime()-t0 >= 1.0)) {
oapiSendMFDKey (mfd, OAPI_KEY_F1);
counting = false;
}
}
} return true;
// D. Beachy: handle power buttons
case AID_CDR1_PWR:
case AID_PLT1_PWR:
case AID_MFD1_PWR:
case AID_CCTV1_PWR:
case AID_CCTV2_PWR:
//case AID_MFDA_PWR:
{
int mfd = id - AID_CDR1_PWR+MFD_LEFT;
oapiSendMFDKey(mfd, OAPI_KEY_ESCAPE);
} return true;
// handle MFD brightness buttons
case AID_CDR1_BRT:
case AID_PLT1_BRT:
case AID_MFD1_BRT:
//case AID_MFDA_BRT:
{
static double t0, brt0;
static bool up;
int mfd = id-AID_CDR1_BRT;
if (event & PANEL_MOUSE_LBDOWN) {
up = (p.x >= 0.5);
t0 = oapiGetSysTime();
brt0 = mfdbright[mfd];
} else if (event & PANEL_MOUSE_LBPRESSED) {
double dt = oapiGetSysTime()-t0;
double brt, dbrt = dt * 0.2;
if (up) brt = min (1.0, brt0 + dbrt);
else brt = max (0.25, brt0 - dbrt);
mfdbright[mfd] = brt;
if (vis) {
MATERIAL mat;
memset (&mat, 0, sizeof(MATERIAL));
mat.emissive.r = mat.emissive.g = mat.emissive.b = (float)brt;
mat.emissive.a = 1.0f;
DEVMESHHANDLE hMesh = GetDevMesh (vis, mesh_vc);
oapiSetMaterial (hMesh, 23+mfd, &mat);
}
}
} return true;
// handle panel R13L events (payload bay operations)
case AID_R13L:
return plop->VCMouseEvent (id, event, p);
}
return false;
}