This are the (new) Support Forums for FSUIPC and related products.

These forums replace the old support forums which have been running for 20+ years. The old forums contain a wealth of information on all FSUIPC products, and are still available (until the end of the year) for read-only here.

At the moment these new forums are quite empty – I will be updating the FAQ section and copying across the User Contributions from the old forums in the next few months.

Please note that you will need to Register and Login to post for support, and also to download attachments. You can view these forums without registering.

Support is also available via Discord. Please use the following invite link to join the FSUIPC Discord server:
                           https://discord.gg/zjwUTrxmmE

Notifications
Clear all

WidevieW (FSX) network-panning using FSUIPC4 and WideFS

(@fsuipc-support)
Posts: 86
Moderator
Topic starter
 
Hi everyone, and especially WidevieW (FSX) users,
 
A neat additional feature of WidevieW X is the facility to pan the view laterally on the Clients, and also tilt the view downwards or upwards using a hat-switch on the Server. I find this very useful while sitting at the gate at an airport if I want to have a look at the activity around me, on the Climb when I want to have a look down at the terrain, and on Finals, because with the nose-high attitude of some heavy aircraft, one sometimes doesn't get an adequate view of the runway.
 
sar.jpg
 
So this is a great feature.........however, I found that in order to use it you have to ENABLE CONTROLLERS in FSX (i.e. FSX joystick assignments become active). Unfortunately, I have had to to disable that feature in FSX because (1) I make all my assignments through FSUIPC, and (2) although one can delete all the joystick assignments from FSX using the FSX menu or by editing the Standard.xml file, they usually reappear the next flight by some sort of black-magic, and start conflicting with one's FSUIPC assignments. And it is painful to have to delete these assignments from the menu, manually, at the beginning of every flight.
..............................................................................................................................................................................................................
Problem: In order to use WidevieW network-panning with a Hat-Switch on the SERVER, one needs to ENABLE CONTROLLERS in FSX. However, FSX has the nasty habit of randomly rearranging joystick assignments, so many users have switched to using FSUIPC exclusively to manage controllers, and so they DISABLE CONTROLLERS in FSX permanently. This however means that WidevieW's network-panning facilities will not be available any more.
 
Objective: With FSX CONTROLLERS DISABLED on the WidevieW SERVER, to be able to transmit view-panning commands to networked WidevieW CLIENTS.

Requirements: Registered FSUIPC4 and WideFS

Summary of Process: When a panning-command (via Hat-Switch button) is applied at the SERVER, FSUIPC-WideServer sends a KeySend number to all networked Clients. At each CLIENT, WideClient receives the KeySend number and sends a key-press to FSX-FSUIPC. An auto-started LUA script intercepts this key-press and rotates the view appropriately using the SimConnect_CameraSetRelative6DOF function. Certain options in the wideviewx.ini file at the CLIENTs and SERVER need to be set to ensure that it does not interfere. A new Camera Definition is also installed on the CLIENT(s) to keep this option separate.
______________________________________________________

(1) The WidevieW SERVER will require FSUIPC4 and WideFS-WideServer (both registered). On each WidevieW CLIENT we need to install FSUIPC4 and WideFS-WideClient as well (and because FSX is also running there we need to use a different Class Instance = 1). So the first few lines of the [Config] Section of each WideClient.ini looks like this:
[Config]
ServerName=SERVER
Protocol=TCP
ButtonScanInterval=20
ClassInstance=1
NetworkTiming=5,1
MailslotTiming=2000,1000
PollInterval=2000
Port=8002
Port2=9002

:
Note that each WideClient is linked to the SERVER FSUIPC

(2) On the SERVER, we set up the Hat-Switch to send KeySend numbers across the network (to activate panning at the the Clients). Here are the relevant entries in my FSUIPC.ini file on the SERVER, showing 5 buttons on my Sidewinder Joystick [left, right, up, down and trigger (for reset)] mapped to KeySends 2 through 6.
[Buttons]
43=RL,32,C1006,5     -{KEYSEND 5 for WideFS}-
44=RL,34,C1006,2     -{KEYSEND 2 for WideFS}-
45=RL,36,C1006,6     -{KEYSEND 6 for WideFS}-
46=RL,38,C1006,3     -{KEYSEND 3 for WideFS}-
47=PL,0,C1006,4     -{KEYSEND 4 for WideFS}-

(3) On each CLIENT, WideClient must receive these KeySend numbers, and transmit the mapped keystrokes to FSX-FSUIPC locally, so the WideClient.ini file at each Client has the following entries in its [User] section.
[User]
KeySend2=39,8,FS98MAIN
KeySend3=37,8,FS98MAIN
KeySend4=36,8,FS98MAIN
KeySend5=38,8,FS98MAIN
KeySend6=40,8,FS98MAIN

I have mapped the KeySends to the arrow (l/r/u/d) and home keys. Using FS98MAIN ensures that the keystrokes are sent to the FSX window.

(4) FSUIPC-LUA residing on the CLIENT intercepts these keystrokes from WideClient, and writes the rotated view-point to the appropriate FSUIPC offsets mapped to the SimConnect_CameraSetRelative6DOF function. Here is the LUA entitled networkrotation.lua:

-- initial values
lX = 0.0
lY = 0.0
lZ = 0.0
lPitch = 0.0
lBank = 0.0
lHeading = 0.0

-- increments
delHdg = 11.25
delPitch = 5


-- camera rotations
function rotate_right ()
	lHeading = lHeading + delHdg
	if lHeading >= 180 then
		lHeading = lHeading - 360
	end
	set_eyepoint ()
end

function rotate_left ()
	lHeading = lHeading - delHdg
	if lHeading <= -180 then
		lHeading = lHeading + 360
	end
	set_eyepoint ()
end

function rotate_up ()
	lPitch = lPitch + delPitch
	if lPitch > 90 then
		lPitch = 90
	end
	set_eyepoint ()
end

function rotate_down ()
	lPitch = lPitch - delPitch
	if lPitch < -90 then
		lPitch = -90
	end
	set_eyepoint ()
end

function rotate_reset ()
	lPitch = 0.0
	lHeading = 0.0
	set_eyepoint ()
end

-- set the eyepoint
function set_eyepoint ()
	ipc.writeStruct( 0x86A0 , "6FLT" , lX , lY , lZ , lPitch , lBank , lHeading ) -- X, Y, Z, P, B, H
end


event.key ( 39, 8, "rotate_right")
event.key ( 37, 8, "rotate_left")
event.key ( 40, 8, "rotate_down")
event.key ( 38, 8, "rotate_up")
event.key ( 36, 8, "rotate_reset")

You may notice that the LUA has been refined to allow continuous rotation (i.e. beyond +/-180 deg) in yaw, but limits the rotation in pitch to +/- 90 degree.

Here are the relevant sections of the Client's FSUIPC.ini:

[Auto]
2=Lua networkrotation

[LuaFiles]
4=networkrotation

(5) Okay, but we also need to ensure that WidevieW will not try to do the same thing. Since I came from a setup where WidevieW was previously doing the network-panning, I needed to go back into the wideviewx.ini file (on each Client) and change a few entries, till each airplane's section looked like this:

[WidevieW_Dummy Dash8-Q400]
ApplyCurrent=1
ApplyGlobal=0
RaiseLG=1
RaiseLGBy=18
p_headingdelta=45
p_pitchdelta=30
p_setviewangle=0
p_processreorientation=0
p_pitch=0
p_pitchf=0
p_heading=0
p_headingf=0
p_deltax=0
p_deltaxf=0
p_deltay=0
p_deltayf=0
p_deltaz=0
p_deltazf=0

The crucial lines are:
p_setviewangle=0
p_processreorientation=0

This ensures that WidevieW will not manipulate the view on the CLIENT, except for locating the aircraft correctly (which is its basic job). I did this for each airplane individually, rather than globally; above is my extract for the Majestic Dash 8 left-side-view Client.

 

Additionally within wideviewx.ini on the Wideview SERVER I set:
[Views]
HatEnableServer=0
HatEnableClient=0

to ensure no panning commands are sent out by WidevieW

(6) I also created a new Camera Definition and added it to the cameras.cfg on each CLIENT. This is because I wanted to keep this new technique separate from the old method:

[CameraDefinition.999]
Title = "WidevieW Virtual Cockpit"
Guid = {01021987-E220-6507-1024-46284
0738999}
Description = Specialised virtual cockpit view.
Origin = Virtual Cockpit
MomentumEffect = No
SnapPbhAdjust = Swivel
SnapPbhReturn = False
PanPbhAdjust = Swivel
PanPbhReturn = False
InitialPbh = 0.0, 0.0, -26.0
Track = None
ShowAxis = YES
AllowZoom = TRUE
InitialZoom = 0.7
SmoothZoomTime = 2.0
ZoomPanScalar = 1.0
ShowWeather = Yes
XyzAdjust = TRUE
ShowLensFlare=FALSE
Category = Cockpit
PitchPanRate=30
HeadingPanRate=75
PanAcceleratorTime=0
HotKeySelect=4

The initialPbh value in this case shows that this is the left view at -26 degrees from centre.

It is not necessary with this method that the Client's view be a Virtual Cockpit view; in a subsequent post I will show how it can work with 2-D cockpit views as well. But I prefer VC-views because in that case the SDK unequivocally states that the eye-point is as defined in the aircraft.cfg.

I found the following documents helpful to understand camera definitions:
http://www.fstipsandaddons.com/tutorials/understanding-fsx-cameras.html
https://msdn.microsoft.com/en-us/library/cc526984.aspx#CameraConfigurationFileFormat

(7) I use saved flights for each WidevieW Client airplane. So for the Dash8 saved flight (.FLT) I ensured that this particular camera view was linked:
[Main]
Title=WVD D8Q400test
Description=""
AppVersion=10.0.61472
FlightVersion=1

[Window.1]
Order=0
Active=True
Undocked=False
Maximized=True
ScreenUniCoords=0, 0, 8191, 2600
UndocCoords=0, 0, 0, 0
CurrentCamera={01021987-E220-6
507-1024-462840738999}
:
:
[Camera.1.13]
Guid={01021987-E220-6507-1024-
462840738999}
Zoom=2.5567879676818848
Translation=0, 0, 0
Rotation=0, -26, 0

Here are some more screenshots showing the near perfect alignment between views displayed on adjacent monitors in pitch and a combination of pitch and yaw. They are taken from a Dash8 Q400 parked at the Gate at VOBL:

0-2U-5L3U.jpg

Addendum:

With the earlier panning procedure using Swivel or Ordinal methods, I found it necessary to use Virtual Cockpit views to get full functionality. But the power of this SimConnect_CameraSetRelative6DOF method is that it works equally well with 2-D cockpit views. Here are some settings I used to test this with my A300B4-203 at VOML:

The Camera definition selected must contain an InitialPbh, in this case I have selected the left-of-centre view at -26 degrees:

[CameraDefinition.001]
Title = Cockpit
Guid = {B1386D92-4782-4682-A137-738E25D1BAB5}
Description = This is the description of the cockpit view
Origin = Cockpit
ShowPanel = Yes
SnapPbhAdjust = Ordinal
SnapPbhReturn = True
PanPbhAdjust = Ordinal
PanPbhReturn = True
InitialPbh = 0.0, 0.0, -26.0
Track = None
ShowAxis = FrontOnly
AllowZoom = TRUE
InitialZoom = 1.0
SmoothZoomTime = 0.0
ShowWeather = Yes
XyzAdjust = TRUE
ShowLensFlare=FALSE
Category = Cockpit
HotKeySelect=2

And the same camera is selected in the .FLT:

[Window.1]
Order=0
Active=True
Undocked=False
Maximized=True
ScreenUniCoords=0, 0, 8192, 6144
UndocCoords=0, 0, 0, 0
CurrentCamera={B1386D92-4782-4682-A137-738E25D1BAB5}

:

[Camera.1.1]
Guid={B1386D92-4782-4682-A137-738E25D1BAB5}
Zoom=2.5569632053375244
Translation=0, 0, 0
Rotation=0, 0, 0

And here are the screenshots:

A300voml24.jpg

You can see how the scenery views remain perfectly aligned even after rotating though 56.25 degrees to the right and 5 degrees down.

Chakko.

[Originally contributed in old SimMarket support forums by user Chakko / ckovoor]

 

 
Posted : November 12, 2025 5:15 pm