Add scripts
This commit is contained in:
parent
428db9a136
commit
2e7ba0b153
7 changed files with 121 additions and 4 deletions
35
Data/resources/scripts/build-stairs.scm
Normal file
35
Data/resources/scripts/build-stairs.scm
Normal file
|
@ -0,0 +1,35 @@
|
|||
; This is a janky set of routines to make building stairs easier.
|
||||
; More than anything it's just here to show off our fancy scripting
|
||||
; capabilities. I suppose if you bound this to some keyboard shortcut
|
||||
; it'd be a good time saver though :)
|
||||
(progn
|
||||
; CONFIG:
|
||||
(define AXIS X)
|
||||
(define STAIR_SIZE 0.25)
|
||||
(define (lerp start end percent)
|
||||
(+ start (* percent (- end start))))
|
||||
(define (build-stairs-x sx sy sw sl step height-a height-b)
|
||||
(do ((i 0 (+1 i)))
|
||||
((>= i (/ sw step)) (print "done"))
|
||||
(let* ((points (((+ (* i step) sx) sy)
|
||||
((+ (* i step) sx) (+ sy sl))
|
||||
((+ (* i step) sx step) (+ sy sl))
|
||||
((+ (* i step) sx step) sy)))
|
||||
(floor-height (lerp height-a height-b (/ i (/ sw step))))
|
||||
(ceiling-height (+ 4 floor-height)))
|
||||
(make-sector-from-points floor-height ceiling-height points))))
|
||||
(define (build-stairs-y sx sy sw sl step height-a height-b)
|
||||
(do ((i 0 (+1 i)))
|
||||
((>= i (/ sl step)) (print "done"))
|
||||
(let* ((points ((sx (+ (* i step) sy))
|
||||
((- sx sw) (+ (* i step) sy))
|
||||
((- sx sw) (+ (* i step) sy step))
|
||||
(sx (+ (* i step) sy step))))
|
||||
(floor-height (lerp height-a height-b (/ i (/ sl step))))
|
||||
(ceiling-height (+ 4 floor-height)))
|
||||
(make-sector-from-points floor-height ceiling-height points))))
|
||||
(fill-selection
|
||||
(lambda (x1 y1 x2 y2 nh1 nh2 dir)
|
||||
(if (= AXIS X)
|
||||
(build-stairs-x x1 y1 (abs (- x2 x1)) (abs (- y2 y1)) STAIR_SIZE nh1 nh2)
|
||||
(build-stairs-y x2 y2 (abs (- x2 x1)) (abs (- y2 y1)) STAIR_SIZE nh1 nh2)))))
|
|
@ -0,0 +1,59 @@
|
|||
[11:10:09 AM] Info: Starting...
|
||||
|
||||
KP3D version 2
|
||||
===============================
|
||||
Copyright (C) kpworld.xyz 2018-2024
|
||||
Contact me! @kp_cftsz
|
||||
|
||||
[11:10:09 AM] Info: Initializing SDL
|
||||
[11:10:09 AM] Info: Initializing OpenGL
|
||||
[11:10:09 AM] Info: OpenGL version: 4.6.0 NVIDIA 536.23
|
||||
[11:10:09 AM] Info: Initializing GLEW
|
||||
[11:10:09 AM] Info: Initializing SDL_mixer
|
||||
[11:10:10 AM] Info: Reticulating splines...
|
||||
[11:10:10 AM] Info: Ready!
|
||||
[11:10:10 AM] Info: Loading material resource: block.png
|
||||
[11:10:10 AM] Info: Found normal map texture: materials/block_n.png
|
||||
[11:10:10 AM] Info: Loading material resource: brick2.jpg
|
||||
[11:10:10 AM] Info: Found normal map texture: materials/brick2_n.jpg
|
||||
[11:10:10 AM] Info: Loading material resource: bricks.jpg
|
||||
[11:10:10 AM] Info: Found normal map texture: materials/bricks_n.jpg
|
||||
[11:10:10 AM] Info: Loading material resource: FLAT5_7.png
|
||||
[11:10:10 AM] Info: Found normal map texture: materials/FLAT5_7_n.png
|
||||
[11:10:10 AM] Info: Loading material resource: floor0.png
|
||||
[11:10:10 AM] Info: Found normal map texture: materials/floor0_n.png
|
||||
[11:10:10 AM] Info: Loading material resource: floor1.png
|
||||
[11:10:10 AM] Info: Found normal map texture: materials/floor1_n.png
|
||||
[11:10:10 AM] Info: Loading material resource: GRASS2.png
|
||||
[11:10:10 AM] Info: Found normal map texture: materials/GRASS2_n.png
|
||||
[11:10:10 AM] Info: Loading material resource: hardwood.jpg
|
||||
[11:10:10 AM] Info: Found normal map texture: materials/hardwood_n.jpg
|
||||
[11:10:10 AM] Info: Map init
|
||||
[11:10:10 AM] Info: Finalized mesh with 49 batches
|
||||
[11:10:14 AM] Info: Finalized mesh with 54 batches
|
||||
[11:10:27 AM] Info: [Editor] Filling selection; sector heights 0, -1
|
||||
[11:10:27 AM] Info: Finalized mesh with 60 batches
|
||||
[11:10:27 AM] Info: Finalized mesh with 66 batches
|
||||
[11:10:27 AM] Info: Finalized mesh with 72 batches
|
||||
[11:10:27 AM] Info: Finalized mesh with 78 batches
|
||||
[11:10:27 AM] Info: Finalized mesh with 84 batches
|
||||
[11:10:27 AM] Info: Finalized mesh with 90 batches
|
||||
[11:10:27 AM] Info: Finalized mesh with 96 batches
|
||||
[11:10:27 AM] Info: Finalized mesh with 102 batches
|
||||
[11:10:27 AM] Info: Finalized mesh with 108 batches
|
||||
[11:10:27 AM] Info: Finalized mesh with 114 batches
|
||||
[11:10:27 AM] Info: Finalized mesh with 120 batches
|
||||
[11:10:27 AM] Info: Finalized mesh with 126 batches
|
||||
[11:10:27 AM] Info: Finalized mesh with 132 batches
|
||||
[11:10:27 AM] Info: Finalized mesh with 138 batches
|
||||
[11:10:27 AM] Info: Finalized mesh with 144 batches
|
||||
[11:10:27 AM] Info: Finalized mesh with 150 batches
|
||||
[11:10:27 AM] Info: Finalized mesh with 156 batches
|
||||
[11:10:27 AM] Info: Finalized mesh with 162 batches
|
||||
[11:10:27 AM] Info: Finalized mesh with 168 batches
|
||||
[11:10:27 AM] Info: Finalized mesh with 174 batches
|
||||
[11:10:27 AM] Info: Finalized mesh with 180 batches
|
||||
[11:10:27 AM] Info: Finalized mesh with 186 batches
|
||||
[11:10:27 AM] Info: Finalized mesh with 192 batches
|
||||
[11:10:27 AM] Info: Finalized mesh with 200 batches
|
||||
[11:10:27 AM] Info: $ : done
|
|
@ -3005,7 +3005,11 @@ const TextEditor::LanguageDefinition& TextEditor::LanguageDefinition::Lisp()
|
|||
langDef.mKeywords.insert(k);
|
||||
|
||||
static const char* const identifiers[] = {
|
||||
"sin", "cos", "sqrt", "abs", "log", "log10", "floor", "ceil", "atan2", "PI", "E", "car", "cdr", "cons", "list", "list-ref", "print", "exit", "+1", "-1", "null?"
|
||||
"sin", "cos", "sqrt", "abs", "log", "log10", "floor", "ceil", "atan2", "PI", "E", "car", "cdr", "cons", "list", "list-ref", "print", "exit", "+1", "-1", "null?",
|
||||
// Map editor specific
|
||||
"make-sector-from-points",
|
||||
"fill-selection",
|
||||
"X", "Y"
|
||||
};
|
||||
for (auto& k : identifiers)
|
||||
{
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
#include "KP3D_Console.h"
|
||||
|
||||
#include <regex>
|
||||
|
||||
#include <imgui.h>
|
||||
|
||||
#include "KP3D_Log.h"
|
||||
|
@ -134,8 +136,18 @@ void SendCommand(const std::string& command)
|
|||
SendKSI("(" + command + ")");
|
||||
}
|
||||
|
||||
void SendKSI(const std::string& ksi)
|
||||
void SendKSI(std::string ksi)
|
||||
{
|
||||
// Remove comments (BRAINDEAD WAY OF DOING THIS)
|
||||
auto lines = str::SplitTokens(ksi, "\n");
|
||||
for (const auto& line: lines)
|
||||
if (str::StartsWith(line, ";"))
|
||||
str::ReplaceAll(ksi, line, "");
|
||||
|
||||
// Single line
|
||||
kp3d::str::ReplaceAll(ksi, "\n", "");
|
||||
|
||||
// Now eval
|
||||
reader.Clear();
|
||||
reader.Tokenize(ksi);
|
||||
ksi::Cell c = reader.ReadForm();
|
||||
|
|
|
@ -9,7 +9,7 @@ namespace kp3d::console {
|
|||
void Init();
|
||||
void Render();
|
||||
void SendCommand(const std::string& command);
|
||||
void SendKSI(const std::string& ksi);
|
||||
void SendKSI(std::string ksi);
|
||||
|
||||
extern bool open;
|
||||
extern ksi::Environment environment;
|
||||
|
|
|
@ -598,6 +598,8 @@ void Environment::Init()
|
|||
Set("atan2", FAtan2());
|
||||
Set("PI", {CELL_NUMBER, 3.14159265358979f});
|
||||
Set("E", {CELL_NUMBER, 2.71828f});
|
||||
Set("X", {CELL_NUMBER, 0});
|
||||
Set("Y", {CELL_NUMBER, 1});
|
||||
|
||||
// Cons/CAR/CDR
|
||||
Set("car", FCar());
|
||||
|
|
|
@ -116,6 +116,8 @@ ksi::Cell FFillSelection()
|
|||
XYf p3 = {points[1].x, points[1].z};
|
||||
XYf p4 = {points[3].x, points[3].z};
|
||||
|
||||
int dir = 0;
|
||||
|
||||
float nh1 = 0.0f;
|
||||
float nh2 = 4.0f;
|
||||
for (const auto& sp: sandbox->map.sectors)
|
||||
|
@ -156,6 +158,7 @@ ksi::Cell FFillSelection()
|
|||
p2.y, // y2
|
||||
nh1, // nh1
|
||||
nh2, // nh2
|
||||
dir // dir
|
||||
};
|
||||
|
||||
size_t i = 0;
|
||||
|
@ -389,8 +392,10 @@ void Editor::RenderModeBuild()
|
|||
if (ImGui::Button("Evaluate"))
|
||||
{
|
||||
std::string txt = build_text_editor.GetText();
|
||||
kp3d::str::ReplaceAll(txt, "\n", "");
|
||||
kp3d::console::SendKSI(txt);
|
||||
points.clear();
|
||||
build_has_start_pos = false;
|
||||
build_show_options = false;
|
||||
// KP3D_LOG_INFO("EVAL: {}", txt);
|
||||
}
|
||||
ImGui::PushFont(ImGui::GetIO().Fonts->Fonts[1]);
|
||||
|
|
Loading…
Reference in a new issue