mirror of
https://github.com/FunkinCrew/Funkin.git
synced 2024-11-25 17:18:07 -05:00
Merge pull request #687 from FunkinCrew/feature/erect-stages
Erect stages for weeks 2,3,4 + unfinished pico shit
This commit is contained in:
commit
09fe8c1196
6 changed files with 100 additions and 6 deletions
2
assets
2
assets
|
@ -1 +1 @@
|
||||||
Subproject commit aa1231e8cf2990bb902eac3b37815c010fa9919a
|
Subproject commit ee6506f5fa9e80503b4bd9f663a0cdbaae03b357
|
|
@ -93,8 +93,8 @@ class StageRegistry extends BaseRegistry<Stage, StageData>
|
||||||
public function listBaseGameStageIds():Array<String>
|
public function listBaseGameStageIds():Array<String>
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
"mainStage", "spookyMansion", "phillyTrain", "limoRide", "mallXmas", "mallEvil", "school", "schoolEvil", "tankmanBattlefield", "phillyStreets",
|
"mainStage", "spookyMansion", "phillyTrain", "phillyTrainErect", "limoRide", "limoRideErect", "mallXmas", "mallEvil", "school", "schoolEvil",
|
||||||
"phillyBlazin",
|
"tankmanBattlefield", "phillyStreets", "phillyBlazin",
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
55
source/funkin/graphics/shaders/AdjustColorShader.hx
Normal file
55
source/funkin/graphics/shaders/AdjustColorShader.hx
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
package funkin.graphics.shaders;
|
||||||
|
|
||||||
|
import flixel.addons.display.FlxRuntimeShader;
|
||||||
|
import funkin.Paths;
|
||||||
|
import openfl.utils.Assets;
|
||||||
|
|
||||||
|
class AdjustColorShader extends FlxRuntimeShader
|
||||||
|
{
|
||||||
|
public var hue(default, set):Float;
|
||||||
|
public var saturation(default, set):Float;
|
||||||
|
public var brightness(default, set):Float;
|
||||||
|
public var contrast(default, set):Float;
|
||||||
|
|
||||||
|
public function new()
|
||||||
|
{
|
||||||
|
super(Assets.getText(Paths.frag('adjustColor')));
|
||||||
|
// FlxG.debugger.addTrackerProfile(new TrackerProfile(HSVShader, ['hue', 'saturation', 'brightness', 'contrast']));
|
||||||
|
hue = 0;
|
||||||
|
saturation = 0;
|
||||||
|
brightness = 0;
|
||||||
|
contrast = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
function set_hue(value:Float):Float
|
||||||
|
{
|
||||||
|
this.setFloat('hue', value);
|
||||||
|
this.hue = value;
|
||||||
|
|
||||||
|
return this.hue;
|
||||||
|
}
|
||||||
|
|
||||||
|
function set_saturation(value:Float):Float
|
||||||
|
{
|
||||||
|
this.setFloat('saturation', value);
|
||||||
|
this.saturation = value;
|
||||||
|
|
||||||
|
return this.saturation;
|
||||||
|
}
|
||||||
|
|
||||||
|
function set_brightness(value:Float):Float
|
||||||
|
{
|
||||||
|
this.setFloat('brightness', value);
|
||||||
|
this.brightness = value;
|
||||||
|
|
||||||
|
return this.brightness;
|
||||||
|
}
|
||||||
|
|
||||||
|
function set_contrast(value:Float):Float
|
||||||
|
{
|
||||||
|
this.setFloat('contrast', value);
|
||||||
|
this.contrast = value;
|
||||||
|
|
||||||
|
return this.contrast;
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,6 +2,7 @@ package funkin.graphics.shaders;
|
||||||
|
|
||||||
import flixel.FlxCamera;
|
import flixel.FlxCamera;
|
||||||
import flixel.FlxG;
|
import flixel.FlxG;
|
||||||
|
import flixel.graphics.frames.FlxFrame;
|
||||||
import flixel.addons.display.FlxRuntimeShader;
|
import flixel.addons.display.FlxRuntimeShader;
|
||||||
import lime.graphics.opengl.GLProgram;
|
import lime.graphics.opengl.GLProgram;
|
||||||
import lime.utils.Log;
|
import lime.utils.Log;
|
||||||
|
@ -32,6 +33,9 @@ class RuntimePostEffectShader extends FlxRuntimeShader
|
||||||
// equals (camera.viewLeft, camera.viewTop, camera.viewRight, camera.viewBottom)
|
// equals (camera.viewLeft, camera.viewTop, camera.viewRight, camera.viewBottom)
|
||||||
uniform vec4 uCameraBounds;
|
uniform vec4 uCameraBounds;
|
||||||
|
|
||||||
|
// equals (frame.left, frame.top, frame.right, frame.bottom)
|
||||||
|
uniform vec4 uFrameBounds;
|
||||||
|
|
||||||
// screen coord -> world coord conversion
|
// screen coord -> world coord conversion
|
||||||
// returns world coord in px
|
// returns world coord in px
|
||||||
vec2 screenToWorld(vec2 screenCoord) {
|
vec2 screenToWorld(vec2 screenCoord) {
|
||||||
|
@ -56,6 +60,25 @@ class RuntimePostEffectShader extends FlxRuntimeShader
|
||||||
return (worldCoord - offset) / scale;
|
return (worldCoord - offset) / scale;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// screen coord -> frame coord conversion
|
||||||
|
// returns normalized frame coord
|
||||||
|
vec2 screenToFrame(vec2 screenCoord) {
|
||||||
|
float left = uFrameBounds.x;
|
||||||
|
float top = uFrameBounds.y;
|
||||||
|
float right = uFrameBounds.z;
|
||||||
|
float bottom = uFrameBounds.w;
|
||||||
|
float width = right - left;
|
||||||
|
float height = bottom - top;
|
||||||
|
|
||||||
|
float clampedX = clamp(screenCoord.x, left, right);
|
||||||
|
float clampedY = clamp(screenCoord.y, top, bottom);
|
||||||
|
|
||||||
|
return vec2(
|
||||||
|
(clampedX - left) / (width),
|
||||||
|
(clampedY - top) / (height)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
// internally used to get the maximum `openfl_TextureCoordv`
|
// internally used to get the maximum `openfl_TextureCoordv`
|
||||||
vec2 bitmapCoordScale() {
|
vec2 bitmapCoordScale() {
|
||||||
return openfl_TextureCoordv / screenCoord;
|
return openfl_TextureCoordv / screenCoord;
|
||||||
|
@ -80,6 +103,8 @@ class RuntimePostEffectShader extends FlxRuntimeShader
|
||||||
{
|
{
|
||||||
super(fragmentSource, null, glVersion);
|
super(fragmentSource, null, glVersion);
|
||||||
uScreenResolution.value = [FlxG.width, FlxG.height];
|
uScreenResolution.value = [FlxG.width, FlxG.height];
|
||||||
|
uCameraBounds.value = [0, 0, FlxG.width, FlxG.height];
|
||||||
|
uFrameBounds.value = [0, 0, FlxG.width, FlxG.height];
|
||||||
}
|
}
|
||||||
|
|
||||||
// basically `updateViewInfo(FlxG.width, FlxG.height, FlxG.camera)` is good
|
// basically `updateViewInfo(FlxG.width, FlxG.height, FlxG.camera)` is good
|
||||||
|
@ -89,6 +114,12 @@ class RuntimePostEffectShader extends FlxRuntimeShader
|
||||||
uCameraBounds.value = [camera.viewLeft, camera.viewTop, camera.viewRight, camera.viewBottom];
|
uCameraBounds.value = [camera.viewLeft, camera.viewTop, camera.viewRight, camera.viewBottom];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function updateFrameInfo(frame:FlxFrame)
|
||||||
|
{
|
||||||
|
// NOTE: uv.width is actually the right pos and uv.height is the bottom pos
|
||||||
|
uFrameBounds.value = [frame.uv.x, frame.uv.y, frame.uv.width, frame.uv.height];
|
||||||
|
}
|
||||||
|
|
||||||
override function __createGLProgram(vertexSource:String, fragmentSource:String):GLProgram
|
override function __createGLProgram(vertexSource:String, fragmentSource:String):GLProgram
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
|
|
@ -32,6 +32,14 @@ class RuntimeRainShader extends RuntimePostEffectShader
|
||||||
return time = value;
|
return time = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public var spriteMode(default, set):Bool = false;
|
||||||
|
|
||||||
|
function set_spriteMode(value:Bool):Bool
|
||||||
|
{
|
||||||
|
this.setBool('uSpriteMode', value);
|
||||||
|
return spriteMode = value;
|
||||||
|
}
|
||||||
|
|
||||||
// The scale of the rain depends on the world coordinate system, so higher resolution makes
|
// The scale of the rain depends on the world coordinate system, so higher resolution makes
|
||||||
// the raindrops smaller. This parameter can be used to adjust the total scale of the scene.
|
// the raindrops smaller. This parameter can be used to adjust the total scale of the scene.
|
||||||
// The size of the raindrops is proportional to the value of this parameter.
|
// The size of the raindrops is proportional to the value of this parameter.
|
||||||
|
|
|
@ -5701,11 +5701,11 @@ class ChartEditorState extends UIState // UIState derives from MusicBeatState
|
||||||
{
|
{
|
||||||
case 'mainStage':
|
case 'mainStage':
|
||||||
PlayStatePlaylist.campaignId = 'week1';
|
PlayStatePlaylist.campaignId = 'week1';
|
||||||
case 'spookyMansion':
|
case 'spookyMansion' | 'spookyMansionErect':
|
||||||
PlayStatePlaylist.campaignId = 'week2';
|
PlayStatePlaylist.campaignId = 'week2';
|
||||||
case 'phillyTrain':
|
case 'phillyTrain' | 'phillyTrainErect':
|
||||||
PlayStatePlaylist.campaignId = 'week3';
|
PlayStatePlaylist.campaignId = 'week3';
|
||||||
case 'limoRide':
|
case 'limoRide' | 'limoRideErect':
|
||||||
PlayStatePlaylist.campaignId = 'week4';
|
PlayStatePlaylist.campaignId = 'week4';
|
||||||
case 'mallXmas' | 'mallEvil':
|
case 'mallXmas' | 'mallEvil':
|
||||||
PlayStatePlaylist.campaignId = 'week5';
|
PlayStatePlaylist.campaignId = 'week5';
|
||||||
|
|
Loading…
Reference in a new issue