03-apr-2018 [Player] Player:DidTapNote( column, judgment, bright ) Send a noteflash of appropriate judgment to the column specified Bright is optional. Choose whether the noteflash is more or less than 100 combo variant (not implemented in most ITG noteskins) Player:DidHoldNote( column, bright ) Send a hold noteflash to column specified Player:FakeStep( column ) Pretend to press a button. This will pulse the receptor as if a step was taken. Player:RealStep( column, held ) Press a button. This is capable of hitting arrows. Player:SetArrowPathShader() Player:GetArrowPathShader() Apply shader to arrowpath [Bugfix] + fixed Player:SetNoteData and Player:SetNoteDataFromLua to no longer occasionally reset noteskin. + Fix Centered2 behavior with mods on reverse + Fix ScreenSelectMusic scrollbar crash on Default Theme + size warnings on double res images slightly more helpful + tween warning/command defined twice warning error box now actually tells you the error 05-jun-2017 [Player] + Apply shaders to Player objects. + Player:SetShader( someShader ) applies shader to Arrows, Holds and Receptors + Holds and arrows can have independent shaders. + Holds and arrows pass certain information to the shader. P1:SetHoldShader( someShader ) vec2 "imageSize" vec2 "textureSize" int "iCol" --image int "isHold" --1 for holds, 0 for all else int "isReceptor" --1 for receptor, 0 for all else float "fNoteBeat" --which beat the hold starts on int "iPlayfield" --which playfield it is (note: not specifically player number, meaning P3 and P4 can be shaded seperately.) P1:SetArrowShader( someShader ) int "iCol" int "isHold" --1 for holds, 0 for all else int "isReceptor" --1 for receptor, 0 for all else float "fYOffset" --y offset from receptors float "fNoteBeat" --which beat the arrow lies on int "iPlayfield" --which playfield it is (note: not specifically player number, meaning P3 and P4 can be shaded seperately.) + Add support for receptor shaders. The shader is propagated down to the base. P1:SetReceptorShader( someShader ) int "iCol" int "isHold" --1 for holds, 0 for all else int "isReceptor" --1 for receptor, 0 for all else int "iPlayfield" --which playfield it is (note: not specifically player number, meaning P3 and P4 can be shaded seperately.) + Player:ClearShader() --removes shader program from object + Player:ClearArrowShader() + Player:ClearHoldShader() + Player:ClearReceptorShader() + Player:SetNoteData( int chart ) Set note data to another chart from the currently playing song (ordered from lowest difficulty to highest difficulty) You will be given a system message warning on trying to set a nonexistent chart, and no change will take place. + Player:SetNoteDataFromLua( lua table ) Set note data to another chart GENERATED FROM LUA. We can use this in conjunction with Player:PushNoteData( var ); [Misc] + Actor:xyz(x,y,z) added. Like a 3D version of xy() + Actor:xyza(x,y,z,aux) + Var attribute added to actors. Var="wenis" as an xml attribute is equivalent to InitCommand="%function(self) wenis = self end" This has the added benefit of allowing user to define InitCommand as something else. + "Actor" type added for aux actors - now we don't have to make a quad and immediately hide it. "Auxvar" and "Aux" added as aliases. + ActorFrame:propagateshaders( 0 or 1 ) added. Allows shaders to be propagated through children. This was necessary for receptor shaders. + ActorFrame:SetShader( someShader ) I mean, why not. Auto enables shader propagate on this ActorFrame. + Actor:ClearShader() --removes shader program from object also applies to ActorFrame and Player, by inheritance [Mods] + "receptorzbuffer" Allows z clipping to be done between receptors and other models Also it's column specific. e.g. receptorzbuffer2 [Polygon] + Getters added for NumVertices, VertexPosition, VertexColor, VertexTexCoord and VertexNormal + Fix crash on trying to interact with nonexistent vertices + Polygon:SetVertexAlpha( which, alpha ); Also comes with appropriate getter. + Fix crash on trying to use shaders on polygons with no texture. (FMS_Cat) [Shader] (FMS_Cat) + GLSL vertex shader (.vert) support added! + Add to actors via XML Frag="fragShader.frag" Vert="vertShader.vert" + DISPLAY:ShaderFuck( shader ) Applies shader to all on-screen actors. (Auto resets on leaving editor gameplay or ScreenGameplay) + DISPLAY:ClearShaderFuck() Undoes the previous disaster + Ability to pass uniform matrices into shaders via lua + Ability to compile shader from lua + Error message on shader compilation if it fails + Data types passed to shader by the game mat4 modelMatrix mat4 viewMatrix mat4 perspectiveMatrix mat4 textureMatrix 31-may-2017 [Polygon] + New Actor type. Set vertices, tex coords, vertex colors and vertex normals! Textures and Shaders can also be applied. https://dl.dropboxusercontent.com/u/2526020/FUCK/secret/TEST%20-%20Polygon.rar self:SetDrawMode('triangles'); The number of vertices you need to not crash varies depending on your draw mode. available draw modes (not case sensitive): Quads QuadStrip Fan Strip Triangles LineStrip self:SetNumVertices(3) --we need to know how many there are, otherwise we can't set pos, col, normal, texcoord self:SetVertexPosition(0,-32,32,0) --params are: which vertex, x, y, z self:SetVertexColor(0,1,0,0,1) --params are: which vertex, r, g, b, alpha self:SetVertexNormal(0,0,0,1) --params are: which vertex, x, y, z (you should know what this does before using it) self:SetVertexTexCoord(0,0,1) --params are: which vertex, x, y (on a scale of 0 to 1) self:SetTextureFiltering(true) --whether we want blurry or pixellated textures self:SetPolygonMode( 1 ); --1 = wireframe, 0 = fill self:SetLineWidth( 5 ); --for LineStrip or wireframe polygon mode self:cullmode('none'); --same as actor, but worth mentioning it's possible to do this here too [Shader] (FMS_Cat) + knowledge of glsl required + pass values into the shader from simfile with self:GetShader():uniform1f( 'some_variable_name', some_value ) pass up to 1, 2, 3 or 4 values to the shader with uniform1f, uniform2f, uniform3f or uniform4f + pass textures into the shader with self:GetShader():uniformTexture( "somebuffer", someSprite:GetTexture() ) up to 32 textures allowed (GPU limitations may apply.....) 29-may-2017 [Bugfix] + Bugfix on model API rewrite - stop lingering effects + Bugfix on misses in editor? (access violation???) [Mods] + "texturefilteroff" - disable texture filtering on playfield + "wireframe" - set notefield to wireframe mode if turned on + "wireframegirth" - control line thickness of notefields in wireframe mode + All mods described in this section can be column specific [What the fuck] + Shader support. .frag files (glsl) can be applied to sprites. (FMS_Cat) this is a big deal THIS IS A BIG DEAL 20-may-2017 [Mods] + Cubic splines now supported + Hold spline modes: 0 = default, 1-100 = cosine interp, 101+ = cubic splines. 11-may-2017 [Mods] + "fallx|%f|%f|%f" (also y and z - make column specific with e.g. fally3|%f|%f|%f) shorthand spline that makes notes start a certain distance from the targets and fall toward them over another distance fallz|distance|start|end fallz|100|200|400 - makes arrows go from 64 pixels in front of targets to being in line with the targets + "noteskew" added skews notes. Can be used to counteract skewed playfields. "skew" spline also added - follows same format as existing splines "skewtype" - by default, skews notes the same regardless of the individual arrow rotations changing skewtype makes it so that the behavior is "skew first, rotation after", making up and down SkewY'd (used in 4a) [Internal] + GetMoveX/Y/Z added to GetX/Y/ZPos within ArrowEffects.cpp, original functions removed. NoteDisplay, ArrowEffects and some other places modified to reflect this (much needed) change If this breaks anything, please hit me with a large stick This is going to speed the game up at least marginally, though. 27-apr-2017 [Mods] + "skewx" mod now actually works + "hidemines" mod now actually works (need to use 1 or -1% to turn mines on while stealth is active, though) + "zbuffer" - negative amounts will now force zbuffer off (even when other mods that require zbuffer, such as bumpy, are turned on) 18-mar-2017 [Mods] + "holdcull" - lets you set holds to have backface/front face culling (more than 0% = backface cull, more than 100% = frontface cull) [Models] + Large improvements to flexibility of model API + self:playanimationframe( string, speed, framenum ) --same as playanimation( string, speed ) --but this lets you set a frame of animation to go to + self:SetAnimationRate( speed ) --used to change an animation's update speed without resetting the frame + self:LoadMilkshapeAsciiBones( anim, path ) + self:LoadMilkshapeAsciiMaterials( path ) + self:LoadMilkshapeAscii( path ) --these are similar to sprite:Load( path ), but for individual aspects of a model + self:GetCurrentFrame() + self:GetTotalFrames() --some now accessible facets of a model's current state + self:SetPolygonMode( 0 or 1 ) --0 is normal, 1 is wireframe + self:SetCelShaded( true or false ) --true draws an outline around the character + self:SetOutlinesOnTop( true or false ) --cel shading usually draws outlines as a wireframe under the model --now, we can draw the outlines on top of the model as an added effect + self:SetLineColor( (floats) r, g, b, a ) --set color of outline on cel shaded chara --for coloring wireframes, just use "glow" on the wireframed model + self:SetLineWidth( float num ) --thickness of wireframes or outlines on cel shaded models + self:cullmode( 'front', 'back' or 'none' ) --this was always there, but here's a reminder as it's sometimes necessary 13-mar-2017 -fix asymptote scale so it's not invisible at 0% 8-mar-2017 -parabolaoffset in x, y and z -cubic (like parabola but offset^3) in x, y and z -cubicoffset in x, y and z -tinyx/y/z -column specific tinyx/y/z -shrinklinearx/y/z -shrinkmultx/y/z -attenuateoffset -asymptote asymptotescale asymptoteoffset 23-feb-2017 -pulse modifiers -pulseinner -pulseouter -pulseperiod -pulseoffset -tanpulse (and modifiers) -sinclip clips all sines used in modifiers (0 or less = clamp between -1 and 1 (same as no clamp), 100 = clamp to 0) -cosclip clips all cosines used in modifiers, same as sinclip -tanclip clips all tangent waves used in modifiers to the value specified, assuming greater than 0. 0 tanclip or less = no clipped tangents/infinite cap 1% tanclip = tan clipped to 10 pixels 100% tanclip = tan clipped to 1000 pixels -column specific bumpyx, tanbumpy and tanbumpyx 10-feb-2017 -hide mods - behaves like stealth but on a single item -hidemines -hideholds (also hides rolls) 30-dec-2016 -alpha spline 100 = stealth -note size spline -100 = no size, 100 = double size -GAMESTATE:GetX( player, column, yoffset ) -Directly access ArrowEffects class to learn the current x position of an arrow or hold segment when given a y offset relative to targets. -GetY/GetZ also works -column specific bumpy, dark and tiny 16-dec-2016 -arrowpath Draws out the line each arrow is going to take to get to the receptors The opacity is tied to the mod percentage (0% = no draw) -arrowpathwidth -arrowpathgrain (controls how many polygons arrowpath line is made of) can be column specific -diffuse|number|number|number (colors the playfield. Format: diffuse|0.4|0.2|0.2 ) -fadetop|number|number|number -fadetopoffset|number|number|number (hiddenoffset for color channels. Format: fadetopoffset|100|0|-100 ) -fadebottom|number|number|number -fadebottomoffset|number|number|number -stealthglow|number|number|number -stealthglow|number|number|number -arrowpathdiffuse|number|number|number (colors the arrow path. Format: diffuse|0.4|0.2|0.2 ) -arrowpathfadetop|number|number|number -arrowpathfadetopoffset|number|number|number -arrowpathfadebottom|number|number|number -arrowpathfadebottomoffset|number|number|number -stealthglow%d|%f|%f|%f Column specific stealth glow -centered2 - like centered but moves through the arrow path