Modified version of 3dxChat files, extending some of its features, primarily (for now) the Home editor.
Features
Extended user-configurable settings
Some of the game settings are now configurable via an “ExtraSettings.xml” file stored in the same folder with the main 3dxChat.exe file. It is a simple .xml file, which consists of two main sections:
UserSettings — settings configurable by user (you may edit them);
AppSettings — settings stored by the application (better leave them alone, most of them will be overwritten by the game anyway).
User settings section allows you to configure the following parameters:
General:
UseCtrlShift (bool, default true) — changes all of the [Shift+...] combinations to [Ctrl+Shift+...] instead, so you no more accidentally switch off the interface or turn on Oculus Rift while typing in chat. With option on you will have:
[Ctrl+Shift+C] — toggle mouse cursor on/off;
[Ctrl+Shift+O] — toggle Oculus Rift mode on/off;
[Ctrl+Shift+X] — toggle DOF on/off;
[Ctrl+Shift+Z] — toggle interface windows on/off.
ForceEnableUndressOptionsForSex (bool, default true) — it true, allows you to put on and off any piece of clothing at any time, sex included.
Chat:
MaxMessagesToDisplay (int, default 127) — maximum number of messages to show in chat windows, if set to anything below 20 or above 127 will be reverted to 127.
CopyMessageWithoutSenderName (bool, default true) — if true, chat messages will be copied without the sender name (useful for copying links).
HomeEditor:
The settings file will be automatically recreated with default values if deleted or damaged (at least, it’s supposed to). It’s safe to delete the settings file at any time if you suspect it may be causing some problems, or if you just want to revert to defaults.
Extended Home editor
The Home editor has been majorly reworked and now has a lot of new features. The objects can collide with each other and be moved around and rotated in any directions.
Whenever you enter your house customization, you should see the following interface:
The group of horizontal elements on top of the window indicates you of the tools and modes you are currently using, the block on the left shows you the current coordinates and Euler angles of an object, and some previous values you can reuse.
Pressing [~] will toggle the interface elements on/off.
[Backspace] Working axes (1).
You may work in either World or Local coordinate space, moving and/or rotating an object relative to global or its own axes. Pressing [Backspace] toggles between two modes, also changing your transform options so that World and Local spaces are aligned control wise. This is required because Local space of each object is rotated 90° around the X-axis in relation to Global space — see the image below:
[Tab] Transform options #1 and #2 and corresponding steps (2, 3, 4, 5).
Pressing [Tab] allows you to switch between three working modes, affecting what you can do to a selected object. Basically, those modes are:
moving an object in its “horizontal” plane (XW–ZW or XL–YL);
changing object’s elevation and rotating it around the vertical axis (YW or ZL);
rotating an object around its horizontal axes (XW–ZW or XL–YL).
Switching working space with [Tab] adjusts working axes accordingly.
Transform steps are configurable via user options and allow you to move or rotate an object in fixed steps instead of continuous drag or rotation, making it easier to nicely align objects to each other, serving as a sort of a “grid snap”. Depending on your current working space, this snap will be relative to the World or the Local axes, allowing nice object alignment at any angle in space.
Transform steps are configurable separately for each tool mode and are calculated as the product of a base value and a multiplier, the base values and the multipliers are user-configurable (see further in the settings description).
In each mode you can control an object transformations by either the keyboard ([Up], [Down], [Left] or [Right] arrow keys) or the mouse (moving the cursor for dragging and using the wheel for rotation). Since mouse controls override keyboard controls (the object just jumps to the mouse position anyway), you can’t move the object with mouse and keyboard at the same time and have to switch the Mouse drag mode by pressing [M]. Options for mouse controls are: Off, Drag only, Rotate only, Drag and rotate.
General rule for keyboard control is: [Up], [Down], [Left] and [Right] arrow keys move the object along or rotate it around the corresponding axes (which are indicated by the interface), each keypress advancing the transformation by the selected step value. You may cycle between different step values by pressing [Z] (for [Up]/[Down]) or [X] (for [Left]/[Right]) at any time. Holding [Shift] while pressing the arrow buttons switches to continuous transformation/rotation, advancing continuously by the selected step.
Mouse drag options work pretty much the same way, allowing you to move an object in the same steps, or holding [Shift] to move it without “grid snap”.
Mouse rotation is different: you have to hold [Ctrl] or [Alt] and rotate the mouse wheel to rotate around an axis (look at the interface hints for directions). The same rules for steps and holding [Shift] apply.
Right mouse button doesn’t switch to rotation any more and just controls the camera.
Left mouse button drops the object in place or picks up an already placed one.
The left interface block with transform coordinates and Euler rotation angles serves as a reference, showing you your current object parameters, and allows you to store some of the values to use them later. By default, whenever you place an object on scene (with your left mouse button), it remembers its coordinates, showing them in the “stored values” fields. Pressing numbers on your keyboard allows you to apply chosen values to an object you currently drag, placing and rotating it accordingly (don’t forget to switch off Mouse drag, otherwise the object will be attached to the cursor regardless). The available options are: [1], [2], [3] — to apply transform X, Y or Z values (in World space) respectfully, or [8] — to apply all three of them at once; [4], [5], [6] — to apply X, Y, Z Euler angles respectfully, or [9] — to apply all rotation transformations at once (applying Euler angles separately probably doesn’t make much sense anyway). Alternatively, you may hit [0] to apply all of the transformations at once, just placing an object in the exact same position.
If you want to keep some values and not make them change every time you place a new object, you may “lock” them by pressing [Ctrl+1]...[Ctrl+0] — the selected values will be changed to red color, indicating that they are “locked”, and won’t change until you unlock them by hitting [Ctrl+1]...[Ctrl+0] again.
Alternatively, you may use some other useful methods:
Whenever you’re not dragging any object you may press [C] to make a copy of the last placed object (it will appear merged with a previously placed one, you’ll have to move it to actually see it).
Holding [Ctrl] and left-clicking on a highlighted object on a scene will create a copy of it as well, working the same way as above.
Holding [Ctrl] and left-clicking on an object icon in the menu will create the clicked object, applying the stored transformation and rotation values to it.
Pressing [[] or []] (left or right square brackets) while dragging an object allows you to cycle between similar objects (selecting different lamps, sofas, light cubes, etc. for example) without the need to choose a different object from the menu.
All of the Extended Home editor settings are stored in the main “ExtraSettings.xml” file in the section “HomeEditor”. The general settings are:
UseExtendedEditor (bool, default true) — if set to false, allows you to revert to the default in-game Home editor.
MaxLightsAllowed (int, default 127) — maximum number of lights (light cubes excluded) you can place in your home, if set to anything below 7 or above 127 will be reverted to 127.
DragToleranceAngle (int, default 3) — angle tolerance for displayed and stored values.
DragToleranceCoord (int, default 4) — coordinate tolerance for displayed and stored values.
All of the other values define step values for manipulating objects:
DragStepDX, DragStepDY, DragStepDZ (float, default 0.6) — base step setting for move operations on objects, in game units.
DragStepUX, DragStepUY, DragStepUZ (float, default 1.0) — base step setting for rotate operations on objects, in degrees.
DragStepD_Multipliers (float[] array, default {0.125, 0.25, 0.5, 1.0}) — multipliers for move operations on objects.
DragStepU_Multipliers (float[] array, default {1.0, 3.0, 15.0, 45.0}) — multipliers for rotate operations on objects.
The final step values used by the editor are calculated as a product of a base value and a multiplier, i. e. for default values we will get the transformation steps {0.075, 0.15, 0.3, 0.6} in game units. 0.6 is approximately the size of our main “building block”, a. k. a. the light cube, so it make sense to set steps as its fractions. And 1.0° looks like a reasonable minimal rotation step.
The multipliers are array values, so you may add as many members to them as you like.
Every time you’re working with the Home editor the tools and values you have selected are being saved so after restarting the game you will have your tools selected as you left them. In case you think you’ve messed something up or just want back your defaults you may just delete the settings file, it will be recreated with default values on the next run.
Home layout Save/Load options.
Whenever you exit to the main menu from the Home editor you will see an additional panel with a few options:
Load house layout — allows you to load a previously saved house layout file, restoring all of the objects and their position. Warning! Loading a save file will erase your existing layout!
Merge house layout — mostly works the same way as the Load option, but doesn’t remove any existing objects from the house, allowing you to merge two saves.
Save house layout — pretty much what it says, allows you to save your house as an .xml file for safekeeping, reloading it later, or sharing with friends ;)
Backup server layout — downloads raw house data from the game server, purely for backup purposes (save option reads the data from memory).
Clear house layout — removes all of the objects from your home, in case you want to start from scratch.
Wallpapers, floorings and so on are saved/loaded as well.
None of the Save/Load options upload anything to the game server, so to actually save your house or apply any changes you should proceed as usual — leave the house to any other location to let it save.
Installation
Place the two .dll files into the “3DXChat_Data\Managed\” folder, replacing Assembly-UnityScript.dll (better backup it somewhere first).
Place the ExtraSettings.xml file into the main game folder (where 3DXChat.exe is).
Version history
v0.1.0.0 alpha [2016.05.16]