General: + Added Summaries Renderer ------- SM.Base: + SM.Base.Controls.Mouse now has a feature to disable tracking. + Replaced Bloom Effect with the similar system how blender use it. + You can now disable ANY post processing effects. + Interpolation for CVectors. + MathUtils + RenderPipelines now have a central list for post processing effects. ~ Log-System is now ignored if a debugger is attached. ~ Post Processing Shader does now send the texel size as the "renderedTextureTexelSize"-uniform. ~ Improved Text Rendering SM.OGL: + ColorAttachments now contain a reference to the framebuffer its connected. + ColorAttachments can now have a own size. + Framebuffer.Append(string key, Vector2 size, int pos) +Framebuffers now have a method to completely reset itself. + Framebuffers now have a Blit-method called "CopyTo". ~ Framebuffer.GetCurrentlyActive() will now return an actual SM.OGL.Framebuffer-object. ~ Renderbuffers now are a class and contain the ID by itself. ~ Renamed Uniform-function to its class-name: f.E. SetBool, SetFloat instead of SetUniform1 Optionals: Controls: + Framecache for the GameController.GetState()
97 lines
No EOL
2.6 KiB
C#
97 lines
No EOL
2.6 KiB
C#
using OpenTK.Input;
|
|
|
|
namespace SM.Utils.Controls
|
|
{
|
|
public enum GameKeybindActorType
|
|
{
|
|
AI,
|
|
Keyboard,
|
|
Controller
|
|
}
|
|
|
|
public struct GameKeybindActor
|
|
{
|
|
private GameKeybindActorType _type;
|
|
private GameController _controller;
|
|
|
|
private GameKeybindHost _keybindHost;
|
|
|
|
public GameKeybindActorType Type => _type;
|
|
public GameController Controller => _controller;
|
|
|
|
public object[] Parameter;
|
|
|
|
private GameKeybindActor(GameKeybindActorType type, GameController controller)
|
|
{
|
|
_type = type;
|
|
_controller = controller;
|
|
|
|
_keybindHost = null;
|
|
|
|
Parameter = new object[0];
|
|
}
|
|
private GameKeybindActor(GameKeybindActorType type, ref GameController controller)
|
|
{
|
|
_type = type;
|
|
_controller = controller;
|
|
|
|
_keybindHost = null;
|
|
|
|
Parameter = new object[0];
|
|
}
|
|
|
|
public void ConnectHost(GameKeybindHost host)
|
|
{
|
|
_keybindHost = host;
|
|
}
|
|
|
|
public ReturnType Get<ReturnType>(string name, params object[] param)
|
|
{
|
|
return (ReturnType) Get(name, param);
|
|
}
|
|
|
|
public object Get(string name, params object[] objects)
|
|
{
|
|
if (_keybindHost == null) return null;
|
|
if (!_keybindHost._actions.ContainsKey(name)) return null;
|
|
|
|
GameKeybind keybind = _keybindHost._actions[name];
|
|
|
|
GameKeybindContext context = new GameKeybindContext()
|
|
{
|
|
Actor = this,
|
|
Host = _keybindHost,
|
|
|
|
ActorParameter = Parameter,
|
|
InstanceParameter = objects,
|
|
|
|
KeyboardState = Keyboard.GetState(),
|
|
MouseState = Mouse.GetState(),
|
|
ControllerState = Controller?.GetState() ?? new GameControllerState(true),
|
|
};
|
|
|
|
return keybind[Type].Invoke(context);
|
|
}
|
|
|
|
public static GameKeybindActor CreateAIActor()
|
|
{
|
|
return new GameKeybindActor(GameKeybindActorType.AI, null);
|
|
}
|
|
|
|
public static GameKeybindActor CreateKeyboardActor()
|
|
{
|
|
return new GameKeybindActor(GameKeybindActorType.Keyboard, null);
|
|
}
|
|
|
|
public static GameKeybindActor CreateControllerActor(int id)
|
|
{
|
|
return CreateControllerActor(new GameController(id));
|
|
}
|
|
|
|
public static GameKeybindActor CreateControllerActor(GameController controller)
|
|
{
|
|
return new GameKeybindActor(GameKeybindActorType.Controller, controller);
|
|
}
|
|
|
|
}
|
|
} |