Compare commits

..

10 Commits

Author SHA1 Message Date
9f968fd814 removed emojies
All checks were successful
Spellcheck / Spellcheck (push) Successful in 13s
Tests / Evaluate Tests on ubuntu-latest (push) Successful in 1m2s
2026-06-10 17:05:58 -04:00
8062242c1a brute force
All checks were successful
Spellcheck / Spellcheck (push) Successful in 14s
Tests / Evaluate Tests on ubuntu-latest (push) Successful in 1m4s
2026-06-10 16:48:58 -04:00
157a4d38b1 Atempent 2
All checks were successful
Spellcheck / Spellcheck (push) Successful in 15s
Tests / Evaluate Tests on ubuntu-latest (push) Successful in 1m2s
2026-06-10 16:44:40 -04:00
ceb4b81b36 why not work
All checks were successful
Spellcheck / Spellcheck (push) Successful in 13s
Tests / Evaluate Tests on ubuntu-latest (push) Successful in 1m3s
2026-06-10 16:27:50 -04:00
82ff05fb30 HELP
All checks were successful
Spellcheck / Spellcheck (push) Successful in 14s
Tests / Evaluate Tests on ubuntu-latest (push) Successful in 1m4s
2026-06-10 16:20:33 -04:00
5a6414b2dd seeing if chaning vesion in godot csproj works, and patch
All checks were successful
Spellcheck / Spellcheck (push) Successful in 17s
Tests / Evaluate Tests on ubuntu-latest (push) Successful in 1m2s
2026-06-10 16:05:42 -04:00
dceaea78c6 attepted fix in wrong spot.
All checks were successful
Spellcheck / Spellcheck (push) Successful in 13s
Tests / Evaluate Tests on ubuntu-latest (push) Successful in 1m7s
2026-06-10 15:10:54 -04:00
d05e0b8710 Trying to fix uid causing spellcheck error
Some checks failed
Spellcheck / Spellcheck (push) Failing after 13s
Tests / Evaluate Tests on ubuntu-latest (push) Successful in 1m4s
2026-06-10 15:04:54 -04:00
9b83721f17 SJK scriptts Bumped to 1.0.17
Some checks failed
Spellcheck / Spellcheck (push) Failing after 1m39s
Tests / Evaluate Tests on ubuntu-latest (push) Successful in 1m18s
2026-06-10 14:35:17 -04:00
247300c09c Bumped SJKScript Vesion and added vector Lerp 2026-06-10 14:34:33 -04:00
9 changed files with 83 additions and 36 deletions

View File

@@ -85,18 +85,18 @@ jobs:
echo "Found package: $package"
echo "${{ steps.package-path.outputs.package }}"
- name: Create Release
run: |
version="${{ steps.next-version.outputs.version }}"
# - name: Create Release
# run: |
# version="${{ steps.next-version.outputs.version }}"
curl -X POST "http://192.168.1.4:3000/api/packages/Ronnie/GodotHelpers/releases" \
-H "Authorization: token ${{ secrets.GH_BASIC }}" \
-H "Content-Type: application/json" \
-d "{
\"tag_name\": \"$version\",
\"name\": \"v$version\",
\"body\": \"Auto release $version\"
}"
# curl -X POST "http://192.168.1.4:3000/api/packages/Ronnie/GodotHelpers/releases" \
# -H "Authorization: token ${{ secrets.GH_BASIC }}" \
# -H "Content-Type: application/json" \
# -d "{
# \"tag_name\": \"$version\",
# \"name\": \"v$version\",
# \"body\": \"Auto release $version\"
# }"
- name: Publish to Nuget
run: |
dotnet nuget push "${{ steps.package-path.outputs.package }}" \

View File

@@ -48,6 +48,7 @@
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="GodotSharp" Version="4.6.2" />
<PackageReference Include="SjkScripts" Version="1.0.15" />
<PackageReference Include="SjkScripts" Version="1.0.17" />
<!-- [1.2.3,2.3.4] use range of versions -->
</ItemGroup>
</Project>

View File

@@ -8,7 +8,7 @@ public static partial class SJKMath
// Mathf.Lerp(from.Y, to.Y, weight),
// Mathf.Lerp(from.Z, to.Z, weight)
// );
public static Vector3 Lerp(Vector3 from, Vector3 to, float weight) => new Vector3(
public static Vector3 Lerp(this Vector3 from, Vector3 to, float weight) => new Vector3(
Mathf.Lerp(from.X, to.X, weight),
Mathf.Lerp(from.Y, to.Y, weight),
Mathf.Lerp(from.Z, to.Z, weight)
@@ -17,7 +17,7 @@ public static partial class SJKMath
// Mathf.Lerp(from.X, to.X, weight),
// Mathf.Lerp(from.Y, to.Y, weight)
// );
public static Vector2 Lerp(Vector2 from, Vector2 to, float weight) => new Vector2(
public static Vector2 Lerp(this Vector2 from, Vector2 to, float weight) => new Vector2(
Mathf.Lerp(from.X, to.X, weight),
Mathf.Lerp(from.Y, to.Y, weight)
);

View File

@@ -0,0 +1,33 @@
namespace GodotHelpers;
using Godot;
public static partial class SJKMath
{
public static Vector3I RoundToIntVector(this Vector3 vector) => new Vector3I(
Mathf.RoundToInt(vector.X),
Mathf.RoundToInt(vector.Y),
Mathf.RoundToInt(vector.Z)
);
public static Vector3I FloorToIntVector(this Vector3 vector) => new Vector3I(
Mathf.FloorToInt(vector.X),
Mathf.FloorToInt(vector.Y),
Mathf.FloorToInt(vector.Z)
);
public static Vector3I CeilToIntVector(this Vector3 vector) => new Vector3I(
Mathf.CeilToInt(vector.X),
Mathf.CeilToInt(vector.Y),
Mathf.CeilToInt(vector.Z)
);
public static Vector2I RoundToIntVector(this Vector2 vector) => new Vector2I(
Mathf.RoundToInt(vector.X),
Mathf.RoundToInt(vector.Y)
);
public static Vector2I FloorToIntVector(this Vector2 vector) => new Vector2I(
Mathf.FloorToInt(vector.X),
Mathf.FloorToInt(vector.Y)
);
public static Vector2I CeilToIntVector(this Vector2 vector) => new Vector2I(
Mathf.CeilToInt(vector.X),
Mathf.CeilToInt(vector.Y)
);
}

View File

@@ -11,10 +11,10 @@ public static class MyNodeExtensions
/// <summary>
/// Checks if given Property exists on <c>Base</c>
/// </summary>
/// <param name="Base">Current <c>GodotObject</c></param>
/// <param name="PropertyName">Property Name</param>
/// <param name="base">Current <c>GodotObject</c></param>
/// <param name="propertyName">Property Name</param>
/// <returns><c>bool</c> true if given property exists on Base</returns>
public static bool HasProperty(this GodotObject Base, string PropertyName)
public static bool HasProperty(this GodotObject @base, string propertyName)
{
/*
Returns the object's property list as an Godot.Collections.Array of dictionaries.
@@ -26,9 +26,9 @@ public static class MyNodeExtensions
- hint_string depends on the hint (see PropertyHint);
- usage is a combination of PropertyUsageFlags.
*/
foreach (var Property in Base.GetPropertyListEx())
foreach (var property in @base.GetPropertyListEx())
{
if (Property.Name == PropertyName)
if (property.Name == propertyName)
{
return true;
}
@@ -39,7 +39,7 @@ public static class MyNodeExtensions
public static (Node node, Resource resource, NodePath remaining) GetNodeAndResourceEx(this Node self, NodePath path)
{
var result = self.GetNodeAndResource(path);
return ((Node)result[0], (Resource)result[1], (NodePath)result[2]);
return ((Node)(GodotObject)result[0], (Resource)(GodotObject)result[1], (NodePath)result[2]);
}
public static void QueueFreeChildren(this Node node) => node.GetChildren().ToList().ForEach(item => item.QueueFree());
public static void QueueFreeChildren(this Node node, Func<Node, bool> predicate) => node.GetChildren().Where(predicate).ToList().ForEach(item => item.QueueFree());

View File

@@ -1,7 +1,7 @@
using Godot;
namespace GodotHelpers.Raycasts;
using Godot;
public record ShapeCastResult3D(
GodotObject Collider,
int ColliderId,

View File

@@ -1,8 +1,8 @@
namespace SJK.GodotHelpers;
using System;
using System.Collections.Generic;
using Godot;
using Godot.Collections;
namespace SJK.GodotHelpers;
public static class VariantUtils
{
@@ -73,6 +73,18 @@ public static class VariantUtils
Variant.Type.Signal => typeof(Signal),
Variant.Type.Dictionary => typeof(Dictionary),
Variant.Type.Array => typeof(Godot.Collections.Array),
Variant.Type.Projection => throw new NotImplementedException(),
Variant.Type.PackedByteArray => throw new NotImplementedException(),
Variant.Type.PackedInt32Array => throw new NotImplementedException(),
Variant.Type.PackedInt64Array => throw new NotImplementedException(),
Variant.Type.PackedFloat32Array => throw new NotImplementedException(),
Variant.Type.PackedFloat64Array => throw new NotImplementedException(),
Variant.Type.PackedStringArray => throw new NotImplementedException(),
Variant.Type.PackedVector2Array => throw new NotImplementedException(),
Variant.Type.PackedVector3Array => throw new NotImplementedException(),
Variant.Type.PackedColorArray => throw new NotImplementedException(),
Variant.Type.PackedVector4Array => throw new NotImplementedException(),
Variant.Type.Max => throw new NotImplementedException(),
_ => typeof(object)
};
}

View File

@@ -10,7 +10,7 @@ A .NET template for quickly creating a C# nuget package for use with Godot 4.
<img alt="GodotHelper" src="GodotHelper/icon.png" width="200">
</p>
## 🥚 Getting Started
## Getting Started
This template allows you to easily create a nuget package for use in Godot 4 C# projects. Microsoft's `dotnet` tool allows you to easily create, install, and use templates.
@@ -27,11 +27,11 @@ $GODOT --headless --build-solutions --quit
dotnet build
```
## 💁 Getting Help
## Getting Help
*Is this template broken? Encountering obscure C# build problems?* We'll be happy to help you in the [Chickensoft Discord server][discord].
## 🏝 Environment Setup
## Environment Setup
For the provided debug configurations and test coverage to work correctly, you must setup your development environment correctly. The [Chickensoft Setup Docs][setup-docs] describe how to setup your Godot and C# development environment, following Chickensoft's best practices.
@@ -45,7 +45,7 @@ This template includes some Visual Studio Code settings in `.vscode/settings.jso
The included [`global.json`](./global.json) specifies the version of the .NET SDK that the included projects should use. It also specifies the `Godot.NET.Sdk` version that the included test project should use (since tests run inside an actual Godot game so you can use the full Godot API to verify your package is working as intended).
## 🐞 Debugging
## Debugging
You can debug the included test project for your package in `GodotHelper.Tests/` by opening the root of this repository in VSCode and selecting one of the launch configurations: `Debug Tests` or `Debug Current Test`.
@@ -55,7 +55,7 @@ The launch profiles will trigger a build (without restoring packages) and then i
> **Important:** You must setup a `GODOT` environment variable for the launch configurations above. If you're using [GodotEnv] to install and manage Godot versions, you're already setup! For more info, see the [Chickensoft Setup Docs][setup-docs].
## 👷 Testing
## Testing
By default, a test project in `GodotHelper.Tests/` is created for you to write tests for your package. [GoDotTest] is already included and setup, allowing you to focus on development and testing.
@@ -68,7 +68,7 @@ If you run Godot with the `--run-tests` command line argument, the game will run
Please see `test/ExampleTest.cs` and the [GoDotTest] readme for more examples.
## 🚦 Test Coverage
## Test Coverage
Code coverage requires a few `dotnet` global tools to be installed first. You should install these tools from the root of the project directory.
@@ -94,11 +94,11 @@ cd GodotHelper.Tests
You can also run test coverage through VSCode by opening the command palette and selecting `Tasks: Run Task` and then choosing `coverage`.
## 🏭 CI/CD
## CI/CD
This package includes various GitHub Actions workflows to make developing and deploying your package easier.
### 🚥 Tests
### Tests
Tests run on every push or pull request to the repository. You can configure which platforms you want to run tests on in [`.github/workflows/tests.yaml`](.github/workflows/tests.yaml).
@@ -106,7 +106,7 @@ By default, tests run each platform (macOS, Windows, and Linux) using the latest
Tests are executed by running the Godot test project in `GodotHelper.Tests` from the command line and passing in the relevant arguments to Godot so that [GoDotTest] can discover and run tests.
### 🧑‍🏫 Spellcheck
### Spellcheck
A spell check runs on every push or pull request to the repository. Spellcheck settings can be configured in [`.github/workflows/spellcheck.yaml`](.github/workflows/spellcheck.yaml)
@@ -116,7 +116,7 @@ You can also words to the local `cspell.json` file from VSCode by hovering over
![Fix Spelling](docs/spelling_fix.png)
### 📦 Release
### Release
The included workflow in [`.github/workflows/release.yaml`](.github/workflows/publish.yaml) can be manually dispatched when you're ready to make a new release. Once you specify `major`, `minor`, or `patch` for the version bump strategy, the workflow will build your package with the updated version and release it on both GitHub and nuget.
@@ -124,7 +124,7 @@ The accompanying [`.github/workflows/auto_release.yaml`](.github/workflows/auto_
> To publish to nuget, you need to configure a repository or organization secret within GitHub named `NUGET_API_KEY` that contains your Nuget API key. Make sure you setup `NUGET_API_KEY` as a **secret** (rather than an environment variable) to keep it safe!
### 🏚 Renovatebot
### Renovatebot
This repository includes a [`renovate.json`](./renovate.json) configuration for use with [Renovatebot]. Renovatebot can automatically open and merge pull requests to help you keep your dependencies up to date when it detects new dependency versions have been released.
@@ -140,7 +140,7 @@ If your project is setup to require approvals before pull requests can be merged
---
🐣 Package generated from a 🐤 Chickensoft Template — <https://chickensoft.games>
Package generated from a Chickensoft Template — <https://chickensoft.games>
[chickensoft-badge]: https://chickensoft.games/img/badges/chickensoft_badge.svg
[chickensoft-website]: https://chickensoft.games

View File

@@ -4,6 +4,7 @@
],
"ignorePaths": [
"**/*.tscn",
"**/*.uid",
"**/*.import",
"**/badges/**/*.*",
"**/coverage/**/*.*",