Merge branch 'VerveMergeWIP' of https://github.com/Areloch/Torque3D into development

This commit is contained in:
Areloch 2019-05-06 01:49:58 -05:00
commit 00b958aff9
549 changed files with 68656 additions and 11 deletions

View file

@ -0,0 +1,19 @@
function Verve::create( %this )
{
exec("data/Verve/gui/verveCinematic.gui");
exec("data/Verve/scripts/server/verveCinematicController.cs");
exec("data/Verve/scripts/server/verveCinematicTrigger.cs");
exec("data/Verve/scripts/server/vervePathTutorialData.cs");
if(isObject(DatablockFilesList))
{
DatablockFilesList.add( "data/Verve/scripts/datablocks/verve/VerveActorData.cs" );
DatablockFilesList.add( "data/Verve/scripts/datablocks/verve/VervePathTutorialData.cs" );
}
}
function Verve::destroy( %this )
{
}

View file

@ -0,0 +1,9 @@
<ModuleDefinition
ModuleId="Verve"
VersionId="1"
Description="Module that implements Verve."
ScriptFile="Verve.cs"
CreateFunction="create"
DestroyFunction="destroy"
Group="Game">
</ModuleDefinition>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,219 @@
<?xml version="1.0" encoding="utf-8" ?>
<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.0">
<asset>
<contributor>
<author />
<authoring_tool>Torque 3D 2009 Interior Exporter</authoring_tool>
<comments />
</contributor>
<created>8/09/2009 2:52:45 PM</created>
<modified>8/09/2009 2:52:45 PM</modified>
<revision />
<title />
<subject />
<keywords />
<unit meter="1.000000" />
<up_axis>Z_UP</up_axis>
</asset>
<library_images>
<image id="PILLAR128X128G-Diffuse" name="PILLAR128X128G-Diffuse">
<init_from>file://PILLAR128X128G.png</init_from>
</image>
<image id="FULL128X128G-Diffuse" name="FULL128X128G-Diffuse">
<init_from>file://FULL128X128G.png</init_from>
</image>
<image id="BLACK-Diffuse" name="BLACK-Diffuse">
<init_from>file://BLACK.png</init_from>
</image>
</library_images>
<library_materials>
<material id="PILLAR128X128G" name="PILLAR128X128G">
<instance_effect url="#PILLAR128X128G-fx" />
</material>
<material id="FULL128X128G" name="FULL128X128G">
<instance_effect url="#FULL128X128G-fx" />
</material>
<material id="BLACK" name="BLACK">
<instance_effect url="#BLACK-fx" />
</material>
</library_materials>
<library_effects>
<effect id="PILLAR128X128G-fx" name="PILLAR128X128G-fx">
<profile_COMMON>
<technique sid="standard">
<phong>
<diffuse>
<texture texture="PILLAR128X128G-Diffuse" texcoord="CHANNEL0">
<extra>
<technique profile="MAYA">
<wrapU sid="wrapU0">TRUE</wrapU>
<wrapV sid="wrapV0">TRUE</wrapV>
<blend_mode>ADD</blend_mode>
</technique>
</extra>
</texture>
</diffuse>
</phong>
</technique>
</profile_COMMON>
</effect>
<effect id="FULL128X128G-fx" name="FULL128X128G-fx">
<profile_COMMON>
<technique sid="standard">
<phong>
<diffuse>
<texture texture="FULL128X128G-Diffuse" texcoord="CHANNEL0">
<extra>
<technique profile="MAYA">
<wrapU sid="wrapU0">TRUE</wrapU>
<wrapV sid="wrapV0">TRUE</wrapV>
<blend_mode>ADD</blend_mode>
</technique>
</extra>
</texture>
</diffuse>
</phong>
</technique>
</profile_COMMON>
</effect>
<effect id="BLACK-fx" name="BLACK-fx">
<profile_COMMON>
<technique sid="standard">
<phong>
<diffuse>
<texture texture="BLACK-Diffuse" texcoord="CHANNEL0">
<extra>
<technique profile="MAYA">
<wrapU sid="wrapU0">TRUE</wrapU>
<wrapV sid="wrapV0">TRUE</wrapV>
<blend_mode>ADD</blend_mode>
</technique>
</extra>
</texture>
</diffuse>
</phong>
</technique>
</profile_COMMON>
</effect>
</library_effects>
<library_geometries>
<geometry id="Door-lib" name="DoorMesh">
<mesh>
<source id="Door-Position">
<float_array id="Door-Position-array" count="24">
2.0000 -0.2500 -2.0000
2.0000 -0.2500 2.0000
2.0000 0.2500 -2.0000
2.0000 0.2500 2.0000
-2.0000 -0.2500 -2.0000
-2.0000 0.2500 -2.0000
-2.0000 -0.2500 2.0000
-2.0000 0.2500 2.0000
</float_array>
<technique_common>
<accessor source="#Door-Position-array" count="8" stride="3">
<param name="X" type="float" />
<param name="Y" type="float" />
<param name="Z" type="float" />
</accessor>
</technique_common>
</source>
<source id="Door-Normal">
<float_array id="Door-Normal-array" count="18">
1.0000 -0.0000 -0.0000
-1.0000 -0.0000 -0.0000
-0.0000 1.0000 -0.0000
-0.0000 -1.0000 -0.0000
-0.0000 -0.0000 1.0000
-0.0000 -0.0000 -1.0000
</float_array>
<technique_common>
<accessor source="#Door-Normal-array" count="6" stride="3">
<param name="X" type="float" />
<param name="Y" type="float" />
<param name="Z" type="float" />
</accessor>
</technique_common>
</source>
<source id="Door-UV0">
<float_array id="Door-UV0-array" count="28">
5.7500 0.0000
5.7500 1.0000
6.0000 0.0000
6.0000 1.0000
-5.7500 0.0000
-6.0000 0.0000
-5.7500 1.0000
-6.0000 1.0000
1.0000 0.0000
0.0000 0.0000
1.0000 1.0000
0.0000 1.0000
8.0000 0.0000
8.0000 1.0000
</float_array>
<technique_common>
<accessor source="#Door-UV0-array" count="14" stride="2">
<param name="S" type="float" />
<param name="T" type="float" />
</accessor>
</technique_common>
</source>
<vertices id="Door-Vertex">
<input semantic="POSITION" source="#Door-Position" />
</vertices>
<triangles material="PILLAR128X128G" count="4">
<input semantic="VERTEX" offset="0" source="#Door-Vertex" />
<input semantic="NORMAL" offset="1" source="#Door-Normal" />
<input semantic="TEXCOORD" offset="2" set="0" source="#Door-UV0" />
<p>
3 0 3 1 0 1 0 0 0
2 0 2 3 0 3 0 0 0
7 1 7 5 1 5 4 1 4
6 1 6 7 1 7 4 1 4
</p>
</triangles>
<triangles material="FULL128X128G" count="4">
<input semantic="VERTEX" offset="0" source="#Door-Vertex" />
<input semantic="NORMAL" offset="1" source="#Door-Normal" />
<input semantic="TEXCOORD" offset="2" set="0" source="#Door-UV0" />
<p>
3 2 11 2 2 9 5 2 8
7 2 10 3 2 11 5 2 8
1 3 10 6 3 11 4 3 9
0 3 8 1 3 10 4 3 9
</p>
</triangles>
<triangles material="BLACK" count="4">
<input semantic="VERTEX" offset="0" source="#Door-Vertex" />
<input semantic="NORMAL" offset="1" source="#Door-Normal" />
<input semantic="TEXCOORD" offset="2" set="0" source="#Door-UV0" />
<p>
3 4 13 7 4 11 6 4 9
1 4 12 3 4 13 6 4 9
2 5 11 0 5 9 4 5 12
5 5 13 2 5 11 4 5 12
</p>
</triangles>
</mesh>
</geometry>
</library_geometries>
<library_visual_scenes>
<visual_scene id="RootNode" name="RootNode">
<node id="Door" name="Door">
<instance_geometry url="#Door-lib">
<bind_material>
<technique_common>
<instance_material symbol="PILLAR128X128G" target="#PILLAR128X128G" />
<instance_material symbol="FULL128X128G" target="#FULL128X128G" />
<instance_material symbol="BLACK" target="#BLACK" />
</technique_common>
</bind_material>
</instance_geometry>
</node>
</visual_scene>
</library_visual_scenes>
<scene>
<instance_visual_scene url="#RootNode" />
</scene>
</COLLADA>

View file

@ -0,0 +1,180 @@
<?xml version="1.0" encoding="utf-8" ?>
<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.0">
<asset>
<contributor>
<author />
<authoring_tool>Torque 3D 2009 Interior Exporter</authoring_tool>
<comments />
</contributor>
<created>12/09/2009 9:50:04 AM</created>
<modified>12/09/2009 9:50:04 AM</modified>
<revision />
<title />
<subject />
<keywords />
<unit meter="1.000000" />
<up_axis>Z_UP</up_axis>
</asset>
<library_images>
<image id="DemoRoomLrg_PILLAR128X128G-Diffuse" name="DemoRoomLrg_PILLAR128X128G-Diffuse">
<init_from>file://PILLAR128X128G.png</init_from>
</image>
<image id="DemoRoomLrg_FULL128X128G-Diffuse" name="DemoRoomLrg_FULL128X128G-Diffuse">
<init_from>file://FULL128X128G.png</init_from>
</image>
</library_images>
<library_materials>
<material id="DemoRoomLrg_PILLAR128X128G" name="DemoRoomLrg_PILLAR128X128G">
<instance_effect url="#DemoRoomLrg_PILLAR128X128G-fx" />
</material>
<material id="DemoRoomLrg_FULL128X128G" name="DemoRoomLrg_FULL128X128G">
<instance_effect url="#DemoRoomLrg_FULL128X128G-fx" />
</material>
</library_materials>
<library_effects>
<effect id="DemoRoomLrg_PILLAR128X128G-fx" name="DemoRoomLrg_PILLAR128X128G-fx">
<profile_COMMON>
<technique sid="standard">
<phong>
<diffuse>
<texture texture="DemoRoomLrg_PILLAR128X128G-Diffuse" texcoord="CHANNEL0">
<extra>
<technique profile="MAYA">
<wrapU sid="wrapU0">TRUE</wrapU>
<wrapV sid="wrapV0">TRUE</wrapV>
<blend_mode>ADD</blend_mode>
</technique>
</extra>
</texture>
</diffuse>
</phong>
</technique>
</profile_COMMON>
</effect>
<effect id="DemoRoomLrg_FULL128X128G-fx" name="DemoRoomLrg_FULL128X128G-fx">
<profile_COMMON>
<technique sid="standard">
<phong>
<diffuse>
<texture texture="DemoRoomLrg_FULL128X128G-Diffuse" texcoord="CHANNEL0">
<extra>
<technique profile="MAYA">
<wrapU sid="wrapU0">TRUE</wrapU>
<wrapV sid="wrapV0">TRUE</wrapV>
<blend_mode>ADD</blend_mode>
</technique>
</extra>
</texture>
</diffuse>
</phong>
</technique>
</profile_COMMON>
</effect>
</library_effects>
<library_geometries>
<geometry id="ElevatorPlatform_5c1b8cbb-lib" name="ElevatorPlatform_5c1b8cbbMesh">
<mesh>
<source id="ElevatorPlatform_5c1b8cbb-Position">
<float_array id="ElevatorPlatform_5c1b8cbb-Position-array" count="24">
2.0000 -1.7500 -0.2500
2.0000 -1.7500 0.2500
2.0000 1.7500 -0.2500
2.0000 1.7500 0.2500
-2.0000 -1.7500 -0.2500
-2.0000 1.7500 -0.2500
-2.0000 -1.7500 0.2500
-2.0000 1.7500 0.2500
</float_array>
<technique_common>
<accessor source="#ElevatorPlatform_5c1b8cbb-Position-array" count="8" stride="3">
<param name="X" type="float" />
<param name="Y" type="float" />
<param name="Z" type="float" />
</accessor>
</technique_common>
</source>
<source id="ElevatorPlatform_5c1b8cbb-Normal">
<float_array id="ElevatorPlatform_5c1b8cbb-Normal-array" count="18">
1.0000 -0.0000 -0.0000
-1.0000 -0.0000 -0.0000
-0.0000 1.0000 -0.0000
-0.0000 -1.0000 -0.0000
-0.0000 -0.0000 1.0000
-0.0000 -0.0000 -1.0000
</float_array>
<technique_common>
<accessor source="#ElevatorPlatform_5c1b8cbb-Normal-array" count="6" stride="3">
<param name="X" type="float" />
<param name="Y" type="float" />
<param name="Z" type="float" />
</accessor>
</technique_common>
</source>
<source id="ElevatorPlatform_5c1b8cbb-UV0">
<float_array id="ElevatorPlatform_5c1b8cbb-UV0-array" count="16">
3.2500 -1.0000
3.0000 -1.0000
3.2500 0.0000
3.0000 0.0000
0.0000 -1.0000
0.0000 0.0000
1.0000 -1.0000
1.0000 0.0000
</float_array>
<technique_common>
<accessor source="#ElevatorPlatform_5c1b8cbb-UV0-array" count="8" stride="2">
<param name="S" type="float" />
<param name="T" type="float" />
</accessor>
</technique_common>
</source>
<vertices id="ElevatorPlatform_5c1b8cbb-Vertex">
<input semantic="POSITION" source="#ElevatorPlatform_5c1b8cbb-Position" />
</vertices>
<triangles material="DemoRoomLrg_PILLAR128X128G" count="8">
<input semantic="VERTEX" offset="0" source="#ElevatorPlatform_5c1b8cbb-Vertex" />
<input semantic="NORMAL" offset="1" source="#ElevatorPlatform_5c1b8cbb-Normal" />
<input semantic="TEXCOORD" offset="2" set="0" source="#ElevatorPlatform_5c1b8cbb-UV0" />
<p>
3 0 3 1 0 1 0 0 0
2 0 2 3 0 3 0 0 0
7 1 1 5 1 0 4 1 2
6 1 3 7 1 1 4 1 2
3 2 1 2 2 0 5 2 2
7 2 3 3 2 1 5 2 2
1 3 3 6 3 1 4 3 0
0 3 2 1 3 3 4 3 0
</p>
</triangles>
<triangles material="DemoRoomLrg_FULL128X128G" count="4">
<input semantic="VERTEX" offset="0" source="#ElevatorPlatform_5c1b8cbb-Vertex" />
<input semantic="NORMAL" offset="1" source="#ElevatorPlatform_5c1b8cbb-Normal" />
<input semantic="TEXCOORD" offset="2" set="0" source="#ElevatorPlatform_5c1b8cbb-UV0" />
<p>
3 4 7 7 4 5 6 4 4
1 4 6 3 4 7 6 4 4
2 5 5 0 5 4 4 5 6
5 5 7 2 5 5 4 5 6
</p>
</triangles>
</mesh>
</geometry>
</library_geometries>
<library_visual_scenes>
<visual_scene id="RootNode" name="RootNode">
<node id="ElevatorPlatform_5c1b8cbb" name="ElevatorPlatform_5c1b8cbb">
<instance_geometry url="#ElevatorPlatform_5c1b8cbb-lib">
<bind_material>
<technique_common>
<instance_material symbol="DemoRoomLrg_PILLAR128X128G" target="#DemoRoomLrg_PILLAR128X128G" />
<instance_material symbol="DemoRoomLrg_FULL128X128G" target="#DemoRoomLrg_FULL128X128G" />
</technique_common>
</bind_material>
</instance_geometry>
</node>
</visual_scene>
</library_visual_scenes>
<scene>
<instance_visual_scene url="#RootNode" />
</scene>
</COLLADA>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

View file

@ -0,0 +1,179 @@
//--- Door.dae MATERIALS BEGIN ---
singleton Material(Door_PILLAR128X128G)
{
mapTo = "PILLAR128X128G";
diffuseMap[0] = "PILLAR128X128G";
normalMap[0] = "";
specularMap[0] = "";
diffuseColor[0] = "1 1 1 1";
specular[0] = "1 1 1 1";
specularPower[0] = 8;
pixelSpecular[0] = false;
emissive[0] = false;
doubleSided = false;
translucent = false;
translucentBlendOp = "None";
};
singleton Material(Door_FULL128X128G)
{
mapTo = "FULL128X128G";
diffuseMap[0] = "FULL128X128G";
normalMap[0] = "";
specularMap[0] = "";
diffuseColor[0] = "1 1 1 1";
specular[0] = "1 1 1 1";
specularPower[0] = 8;
pixelSpecular[0] = false;
emissive[0] = false;
doubleSided = false;
translucent = false;
translucentBlendOp = "None";
};
singleton Material(Door_BLACK)
{
mapTo = "BLACK";
diffuseMap[0] = "BLACK";
normalMap[0] = "";
specularMap[0] = "";
diffuseColor[0] = "1 1 1 1";
specular[0] = "1 1 1 1";
specularPower[0] = 8;
pixelSpecular[0] = false;
emissive[0] = false;
doubleSided = false;
translucent = false;
translucentBlendOp = "None";
};
//--- Door.dae MATERIALS END ---
//--- DemoRoomLrg.dae MATERIALS BEGIN ---
singleton Material(DemoRoomLrg_BLACK)
{
mapTo = "BLACK";
diffuseMap[0] = "BLACK";
normalMap[0] = "";
specularMap[0] = "";
diffuseColor[0] = "1 1 1 1";
specular[0] = "1 1 1 1";
specularPower[0] = 8;
pixelSpecular[0] = false;
emissive[0] = false;
doubleSided = false;
translucent = false;
translucentBlendOp = "None";
};
singleton Material(DemoRoomLrg_FULL128X128G)
{
mapTo = "FULL128X128G";
diffuseMap[0] = "FULL128X128G";
normalMap[0] = "";
specularMap[0] = "";
diffuseColor[0] = "1 1 1 1";
specular[0] = "1 1 1 1";
specularPower[0] = 8;
pixelSpecular[0] = false;
emissive[0] = false;
doubleSided = false;
translucent = false;
translucentBlendOp = "None";
};
singleton Material(DemoRoomLrg_PILLAR128X128G)
{
mapTo = "PILLAR128X128G";
diffuseMap[0] = "PILLAR128X128G";
normalMap[0] = "";
specularMap[0] = "";
diffuseColor[0] = "1 1 1 1";
specular[0] = "1 1 1 1";
specularPower[0] = 8;
pixelSpecular[0] = false;
emissive[0] = false;
doubleSided = false;
translucent = false;
translucentBlendOp = "None";
};
singleton Material(DemoRoomLrg_FULL64X64G)
{
mapTo = "FULL64X64G";
diffuseMap[0] = "FULL64X64G";
normalMap[0] = "";
specularMap[0] = "";
diffuseColor[0] = "1 1 1 1";
specular[0] = "1 1 1 1";
specularPower[0] = 8;
pixelSpecular[0] = false;
emissive[0] = false;
doubleSided = false;
translucent = false;
translucentBlendOp = "None";
};
//--- DemoRoomLrg.dae MATERIALS END ---
//--- ElevatorPlatform.dae MATERIALS BEGIN ---
singleton Material(ElevatorPlatform_DemoRoomLrg_PILLAR128X128G)
{
mapTo = "DemoRoomLrg_PILLAR128X128G";
diffuseMap[0] = "PILLAR128X128G";
normalMap[0] = "";
specularMap[0] = "";
diffuseColor[0] = "1 1 1 1";
specular[0] = "1 1 1 1";
specularPower[0] = 8;
pixelSpecular[0] = false;
emissive[0] = false;
doubleSided = false;
translucent = false;
translucentBlendOp = "None";
};
singleton Material(ElevatorPlatform_DemoRoomLrg_FULL128X128G)
{
mapTo = "DemoRoomLrg_FULL128X128G";
diffuseMap[0] = "FULL128X128G";
normalMap[0] = "";
specularMap[0] = "";
diffuseColor[0] = "1 1 1 1";
specular[0] = "1 1 1 1";
specularPower[0] = 8;
pixelSpecular[0] = false;
emissive[0] = false;
doubleSided = false;
translucent = false;
translucentBlendOp = "None";
};
//--- ElevatorPlatform.dae MATERIALS END ---

View file

@ -0,0 +1,43 @@
//--- OBJECT WRITE BEGIN ---
%guiContent = new GameTSCtrl(VerveCinematicGui) {
canSaveDynamicFields = "1";
Enabled = "1";
isContainer = "1";
Profile = "GuiContentProfile";
HorizSizing = "right";
VertSizing = "bottom";
position = "0 0";
Extent = "1024 768";
MinExtent = "8 8";
canSave = "1";
Visible = "1";
tooltipprofile = "GuiToolTipProfile";
hovertime = "1000";
Margin = "0 0 0 0";
Padding = "0 0 0 0";
AnchorTop = "1";
AnchorBottom = "0";
AnchorLeft = "1";
AnchorRight = "0";
cameraZRot = "0";
forceFOV = "0";
helpTag = "0";
noCursor = "1";
new VFadeControl( VFadeControlGui ) {
canSaveDynamicFields = "0";
Enabled = "1";
isContainer = "0";
Profile = "GuiTransparentProfile";
HorizSizing = "width";
VertSizing = "height";
position = "0 0";
Extent = "1024 768";
MinExtent = "8 8";
canSave = "1";
Visible = "1";
tooltipprofile = "GuiToolTipProfile";
hovertime = "1000";
};
};
//--- OBJECT WRITE END ---

View file

@ -0,0 +1,68 @@
//-----------------------------------------------------------------------------
// Copyright (c) 2012 GarageGames, LLC
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to
// deal in the Software without restriction, including without limitation the
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
// sell copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
// IN THE SOFTWARE.
//-----------------------------------------------------------------------------
// Load up all datablocks. This function is called when
// a server is constructed.
// Do the sounds first -- later scripts/datablocks may need them
exec("./audioProfiles.cs");
// LightFlareData and LightAnimData(s)
exec("./lights.cs");
// Do the various effects next -- later scripts/datablocks may need them
exec("./particles.cs");
exec("./environment.cs");
exec("./triggers.cs");
// Add a rigid example
exec("./rigidShape.cs");
exec("./health.cs");
// Load our supporting weapon datablocks, effects and such. They must be
// loaded before any weapon that uses them.
exec("./weapon.cs");
exec("./weapons/grenadefx.cs");
exec("./weapons/rocketfx.cs");
// Load the weapon datablocks
exec("./weapons/Lurker.cs");
exec("./weapons/Ryder.cs");
exec("./weapons/ProxMine.cs");
exec("./weapons/Turret.cs");
exec("./teleporter.cs");
// Load the default player datablocks
exec("./player.cs");
// Load our other player datablocks
exec("./aiPlayer.cs");
// Load the vehicle datablocks
exec("./vehicles/cheetahCar.cs");
// Load Verve Data.
exec("./verve/VerveActorData.cs");
exec("./verve/VervePathTutorialData.cs");

View file

@ -0,0 +1,40 @@
//-----------------------------------------------------------------------------
// Verve
// Copyright (C) 2014 - Violent Tulip
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to
// deal in the Software without restriction, including without limitation the
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
// sell copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
// IN THE SOFTWARE.
//-----------------------------------------------------------------------------
function VHumanoidActorData::create( %dataBlock )
{
%actorObject = new VHumanoidActor()
{
dataBlock = %dataBlock;
};
return %actorObject;
}
//-----------------------------------------------------------------------------
datablock VHumanoidActorData( VSoldierActorData )
{
Category = "VActor";
ShapeFile = "data/Verve/art/shapes/actors/Soldier/soldier_rigged.DAE";
};

View file

@ -0,0 +1,34 @@
//-----------------------------------------------------------------------------
// Verve
// Copyright (C) 2014 - Violent Tulip
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to
// deal in the Software without restriction, including without limitation the
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
// sell copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
// IN THE SOFTWARE.
//-----------------------------------------------------------------------------
datablock StaticShapeData( VervePathTutorial_DoorData )
{
Category = "VerveTutorialData";
shapeFile = "data/Verve/art/shapes/VervePathTutorial/Door.dae";
};
datablock StaticShapeData( VervePathTutorial_ElevatorPlatformData )
{
Category = "VerveTutorialData";
shapeFile = "data/Verve/art/shapes/VervePathTutorial/ElevatorPlatform.dae";
};

View file

@ -0,0 +1,130 @@
//-----------------------------------------------------------------------------
// Verve
// Copyright (C) 2014 - Violent Tulip
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to
// deal in the Software without restriction, including without limitation the
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
// sell copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
// IN THE SOFTWARE.
//-----------------------------------------------------------------------------
$Verve::CinematicController = 0;
//-----------------------------------------------------------------------------
function Verve::GetCinematicController()
{
// Valid Controller?
if ( !isObject( $Verve::CinematicController ) )
{
$Verve::CinematicController = new VController()
{
Class = "VerveCinematicController";
};
}
// Return Controller.
return $Verve::CinematicController;
}
//-----------------------------------------------------------------------------
// Verve::PlayCinematic( "sequences/BurgFlythrough.vsf" );
function Verve::PlayCinematic( %sequenceFile )
{
if ( !isFile( %sequenceFile ) )
{
error ( "Verve::PlayCinematic() - Invalid Sequence File." );
return 0;
}
// Fetch Controller.
%controller = Verve::GetCinematicController();
// Already Playing?
if ( %controller.isPlaying() )
{
error ( "Verve::PlayCinematic() - Cinematic in Progress." );
return 0;
}
// Load the Sequence.
if ( !%controller.readFile( %sequenceFile ) )
{
return 0;
}
// Stop Input.
if ( isObject( moveMap ) )
{
moveMap.pop();
}
// Store the Current Gui.
$Verve::StoredGui = Canvas.getContent();
// Valid GUI?
if ( !isObject( VerveCinematicGui ) )
{
// Execute GUI Script.
exec( "art/gui/VerveCinematic.gui" );
}
// Set the Cinematic Gui.
Canvas.setContent( VerveCinematicGui );
// Clear First Person.
%clientCount = ClientGroup.getCount();
for ( %i = 0; %i < %clientCount; %i++ )
{
// Fetch Client.
%clientConnection = ClientGroup.getObject( %i );
// Store Status.
%clientConnection.FirstPerson = %clientConnection.isFirstPerson();
// Clear.
%clientConnection.setFirstPerson( false );
}
// Play the Sequence.
%controller.play();
// Return the Controller.
return %controller;
}
//-----------------------------------------------------------------------------
function VerveCinematicController::onStop( %this )
{
// Reset First Person Status.
%clientCount = ClientGroup.getCount();
for ( %i = 0; %i < %clientCount; %i++ )
{
// Fetch Client.
%clientConnection = ClientGroup.getObject( %i );
// Reset.
%clientConnection.setFirstPerson( %clientConnection.FirstPerson );
}
// Reset the Canvas.
Canvas.setContent( $Verve::StoredGui );
// Resume Input.
if ( isObject( moveMap ) )
{
moveMap.push();
}
}

View file

@ -0,0 +1,35 @@
//-----------------------------------------------------------------------------
// Verve
// Copyright (C) 2014 - Violent Tulip
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to
// deal in the Software without restriction, including without limitation the
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
// sell copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
// IN THE SOFTWARE.
//-----------------------------------------------------------------------------
datablock TriggerData( VerveCinematicTrigger )
{
Field = "Value";
};
//-----------------------------------------------------------------------------
function VerveCinematicTrigger::onEnterTrigger( %this, %trigger, %object )
{
// Play Sequence.
Verve::PlayCinematic( %trigger.SequenceFile );
}

View file

@ -0,0 +1,34 @@
//-----------------------------------------------------------------------------
// Verve
// Copyright (C) 2014 - Violent Tulip
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to
// deal in the Software without restriction, including without limitation the
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
// sell copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
// IN THE SOFTWARE.
//-----------------------------------------------------------------------------
datablock StaticShapeData( VervePathTutorial_DoorData )
{
Category = "VerveTutorialData";
shapeFile = "art/shapes/VervePathTutorial/Door.dae";
};
datablock StaticShapeData( VervePathTutorial_ElevatorPlatformData )
{
Category = "VerveTutorialData";
shapeFile = "art/shapes/VervePathTutorial/ElevatorPlatform.dae";
};

View file

@ -0,0 +1,85 @@
<?xml version="1.0" ?>
<VerveControllerSequence Version="0.0.0a">
<Properties>
<Time>0</Time>
<Duration>1000</Duration>
<TimeScale>1</TimeScale>
<Loop>1</Loop>
<LoopBackwards>1</LoopBackwards>
<LoopCount>0</LoopCount>
<LoopDelay>500</LoopDelay>
<ResetOnCompletion>1</ResetOnCompletion>
</Properties>
<DataTable>
<DataItem Type="STATIC" Name="DoorGroup0_LeftPath" Value="DoorPath_Left" />
<DataItem Type="STATIC" Name="DoorGroup0_Left" Value="DoorShape0_Left" />
<DataItem Type="STATIC" Name="DoorGroup0_RightPath" Value="DoorPath_Right" />
<DataItem Type="STATIC" Name="DoorGroup0_Right" Value="DoorShape0_Right" />
</DataTable>
<VObject Type="VSceneObjectGroup">
<Properties>
<Enabled>1</Enabled>
<Label>DoorGroup0_Left</Label>
<Reference>DoorGroup0_Left</Reference>
</Properties>
<VObject Type="VMotionTrack">
<Properties>
<Enabled>1</Enabled>
<Label>MotionTrack</Label>
<Reference>DoorGroup0_LeftPath</Reference>
<OrientationMode>FREE</OrientationMode>
<OrientationData></OrientationData>
<Relative>0</Relative>
</Properties>
<VObject Type="VMotionEvent">
<Properties>
<Enabled>1</Enabled>
<Label>MotionEvent</Label>
<TriggerTime>0</TriggerTime>
<Duration>0</Duration>
</Properties>
</VObject>
<VObject Type="VMotionEvent">
<Properties>
<Enabled>1</Enabled>
<Label>MotionEvent</Label>
<TriggerTime>1000</TriggerTime>
<Duration>0</Duration>
</Properties>
</VObject>
</VObject>
</VObject>
<VObject Type="VSceneObjectGroup">
<Properties>
<Enabled>1</Enabled>
<Label>DoorGroup0_Right</Label>
<Reference>DoorGroup0_Right</Reference>
</Properties>
<VObject Type="VMotionTrack">
<Properties>
<Enabled>1</Enabled>
<Label>MotionTrack</Label>
<Reference>DoorGroup0_RightPath</Reference>
<OrientationMode>FREE</OrientationMode>
<OrientationData></OrientationData>
<Relative>0</Relative>
</Properties>
<VObject Type="VMotionEvent">
<Properties>
<Enabled>1</Enabled>
<Label>MotionEvent</Label>
<TriggerTime>0</TriggerTime>
<Duration>0</Duration>
</Properties>
</VObject>
<VObject Type="VMotionEvent">
<Properties>
<Enabled>1</Enabled>
<Label>MotionEvent</Label>
<TriggerTime>1000</TriggerTime>
<Duration>0</Duration>
</Properties>
</VObject>
</VObject>
</VObject>
</VerveControllerSequence>

View file

@ -0,0 +1,87 @@
<?xml version="1.0" ?>
<VerveControllerSequence Version="0.0.0a">
<Properties>
<Time>0</Time>
<Duration>1000</Duration>
<TimeScale>1</TimeScale>
<Loop>1</Loop>
<LoopBackwards>1</LoopBackwards>
<LoopDelay>500</LoopDelay>
<ResetOnCompletion>1</ResetOnCompletion>
<name>VerveEditorController</name>
<parentGroup>RootGroup</parentGroup>
<canSaveDynamicFields>1</canSaveDynamicFields>
</Properties>
<DataTable>
<DataItem Type="STATIC" Name="DoorGroup1_Right" Value="DoorShape1_Right" />
<DataItem Type="STATIC" Name="DoorGroup1_Left" Value="DoorShape1_Left" />
<DataItem Type="STATIC" Name="DoorGroup1_RightPath" Value="DoorPath_Right" />
<DataItem Type="STATIC" Name="DoorGroup1_LeftPath" Value="DoorPath_Left" />
</DataTable>
<VObject Type="VSceneObjectGroup">
<Properties>
<Enabled>1</Enabled>
<Label>DoorGroup1_Left</Label>
<Reference>DoorGroup1_Left</Reference>
</Properties>
<VObject Type="VMotionTrack">
<Properties>
<Enabled>1</Enabled>
<Label>MotionTrack</Label>
<Reference>DoorGroup1_LeftPath</Reference>
<OrientationMode>FREE</OrientationMode>
<OrientationData></OrientationData>
<Relative>1</Relative>
</Properties>
<VObject Type="VMotionEvent">
<Properties>
<Enabled>1</Enabled>
<Label>MotionEvent</Label>
<TriggerTime>0</TriggerTime>
<Duration>0</Duration>
</Properties>
</VObject>
<VObject Type="VMotionEvent">
<Properties>
<Enabled>1</Enabled>
<Label>MotionEvent</Label>
<TriggerTime>1000</TriggerTime>
<Duration>0</Duration>
</Properties>
</VObject>
</VObject>
</VObject>
<VObject Type="VSceneObjectGroup">
<Properties>
<Enabled>1</Enabled>
<Label>DoorGroup1_Right</Label>
<Reference>DoorGroup1_Right</Reference>
</Properties>
<VObject Type="VMotionTrack">
<Properties>
<Enabled>1</Enabled>
<Label>MotionTrack</Label>
<Reference>DoorGroup1_RightPath</Reference>
<OrientationMode>FREE</OrientationMode>
<OrientationData></OrientationData>
<Relative>1</Relative>
</Properties>
<VObject Type="VMotionEvent">
<Properties>
<Enabled>1</Enabled>
<Label>MotionEvent</Label>
<TriggerTime>0</TriggerTime>
<Duration>0</Duration>
</Properties>
</VObject>
<VObject Type="VMotionEvent">
<Properties>
<Enabled>1</Enabled>
<Label>MotionEvent</Label>
<TriggerTime>1000</TriggerTime>
<Duration>0</Duration>
</Properties>
</VObject>
</VObject>
</VObject>
</VerveControllerSequence>

View file

@ -0,0 +1,53 @@
<?xml version="1.0" ?>
<VerveControllerSequence Version="0.0.0a">
<Properties>
<Time>0</Time>
<Duration>5000</Duration>
<TimeScale>1</TimeScale>
<Loop>0</Loop>
<LoopBackwards>0</LoopBackwards>
<LoopCount>-1</LoopCount>
<LoopDelay>0</LoopDelay>
<ResetOnCompletion>0</ResetOnCompletion>
<name>VerveEditorController</name>
<parentGroup>RootGroup</parentGroup>
<canSaveDynamicFields>1</canSaveDynamicFields>
</Properties>
<DataTable>
<DataItem Type="STATIC" Name="ElevatorPlatformGroup" Value="ElevatorPlatformShape" />
<DataItem Type="STATIC" Name="ElevatorPlatformGroupPath" Value="ElevatorPlatformPath" />
</DataTable>
<VObject Type="VSceneObjectGroup">
<Properties>
<Enabled>1</Enabled>
<Label>ElevatorPlatformGroup</Label>
<Reference>ElevatorPlatformGroup</Reference>
</Properties>
<VObject Type="VMotionTrack">
<Properties>
<Enabled>1</Enabled>
<Label>MotionTrack</Label>
<Reference>ElevatorPlatformGroupPath</Reference>
<OrientationMode>FREE</OrientationMode>
<OrientationData></OrientationData>
<Relative>0</Relative>
</Properties>
<VObject Type="VMotionEvent">
<Properties>
<Enabled>1</Enabled>
<Label>MotionEvent</Label>
<TriggerTime>0</TriggerTime>
<Duration>0</Duration>
</Properties>
</VObject>
<VObject Type="VMotionEvent">
<Properties>
<Enabled>1</Enabled>
<Label>MotionEvent</Label>
<TriggerTime>5000</TriggerTime>
<Duration>0</Duration>
</Properties>
</VObject>
</VObject>
</VObject>
</VerveControllerSequence>

View file

@ -0,0 +1,94 @@
//*****************************************************************************
// Torque -- HLSL procedural shader
//*****************************************************************************
// Dependencies:
#include "core/rendering/shaders/torque.hlsl"
// Features:
// Vert Position
// Base Texture
// Diffuse Color
// Deferred Shading: Empty Specular
// Deferred Shading: Mat Info Flags
// Eye Space Depth (Out)
// Visibility
// GBuffer Conditioner
// Deferred Material
struct ConnectData
{
float4 vpos : SV_Position;
float2 texCoord : TEXCOORD0;
float4 wsEyeVec : TEXCOORD1;
float3 gbNormal : TEXCOORD2;
};
struct Fragout
{
float4 col : SV_Target0;
float4 col1 : SV_Target1;
float4 col2 : SV_Target2;
};
//-----------------------------------------------------------------------------
// Main
//-----------------------------------------------------------------------------
Fragout main( ConnectData IN,
uniform SamplerState diffuseMap : register(S0),
uniform Texture2D diffuseMapTex : register(T0),
uniform float4 diffuseMaterialColor : register(C0),
uniform float matInfoFlags : register(C1),
uniform float3 vEye : register(C3),
uniform float4 oneOverFarplane : register(C4),
uniform float visibility : register(C2)
)
{
Fragout OUT;
// Vert Position
// Base Texture
float4 diffuseColor = diffuseMapTex.Sample(diffuseMap, IN.texCoord);
OUT.col1 = diffuseColor;
// Diffuse Color
OUT.col1 *= diffuseMaterialColor;
// Deferred Shading: Empty Specular
OUT.col2.g = 1.0;
OUT.col2.ba = 0.0;
// Deferred Shading: Mat Info Flags
OUT.col2.r = matInfoFlags;
// Eye Space Depth (Out)
#ifndef CUBE_SHADOW_MAP
float eyeSpaceDepth = dot(vEye, (IN.wsEyeVec.xyz / IN.wsEyeVec.w));
#else
float eyeSpaceDepth = length( IN.wsEyeVec.xyz / IN.wsEyeVec.w ) * oneOverFarplane.x;
#endif
// Visibility
fizzle( IN.vpos.xy, visibility );
// GBuffer Conditioner
float4 normal_depth = float4(normalize(IN.gbNormal), eyeSpaceDepth);
// output buffer format: GFXFormatR16G16B16A16F
// g-buffer conditioner: float4(normal.X, normal.Y, depth Hi, depth Lo)
float4 _gbConditionedOutput = float4(sqrt(half(2.0/(1.0 - normal_depth.y))) * half2(normal_depth.xz), 0.0, normal_depth.a);
// Encode depth into hi/lo
float2 _tempDepth = frac(normal_depth.a * float2(1.0, 65535.0));
_gbConditionedOutput.zw = _tempDepth.xy - _tempDepth.yy * float2(1.0/65535.0, 0.0);
OUT.col = _gbConditionedOutput;
// Deferred Material
return OUT;
}

View file

@ -0,0 +1,74 @@
//*****************************************************************************
// Torque -- HLSL procedural shader
//*****************************************************************************
// Dependencies:
#include "core/rendering/shaders/torque.hlsl"
// Features:
// Vert Position
// Base Texture
// Diffuse Color
// Deferred Shading: Empty Specular
// Deferred Shading: Mat Info Flags
// Eye Space Depth (Out)
// Visibility
// GBuffer Conditioner
// Deferred Material
struct VertData
{
float3 position : POSITION;
float3 normal : NORMAL;
float3 T : TANGENT;
float3 B : BINORMAL;
float2 texCoord : TEXCOORD0;
};
struct ConnectData
{
float4 hpos : SV_Position;
float2 out_texCoord : TEXCOORD0;
float4 wsEyeVec : TEXCOORD1;
float3 gbNormal : TEXCOORD2;
};
//-----------------------------------------------------------------------------
// Main
//-----------------------------------------------------------------------------
ConnectData main( VertData IN,
uniform float4x4 modelview : register(C0),
uniform float4x4 objTrans : register(C4),
uniform float3 eyePosWorld : register(C12),
uniform float4x4 worldViewOnly : register(C8)
)
{
ConnectData OUT;
// Vert Position
OUT.hpos = mul(modelview, float4(IN.position.xyz,1));
// Base Texture
OUT.out_texCoord = (float2)IN.texCoord;
// Diffuse Color
// Deferred Shading: Empty Specular
// Deferred Shading: Mat Info Flags
// Eye Space Depth (Out)
float3 depthPos = mul( objTrans, float4( IN.position.xyz, 1 ) ).xyz;
OUT.wsEyeVec = float4( depthPos.xyz - eyePosWorld, 1 );
// Visibility
// GBuffer Conditioner
OUT.gbNormal = mul(worldViewOnly, float4( normalize(IN.normal), 0.0 ) ).xyz;
// Deferred Material
return OUT;
}

View file

@ -0,0 +1,52 @@
//*****************************************************************************
// Torque -- HLSL procedural shader
//*****************************************************************************
// Dependencies:
#include "core/rendering/shaders/torque.hlsl"
// Features:
// Vert Position
// Eye Space Depth (Out)
// Visibility
struct ConnectData
{
float4 vpos : SV_Position;
float4 wsEyeVec : TEXCOORD0;
};
struct Fragout
{
float4 col : SV_Target0;
};
//-----------------------------------------------------------------------------
// Main
//-----------------------------------------------------------------------------
Fragout main( ConnectData IN,
uniform float3 vEye : register(C1),
uniform float4 oneOverFarplane : register(C2),
uniform float visibility : register(C0)
)
{
Fragout OUT;
// Vert Position
// Eye Space Depth (Out)
#ifndef CUBE_SHADOW_MAP
float eyeSpaceDepth = dot(vEye, (IN.wsEyeVec.xyz / IN.wsEyeVec.w));
#else
float eyeSpaceDepth = length( IN.wsEyeVec.xyz / IN.wsEyeVec.w ) * oneOverFarplane.x;
#endif
OUT.col = float4(eyeSpaceDepth.rrr,1);
// Visibility
fizzle( IN.vpos.xy, visibility );
return OUT;
}

View file

@ -0,0 +1,51 @@
//*****************************************************************************
// Torque -- HLSL procedural shader
//*****************************************************************************
// Dependencies:
#include "core/rendering/shaders/torque.hlsl"
// Features:
// Vert Position
// Eye Space Depth (Out)
// Visibility
struct VertData
{
float3 position : POSITION;
float3 normal : NORMAL;
float3 T : TANGENT;
float3 B : BINORMAL;
float2 texCoord : TEXCOORD0;
};
struct ConnectData
{
float4 hpos : SV_Position;
float4 wsEyeVec : TEXCOORD0;
};
//-----------------------------------------------------------------------------
// Main
//-----------------------------------------------------------------------------
ConnectData main( VertData IN,
uniform float4x4 modelview : register(C0),
uniform float4x4 objTrans : register(C4),
uniform float3 eyePosWorld : register(C8)
)
{
ConnectData OUT;
// Vert Position
OUT.hpos = mul(modelview, float4(IN.position.xyz,1));
// Eye Space Depth (Out)
float3 depthPos = mul( objTrans, float4( IN.position.xyz, 1 ) ).xyz;
OUT.wsEyeVec = float4( depthPos.xyz - eyePosWorld, 1 );
// Visibility
return OUT;
}

View file

@ -0,0 +1,77 @@
//*****************************************************************************
// Torque -- HLSL procedural shader
//*****************************************************************************
// Dependencies:
#include "core/rendering/shaders/lighting.hlsl"
//------------------------------------------------------------------------------
// Autogenerated 'Light Buffer Conditioner [RGB]' Uncondition Method
//------------------------------------------------------------------------------
inline void autogenUncondition_bde4cbab(in float4 bufferSample, out float3 lightColor, out float NL_att, out float specular)
{
lightColor = bufferSample.rgb;
NL_att = dot(bufferSample.rgb, float3(0.3576, 0.7152, 0.1192));
specular = bufferSample.a;
}
#include "core/rendering/shaders/torque.hlsl"
// Features:
// Vert Position
// Diffuse Color
// Deferred RT Lighting
// Visibility
// HDR Output
struct ConnectData
{
float4 vpos : SV_Position;
float4 screenspacePos : TEXCOORD0;
};
struct Fragout
{
float4 col : SV_Target0;
};
//-----------------------------------------------------------------------------
// Main
//-----------------------------------------------------------------------------
Fragout main( ConnectData IN,
uniform float4 diffuseMaterialColor : register(C0),
uniform float4 rtParamslightInfoBuffer : register(C2),
uniform SamplerState lightInfoBuffer : register(S0),
uniform Texture2D lightInfoBufferTex : register(T0),
uniform float visibility : register(C1)
)
{
Fragout OUT;
// Vert Position
// Diffuse Color
OUT.col = diffuseMaterialColor;
// Deferred RT Lighting
float2 uvScene = IN.screenspacePos.xy / IN.screenspacePos.w;
uvScene = ( uvScene + 1.0 ) / 2.0;
uvScene.y = 1.0 - uvScene.y;
uvScene = ( uvScene * rtParamslightInfoBuffer.zw ) + rtParamslightInfoBuffer.xy;
float3 d_lightcolor;
float d_NL_Att;
float d_specular;
lightinfoUncondition(lightInfoBufferTex.Sample(lightInfoBuffer, uvScene), d_lightcolor, d_NL_Att, d_specular);
OUT.col *= float4(d_lightcolor, 1.0);
// Visibility
fizzle( IN.vpos.xy, visibility );
// HDR Output
OUT.col = hdrEncode( OUT.col );
return OUT;
}

View file

@ -0,0 +1,67 @@
//*****************************************************************************
// Torque -- HLSL procedural shader
//*****************************************************************************
// Dependencies:
#include "core/rendering/shaders/lighting.hlsl"
//------------------------------------------------------------------------------
// Autogenerated 'Light Buffer Conditioner [RGB]' Uncondition Method
//------------------------------------------------------------------------------
inline void autogenUncondition_bde4cbab(in float4 bufferSample, out float3 lightColor, out float NL_att, out float specular)
{
lightColor = bufferSample.rgb;
NL_att = dot(bufferSample.rgb, float3(0.3576, 0.7152, 0.1192));
specular = bufferSample.a;
}
#include "core/rendering/shaders/torque.hlsl"
// Features:
// Vert Position
// Diffuse Color
// Deferred RT Lighting
// Visibility
// HDR Output
struct VertData
{
float3 position : POSITION;
float3 normal : NORMAL;
float3 T : TANGENT;
float3 B : BINORMAL;
float2 texCoord : TEXCOORD0;
float2 texCoord2 : TEXCOORD1;
};
struct ConnectData
{
float4 hpos : SV_Position;
float4 screenspacePos : TEXCOORD0;
};
//-----------------------------------------------------------------------------
// Main
//-----------------------------------------------------------------------------
ConnectData main( VertData IN,
uniform float4x4 modelview : register(C0)
)
{
ConnectData OUT;
// Vert Position
OUT.hpos = mul(modelview, float4(IN.position.xyz,1));
// Diffuse Color
// Deferred RT Lighting
OUT.screenspacePos = OUT.hpos;
// Visibility
// HDR Output
return OUT;
}

View file

@ -0,0 +1,54 @@
//*****************************************************************************
// Torque -- HLSL procedural shader
//*****************************************************************************
// Dependencies:
#include "core/rendering/shaders/torque.hlsl"
// Features:
// Vert Position
// skybox
// Diffuse Color
// Reflect Cube
// HDR Output
struct ConnectData
{
float4 vpos : SV_Position;
float3 reflectVec : TEXCOORD0;
};
struct Fragout
{
float4 col : SV_Target0;
};
//-----------------------------------------------------------------------------
// Main
//-----------------------------------------------------------------------------
Fragout main( ConnectData IN,
uniform float4 diffuseMaterialColor : register(C0),
uniform SamplerState cubeMap : register(S0),
uniform TextureCube cubeMapTex : register(T0)
)
{
Fragout OUT;
// Vert Position
// skybox
// Diffuse Color
OUT.col = diffuseMaterialColor;
// Reflect Cube
OUT.col *= cubeMapTex.Sample( cubeMap, IN.reflectVec );
// HDR Output
OUT.col = hdrEncode( OUT.col );
return OUT;
}

View file

@ -0,0 +1,58 @@
//*****************************************************************************
// Torque -- HLSL procedural shader
//*****************************************************************************
// Dependencies:
#include "core/rendering/shaders/torque.hlsl"
// Features:
// Vert Position
// skybox
// Diffuse Color
// Reflect Cube
// HDR Output
struct VertData
{
float3 position : POSITION;
float3 normal : NORMAL;
float2 texCoord : TEXCOORD0;
};
struct ConnectData
{
float4 hpos : SV_Position;
float3 reflectVec : TEXCOORD0;
};
//-----------------------------------------------------------------------------
// Main
//-----------------------------------------------------------------------------
ConnectData main( VertData IN,
uniform float4x4 modelview : register(C0),
uniform float4x4 objTrans : register(C4),
uniform float3 eyePosWorld : register(C8)
)
{
ConnectData OUT;
// Vert Position
OUT.hpos = mul(modelview, float4(IN.position.xyz,1));
// skybox
// Diffuse Color
// Reflect Cube
float3 cubeVertPos = mul(objTrans, float4(IN.position,1)).xyz;
float3 cubeNormal = ( mul( (objTrans), float4(IN.normal, 0) ) ).xyz;
cubeNormal = bool(length(cubeNormal)) ? normalize(cubeNormal) : cubeNormal;
float3 eyeToVert = cubeVertPos - eyePosWorld;
OUT.reflectVec = reflect(eyeToVert, cubeNormal);
// HDR Output
return OUT;
}

View file

@ -0,0 +1,58 @@
//------------------------------------------------------------------------------
// Autogenerated 'Light Buffer Conditioner [RGB]' Condition Method
//------------------------------------------------------------------------------
inline float4 autogenCondition_bde4cbab(in float3 lightColor, in float NL_att, in float specular, in float4 bufferSample)
{
float4 rgbLightInfoOut = float4(lightColor, 0) * NL_att + float4(bufferSample.rgb, specular);
return rgbLightInfoOut;
}
//------------------------------------------------------------------------------
// Autogenerated 'Light Buffer Conditioner [RGB]' Uncondition Method
//------------------------------------------------------------------------------
inline void autogenUncondition_bde4cbab(in float4 bufferSample, out float3 lightColor, out float NL_att, out float specular)
{
lightColor = bufferSample.rgb;
NL_att = dot(bufferSample.rgb, float3(0.3576, 0.7152, 0.1192));
specular = bufferSample.a;
}
//------------------------------------------------------------------------------
// Autogenerated 'GBuffer Conditioner' Condition Method
//------------------------------------------------------------------------------
inline float4 autogenCondition_55070f7a(in float4 unconditionedOutput)
{
// g-buffer conditioner: float4(normal.X, normal.Y, depth Hi, depth Lo)
float4 _gbConditionedOutput = float4(sqrt(half(2.0/(1.0 - unconditionedOutput.y))) * half2(unconditionedOutput.xz), 0.0, unconditionedOutput.a);
// Encode depth into hi/lo
float2 _tempDepth = frac(unconditionedOutput.a * float2(1.0, 65535.0));
_gbConditionedOutput.zw = _tempDepth.xy - _tempDepth.yy * float2(1.0/65535.0, 0.0);
return _gbConditionedOutput;
}
//------------------------------------------------------------------------------
// Autogenerated 'GBuffer Conditioner' Uncondition Method
//------------------------------------------------------------------------------
inline float4 autogenUncondition_55070f7a(SamplerState deferredSamplerVar, Texture2D deferredTexVar, float2 screenUVVar)
{
// Sampler g-buffer
float4 bufferSample = deferredTexVar.SampleLevel(deferredSamplerVar, screenUVVar,0);
// g-buffer unconditioner: float4(normal.X, normal.Y, depth Hi, depth Lo)
float2 _inpXY = bufferSample.xy;
float _xySQ = dot(_inpXY, _inpXY);
float4 _gbUnconditionedInput = float4( sqrt(half(1.0 - (_xySQ / 4.0))) * _inpXY, -1.0 + (_xySQ / 2.0), bufferSample.a).xzyw;
// Decode depth
_gbUnconditionedInput.w = dot( bufferSample.zw, float2(1.0, 1.0/65535.0));
return _gbUnconditionedInput;
}

View file

@ -0,0 +1,80 @@
//*****************************************************************************
// Torque -- HLSL procedural shader
//*****************************************************************************
// Dependencies:
#include "core/rendering/shaders/lighting.hlsl"
//------------------------------------------------------------------------------
// Autogenerated 'Light Buffer Conditioner [RGB]' Uncondition Method
//------------------------------------------------------------------------------
inline void autogenUncondition_bde4cbab(in float4 bufferSample, out float3 lightColor, out float NL_att, out float specular)
{
lightColor = bufferSample.rgb;
NL_att = dot(bufferSample.rgb, float3(0.3576, 0.7152, 0.1192));
specular = bufferSample.a;
}
#include "core/rendering/shaders/torque.hlsl"
// Features:
// Vert Position
// Base Texture
// Deferred RT Lighting
// Visibility
// HDR Output
struct ConnectData
{
float4 vpos : SV_Position;
float2 texCoord : TEXCOORD0;
float4 screenspacePos : TEXCOORD1;
};
struct Fragout
{
float4 col : SV_Target0;
};
//-----------------------------------------------------------------------------
// Main
//-----------------------------------------------------------------------------
Fragout main( ConnectData IN,
uniform SamplerState diffuseMap : register(S0),
uniform Texture2D diffuseMapTex : register(T0),
uniform float4 rtParamslightInfoBuffer : register(C1),
uniform SamplerState lightInfoBuffer : register(S1),
uniform Texture2D lightInfoBufferTex : register(T1),
uniform float visibility : register(C0)
)
{
Fragout OUT;
// Vert Position
// Base Texture
float4 diffuseColor = diffuseMapTex.Sample(diffuseMap, IN.texCoord);
OUT.col = diffuseColor;
// Deferred RT Lighting
float2 uvScene = IN.screenspacePos.xy / IN.screenspacePos.w;
uvScene = ( uvScene + 1.0 ) / 2.0;
uvScene.y = 1.0 - uvScene.y;
uvScene = ( uvScene * rtParamslightInfoBuffer.zw ) + rtParamslightInfoBuffer.xy;
float3 d_lightcolor;
float d_NL_Att;
float d_specular;
lightinfoUncondition(lightInfoBufferTex.Sample(lightInfoBuffer, uvScene), d_lightcolor, d_NL_Att, d_specular);
OUT.col *= float4(d_lightcolor, 1.0);
// Visibility
fizzle( IN.vpos.xy, visibility );
// HDR Output
OUT.col = hdrEncode( OUT.col );
return OUT;
}

View file

@ -0,0 +1,57 @@
//*****************************************************************************
// Torque -- HLSL procedural shader
//*****************************************************************************
// Dependencies:
#include "core/rendering/shaders/lighting.hlsl"
#include "core/rendering/shaders/torque.hlsl"
// Features:
// Vert Position
// Base Texture
// Deferred RT Lighting
// Visibility
// HDR Output
struct VertData
{
float3 position : POSITION;
float3 normal : NORMAL;
float3 T : TANGENT;
float3 B : BINORMAL;
float2 texCoord : TEXCOORD0;
};
struct ConnectData
{
float4 hpos : SV_Position;
float2 out_texCoord : TEXCOORD0;
float4 screenspacePos : TEXCOORD1;
};
//-----------------------------------------------------------------------------
// Main
//-----------------------------------------------------------------------------
ConnectData main( VertData IN,
uniform float4x4 modelview : register(C0)
)
{
ConnectData OUT;
// Vert Position
OUT.hpos = mul(modelview, float4(IN.position.xyz,1));
// Base Texture
OUT.out_texCoord = (float2)IN.texCoord;
// Deferred RT Lighting
OUT.screenspacePos = OUT.hpos;
// Visibility
// HDR Output
return OUT;
}

View file

@ -0,0 +1,87 @@
//*****************************************************************************
// Torque -- HLSL procedural shader
//*****************************************************************************
// Dependencies:
#include "core/rendering/shaders/torque.hlsl"
// Features:
// Vert Position
// Diffuse Color
// Deferred Shading: Empty Specular
// Deferred Shading: Mat Info Flags
// Eye Space Depth (Out)
// Visibility
// GBuffer Conditioner
// Deferred Material
struct ConnectData
{
float4 vpos : SV_Position;
float4 wsEyeVec : TEXCOORD0;
float3 gbNormal : TEXCOORD1;
};
struct Fragout
{
float4 col : SV_Target0;
float4 col1 : SV_Target1;
float4 col2 : SV_Target2;
};
//-----------------------------------------------------------------------------
// Main
//-----------------------------------------------------------------------------
Fragout main( ConnectData IN,
uniform float4 diffuseMaterialColor : register(C0),
uniform float matInfoFlags : register(C1),
uniform float3 vEye : register(C3),
uniform float4 oneOverFarplane : register(C4),
uniform float visibility : register(C2)
)
{
Fragout OUT;
// Vert Position
// Diffuse Color
OUT.col1 = float4(1.0,1.0,1.0,1.0);
OUT.col1 = diffuseMaterialColor;
// Deferred Shading: Empty Specular
OUT.col2.g = 1.0;
OUT.col2.ba = 0.0;
// Deferred Shading: Mat Info Flags
OUT.col2.r = matInfoFlags;
// Eye Space Depth (Out)
#ifndef CUBE_SHADOW_MAP
float eyeSpaceDepth = dot(vEye, (IN.wsEyeVec.xyz / IN.wsEyeVec.w));
#else
float eyeSpaceDepth = length( IN.wsEyeVec.xyz / IN.wsEyeVec.w ) * oneOverFarplane.x;
#endif
// Visibility
fizzle( IN.vpos.xy, visibility );
// GBuffer Conditioner
float4 normal_depth = float4(normalize(IN.gbNormal), eyeSpaceDepth);
// output buffer format: GFXFormatR16G16B16A16F
// g-buffer conditioner: float4(normal.X, normal.Y, depth Hi, depth Lo)
float4 _gbConditionedOutput = float4(sqrt(half(2.0/(1.0 - normal_depth.y))) * half2(normal_depth.xz), 0.0, normal_depth.a);
// Encode depth into hi/lo
float2 _tempDepth = frac(normal_depth.a * float2(1.0, 65535.0));
_gbConditionedOutput.zw = _tempDepth.xy - _tempDepth.yy * float2(1.0/65535.0, 0.0);
OUT.col = _gbConditionedOutput;
// Deferred Material
return OUT;
}

View file

@ -0,0 +1,70 @@
//*****************************************************************************
// Torque -- HLSL procedural shader
//*****************************************************************************
// Dependencies:
#include "core/rendering/shaders/torque.hlsl"
// Features:
// Vert Position
// Diffuse Color
// Deferred Shading: Empty Specular
// Deferred Shading: Mat Info Flags
// Eye Space Depth (Out)
// Visibility
// GBuffer Conditioner
// Deferred Material
struct VertData
{
float3 position : POSITION;
float3 normal : NORMAL;
float3 T : TANGENT;
float3 B : BINORMAL;
float2 texCoord : TEXCOORD0;
float2 texCoord2 : TEXCOORD1;
};
struct ConnectData
{
float4 hpos : SV_Position;
float4 wsEyeVec : TEXCOORD0;
float3 gbNormal : TEXCOORD1;
};
//-----------------------------------------------------------------------------
// Main
//-----------------------------------------------------------------------------
ConnectData main( VertData IN,
uniform float4x4 modelview : register(C0),
uniform float4x4 objTrans : register(C4),
uniform float3 eyePosWorld : register(C12),
uniform float4x4 worldViewOnly : register(C8)
)
{
ConnectData OUT;
// Vert Position
OUT.hpos = mul(modelview, float4(IN.position.xyz,1));
// Diffuse Color
// Deferred Shading: Empty Specular
// Deferred Shading: Mat Info Flags
// Eye Space Depth (Out)
float3 depthPos = mul( objTrans, float4( IN.position.xyz, 1 ) ).xyz;
OUT.wsEyeVec = float4( depthPos.xyz - eyePosWorld, 1 );
// Visibility
// GBuffer Conditioner
OUT.gbNormal = mul(worldViewOnly, float4( normalize(IN.normal), 0.0 ) ).xyz;
// Deferred Material
return OUT;
}

View file

@ -0,0 +1,47 @@
//*****************************************************************************
// Torque -- HLSL procedural shader
//*****************************************************************************
// Dependencies:
#include "core/rendering/shaders/torque.hlsl"
// Features:
// Paraboloid Vert Transform
// Visibility
// Depth (Out)
struct ConnectData
{
float4 vpos : SV_Position;
float2 posXY : TEXCOORD0;
float depth : TEXCOORD1;
};
struct Fragout
{
float4 col : SV_Target0;
};
//-----------------------------------------------------------------------------
// Main
//-----------------------------------------------------------------------------
Fragout main( ConnectData IN,
uniform float visibility : register(C0)
)
{
Fragout OUT;
// Paraboloid Vert Transform
clip( 1.0 - abs(IN.posXY.x) );
// Visibility
fizzle( IN.vpos.xy, visibility );
// Depth (Out)
OUT.col = float4( IN.depth, 0, 0, 1 );
return OUT;
}

View file

@ -0,0 +1,61 @@
//*****************************************************************************
// Torque -- HLSL procedural shader
//*****************************************************************************
// Dependencies:
#include "core/rendering/shaders/torque.hlsl"
// Features:
// Paraboloid Vert Transform
// Visibility
// Depth (Out)
struct VertData
{
float3 position : POSITION;
float3 normal : NORMAL;
float3 T : TANGENT;
float3 B : BINORMAL;
float2 texCoord : TEXCOORD0;
};
struct ConnectData
{
float4 hpos : SV_Position;
float2 posXY : TEXCOORD0;
float depth : TEXCOORD1;
};
//-----------------------------------------------------------------------------
// Main
//-----------------------------------------------------------------------------
ConnectData main( VertData IN,
uniform float2 atlasScale : register(C4),
uniform float4x4 worldViewOnly : register(C0),
uniform float4 lightParams : register(C5),
uniform float2 atlasXOffset : register(C6)
)
{
ConnectData OUT;
// Paraboloid Vert Transform
OUT.hpos = mul(worldViewOnly, float4(IN.position.xyz,1)).xzyw;
float L = length(OUT.hpos.xyz);
OUT.hpos /= L;
OUT.hpos.z = OUT.hpos.z + 1.0;
OUT.hpos.xy /= OUT.hpos.z;
OUT.hpos.z = L / lightParams.x;
OUT.hpos.w = 1.0;
OUT.posXY = OUT.hpos.xy;
OUT.hpos.xy *= atlasScale.xy;
OUT.hpos.xy += atlasXOffset;
// Visibility
// Depth (Out)
OUT.depth = OUT.hpos.z / OUT.hpos.w;
return OUT;
}

View file

@ -0,0 +1,52 @@
//*****************************************************************************
// Torque -- HLSL procedural shader
//*****************************************************************************
// Dependencies:
#include "core/rendering/shaders/torque.hlsl"
// Features:
// Vert Position
// Eye Space Depth (Out)
// Visibility
struct ConnectData
{
float4 vpos : SV_Position;
float4 wsEyeVec : TEXCOORD0;
};
struct Fragout
{
float4 col : SV_Target0;
};
//-----------------------------------------------------------------------------
// Main
//-----------------------------------------------------------------------------
Fragout main( ConnectData IN,
uniform float3 vEye : register(C1),
uniform float4 oneOverFarplane : register(C2),
uniform float visibility : register(C0)
)
{
Fragout OUT;
// Vert Position
// Eye Space Depth (Out)
#ifndef CUBE_SHADOW_MAP
float eyeSpaceDepth = dot(vEye, (IN.wsEyeVec.xyz / IN.wsEyeVec.w));
#else
float eyeSpaceDepth = length( IN.wsEyeVec.xyz / IN.wsEyeVec.w ) * oneOverFarplane.x;
#endif
OUT.col = float4(eyeSpaceDepth.rrr,1);
// Visibility
fizzle( IN.vpos.xy, visibility );
return OUT;
}

View file

@ -0,0 +1,51 @@
//*****************************************************************************
// Torque -- HLSL procedural shader
//*****************************************************************************
// Dependencies:
#include "core/rendering/shaders/torque.hlsl"
// Features:
// Vert Position
// Eye Space Depth (Out)
// Visibility
struct VertData
{
float3 position : POSITION;
float3 normal : NORMAL;
float3 T : TANGENT;
float3 B : BINORMAL;
float2 texCoord : TEXCOORD0;
};
struct ConnectData
{
float4 hpos : SV_Position;
float4 wsEyeVec : TEXCOORD0;
};
//-----------------------------------------------------------------------------
// Main
//-----------------------------------------------------------------------------
ConnectData main( VertData IN,
uniform float4x4 modelview : register(C0),
uniform float4x4 objTrans : register(C4),
uniform float3 eyePosWorld : register(C8)
)
{
ConnectData OUT;
// Vert Position
OUT.hpos = mul(modelview, float4(IN.position.xyz,1));
// Eye Space Depth (Out)
float3 depthPos = mul( objTrans, float4( IN.position.xyz, 1 ) ).xyz;
OUT.wsEyeVec = float4( depthPos.xyz - eyePosWorld, 1 );
// Visibility
return OUT;
}

View file

@ -0,0 +1,69 @@
//*****************************************************************************
// Torque -- HLSL procedural shader
//*****************************************************************************
// Dependencies:
#include "core/rendering/shaders/torque.hlsl"
// Features:
// Vert Position
// Diffuse Color
// Diffuse Vertex Color
// Visibility
// Fog
// HDR Output
// Forward Shaded Material
// Translucent
struct ConnectData
{
float4 vpos : SV_Position;
float4 vertColor : COLOR;
float3 wsPosition : TEXCOORD0;
};
struct Fragout
{
float4 col : SV_Target0;
};
//-----------------------------------------------------------------------------
// Main
//-----------------------------------------------------------------------------
Fragout main( ConnectData IN,
uniform float4 diffuseMaterialColor : register(C0),
uniform float visibility : register(C1),
uniform float4 fogColor : register(C2),
uniform float3 eyePosWorld : register(C3),
uniform float3 fogData : register(C4)
)
{
Fragout OUT;
// Vert Position
// Diffuse Color
OUT.col = diffuseMaterialColor;
// Diffuse Vertex Color
OUT.col *= IN.vertColor;
// Visibility
OUT.col.a *= visibility;
// Fog
float fogAmount = saturate( computeSceneFog( eyePosWorld, IN.wsPosition, fogData.r, fogData.g, fogData.b ) );
OUT.col.rgb = lerp( fogColor.rgb, OUT.col.rgb, fogAmount );
// HDR Output
OUT.col = hdrEncode( OUT.col );
// Forward Shaded Material
// Translucent
return OUT;
}

View file

@ -0,0 +1,63 @@
//*****************************************************************************
// Torque -- HLSL procedural shader
//*****************************************************************************
// Dependencies:
#include "core/rendering/shaders/torque.hlsl"
// Features:
// Vert Position
// Diffuse Color
// Diffuse Vertex Color
// Visibility
// Fog
// HDR Output
// Forward Shaded Material
// Translucent
struct VertData
{
float3 position : POSITION;
float4 diffuse : COLOR;
};
struct ConnectData
{
float4 hpos : SV_Position;
float4 vertColor : COLOR;
float3 outWsPosition : TEXCOORD0;
};
//-----------------------------------------------------------------------------
// Main
//-----------------------------------------------------------------------------
ConnectData main( VertData IN,
uniform float4x4 modelview : register(C0),
uniform float4x4 objTrans : register(C4)
)
{
ConnectData OUT;
// Vert Position
OUT.hpos = mul(modelview, float4(IN.position.xyz,1));
// Diffuse Color
// Diffuse Vertex Color
OUT.vertColor = IN.diffuse;
// Visibility
// Fog
OUT.outWsPosition = mul( objTrans, float4( IN.position.xyz, 1 ) ).xyz;
// HDR Output
// Forward Shaded Material
// Translucent
return OUT;
}

View file

@ -0,0 +1,52 @@
//*****************************************************************************
// Torque -- HLSL procedural shader
//*****************************************************************************
// Dependencies:
#include "core/rendering/shaders/torque.hlsl"
// Features:
// Paraboloid Vert Transform
// Visibility
// Depth (Out)
// Single Pass Paraboloid
struct ConnectData
{
float4 vpos : SV_Position;
float isBack : TEXCOORD0;
float2 posXY : TEXCOORD1;
float depth : TEXCOORD2;
};
struct Fragout
{
float4 col : SV_Target0;
};
//-----------------------------------------------------------------------------
// Main
//-----------------------------------------------------------------------------
Fragout main( ConnectData IN,
uniform float visibility : register(C0)
)
{
Fragout OUT;
// Paraboloid Vert Transform
clip( abs( IN.isBack ) - 0.999 );
clip( 1.0 - abs(IN.posXY.x) );
// Visibility
fizzle( IN.vpos.xy, visibility );
// Depth (Out)
OUT.col = float4( IN.depth, 0, 0, 1 );
// Single Pass Paraboloid
return OUT;
}

View file

@ -0,0 +1,67 @@
//*****************************************************************************
// Torque -- HLSL procedural shader
//*****************************************************************************
// Dependencies:
#include "core/rendering/shaders/torque.hlsl"
// Features:
// Paraboloid Vert Transform
// Visibility
// Depth (Out)
// Single Pass Paraboloid
struct VertData
{
float3 position : POSITION;
float3 normal : NORMAL;
float3 T : TANGENT;
float3 B : BINORMAL;
float2 texCoord : TEXCOORD0;
};
struct ConnectData
{
float4 hpos : SV_Position;
float isBack : TEXCOORD0;
float2 posXY : TEXCOORD1;
float depth : TEXCOORD2;
};
//-----------------------------------------------------------------------------
// Main
//-----------------------------------------------------------------------------
ConnectData main( VertData IN,
uniform float2 atlasScale : register(C4),
uniform float4x4 worldViewOnly : register(C0),
uniform float4 lightParams : register(C5)
)
{
ConnectData OUT;
// Paraboloid Vert Transform
OUT.hpos = mul(worldViewOnly, float4(IN.position.xyz,1)).xzyw;
float L = length(OUT.hpos.xyz);
bool isBack = OUT.hpos.z < 0.0;
OUT.isBack = isBack ? -1.0 : 1.0;
if ( isBack ) OUT.hpos.z = -OUT.hpos.z;
OUT.hpos /= L;
OUT.hpos.z = OUT.hpos.z + 1.0;
OUT.hpos.xy /= OUT.hpos.z;
OUT.hpos.z = L / lightParams.x;
OUT.hpos.w = 1.0;
OUT.posXY = OUT.hpos.xy;
OUT.hpos.xy *= atlasScale.xy;
OUT.hpos.x += isBack ? 0.5 : -0.5;
// Visibility
// Depth (Out)
OUT.depth = OUT.hpos.z / OUT.hpos.w;
// Single Pass Paraboloid
return OUT;
}

View file

@ -0,0 +1,84 @@
//*****************************************************************************
// Torque -- HLSL procedural shader
//*****************************************************************************
// Dependencies:
#include "core/rendering/shaders/lighting.hlsl"
//------------------------------------------------------------------------------
// Autogenerated 'Light Buffer Conditioner [RGB]' Uncondition Method
//------------------------------------------------------------------------------
inline void autogenUncondition_bde4cbab(in float4 bufferSample, out float3 lightColor, out float NL_att, out float specular)
{
lightColor = bufferSample.rgb;
NL_att = dot(bufferSample.rgb, float3(0.3576, 0.7152, 0.1192));
specular = bufferSample.a;
}
#include "core/rendering/shaders/torque.hlsl"
// Features:
// Vert Position
// Detail
// Diffuse Color
// Deferred RT Lighting
// Visibility
// HDR Output
struct ConnectData
{
float4 vpos : SV_Position;
float2 detCoord : TEXCOORD0;
float4 screenspacePos : TEXCOORD1;
};
struct Fragout
{
float4 col : SV_Target0;
};
//-----------------------------------------------------------------------------
// Main
//-----------------------------------------------------------------------------
Fragout main( ConnectData IN,
uniform SamplerState detailMap : register(S0),
uniform Texture2D detailMapTex : register(T0),
uniform float4 diffuseMaterialColor : register(C0),
uniform float4 rtParamslightInfoBuffer : register(C2),
uniform SamplerState lightInfoBuffer : register(S1),
uniform Texture2D lightInfoBufferTex : register(T1),
uniform float visibility : register(C1)
)
{
Fragout OUT;
// Vert Position
// Detail
OUT.col = ( detailMapTex.Sample(detailMap, IN.detCoord) * 2.0 ) - 1.0;
// Diffuse Color
OUT.col = diffuseMaterialColor;
// Deferred RT Lighting
float2 uvScene = IN.screenspacePos.xy / IN.screenspacePos.w;
uvScene = ( uvScene + 1.0 ) / 2.0;
uvScene.y = 1.0 - uvScene.y;
uvScene = ( uvScene * rtParamslightInfoBuffer.zw ) + rtParamslightInfoBuffer.xy;
float3 d_lightcolor;
float d_NL_Att;
float d_specular;
lightinfoUncondition(lightInfoBufferTex.Sample(lightInfoBuffer, uvScene), d_lightcolor, d_NL_Att, d_specular);
OUT.col *= float4(d_lightcolor, 1.0);
// Visibility
fizzle( IN.vpos.xy, visibility );
// HDR Output
OUT.col = hdrEncode( OUT.col );
return OUT;
}

View file

@ -0,0 +1,73 @@
//*****************************************************************************
// Torque -- HLSL procedural shader
//*****************************************************************************
// Dependencies:
#include "core/rendering/shaders/lighting.hlsl"
//------------------------------------------------------------------------------
// Autogenerated 'Light Buffer Conditioner [RGB]' Uncondition Method
//------------------------------------------------------------------------------
inline void autogenUncondition_bde4cbab(in float4 bufferSample, out float3 lightColor, out float NL_att, out float specular)
{
lightColor = bufferSample.rgb;
NL_att = dot(bufferSample.rgb, float3(0.3576, 0.7152, 0.1192));
specular = bufferSample.a;
}
#include "core/rendering/shaders/torque.hlsl"
// Features:
// Vert Position
// Detail
// Diffuse Color
// Deferred RT Lighting
// Visibility
// HDR Output
struct VertData
{
float3 position : POSITION;
float3 normal : NORMAL;
float3 T : TANGENT;
float3 B : BINORMAL;
float2 texCoord : TEXCOORD0;
float2 texCoord2 : TEXCOORD1;
};
struct ConnectData
{
float4 hpos : SV_Position;
float2 detCoord : TEXCOORD0;
float4 screenspacePos : TEXCOORD1;
};
//-----------------------------------------------------------------------------
// Main
//-----------------------------------------------------------------------------
ConnectData main( VertData IN,
uniform float4x4 modelview : register(C0),
uniform float2 detailScale : register(C4)
)
{
ConnectData OUT;
// Vert Position
OUT.hpos = mul(modelview, float4(IN.position.xyz,1));
// Detail
OUT.detCoord = IN.texCoord * detailScale;
// Diffuse Color
// Deferred RT Lighting
OUT.screenspacePos = OUT.hpos;
// Visibility
// HDR Output
return OUT;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View file

@ -0,0 +1,12 @@
//-----------------------------------------------------------------------------
// Verve
// Copyright (C) - Violent Tulip
//-----------------------------------------------------------------------------
singleton GuiControlProfile( VPathEditorProfile )
{
CanKeyFocus = true;
FontType = "Arial Bold";
FontColor = "0 0 0";
};

View file

@ -0,0 +1,434 @@
//-----------------------------------------------------------------------------
// Verve
// Copyright (C) - Violent Tulip
//-----------------------------------------------------------------------------
new VPathEditor(EVPathEditor) {
canSaveDynamicFields = "0";
Enabled = "1";
isContainer = "0";
Profile = "VPathEditorProfile";
HorizSizing = "width";
VertSizing = "height";
Position = "0 0";
Extent = "800 600";
MinExtent = "8 8";
canSave = "1";
Visible = "1";
tooltipprofile = "GuiToolTipProfile";
hovertime = "1000";
Docking = "None";
Margin = "0 0 0 0";
Padding = "0 0 0 0";
AnchorTop = "0";
AnchorBottom = "0";
AnchorLeft = "0";
AnchorRight = "0";
cameraZRot = "0";
forceFOV = "0";
renderMissionArea = "1";
missionAreaFillColor = "255 0 0 20";
missionAreaFrameColor = "255 0 0 128";
allowBorderMove = "0";
borderMovePixelSize = "20";
borderMoveSpeed = "0.1";
consoleFrameColor = "255 0 0 255";
consoleFillColor = "0 0 0 0";
consoleSphereLevel = "1";
consoleCircleSegments = "32";
consoleLineWidth = "1";
GizmoProfile = "GlobalGizmoProfile";
new GuiWindowCollapseCtrl(VPathEditorTreeWindow) {
internalName = "";
canSaveDynamicFields = "0";
Enabled = "1";
isContainer = "1";
Profile = "GuiWindowProfile";
HorizSizing = "windowRelative";
VertSizing = "windowRelative";
Position = getWord($pref::Video::mode, 0) - 209
SPC getWord(EditorGuiToolbar.extent, 1) - 1;
Extent = "210 167";
MinExtent = "210 100";
canSave = "1";
Visible = "1";
tooltipprofile = "GuiToolTipProfile";
hovertime = "1000";
Margin = "0 0 0 0";
Padding = "0 0 0 0";
AnchorTop = "1";
AnchorBottom = "0";
AnchorLeft = "1";
AnchorRight = "0";
resizeWidth = "1";
resizeHeight = "1";
canMove = "1";
canClose = "0";
canMinimize = "0";
canMaximize = "0";
minSize = "50 50";
closeCommand = "EditorGui.setEditor( WorldEditorInspectorPlugin );";
EdgeSnap = "1";
text = "Path Editor";
new GuiContainer(){
profile = GuiDefaultProfile;
Position = "5 25";
Extent = "200 120";
Docking = "Client";
Margin = "3 1 3 3 ";
HorizSizing = "width";
VertSizing = "height";
isContainer = "1";
new GuiScrollCtrl() {
canSaveDynamicFields = "0";
Enabled = "1";
isContainer = "1";
Profile = "GuiEditorScrollProfile";
HorizSizing = "width";
VertSizing = "height";
Position = "0 0";
Extent = "200 118";
MinExtent = "8 8";
canSave = "1";
isDecoy = "0";
Visible = "1";
tooltipprofile = "GuiToolTipProfile";
hovertime = "1000";
Docking = "Client";
Margin = "0 0 0 0";
Padding = "0 0 0 0";
AnchorTop = "1";
AnchorBottom = "0";
AnchorLeft = "1";
AnchorRight = "0";
willFirstRespond = "1";
hScrollBar = "alwaysOff";
vScrollBar = "dynamic";
lockHorizScroll = "true";
lockVertScroll = "false";
constantThumbHeight = "0";
childMargin = "0 0";
mouseWheelScrollSpeed = "-1";
new GuiTreeViewCtrl(VPathTreeView) {
canSaveDynamicFields = "0";
Enabled = "1";
isContainer = "1";
Profile = "ToolsGuiTreeViewProfile";
HorizSizing = "right";
VertSizing = "bottom";
Position = "1 1";
Extent = "193 21";
MinExtent = "8 8";
canSave = "1";
Visible = "1";
hovertime = "1000";
tabSize = "16";
textOffset = "2";
fullRowSelect = "0";
itemHeight = "21";
destroyTreeOnSleep = "1";
MouseDragging = "0";
MultipleSelections = "0";
DeleteObjectAllowed = "1";
DragToItemAllowed = "0";
showRoot = "1";
internalNamesOnly = "0";
};
};
};
new GuiBitmapButtonCtrl() {
bitmap = "tools/gui/images/delete";
groupNum = "-1";
buttonType = "PushButton";
useMouseEvents = "0";
isContainer = "0";
Profile = "GuiButtonProfile";
HorizSizing = "left";
VertSizing = "bottom";
position = "193 4";
Extent = "16 16";
MinExtent = "8 2";
canSave = "1";
Visible = "1";
Command = "VPathTreeView.DeleteSelectedPaths();";
tooltipprofile = "GuiToolTipProfile";
ToolTip = "Delete Selected Path";
hovertime = "1000";
internalName = "deleteSelection";
canSaveDynamicFields = "0";
};
new GuiBitmapButtonCtrl() {
bitmap = "core/art/gui/images/new";
groupNum = "-1";
buttonType = "PushButton";
useMouseEvents = "0";
isContainer = "0";
Profile = "GuiButtonProfile";
HorizSizing = "left";
VertSizing = "bottom";
position = "176 3";
Extent = "17 17";
MinExtent = "8 2";
canSave = "1";
Visible = "1";
Command = "VPathTreeView.CreatePath();";
tooltipprofile = "GuiToolTipProfile";
tooltip = "Create New Path";
hovertime = "1000";
internalName = "CreateSelection";
canSaveDynamicFields = "0";
};
};
new GuiWindowCollapseCtrl(VPathEditorOptionsWindow) {
internalName = "Window";
canSaveDynamicFields = "0";
Enabled = "1";
isContainer = "1";
Profile = "GuiWindowProfile";
HorizSizing = "windowRelative";
VertSizing = "windowRelative";
Position = getWord($pref::Video::mode, 0) - 209
SPC getWord(EditorGuiToolbar.extent, 1) + getWord(VPathEditorTreeWindow.extent, 1) - 2;
Extent = "210 530";
MinExtent = "210 298";
canSave = "1";
Visible = "1";
tooltipprofile = "GuiToolTipProfile";
hovertime = "1000";
Margin = "0 0 0 0";
Padding = "0 0 0 0";
AnchorTop = "1";
AnchorBottom = "0";
AnchorLeft = "1";
AnchorRight = "0";
resizeWidth = "1";
resizeHeight = "1";
canMove = "1";
canClose = "0";
canMinimize = "0";
canMaximize = "0";
minSize = "50 50";
closeCommand = "EditorGui.setEditor( WorldEditorPlugin );";
EdgeSnap = "1";
text = "Properties";
new GuiContainer(){ //Node Properties
isContainer = "1";
Profile = "inspectorStyleRolloutDarkProfile";
HorizSizing = "width";
VertSizing = "bottom";
Position = "4 24";
Extent = "202 127";
Docking = "Top";
Margin = "3 3 3 3";
new GuiTextCtrl(){
Profile = "GuiDefaultProfile";
HorizSizing = "right";
VertSizing = "bottom";
Position = "5 0";
Extent = "86 18";
text = "Node Properties";
};
new GuiTextCtrl(){
Profile = "GuiTextRightProfile";
HorizSizing = "right";
VertSizing = "bottom";
Position = "7 21";
Extent = "46 18";
text = "Position";
};
new GuiTextEditCtrl(){
internalName = "position";
Profile = "GuiTextEditProfile";
HorizSizing = "width";
VertSizing = "bottom";
Position = "57 21";
Extent = "141 18";
text = "";
AltCommand = "EVPathEditor.setNodePosition( $ThisControl.getValue() );";
};
new GuiTextCtrl(){
Profile = "GuiTextRightProfile";
HorizSizing = "right";
VertSizing = "bottom";
Position = "7 42";
Extent = "46 18";
text = "Rotation";
};
new GuiTextEditCtrl(){
internalName = "rotation";
Profile = "GuiTextEditProfile";
HorizSizing = "width";
VertSizing = "bottom";
Position = "57 42";
Extent = "141 18";
text = "";
AltCommand = "EVPathEditor.setNodeRotation( $ThisControl.getValue() );";
};
new GuiTextCtrl(){
Profile = "GuiTextRightProfile";
HorizSizing = "right";
VertSizing = "bottom";
Position = "7 63";
Extent = "46 18";
text = "Weight";
};
new GuiTextEditCtrl(){
internalName = "weight";
Profile = "GuiTextEditProfile";
HorizSizing = "right";
VertSizing = "bottom";
Position = "57 63";
Extent = "52 18";
text = "";
AltCommand = "EVPathEditor.setNodeWeight( $ThisControl.getValue() );";
};
new GuiTextCtrl(){
Profile = "GuiTextRightProfile";
HorizSizing = "right";
VertSizing = "bottom";
Position = "7 84";
Extent = "46 18";
text = "Orientation";
};
new GuiPopUpMenuCtrl(EPathEditorNodeOrientationMode){
internalName = "weight";
Profile = "GuiPopUpMenuProfile";
HorizSizing = "right";
VertSizing = "bottom";
Position = "57 84";
Extent = "141 18";
text = "";
Command = "OnOrientationChanged();";
};
new GuiTextCtrl(){
Profile = "GuiTextRightProfile";
HorizSizing = "right";
VertSizing = "bottom";
Position = "7 105";
Extent = "46 18";
text = "Lookat Pt";
};
new GuiTextEditCtrl(EPathEditorNodeOrientationData){
internalName = "weight";
Profile = "GuiTextEditProfile";
HorizSizing = "right";
VertSizing = "bottom";
Position = "57 105";
Extent = "141 18";
text = "";
AltCommand = "OnOrientationChanged();";
};
};
new GuiContainer(){ // Path Properties
isContainer = "1";
Profile = "inspectorStyleRolloutDarkProfile";
HorizSizing = "width";
VertSizing = "bottom";
Position = "4 112";
Extent = "202 31";
Docking = "Top";
Margin = "0 0 3 3";
new GuiTextCtrl(){
Profile = "GuiDefaultProfile";
HorizSizing = "right";
VertSizing = "bottom";
Position = "5 0";
Extent = "121 18";
text = "Path Properties";
};
};
new GuiScrollCtrl() {
canSaveDynamicFields = "0";
Enabled = "1";
isContainer = "1";
Profile = "GuiEditorScrollProfile";
HorizSizing = "width";
VertSizing = "height";
Position = "4 150";
Extent = "223 315";
MinExtent = "8 2";
canSave = "1";
Visible = "1";
tooltipprofile = "GuiToolTipProfile";
hovertime = "1000";
Docking = "Client";
Margin = "-14 41 3 3";
Padding = "0 0 0 0";
AnchorTop = "1";
AnchorBottom = "0";
AnchorLeft = "1";
AnchorRight = "0";
willFirstRespond = "1";
hScrollBar = "alwaysOff";
vScrollBar = "dynamic";
lockHorizScroll = "true";
lockVertScroll = "false";
constantThumbHeight = "0";
childMargin = "0 0";
new GuiInspector(VPathInspector) {
StackingType = "Vertical";
HorizStacking = "Left to Right";
VertStacking = "Top to Bottom";
Padding = "1";
canSaveDynamicFields = "0";
Enabled = "1";
isContainer = "1";
Profile = "GuiTransparentProfile";
HorizSizing = "right";
VertSizing = "bottom";
Position = "1 1";
Extent = "179 16";
MinExtent = "16 16";
canSave = "1";
Visible = "1";
tooltipprofile = "GuiToolTipProfile";
hovertime = "1000";
dividerMargin = "5";
};
};
new GuiMLTextCtrl(VPathFieldInfoControl) {
canSaveDynamicFields = "0";
Enabled = "1";
isContainer = "0";
Profile = "GuiInspectorFieldInfoMLTextProfile";
HorizSizing = "width";
VertSizing = "top";
Position = "1 485";
Extent = "202 42";
MinExtent = "8 2";
canSave = "1";
Visible = "1";
tooltipprofile = "GuiToolTipProfile";
hovertime = "1000";
lineSpacing = "2";
allowColorChars = "0";
maxChars = "-1";
useURLMouseCursor = "0";
};
};
};
//--- OBJECT WRITE END ---
function EPathEditorNodeOrientationMode::onWake( %this )
{
if ( %this.size() == 0 )
{
%this.add( "FREE", 0 );
%this.add( "TOPOINT", 1 );
}
}
function OnOrientationChanged()
{
%mode = EPathEditorNodeOrientationMode.getText();
%data = EPathEditorNodeOrientationData.getText();
EVPathEditor.setNodeOrientationMode( %mode, %data );
}

View file

@ -0,0 +1,176 @@
//-----------------------------------------------------------------------------
// Verve
// Copyright (C) - Violent Tulip
//-----------------------------------------------------------------------------
%paletteId = new GuiControl(VPathEditorPalette) {
canSaveDynamicFields = "0";
Enabled = "1";
isContainer = "1";
Profile = "GuiDefaultProfile";
HorizSizing = "right";
VertSizing = "bottom";
Position = "0 0";
Extent = "1024 768";
MinExtent = "8 2";
canSave = "1";
Visible = "1";
hovertime = "1000";
new GuiBitmapButtonCtrl(EVPathEditorSelectButton) {
canSaveDynamicFields = "0";
internalName = "";
Enabled = "1";
isContainer = "0";
Profile = "GuiButtonProfile";
HorizSizing = "right";
VertSizing = "bottom";
Position = "0 0";
Extent = "25 19";
MinExtent = "8 2";
canSave = "1";
Visible = "1";
tooltipprofile = "GuiToolTipProfile";
ToolTip = "Select Path / Node (1)";
hovertime = "1000";
bitmap = "tools/gui/images/menubar/arrow";
buttonType = "RadioButton";
useMouseEvents = "0";
};
new GuiBitmapButtonCtrl(EVPathEditorMoveButton) {
canSaveDynamicFields = "0";
internalName = "";
Enabled = "1";
isContainer = "0";
Profile = "GuiButtonProfile";
HorizSizing = "right";
VertSizing = "bottom";
Position = "0 0";
Extent = "25 19";
MinExtent = "8 2";
canSave = "1";
Visible = "1";
tooltipprofile = "GuiToolTipProfile";
ToolTip = "Move Point (2)";
hovertime = "1000";
bitmap = "tools/worldEditor/images/road-river/move-point";
buttonType = "RadioButton";
useMouseEvents = "0";
};
new GuiBitmapButtonCtrl(EVPathEditorRotateButton) {
canSaveDynamicFields = "0";
internalName = "";
Enabled = "1";
isContainer = "0";
Profile = "GuiButtonProfile";
HorizSizing = "right";
VertSizing = "bottom";
Position = "28 0";
Extent = "25 19";
MinExtent = "8 2";
canSave = "1";
Visible = "1";
tooltipprofile = "GuiToolTipProfile";
ToolTip = "Rotate Point (3)";
hovertime = "1000";
bitmap = "tools/worldEditor/images/road-river/rotate-point";
buttonType = "RadioButton";
useMouseEvents = "0";
};
new GuiBitmapButtonCtrl(EVPathEditorScaleButton) {
canSaveDynamicFields = "0";
internalName = "";
Enabled = "1";
isContainer = "0";
Profile = "GuiButtonProfile";
HorizSizing = "right";
VertSizing = "bottom";
Position = "56 0";
Extent = "25 19";
MinExtent = "8 2";
canSave = "1";
Visible = "1";
tooltipprofile = "GuiToolTipProfile";
ToolTip = "Scale Point (4)";
hovertime = "1000";
bitmap = "tools/worldEditor/images/road-river/scale-point";
buttonType = "RadioButton";
useMouseEvents = "0";
};
new GuiBitmapButtonCtrl(EVPathEditorAddNodeButton) {
canSaveDynamicFields = "0";
internalName = "";
Enabled = "1";
isContainer = "0";
Profile = "GuiButtonProfile";
HorizSizing = "right";
VertSizing = "bottom";
Position = "28 0";
Extent = "25 19";
MinExtent = "8 2";
canSave = "1";
Visible = "1";
tooltipprofile = "GuiToolTipProfile";
ToolTip = "Add Node (5)";
hovertime = "1000";
bitmap = "tools/worldEditor/images/road-river/add-point";
buttonType = "RadioButton";
useMouseEvents = "0";
};
new GuiBitmapButtonCtrl(EVPathEditorDeleteNodeButton) {
canSaveDynamicFields = "0";
internalName = "";
Enabled = "1";
isContainer = "0";
Profile = "GuiButtonProfile";
HorizSizing = "right";
VertSizing = "bottom";
Position = "56 0";
Extent = "25 19";
MinExtent = "8 2";
canSave = "1";
Visible = "1";
tooltipprofile = "GuiToolTipProfile";
ToolTip = "Delete Node (6)";
hovertime = "1000";
bitmap = "tools/worldEditor/images/road-river/subtract-point";
buttonType = "RadioButton";
useMouseEvents = "0";
};
};
//-----------------------------------------------------------------------------
function EVPathEditorSelectButton::onClick( %this )
{
EVPathEditor.EditMode = "Gizmo";
GlobalGizmoProfile.Mode = "Select";
}
function EVPathEditorMoveButton::onClick( %this )
{
EVPathEditor.EditMode = "Gizmo";
GlobalGizmoProfile.Mode = "Move";
}
function EVPathEditorRotateButton::onClick( %this )
{
EVPathEditor.EditMode = "Gizmo";
GlobalGizmoProfile.Mode = "Rotate";
}
function EVPathEditorScaleButton::onClick( %this )
{
EVPathEditor.EditMode = "Gizmo";
GlobalGizmoProfile.Mode = "Scale";
}
function EVPathEditorAddNodeButton::onClick( %this )
{
EVPathEditor.EditMode = "AddNode";
}
function EVPathEditorDeleteNodeButton::onClick( %this )
{
EVPathEditor.EditMode = "DeleteNode";
}

View file

@ -0,0 +1,72 @@
//-----------------------------------------------------------------------------
// Verve
// Copyright (C) - Violent Tulip
//-----------------------------------------------------------------------------
%guiContent = new GuiControl(VPathEditorToolbar)
{
canSaveDynamicFields = "0";
internalName = "VPathEditorToolbar";
Enabled = "1";
isContainer = "1";
Profile = "GuiDefaultProfile";
HorizSizing = "right";
VertSizing = "bottom";
Position = "306 0";
Extent = "800 32";
MinExtent = "8 2";
canSave = "1";
Visible = "0";
hovertime = "1000";
canMove = "0";
canClose = "0";
canMinimize = "0";
canMaximize = "0";
resizeWidth = "0";
resizeHeight = "0";
EdgeSnap = "0";
text ="";
new GuiTextCtrl()
{
internalName = "ToolbarLabel";
profile = "GuiTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "2 7";
extent = "77 16";
minExtent = "8 8";
visible = "1";
text = " VPath Settings";
maxLength = "255";
helpTag = "0";
};
new GuiPopUpMenuCtrl(VPathEditorToolbarPathTypeMenu)
{
canSaveDynamicFields = "0";
internalName = "PathTypeMenu";
Enabled = "1";
isContainer = "0";
Profile = "GuiPopUpMenuProfile";
HorizSizing = "right";
VertSizing = "bottom";
Position = "85 7";
Extent = "70 18";
MinExtent = "8 2";
canSave = "1";
Visible = "1";
hovertime = "1000";
Margin = "0 0 0 0";
Padding = "0 0 0 0";
AnchorTop = "1";
AnchorBottom = "0";
AnchorLeft = "1";
AnchorRight = "0";
maxLength = "1024";
maxPopupHeight = "200";
sbUsesNAColor = "0";
reverseTextList = "0";
bitmapBounds = "16 16";
};
};

View file

@ -0,0 +1,228 @@
//-----------------------------------------------------------------------------
// Verve
// Copyright (C) - Violent Tulip
//-----------------------------------------------------------------------------
function EVPathEditor::onDeleteKey( %this )
{
%editPath = EVPathEditor.getSelectedPath();
%editNode = EVPathEditor.getSelectedNode();
if ( isObject( %editPath ) && %editNode != -1 )
{
// Delete the Node.
%this.deleteSelection();
}
else
{
// Clear Selection.
%this.clearSelection();
// Delete the Path.
MEDeleteUndoAction::submit( %editPath );
}
}
function EVPathEditor::onUpdateSelection( %this, %editPath, %editNode )
{
// Clear World Editor Selection.
EWorldEditor.clearSelection();
%clearNode = true;
if ( isObject( %editPath ) )
{
// Reset Type.
VPathEditorToolbarPathTypeMenu.setText( %editPath.PathType );
// Set World Editor Selection.
EWorldEditor.selectObject( %editPath );
// Inspect.
VPathInspector.inspect( %editPath );
// Update the Node Inspector.
if ( %editNode != -1 )
{
// Valid Node.
%clearNode = false;
VPathEditorOptionsWindow-->position.setActive( true );
VPathEditorOptionsWindow-->position.setValue( %editPath.getNodeLocalPosition( %editNode ) );
VPathEditorOptionsWindow-->rotation.setActive( true );
VPathEditorOptionsWindow-->rotation.setValue( %editPath.getNodeLocalRotation( %editNode ) );
VPathEditorOptionsWindow-->weight.setActive( true );
VPathEditorOptionsWindow-->weight.setValue( %editPath.getNodeWeight( %editNode ) );
%orientationMode = %editPath.getNodeOrientationMode( %editNode );
%orientationType = EPathEditorNodeOrientationMode.findText( strupr( getField( %orientationMode, 0 ) ) );
%orientationData = getField( %orientationMode, 1 );
EPathEditorNodeOrientationMode.setSelected( %orientationType, false );
EPathEditorNodeOrientationData.Text = %orientationData;
}
}
// Invalid Node?
if ( %clearNode )
{
VPathEditorOptionsWindow-->position.setActive( false );
VPathEditorOptionsWindow-->position.setValue( "" );
VPathEditorOptionsWindow-->rotation.setActive( true );
VPathEditorOptionsWindow-->rotation.setValue( "" );
VPathEditorOptionsWindow-->weight.setActive( true );
VPathEditorOptionsWindow-->weight.setValue( "" );
}
}
function VPathEditorToolbarPathTypeMenu::onSelect( %this )
{
%editPath = EVPathEditor.getSelectedPath();
if ( isObject( %editPath ) )
{
// Apply Type.
%editPath.PathType = %this.getText();
}
}
function VPathTreeView::onInspect( %this, %object )
{
// VPath?
if ( !%object.isMemberOfClass( "VPath" ) )
{
return;
}
// Select Object.
EVPathEditor.setSelection( %object );
}
function VPathTreeView::DeleteSelectedPaths( %this )
{
// Clear the Selection.
EVPathEditor.clearSelection();
// Iterate over Selection.
%selectionList = %this.getSelectedItemList();
%selectionCount = getWordCount( %selectionList );
for ( %i = 0; %i < %selectionCount; %i++ )
{
// Fetch Index.
%itemIndex = getWord( %selectionList, %i );
// Fetch Object.
%itemObject = %this.getItemValue( %itemIndex );
// Skip Non-Path Objects.
if ( !%itemObject.isMemberOfClass( "VPath" ) )
{
continue;
}
// Delete the Object.
MEDeleteUndoAction::submit( %itemObject );
}
// Clear the Selection.
%this.clearSelection();
EVPathEditor.clearSelection();
// Build the Tree.
%this.open( GetServerPathSet(), true );
}
function VPathTreeView::CreatePath( %this )
{
// Create Path Object.
EWCreatorWindow.createObject( "ObjectBuilderGui.buildObject( \"VPath\" );" );
}
//-----------------------------------------------------------------------------
//
// Node Editing
//
//-----------------------------------------------------------------------------
function EVPathEditor::onUpdateNode( %this, %editPath, %editNode, %selected )
{
if ( %selected )
{
%this.onUpdateNodePosition( %editPath, %editNode, %selected );
%this.onUpdateNodeRotation( %editPath, %editNode, %selected );
%this.onUpdateNodeWeight( %editPath, %editNode, %selected );
%this.onUpdateNodeOrientation( %editPath, %editNode, %selected );
}
}
function EVPathEditor::onUpdateNodePosition( %this, %editPath, %editNode, %selected )
{
if ( %selected )
{
VPathEditorOptionsWindow-->position.setValue( %editPath.getNodeLocalPosition( %editNode ) );
}
}
function EVPathEditor::onUpdateNodeRotation( %this, %editPath, %editNode, %selected )
{
if ( %selected )
{
VPathEditorOptionsWindow-->rotation.setValue( %editPath.getNodeLocalRotation( %editNode ) );
}
}
function EVPathEditor::onUpdateNodeWeight( %this, %editPath, %editNode, %selected )
{
if ( %selected )
{
VPathEditorOptionsWindow-->weight.setValue( %editPath.getNodeWeight( %editNode ) );
}
}
function EVPathEditor::onUpdateNodeOrientation( %this, %editPath, %editNode, %selected )
{
if ( %selected )
{
%orientationMode = %editPath.getNodeOrientationMode( %editNode );
%orientationType = EPathEditorNodeOrientationMode.findText( strupr( getField( %orientationMode, 0 ) ) );
%orientationData = getField( %orientationMode, 1 );
// Change?
if ( EPathEditorNodeOrientationMode.getSelected() != %orientationType )
{
// Update.
EPathEditorNodeOrientationMode.setSelected( %orientationType );
}
// Change?
if ( EPathEditorNodeOrientationData.getText() !$= %orientationData )
{
// Update.
EPathEditorNodeOrientationData.setText( %orientationData );
}
}
}
//-----------------------------------------------------------------------------
//
// Inspector
//
//-----------------------------------------------------------------------------
function VPathInspector::inspect( %this, %obj )
{
VPathFieldInfoControl.setText( "" );
Parent::inspect( %this, %obj );
}
function VPathInspector::onInspectorFieldModified( %this, %object, %fieldName, %arrayIndex, %oldValue, %newValue )
{
// Same work to do as for the regular WorldEditor Inspector.
Inspector::onInspectorFieldModified( %this, %object, %fieldName, %arrayIndex, %oldValue, %newValue );
}
function VPathInspector::onFieldSelected( %this, %fieldName, %fieldTypeStr, %fieldDoc )
{
VPathFieldInfoControl.setText( "<font:ArialBold:14>" @ %fieldName @ "<font:ArialItalic:14> (" @ %fieldTypeStr @ ") " NL "<font:Arial:14>" @ %fieldDoc );
}

View file

@ -0,0 +1,178 @@
//-----------------------------------------------------------------------------
// Verve
// Copyright (C) - Violent Tulip
//-----------------------------------------------------------------------------
new ScriptObject( VPathEditorPlugin )
{
SuperClass = "EditorPlugin";
};
//-----------------------------------------------------------------------------
function VPathEditorPlugin::onWorldEditorStartup( %this )
{
//----------------------------------------------------------------------
//
// Editor Init
//
//----------------------------------------------------------------------
EditorGui.add( EVPathEditor );
EVPathEditor.setVisible( false );
%this.EditorMap = new ActionMap();
%this.EditorMap.bindCmd( keyboard, "backspace", "EVPathEditor.onDeleteKey();", "" );
%this.EditorMap.bindCmd( keyboard, "delete", "EVPathEditor.onDeleteKey();", "" );
%this.EditorMap.bindCmd( keyboard, "1", "EVPathEditorSelectButton.performClick();", "" );
%this.EditorMap.bindCmd( keyboard, "2", "EVPathEditorMoveButton.performClick();", "" );
%this.EditorMap.bindCmd( keyboard, "3", "EVPathEditorRotateButton.performClick();", "" );
%this.EditorMap.bindCmd( keyboard, "4", "EVPathEditorScaleButton.performClick();", "" );
//----------------------------------------------------------------------
//
// Editor Toggles
//
//----------------------------------------------------------------------
// Add ourselves to the window menu.
%accel = EditorGui.addToEditorsMenu( "Path Editor", "", VPathEditorPlugin );
// Add ourselves to the ToolsToolbar
%tooltip = "Path Editor (" @ %accel @ ")";
EditorGui.addToToolsToolbar( "VPathEditorPlugin", "VPathEditorPalette", expandFilename( "tools/VPathEditor/GUI/Images/btn_Palette" ), %tooltip );
// Find and Store the Button.
%this.ToolbarButton = ToolsToolbarArray.findObjectByInternalName( "VPathEditorPalette", false );
// Extend Width.
%extent = EWToolsToolbar.getExtent();
EWToolsToolbar.setExtent( ( getWord( %extent, 0 ) + 33 ) SPC getWord( %extent, 1 ) );
//----------------------------------------------------------------------
//
// Initialise Toolbar
//
//----------------------------------------------------------------------
if ( !isObject( VPathEditorToolbar ) )
{
exec( "~/VPathEditor/GUI/VPathEditorToolbar.gui" );
}
// Add Toolbar.
EditorGuiToolbar.add( VPathEditorToolbar );
// Populate Type Menu.
VPathEditorToolbarPathTypeMenu.clear();
VPathEditorToolbarPathTypeMenu.add( "BEZIER", 0 );
VPathEditorToolbarPathTypeMenu.add( "LINEAR", 1 );
VPathEditorToolbarPathTypeMenu.setFirstSelected();
//----------------------------------------------------------------------
//
// Initialise Editor Palette
//
//----------------------------------------------------------------------
if ( !isObject( VPathEditorPalette ) )
{
exec( "~/VPathEditor/GUI/VPathEditorPalette.gui" );
}
// Use Existing Group Number + 1.
%groupNum = ToolsPaletteArray.getObject( ToolsPaletteArray.getCount() - 1 ).GroupNum + 1;
%paletteGroup = VPathEditorPalette;
while ( VPathEditorPalette.getCount() > 0 )
{
// Fetch Button.
%paletteButton = %paletteGroup.getObject( 0 );
// Setup.
%paletteButton.Visible = false;
%paletteButton.GroupNum = %groupNum;
%paletteButton.PaletteName = VPathEditorPalette;
// Add To Palette Array.
ToolsPaletteArray.addGuiControl( %paletteButton );
}
//----------------------------------------------------------------------
//
// Initialise Library
//
//----------------------------------------------------------------------
EWCreatorWindow.registerMissionObject( "VPath", "VPath", "", "Level" );
}
//EditorGui.setEditor(\"VPathEditorPlugin\");
function VPathEditorPlugin::onActivated( %this )
{
if ( !isObject( EVPathEditor ) )
{
return;
}
// Display Editor.
EVPathEditor.setVisible( true );
EVPathEditor.makeFirstResponder( true );
EditorGui.bringToFront( EVPathEditor );
VPathEditorToolbar.setVisible( true );
VPathTreeView.open( GetServerPathSet(), true );
// Sync Gizmo.
%this.syncGizmo();
// Enable Map.
%this.EditorMap.push();
// Valid Selection?
if ( EWorldEditor.getSelectionSize() )
{
%selection = EWorldEditor.getSelectedObject( 0 );
if ( isObject( %selection ) && %selection.isMemberOfClass( "VPath" ) )
{
// Select Object.
EVPathEditor.setSelection( %selection );
}
}
// Parent Call.
Parent::onActivated( %this );
}
function VPathEditorPlugin::onDeactivated( %this )
{
// Hide Editor.
EVPathEditor.setVisible( false );
VPathEditorToolbar.setVisible( false );
// Disable Map.
%this.EditorMap.pop();
// Parent Call.
Parent::onDeactivated( %this );
}
function VPathEditorPlugin::isDirty( %this )
{
return EVPathEditor.isDirty;
}
function VPathEditorPlugin::clearDirty( %this )
{
EVPathEditor.isDirty = false;
}
function VPathEditorPlugin::syncGizmo( %this )
{
switch$( GlobalGizmoProfile.Mode )
{
case "None" : EVPathEditorSelectButton.performClick();
case "Move" : EVPathEditorMoveButton.performClick();
case "Rotate" : EVPathEditorRotateButton.performClick();
case "Scale" : EVPathEditorScaleButton.performClick();
}
}

View file

@ -0,0 +1,20 @@
//-----------------------------------------------------------------------------
// Verve
// Copyright (C) - Violent Tulip
//-----------------------------------------------------------------------------
function InitializeVPathEditor()
{
// Gui.
exec( "./GUI/Profiles.cs" );
exec( "./GUI/VPathEditor.gui" );
// Scripts.
exec( "./Scripts/Plugin.cs" );
exec( "./Scripts/Editor.cs" );
}
function DestroyVPathEditor()
{
// Void.
}

View file

@ -0,0 +1,23 @@
//-----------------------------------------------------------------------------
// Verve
// Copyright (C) - Violent Tulip
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//
// Recent Files
//
//-----------------------------------------------------------------------------
$Pref::VerveEditor::RecentFileSize = 10;
//-----------------------------------------------------------------------------
//
// Event Snap
//
//-----------------------------------------------------------------------------
$Pref::VerveEditor::Event::SnapToTime = true;
$Pref::VerveEditor::Event::SnapToTimeThreshold = 100;
$Pref::VerveEditor::Event::SnapToSiblings = true;
$Pref::VerveEditor::Event::SnapToSiblingThreshold = 100;

View file

@ -0,0 +1,213 @@
//-----------------------------------------------------------------------------
// Verve
// Copyright (C) - Violent Tulip
//-----------------------------------------------------------------------------
singleton GuiControlProfile( VEditorDefaultProfile )
{
opaque = true;
fillColor = "70 70 70";
fillColorHL = "90 90 90";
fillColorNA = "70 70 70";
border = 1;
borderColor = "120 120 120";
borderColorHL = "100 100 100";
borderColorNA = "240 240 240";
fontType = "Arial";
fontSize = 12;
fontCharset = ANSI;
fontColor = "255 255 255";
fontColorHL = "255 255 255";
fontColorNA = "255 255 255";
fontColorSEL = "255 255 255";
};
singleton GuiControlProfile( VEditorTestProfile )
{
opaque = true;
fillColor = "255 255 0";
fillColorHL = "255 255 0";
fillColorNA = "255 255 0";
};
singleton GuiControlProfile( VEditorNoFillProfile : VEditorDefaultProfile )
{
opaque = false;
};
singleton GuiControlProfile( VEditorNoBorderProfile : VEditorDefaultProfile )
{
border = false;
};
singleton GuiControlProfile( VEditorTransparentProfile : VEditorDefaultProfile )
{
opaque = false;
border = false;
};
//-----------------------------------------------------------------------------
singleton GuiControlProfile( VEditorTextProfile : VEditorDefaultProfile )
{
border = false;
opaque = false;
fontType = "Arial Bold";
};
singleton GuiControlProfile( VEditorTextEditProfile : VEditorDefaultProfile )
{
fillColor = "70 70 70";
fillColorHL = "90 90 90";
fillColorSEL = "0 0 0";
fillColorNA = "70 70 70";
fontColor = "255 255 255";
fontColorHL = "0 0 0";
fontColorSEL = "128 128 128";
fontColorNA = "128 128 128";
textOffset = "4 2";
autoSizeWidth = false;
autoSizeHeight = false;
justify = "left";
tab = true;
canKeyFocus = true;
};
singleton GuiControlProfile( VEditorPopupMenuProfile : GuiPopUpMenuProfile )
{
FillColorHL = "90 90 90";
FillColorSEL = "0 0 0";
FontColorHL = "255 255 255";
};
singleton GuiControlProfile ( VEditorBitmapButtonProfile : VEditorDefaultProfile )
{
justify = "center";
hasBitmapArray = true;
bitmap = "./Images/Button";
};
//-----------------------------------------------------------------------------
singleton GuiControlProfile( VEditorGroupHeaderProfile : VEditorDefaultProfile )
{
CanKeyFocus = true;
TextOffset = "23 0";
fontColor = "70 70 70";
};
singleton GuiControlProfile( VEditorGroupHeaderErrorProfile : VEditorGroupHeaderProfile )
{
fontColor = "255 70 70";
};
singleton GuiControlProfile( VEditorGroupTrackProfile : VEditorTransparentProfile )
{
CanKeyFocus = true;
};
singleton GuiControlProfile( VEditorTrackProfile : VEditorDefaultProfile )
{
CanKeyFocus = true;
TextOffset = "33 0";
opaque = true;
fillColor = "255 255 255 15";
fillColorHL = "151 166 191 60";
borderColor = "100 100 100";
};
singleton GuiControlProfile( VEditorTrackErrorProfile : VEditorTrackProfile )
{
fontColor = "255 70 70";
};
singleton GuiControlProfile( VEditorEventProfile : VEditorDefaultProfile )
{
CanKeyFocus = true;
Justify = "left";
TextOffset = "6 1";
fillColor = "81 81 81";
fillColorHL = "102 102 102";
borderColor = "255 255 255";
borderColorHL = "255 255 255";
borderColorNA = "100 100 100";
};
singleton GuiControlProfile( VEditorTimeLineProfile : VEditorDefaultProfile )
{
CanKeyFocus = true;
opaque = false;
fillColorHL = "255 255 255 15";
border = false;
borderColor = "100 100 100";
};
singleton GuiControlProfile( VEditorPropertyProfile : VEditorDefaultProfile )
{
fillColor = "102 102 102";
};
//-----------------------------------------------------------------------------
singleton GuiControlProfile ( VEditorScrollProfile : VEditorDefaultProfile )
{
opaque = false;
border = false;
hasBitmapArray = true;
bitmap = "./Images/ScrollBar";
};
singleton GuiControlProfile ( VEditorCheckBoxProfile : GuiCheckBoxProfile )
{
// Void.
};
//-----------------------------------------------------------------------------
singleton GuiControlProfile( VEditorPropertyRolloutProfile : GuiRolloutProfile )
{
border = 0;
hasBitmapArray = true;
bitmap = "./Images/PropertyRollout";
fontType = "Arial";
fontSize = 12;
fontCharset = ANSI;
fontColor = "255 255 255";
fontColorHL = "255 255 255";
fontColorNA = "255 255 255";
fontColorSEL = "255 255 255";
};
singleton GuiControlProfile( VEditorPropertyLabelProfile : VEditorTextProfile )
{
border = "1";
justify = "center";
};
//-----------------------------------------------------------------------------
singleton GuiControlProfile( VEditorPreferenceLabelProfile : GuiTextProfile )
{
opaque = true;
fillColor = "242 241 240";
fillColorHL = "242 241 240";
fillColorNA = "242 241 240";
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 272 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Some files were not shown because too many files have changed in this diff Show more