Initial implementation of the new Base Game Template and some starting modules.

This makes some tweaks to the engine to support this, specifically, it tweaks the hardcoded shaderpaths to defer to a pref variable, so none of the shader paths are hardcoded.

Also tweaks how post effects read in texture files, removing a bizzare filepath interpretation choice, where if the file path didn't start with "/" it forcefully appended the script's file path. This made it impossible to have images not in the same dir as the script file defining the post effect.

This was changed and the existing template's post effects tweaked for now to just add "./" to those few paths impacted, as well as the perf vars to support the non-hardcoded shader paths in the engine.
This commit is contained in:
Areloch 2017-02-24 02:40:56 -06:00
parent 5c8a82180b
commit 1ed8b05169
1572 changed files with 146699 additions and 85 deletions

View file

@ -0,0 +1,645 @@
new GuiControl(UVEditorOverlay, EditorGuiGroup) {
canSaveDynamicFields = "0";
Profile = "ToolsGuiOverlayProfile";
Enabled = "1";
isContainer = "1";
HorizSizing = "right";
VertSizing = "bottom";
Position = "0 0";
Extent = "1024 768";
MinExtent = "8 2";
canSave = "1";
Visible = "1";
hovertime = "1000";
new GuiWindowCtrl(UVEditor){
profile = "ToolsGuiWindowProfile";
HorizSizing = "center";
VertSizing = "center";
resizeWidth = "0";
resizeHeight = "0";
canClose = "1";
canMinimize = "0";
canMaximize = "0";
position = "72 98";
extent =" 453 340";
MinExtent = "453 340";
text = "UV Editor";
closeCommand = "UVEditor.hideDialog();";
EdgeSnap = "0";
canCollapse = "0";
visible = "0";
new GuiTextCtrl() {
text = "0.0";
maxLength = "1024";
Margin = "0 0 0 0";
Padding = "0 0 0 0";
AnchorTop = "1";
AnchorBottom = "0";
AnchorLeft = "1";
AnchorRight = "0";
isContainer = "0";
Profile = "ToolsGuiTextProfile";
HorizSizing = "right";
VertSizing = "bottom";
position = "26 24";
Extent = "32 14";
MinExtent = "8 2";
canSave = "1";
Visible = "1";
tooltipprofile = "ToolsGuiToolTipProfile";
hovertime = "1000";
canSaveDynamicFields = "0";
};
new GuiTextCtrl() {
text = "U";
maxLength = "1024";
Margin = "0 0 0 0";
Padding = "0 0 0 0";
AnchorTop = "1";
AnchorBottom = "0";
AnchorLeft = "1";
AnchorRight = "0";
isContainer = "0";
Profile = "ToolsGuiTextCenterProfile";
HorizSizing = "right";
VertSizing = "bottom";
position = "138 24";
Extent = "32 14";
MinExtent = "8 2";
canSave = "1";
Visible = "1";
tooltipprofile = "ToolsGuiToolTipProfile";
hovertime = "1000";
canSaveDynamicFields = "0";
};
new GuiTextCtrl() {
text = "1.0";
maxLength = "1024";
Margin = "0 0 0 0";
Padding = "0 0 0 0";
AnchorTop = "1";
AnchorBottom = "0";
AnchorLeft = "1";
AnchorRight = "0";
isContainer = "0";
Profile = "ToolsGuiTextRightProfile";
HorizSizing = "right";
VertSizing = "bottom";
position = "250 24";
Extent = "32 14";
MinExtent = "8 2";
canSave = "1";
Visible = "1";
tooltipprofile = "ToolsGuiToolTipProfile";
hovertime = "1000";
canSaveDynamicFields = "0";
};
new GuiTextCtrl() {
text = "0.0";
maxLength = "1024";
Margin = "0 0 0 0";
Padding = "0 0 0 0";
AnchorTop = "1";
AnchorBottom = "0";
AnchorLeft = "1";
AnchorRight = "0";
isContainer = "0";
Profile = "ToolsGuiTextRightProfile";
HorizSizing = "right";
VertSizing = "bottom";
position = "4 36";
Extent = "18 14";
MinExtent = "8 2";
canSave = "1";
Visible = "1";
tooltipprofile = "ToolsGuiToolTipProfile";
hovertime = "1000";
canSaveDynamicFields = "0";
};
new GuiTextCtrl() {
text = "V";
maxLength = "1024";
Margin = "0 0 0 0";
Padding = "0 0 0 0";
AnchorTop = "1";
AnchorBottom = "0";
AnchorLeft = "1";
AnchorRight = "0";
isContainer = "0";
Profile = "ToolsGuiTextRightProfile";
HorizSizing = "right";
VertSizing = "bottom";
position = "4 159";
Extent = "18 14";
MinExtent = "8 2";
canSave = "1";
Visible = "1";
tooltipprofile = "ToolsGuiToolTipProfile";
hovertime = "1000";
canSaveDynamicFields = "0";
};
new GuiTextCtrl() {
text = "1.0";
maxLength = "1024";
Margin = "0 0 0 0";
Padding = "0 0 0 0";
AnchorTop = "1";
AnchorBottom = "0";
AnchorLeft = "1";
AnchorRight = "0";
isContainer = "0";
Profile = "ToolsGuiTextRightProfile";
HorizSizing = "right";
VertSizing = "bottom";
position = "4 282";
Extent = "18 14";
MinExtent = "8 2";
canSave = "1";
Visible = "1";
tooltipprofile = "ToolsGuiToolTipProfile";
hovertime = "1000";
canSaveDynamicFields = "0";
};
new GuiControl(){
HorizSizing = "right";
VertSizing = "bottom";
profile = "ToolsGuiSolidDefaultProfile";
position = "25 37";
extent = "258 258";
};
new GuiBitmapCtrl(){
internalName = "bitmapPreview";
HorizSizing = "right";
VertSizing = "bottom";
profile = "ToolsGuiDefaultProfile";
position = "26 38";
extent = "256 256";
wrap = "0";
bitmap = "";
};
new GuiRectHandles(){
internalName = "uvHandles";
class = "UVEditorRectHandles";
Profile = "ToolsGuiDefaultProfile";
HorizSizing = "right";
VertSizing = "bottom";
position = "26 38";
extent = "256 256";
};
new GuiBitmapBorderCtrl() {
profile = "ToolsGuiGroupBorderProfile";
horizSizing = "width";
vertSizing = "bottom";
position = "26 300";
extent = "256 30";
minExtent = "0 0";
visible = "1";
setFirstResponder = "0";
modal = "1";
helpTag = "0";
new GuiTextCtrl() {
text = "Handle Color:";
maxLength = "1024";
Margin = "0 0 0 0";
Padding = "0 0 0 0";
AnchorTop = "1";
AnchorBottom = "0";
AnchorLeft = "1";
AnchorRight = "0";
isContainer = "0";
Profile = "ToolsGuiTextProfile";
HorizSizing = "right";
VertSizing = "bottom";
position = "10 7";
Extent = "70 14";
MinExtent = "8 2";
canSave = "1";
Visible = "1";
tooltipprofile = "ToolsGuiToolTipProfile";
hovertime = "1000";
canSaveDynamicFields = "0";
};
new GuiPopupMenuCtrlEx(){
internalName = "colorPopup";
Profile = "ToolsGuiPopUpMenuProfile";
Position = "80 5";
Extent = "126 20";
HorizSizing = "right";
VertSizing = "bottom";
Command = "UVEditor.onColorSelect();";
reverseTextList = "0";
};
};
new GuiBitmapBorderCtrl() {
profile = "ToolsGuiGroupBorderProfile";
horizSizing = "width";
vertSizing = "bottom";
position = "292 38";
extent = "151 256";
minExtent = "0 0";
visible = "1";
setFirstResponder = "0";
modal = "1";
helpTag = "0";
new GuiTextCtrl() {
text = "U:";
maxLength = "1024";
Margin = "0 0 0 0";
Padding = "0 0 0 0";
AnchorTop = "1";
AnchorBottom = "0";
AnchorLeft = "1";
AnchorRight = "0";
isContainer = "0";
Profile = "ToolsGuiTextProfile";
HorizSizing = "right";
VertSizing = "bottom";
position = "10 12";
Extent = "32 14";
MinExtent = "8 2";
canSave = "1";
Visible = "1";
tooltipprofile = "ToolsGuiToolTipProfile";
hovertime = "1000";
canSaveDynamicFields = "0";
};
new GuiTextEditCtrl() {
internalName = "UVX";
class = "UVEditorUVTextEdit";
historySize = "0";
password = "0";
tabComplete = "0";
sinkAllKeyEvents = "0";
passwordMask = "*";
maxLength = "1024";
Margin = "0 0 0 0";
Padding = "0 0 0 0";
AnchorTop = "1";
AnchorBottom = "0";
AnchorLeft = "1";
AnchorRight = "0";
isContainer = "0";
Profile = "ToolsGuiNumericTextEditProfile";
HorizSizing = "right";
VertSizing = "bottom";
position = "44 10";
Extent = "64 18";
MinExtent = "8 2";
canSave = "1";
Visible = "1";
tooltipprofile = "ToolsGuiToolTipProfile";
hovertime = "1000";
canSaveDynamicFields = "1";
};
new GuiTextCtrl() {
text = "V:";
maxLength = "1024";
Margin = "0 0 0 0";
Padding = "0 0 0 0";
AnchorTop = "1";
AnchorBottom = "0";
AnchorLeft = "1";
AnchorRight = "0";
isContainer = "0";
Profile = "ToolsGuiTextProfile";
HorizSizing = "right";
VertSizing = "bottom";
position = "10 32";
Extent = "32 14";
MinExtent = "8 2";
canSave = "1";
Visible = "1";
tooltipprofile = "ToolsGuiToolTipProfile";
hovertime = "1000";
canSaveDynamicFields = "0";
};
new GuiTextEditCtrl() {
internalName = "UVY";
class = "UVEditorUVTextEdit";
historySize = "0";
password = "0";
tabComplete = "0";
sinkAllKeyEvents = "0";
passwordMask = "*";
maxLength = "1024";
Margin = "0 0 0 0";
Padding = "0 0 0 0";
AnchorTop = "1";
AnchorBottom = "0";
AnchorLeft = "1";
AnchorRight = "0";
isContainer = "0";
Profile = "ToolsGuiNumericTextEditProfile";
HorizSizing = "right";
VertSizing = "bottom";
position = "44 30";
Extent = "64 18";
MinExtent = "8 2";
canSave = "1";
Visible = "1";
tooltipprofile = "ToolsGuiToolTipProfile";
hovertime = "1000";
canSaveDynamicFields = "1";
};
new GuiTextCtrl() {
text = "Width:";
maxLength = "1024";
Margin = "0 0 0 0";
Padding = "0 0 0 0";
AnchorTop = "1";
AnchorBottom = "0";
AnchorLeft = "1";
AnchorRight = "0";
isContainer = "0";
Profile = "ToolsGuiTextProfile";
HorizSizing = "right";
VertSizing = "bottom";
position = "10 52";
Extent = "32 14";
MinExtent = "8 2";
canSave = "1";
Visible = "1";
tooltipprofile = "ToolsGuiToolTipProfile";
hovertime = "1000";
canSaveDynamicFields = "0";
};
new GuiTextEditCtrl() {
internalName = "UVW";
class = "UVEditorUVTextEdit";
historySize = "0";
password = "0";
tabComplete = "0";
sinkAllKeyEvents = "0";
passwordMask = "*";
maxLength = "1024";
Margin = "0 0 0 0";
Padding = "0 0 0 0";
AnchorTop = "1";
AnchorBottom = "0";
AnchorLeft = "1";
AnchorRight = "0";
isContainer = "0";
Profile = "ToolsGuiNumericTextEditProfile";
HorizSizing = "right";
VertSizing = "bottom";
position = "44 50";
Extent = "64 18";
MinExtent = "8 2";
canSave = "1";
Visible = "1";
tooltipprofile = "ToolsGuiToolTipProfile";
hovertime = "1000";
canSaveDynamicFields = "1";
};
new GuiTextCtrl() {
text = "Height:";
maxLength = "1024";
Margin = "0 0 0 0";
Padding = "0 0 0 0";
AnchorTop = "1";
AnchorBottom = "0";
AnchorLeft = "1";
AnchorRight = "0";
isContainer = "0";
Profile = "ToolsGuiTextProfile";
HorizSizing = "right";
VertSizing = "bottom";
position = "10 72";
Extent = "32 14";
MinExtent = "8 2";
canSave = "1";
Visible = "1";
tooltipprofile = "ToolsGuiToolTipProfile";
hovertime = "1000";
canSaveDynamicFields = "0";
};
new GuiTextEditCtrl() {
internalName = "UVH";
class = "UVEditorUVTextEdit";
historySize = "0";
password = "0";
tabComplete = "0";
sinkAllKeyEvents = "0";
passwordMask = "*";
maxLength = "1024";
Margin = "0 0 0 0";
Padding = "0 0 0 0";
AnchorTop = "1";
AnchorBottom = "0";
AnchorLeft = "1";
AnchorRight = "0";
isContainer = "0";
Profile = "ToolsGuiNumericTextEditProfile";
HorizSizing = "right";
VertSizing = "bottom";
position = "44 70";
Extent = "64 18";
MinExtent = "8 2";
canSave = "1";
Visible = "1";
tooltipprofile = "ToolsGuiToolTipProfile";
hovertime = "1000";
canSaveDynamicFields = "1";
};
new GuiButtonCtrl(){
HorizSizing = "right";
VertSizing = "top";
profile = "ToolsGuiButtonProfile";
position = "44 94";
extent = "64 20";
text = "Reset";
command = "UVEditor.reset();";
tooltip = "Reset the UV fields to their original values.";
};
};
new GuiButtonCtrl(){
internalName = "OKButton";
HorizSizing = "left";
VertSizing = "top";
profile = "ToolsGuiButtonProfile";
position = "292 306";
extent = "94 24";
text = "OK";
command = "UVEditor.apply();";
Accelerator = "return";
};
new GuiButtonCtrl(){
HorizSizing = "left";
VertSizing = "top";
profile = "ToolsGuiButtonProfile";
position = "391 306";
extent = "52 24";
text = "Cancel";
command = "UVEditor.hideDialog();";
Accelerator = "escape";
};
};
};
//-----------------------------------------------------------------------------
function UVEditor::showDialog( %this, %applyCallback, %obj, %uv)
{
// Set the select callback
UVEditor.applyCallback = %applyCallback;
// Set the initial UV coordinates
UVEditor.originalUV = %uv;
UVEditor-->uvHandles.handleRect = %uv;
UVEditor.setTextValues(%uv);
// Get the preview bitmap. Code copied from Material Selector.
%material = %obj.material;
if( %material.toneMap[0] $= "" && %material.diffuseMap[0] $= "" && !isObject(%material.cubemap) )
{
%previewImage = "core/art/warnmat";
}
else
{
if( %material.toneMap[0] !$= "" )
%previewImage = %material.toneMap[0];
else if( %material.diffuseMap[0] !$= "" )
%previewImage = %material.diffuseMap[0];
else if( %material.cubemap.cubeFace[0] !$= "" )
%previewImage = %material.cubemap.cubeFace[0];
%materialDiffuse = %previewImage;
%materialPath = %material.getFilename();
if( strchr( %materialDiffuse, "/") $= "" )
{
%k = 0;
while( strpos( %materialPath, "/", %k ) != -1 )
{
%foo = strpos( %materialPath, "/", %k );
%k = %foo + 1;
}
%foobar = getSubStr( %materialPath , %k , 99 );
%previewImage = strreplace( %materialPath, %foobar, %previewImage );
}
else
%previewImage = strreplace( %materialPath, %materialPath, %previewImage );
}
UVEditor-->bitmapPreview.setBitmap(%previewImage);
// Set up the color popup
%popup = UVEditor-->colorPopup;
%popup.clear();
%popup.add("Default1|255|134|0");
%popup.add("Default2|0|121|255");
%popup.add("Black|0|0|0");
%popup.add("Gray|100|100|100");
%popup.add("White|255|255|255");
%popup.add("Red|255|0|0");
%popup.add("Green|0|255|0");
%popup.add("Blue|0|0|255");
%popup.add("Yellow|255|255|0");
%popup.add("Magenta|255|0|255");
%popup.add("Cyan|0|255|255");
%popup.setSelected(EditorSettings.value("WorldEditor/Color/uvEditorHandleColor"));
UVEditor-->uvHandles.useCustomColor = true;
UVEditor-->uvHandles.handleColor = %popup.getColorById(%popup.getSelected());
Canvas.pushDialog(UVEditorOverlay);
UVEditor.setVisible(1);
}
function UVEditor::hideDialog( %this )
{
UVEditor.setVisible(0);
Canvas.popDialog(UVEditorOverlay);
}
function UVEditor::apply( %this )
{
eval( "" @ UVEditor.applyCallback @ "(\"" @ UVEditor-->uvHandles.handleRect @ "\");");
UVEditor.hideDialog();
}
function UVEditor::reset( %this )
{
UVEditor-->uvHandles.handleRect = UVEditor.originalUV;
UVEditor.setTextValues(UVEditor.originalUV);
}
function UVEditor::setTextValues( %this, %uv )
{
UVEditor-->UVX.setText( getWord(%uv, 0) );
UVEditor-->UVY.setText( getWord(%uv, 1) );
UVEditor-->UVW.setText( getWord(%uv, 2) );
UVEditor-->UVH.setText( getWord(%uv, 3) );
}
function UVEditor::onColorSelect( %this )
{
UVEditor-->uvHandles.useCustomColor = true;
%sel = $ThisControl.getSelected();
UVEditor-->uvHandles.handleColor = $ThisControl.getColorById(%sel);
EditorSettings.setValue( "WorldEditor/Color/uvEditorHandleColor", %sel );
}
//-----------------------------------------------------------------------------
function UVEditorRectHandles::onHandleRectChange( %this )
{
%uv = UVEditor-->uvHandles.handleRect;
UVEditor.setTextValues(%uv);
}
//-----------------------------------------------------------------------------
function UVEditorUVTextEdit::onValidate( %this )
{
%u = UVEditor-->UVX.getValue();
%v = UVEditor-->UVY.getValue();
%w = UVEditor-->UVW.getValue();
%h = UVEditor-->UVH.getValue();
// Check limits
if(%u < 0)
%u = 0;
if(%u > 1)
%u = 1;
if(%v < 0)
%v = 0;
if(%v > 1)
%v = 1;
if(%w < 0)
%w = 0;
if(%w > 1)
%w = 1;
if(%h < 0)
%h = 0;
if(%h > 1)
%h = 1;
if((%u+%w) > 1)
%w = 1 - %u;
if((%v+%h) > 1)
%h = 1 - %v;
// Apply values
UVEditor-->UVX.setText( %u );
UVEditor-->UVY.setText( %v );
UVEditor-->UVW.setText( %w );
UVEditor-->UVH.setText( %h );
UVEditor-->uvHandles.handleRect = %u SPC %v SPC %w SPC %h;
}
function UVEditorUVTextEdit::onGainFirstResponder( %this )
{
%this.selectAllText();
}