Skip to content

Instantly share code, notes, and snippets.

# include <Siv3D.hpp> // OpenSiv3D v0.6.9
class RandomTree {
//drawする三角の頂点index保持用
struct ThreeSizeT {
size_t first;
size_t second;
size_t third;
};
# include <Siv3D.hpp> // Siv3D v0.6.12
struct GridCollisionInfo {
Vec2 pos;
std::array<Array<Size>, 4> collidedEdges;
bool collided() {
return xCollided() or yCollided();
}
bool xCollided() {
return (bool)collidedEdges[0] or (bool)collidedEdges[2];
#pragma once
namespace s3d {
class Step3D
{
public:
class Iterator
{
public:
@comefrombottom
comefrombottom / transformedRaySample.cpp
Created December 21, 2023 04:45
Rayと変換座標が適応された図形との当たり判定
# include <Siv3D.hpp> // Siv3D v0.6.12
Ray transformedRay(const Ray& ray, const Mat4x4& mat) {
return Ray(mat.transformPoint(ray.getOrigin()), mat.transformPoint(ray.getDirection()).withLength(1));
}
struct HexFace {
static Vec3 getFaceNormal(uint8 i) {
static std::array<Vec3, 6> normals{
Vec3{-1, 0, 0},
@comefrombottom
comefrombottom / GridWalker.cpp
Last active January 20, 2024 17:22
格子上のLineが通るIndexを順に返すイテレータ
# include <Siv3D.hpp>
void dragVec2(Vec2& v, bool& dragging, double r = 5) {
if (v.asCircle(r).leftClicked())dragging = true;
if (MouseL.up()) {
if (KeySpace.pressed()) {
constexpr Point step{ 10,10 };
v = Floor(v / step + Vec2{0.5, 0.5})* step;
}
dragging = false;
#include <iostream>
#include <vector>
#include <algorithm>
//game rule
// player should reduce unknowns or pick knowns in one turn
// so, player can't pick not match pair from knowns
@comefrombottom
comefrombottom / WaterSurface.cpp
Created February 22, 2024 17:50
水面の揺らぎをシェーダで作ってみた。
# include <Siv3D.hpp> // Siv3D v0.6.12
void Main()
{
const PixelShader wavePropagatePS = HLSL{ U"wave_propagate.hlsl", U"PS" };
if (not wavePropagatePS)
{
throw Error{ U"Failed to load a shader file" };
}
# include <Siv3D.hpp>
# include "Multiplayer_Photon.hpp"
# include "PHOTON_APP_ID.SECRET"
SIV3D_CONCEPT_URBG
Array<Vec2> createPieceEdgePoints(URBG&& urbg) {
double centerX = Random(-0.15, 0.15, urbg) + 0.5;
double headwidth = Random(0.25, 0.35, urbg);
double headheight = -Random(0.12, 0.18, urbg);
double neckWidth = Random(0.12, 0.18, urbg);
@comefrombottom
comefrombottom / NeighbourSearcher.cpp
Created April 13, 2024 08:20
Gridを近いところから探索できる仕組み
#include<Siv3D.hpp>
class NeighbourSearcher {
struct DistancePoint {
double distance;
int32 x;
int32 y;
auto operator<=>(const DistancePoint&) const = default;
};
@comefrombottom
comefrombottom / Siv3DKawaiiLogo.cpp
Last active April 25, 2024 14:46
Xでバズっていた、さわらつき氏によるプログラミング言語のkawaii logo のSiv3D版をSiv3Dを用いて作ってみました。ロゴマーク含め手打ち座標で作っているため、コピペして即実行できます。Debug実行の場合、前計算に割と時間がかかるので注意してください。
# include <Siv3D.hpp> // Siv3D v0.6.14
MultiPolygon createLogoPolygon() {
Bezier3 bezier(Vec2(230, 429), Vec2(404, 490), Vec2(573, 375), Vec2(573, 277));
Bezier3 bezier2(Vec2(573, 277), Vec2(573, 194), Vec2(467, 141), Vec2(425, 244));
Bezier3 bezier3(Vec2(401, 245), Vec2(456, 124), Vec2(626, 165), Vec2(626, 304));
Bezier3 bezier4(Vec2(626, 304), Vec2(626, 440), Vec2(420, 530), Vec2(230, 429));
auto moveBy = [](Bezier3& bezier, Vec2 v) {
bezier.p0 += v;