Merge branch 'VerveMergeWIP' of https://github.com/Areloch/Torque3D into development
19
Templates/BaseGame/game/data/Verve/Verve.cs
Normal 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 )
|
||||
{
|
||||
|
||||
}
|
||||
9
Templates/BaseGame/game/data/Verve/Verve.module
Normal 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>
|
||||
|
After Width: | Height: | Size: 2.8 KiB |
|
|
@ -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>
|
||||
|
|
@ -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>
|
||||
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 4.8 KiB |
|
|
@ -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 ---
|
||||
|
||||
43
Templates/BaseGame/game/data/Verve/gui/VerveCinematic.gui
Normal 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 ---
|
||||
|
|
@ -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");
|
||||
|
|
@ -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";
|
||||
};
|
||||
|
|
@ -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";
|
||||
};
|
||||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
@ -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 );
|
||||
}
|
||||
|
|
@ -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";
|
||||
};
|
||||
|
|
@ -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>
|
||||
|
|
@ -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>
|
||||
|
|
@ -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>
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
12
Templates/BaseGame/game/tools/VPathEditor/GUI/Profiles.cs
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// Verve
|
||||
// Copyright (C) - Violent Tulip
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
singleton GuiControlProfile( VPathEditorProfile )
|
||||
{
|
||||
CanKeyFocus = true;
|
||||
|
||||
FontType = "Arial Bold";
|
||||
FontColor = "0 0 0";
|
||||
};
|
||||
434
Templates/BaseGame/game/tools/VPathEditor/GUI/VPathEditor.gui
Normal 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 );
|
||||
}
|
||||
|
|
@ -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";
|
||||
}
|
||||
|
|
@ -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";
|
||||
};
|
||||
};
|
||||
228
Templates/BaseGame/game/tools/VPathEditor/Scripts/Editor.cs
Normal 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 );
|
||||
}
|
||||
178
Templates/BaseGame/game/tools/VPathEditor/Scripts/Plugin.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
20
Templates/BaseGame/game/tools/VPathEditor/main.cs
Normal 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.
|
||||
}
|
||||
23
Templates/BaseGame/game/tools/VerveEditor/DefaultPrefs.cs
Normal 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;
|
||||
BIN
Templates/BaseGame/game/tools/VerveEditor/GUI/Buttons.psd
Normal file
213
Templates/BaseGame/game/tools/VerveEditor/GUI/GuiProfiles.cs
Normal 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";
|
||||
};
|
||||
BIN
Templates/BaseGame/game/tools/VerveEditor/GUI/Images/Button.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 272 B |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
BIN
Templates/BaseGame/game/tools/VerveEditor/GUI/Images/Spacer.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 3.7 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 3.7 KiB |
|
After Width: | Height: | Size: 3.7 KiB |