小编Fig*_*wig的帖子

在 VsCode 中按键执行 bat 文件

我正在为 vulkan 编写着色器,必须将其编译为 spir-v。我有一个非常好的批处理文件,它将使用 GLSlangvalidator 为我构建着色器。我正在尝试使用按键在 VsCode 中运行我的批处理文件,以便我可以检查我的代码是否有错误并构建它。我有以下几点:

    {
    "key": "f5",
    "label": "build",
    "type": "shell",
    "command": "workbench.action.terminal.sendSequence",
    "args" : {"text": ".\\compile.bat"},
    "presentation" : {
        "reveal": "always"
    }
Run Code Online (Sandbox Code Playgroud)

这几乎有效 - 但我仍然必须专注于内置终端面板并按回车键。当然有一种方法可以执行命令,而不仅仅是输入字符串?谢谢!

glsl batch-file vulkan visual-studio-code

5
推荐指数
1
解决办法
8393
查看次数

使用模板在 C++ 中编写 get 组件方法

我正在尝试编写一个 Unity 风格的获取组件方法。这是我到目前为止的代码。它会编译,但会返回它找到的第一个组件,而不是正确的组件。我认为我使用 static_cast 是错误的。有什么更好的方法来做到这一点?请注意,我不想对组件类型进行硬编码,我希望能够编译此引擎并使用从 Component 继承的任何内容以便能够使用此系统。另请注意,每个组件都需要作为其自身返回,而不是组件*,因为这会隐藏子功能。

compStruct.components 是组件 *s 的向量。

template <typename CompType>
inline CompType getComponent()
{
    for(Component * currComp : compStruct.components)
    {
        if (static_cast<CompType>(currComp)!= nullptr)
        {
            return static_cast<CompType>(currComp);
        }
    }
    return nullptr;
}
Run Code Online (Sandbox Code Playgroud)

这是通用组件的示例

#pragma once
#include "Component.h"
#include "Animation2D.h"

class AnimationComponent : public Component
{
public:
    AnimationComponent(GameObject*x) :Component(x) {}
    ~AnimationComponent() {}

    void stepAnimation(double delta);

    //add overload for 3d animations
    int addAnimation(Animation2D);

    void setAnimation(int);

private:

};
Run Code Online (Sandbox Code Playgroud)

以及组件基类:

#pragma once
class GameObject;

class Component
{
public:
    Component(GameObject * h) …
Run Code Online (Sandbox Code Playgroud)

c++ templates components

3
推荐指数
1
解决办法
1874
查看次数