Quadravol can be picked up and selected, more later.
Removed subpixel shader (causes rendering issues).
|
|
@ -1,2 +1,3 @@
|
||||||
canvastexture LOGOFADE 4 4
|
canvastexture LOGOFADE 4 4
|
||||||
canvastexture SHEENLED 128 128
|
canvastexture SHEENLED 128 128
|
||||||
|
canvastexture QUADRLED 64 64
|
||||||
|
|
|
||||||
24
gldefs.ammo
|
|
@ -175,6 +175,26 @@ Object GoldShell
|
||||||
Frame "XZW1" { light "GOLDSHELLLIGHT" }
|
Frame "XZW1" { light "GOLDSHELLLIGHT" }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PointLight QUADAMMOLIGHT
|
||||||
|
{
|
||||||
|
Color 0.4 0.25 0.0
|
||||||
|
Size 20
|
||||||
|
Offset 0 16 0
|
||||||
|
Attenuate 1
|
||||||
|
}
|
||||||
|
Object QuadravolAmmo
|
||||||
|
{
|
||||||
|
Frame "XZW1" { light "QUADAMMOLIGHT" }
|
||||||
|
}
|
||||||
|
Object QuadravolAmmo2
|
||||||
|
{
|
||||||
|
Frame "XZW1" { light "QUADAMMOLIGHT" }
|
||||||
|
}
|
||||||
|
Object QuadravolAmmo3
|
||||||
|
{
|
||||||
|
Frame "XZW1" { light "QUADAMMOLIGHT" }
|
||||||
|
}
|
||||||
|
|
||||||
PointLight SPARKUNITLIGHT
|
PointLight SPARKUNITLIGHT
|
||||||
{
|
{
|
||||||
Color 0.25 0.15 0.3
|
Color 0.25 0.15 0.3
|
||||||
|
|
@ -186,6 +206,10 @@ Object SparkUnit
|
||||||
{
|
{
|
||||||
Frame "XZW1" { light "SPARKUNITLIGHT" }
|
Frame "XZW1" { light "SPARKUNITLIGHT" }
|
||||||
}
|
}
|
||||||
|
Object SparkUnit2
|
||||||
|
{
|
||||||
|
Frame "XZW1" { light "SPARKUNITLIGHT" }
|
||||||
|
}
|
||||||
|
|
||||||
PointLight FABTIER1LIGHT
|
PointLight FABTIER1LIGHT
|
||||||
{
|
{
|
||||||
|
|
|
||||||
5
gldefs.quadravol
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
HardwareShader Texture "models/QuadLED.png"
|
||||||
|
{
|
||||||
|
Shader "shaders/glsl/BrightCanvas.fp"
|
||||||
|
Texture "scrtex" "QUADRLED"
|
||||||
|
}
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
HardwareShader Texture "models/SheenLED.png"
|
HardwareShader Texture "models/SheenLED.png"
|
||||||
{
|
{
|
||||||
Shader "shaders/glsl/Subpixel.fp"
|
Shader "shaders/glsl/BrightCanvas.fp"
|
||||||
Texture "scrtex" "SHEENLED"
|
Texture "scrtex" "SHEENLED"
|
||||||
Texture "pixtex" "textures/subpixel.png"
|
|
||||||
}
|
}
|
||||||
PointLight SHEENTLIGHT
|
PointLight SHEENTLIGHT
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
[default]
|
[default]
|
||||||
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r318 \cu(Sat 13 Aug 16:09:26 CEST 2022)\c-";
|
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r319 \cu(Sat 13 Aug 20:27:51 CEST 2022)\c-";
|
||||||
SWWM_SHORTVER="\cw1.3pre r318 \cu(2022-08-13 16:09:26)\c-";
|
SWWM_SHORTVER="\cw1.3pre r319 \cu(2022-08-13 20:27:51)\c-";
|
||||||
|
|
|
||||||
|
|
@ -12,3 +12,60 @@ Model "Quadravol"
|
||||||
|
|
||||||
FrameIndex XZW1 A 0 0
|
FrameIndex XZW1 A 0 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Model "Quadravol"
|
||||||
|
{
|
||||||
|
Path "models"
|
||||||
|
Model 1 "Quadravol1st_d.3d"
|
||||||
|
SurfaceSkin 1 0 "DemoTags.png"
|
||||||
|
SurfaceSkin 1 1 "DemoArms.png"
|
||||||
|
SurfaceSkin 1 2 "DemoSoft.png"
|
||||||
|
SurfaceSkin 1 3 "Quadravol.png"
|
||||||
|
SurfaceSkin 1 4 "QuadLED.png"
|
||||||
|
|
||||||
|
AngleOffset -90
|
||||||
|
Scale -0.01 0.005 0.01
|
||||||
|
|
||||||
|
// Still
|
||||||
|
FrameIndex XZW2 A 1 0
|
||||||
|
// Deselect
|
||||||
|
FrameIndex XZW2 B 1 1
|
||||||
|
FrameIndex XZW2 C 1 2
|
||||||
|
FrameIndex XZW2 D 1 3
|
||||||
|
FrameIndex XZW2 E 1 4
|
||||||
|
FrameIndex XZW2 F 1 5
|
||||||
|
FrameIndex XZW2 G 1 6
|
||||||
|
FrameIndex XZW2 H 1 7
|
||||||
|
FrameIndex XZW2 I 1 8
|
||||||
|
FrameIndex XZW2 J 1 9
|
||||||
|
FrameIndex XZW2 K 1 10
|
||||||
|
FrameIndex XZW2 L 1 11
|
||||||
|
FrameIndex XZW2 M 1 12
|
||||||
|
FrameIndex XZW2 N 1 13
|
||||||
|
FrameIndex XZW2 O 1 14
|
||||||
|
FrameIndex XZW2 P 1 15
|
||||||
|
FrameIndex XZW2 Q 1 16
|
||||||
|
FrameIndex XZW2 R 1 17 // Select
|
||||||
|
FrameIndex XZW2 S 1 18
|
||||||
|
FrameIndex XZW2 T 1 19
|
||||||
|
FrameIndex XZW2 U 1 20
|
||||||
|
FrameIndex XZW2 V 1 21
|
||||||
|
FrameIndex XZW2 W 1 22
|
||||||
|
FrameIndex XZW2 X 1 23
|
||||||
|
FrameIndex XZW2 Y 1 24
|
||||||
|
FrameIndex XZW2 Z 1 25
|
||||||
|
FrameIndex XZW3 A 1 26
|
||||||
|
FrameIndex XZW3 B 1 27
|
||||||
|
FrameIndex XZW3 C 1 28
|
||||||
|
FrameIndex XZW3 D 1 29
|
||||||
|
FrameIndex XZW3 E 1 30
|
||||||
|
FrameIndex XZW3 F 1 31
|
||||||
|
FrameIndex XZW3 G 1 32
|
||||||
|
FrameIndex XZW3 H 1 33
|
||||||
|
FrameIndex XZW3 I 1 34
|
||||||
|
FrameIndex XZW3 J 1 35
|
||||||
|
FrameIndex XZW3 K 1 36
|
||||||
|
FrameIndex XZW3 L 1 37
|
||||||
|
FrameIndex XZW3 M 1 38
|
||||||
|
FrameIndex XZW3 N 1 39
|
||||||
|
}
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 8.1 KiB After Width: | Height: | Size: 8.1 KiB |
|
Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 6.8 KiB |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 86 B |
BIN
models/QuadLEDBase.png
Normal file
|
After Width: | Height: | Size: 260 B |
BIN
models/QuadLEDCharge.png
Normal file
|
After Width: | Height: | Size: 625 B |
BIN
models/QuadLEDRound.png
Normal file
|
After Width: | Height: | Size: 121 B |
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
BIN
models/Quadravol1st.blend
Normal file
BIN
models/Quadravol1st_a.3d
Normal file
BIN
models/Quadravol1st_d.3d
Normal file
8
shaders/glsl/BrightCanvas.fp
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
// Make canvas textures fullbright, basically
|
||||||
|
|
||||||
|
void SetupMaterial( inout Material mat )
|
||||||
|
{
|
||||||
|
mat.Base = texture(scrtex,vec2(vTexCoord.s,1.-vTexCoord.t)); // canvas textures are upside-down when used by models
|
||||||
|
mat.Normal = ApplyNormalMap(vTexCoord.st);
|
||||||
|
mat.Bright = vec4(1.);
|
||||||
|
}
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
// RGB subpixel filter for Ammo LEDs
|
|
||||||
|
|
||||||
// GRIDSZ = how many subpixels are in the texture (for layouts where subpixel patterns alternate)
|
|
||||||
#ifndef GRIDSZ
|
|
||||||
#define GRIDSZ vec2(1.,1.)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void SetupMaterial( inout Material mat )
|
|
||||||
{
|
|
||||||
mat.Base = texture(scrtex,vec2(vTexCoord.s,1.-vTexCoord.t)); // canvas textures are upside-down when used by models
|
|
||||||
vec2 uv = (vTexCoord.st*vec2(textureSize(scrtex,0)))/GRIDSZ;
|
|
||||||
mat.Base *= 1.5*texture(pixtex,uv);
|
|
||||||
mat.Normal = ApplyNormalMap(vTexCoord.st);
|
|
||||||
mat.Bright = vec4(1.);
|
|
||||||
}
|
|
||||||
|
Before Width: | Height: | Size: 221 B |
|
Before Width: | Height: | Size: 233 B |
|
Before Width: | Height: | Size: 1.3 KiB |
|
|
@ -14,7 +14,7 @@ Class HeavyMahSheenGun : SWWMWeapon
|
||||||
transient SpreadSlugTracer st;
|
transient SpreadSlugTracer st;
|
||||||
|
|
||||||
transient ui Canvas AmmoLed;
|
transient ui Canvas AmmoLed;
|
||||||
ui TextureID AmmoLedBase, AmmoLedBar, AmmoLedSpeed, AmmoLedNums, AmmoLedCam;
|
ui TextureID AmmoLedBase, AmmoLedBar, AmmoLedSpeed, AmmoLedNums;
|
||||||
|
|
||||||
override void RenderTexture( RenderEvent e )
|
override void RenderTexture( RenderEvent e )
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,50 @@ Class Quadravol : SWWMWeapon
|
||||||
int clipcount;
|
int clipcount;
|
||||||
int chargelevel;
|
int chargelevel;
|
||||||
bool chambered, charged;
|
bool chambered, charged;
|
||||||
|
bool onehand;
|
||||||
|
|
||||||
Property ClipCount : clipcount;
|
Property ClipCount : clipcount;
|
||||||
|
|
||||||
|
transient ui Canvas AmmoLed;
|
||||||
|
ui TextureID AmmoLedBase, AmmoLedRound, AmmoLedCharge;
|
||||||
|
|
||||||
|
override void RenderTexture( RenderEvent e )
|
||||||
|
{
|
||||||
|
if ( !AmmoLed ) AmmoLed = TexMan.GetCanvas("QUADRLED");
|
||||||
|
if ( !AmmoLedBase ) AmmoLedBase = TexMan.CheckForTexture("models/QuadLEDBase.png",TexMan.Type_Any);
|
||||||
|
if ( !AmmoLedRound ) AmmoLedRound = TexMan.CheckForTexture("models/QuadLEDRound.png",TexMan.Type_Any);
|
||||||
|
if ( !AmmoLedCharge ) AmmoLedCharge = TexMan.CheckForTexture("models/QuadLEDCharge.png",TexMan.Type_Any);
|
||||||
|
AmmoLed.Clear(0,0,64,64,0xFF101033);
|
||||||
|
AmmoLed.DrawTexture(AmmoLedBase,false,0,0,DTA_LegacyRenderStyle,STYLE_Add,DTA_Color,0xFF00FFFF);
|
||||||
|
Vector3 lainbow = SWWMUtility.HSVToRGB(((5-chargelevel)/7.5,1.,1.));
|
||||||
|
Color col = Color(255,int(lainbow.x*255),int(lainbow.y*255),int(lainbow.z*255));
|
||||||
|
AmmoLed.DrawTexture(AmmoLedCharge,false,12,4,DTA_SrcX,(chargelevel%4)*64,DTA_SrcY,(chargelevel/4)*64,DTA_SrcWidth,40,DTA_SrcHeight,40,DTA_DestWidth,40,DTA_DestHeight,40,DTA_LegacyRenderStyle,STYLE_Add,DTA_Color,(chargelevel>0)?col:0xFF00FF00);
|
||||||
|
for ( int i=0; i<clipcount; i++ ) AmmoLed.DrawTexture(AmmoLedRound,false,36-8*i,52,DTA_LegacyRenderStyle,STYLE_Add,DTA_Color,0xFF0000FF);
|
||||||
|
if ( chambered ) AmmoLed.DrawTexture(AmmoLedRound,false,52,52,DTA_LegacyRenderStyle,STYLE_Add,DTA_Color,charged?0xFF0000FF:0xFF00FF00);
|
||||||
|
}
|
||||||
|
|
||||||
|
override bool ReportHUDAmmo()
|
||||||
|
{
|
||||||
|
return (chargelevel>0)||(chambered&&!charged)||(clipcount>0)||(Ammo1.Amount > 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
override bool CheckAmmo( int firemode, bool autoswitch, bool requireammo, int ammocount )
|
||||||
|
{
|
||||||
|
if ( (firemode == PrimaryFire) || (firemode == EitherFire) )
|
||||||
|
{
|
||||||
|
if ( (chargelevel > 0) || (chambered && !charged) || (clipcount > 0) || (Ammo1.Amount > 0) ) return true;
|
||||||
|
if ( autoswitch ) PlayerPawn(Owner).PickNewWeapon(null);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return Super.CheckAmmo(firemode,autoswitch,requireammo,ammocount);
|
||||||
|
}
|
||||||
|
|
||||||
|
override void PlayUpSound( Actor origin )
|
||||||
|
{
|
||||||
|
if ( onehand ) origin.A_StartSound("quadshot/selectfast",CHAN_WEAPON,CHANF_OVERLAP);
|
||||||
|
else origin.A_StartSound(UpSound,CHAN_WEAPON,CHANF_OVERLAP);
|
||||||
|
}
|
||||||
|
|
||||||
Default
|
Default
|
||||||
{
|
{
|
||||||
Tag "$T_QUADRAVOL";
|
Tag "$T_QUADRAVOL";
|
||||||
|
|
@ -19,12 +60,14 @@ Class Quadravol : SWWMWeapon
|
||||||
Weapon.SlotNumber 6;
|
Weapon.SlotNumber 6;
|
||||||
Weapon.SlotPriority 2.;
|
Weapon.SlotPriority 2.;
|
||||||
Weapon.SelectionOrder 650;
|
Weapon.SelectionOrder 650;
|
||||||
|
Weapon.UpSound "quadshot/select";
|
||||||
Weapon.AmmoType1 "QuadravolAmmo";
|
Weapon.AmmoType1 "QuadravolAmmo";
|
||||||
Weapon.AmmoGive1 1;
|
Weapon.AmmoGive1 1;
|
||||||
SWWMWeapon.DropAmmoType "SWWMRocketAmmoSmall";
|
SWWMWeapon.DropAmmoType "SWWMRocketAmmoSmall";
|
||||||
Quadravol.ClipCount 5;
|
Quadravol.ClipCount 5;
|
||||||
Stamina 80000;
|
Stamina 80000;
|
||||||
+SWWMWEAPON.NOFIRSTGIVE;
|
+SWWMWEAPON.NOFIRSTGIVE;
|
||||||
|
+SWWMWEAPON.HASSCRTEX;
|
||||||
+WEAPON.EXPLOSIVE;
|
+WEAPON.EXPLOSIVE;
|
||||||
Radius 28;
|
Radius 28;
|
||||||
Height 32;
|
Height 32;
|
||||||
|
|
@ -34,5 +77,34 @@ Class Quadravol : SWWMWeapon
|
||||||
Spawn:
|
Spawn:
|
||||||
XZW1 A -1;
|
XZW1 A -1;
|
||||||
Stop;
|
Stop;
|
||||||
|
Select:
|
||||||
|
XZW2 R 1 A_FullRaise();
|
||||||
|
XZW2 STUVWXYZ 1;
|
||||||
|
XZW3 ABCDEFGHI 1;
|
||||||
|
XZW3 JKLMN 2;
|
||||||
|
Goto Ready;
|
||||||
|
Ready:
|
||||||
|
XZW2 A 1 A_WeaponReady();
|
||||||
|
Wait;
|
||||||
|
Fire:
|
||||||
|
XZW2 A 1;
|
||||||
|
Goto Ready;
|
||||||
|
AltFire:
|
||||||
|
XZW2 A 1;
|
||||||
|
Goto Ready;
|
||||||
|
Reload:
|
||||||
|
XZW2 A 1;
|
||||||
|
Goto Ready;
|
||||||
|
Zoom:
|
||||||
|
XZW2 A 1;
|
||||||
|
Goto Ready;
|
||||||
|
User1:
|
||||||
|
XZW2 A 1;
|
||||||
|
Goto Ready;
|
||||||
|
Deselect:
|
||||||
|
XZW2 A 1 A_StartSound("quadshot/deselect",CHAN_WEAPON,CHANF_OVERLAP);
|
||||||
|
XZW2 BCDEFGHIJKLMNOPQR 1;
|
||||||
|
XZW2 R -1 A_FullLower();
|
||||||
|
Stop;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||