Compare commits
6 Commits
8891190a31
...
db7474043b
Author | SHA1 | Date |
---|---|---|
Spencer Killen | db7474043b | |
Spencer Killen | 13d6939103 | |
alex-kumpula | 1ce9c11a02 | |
alex-kumpula | 9f7780f176 | |
alex-kumpula | a0b8942bdf | |
alex-kumpula | 0ad7b5b1b6 |
Binary file not shown.
BIN
blends/small_room.blend (Stored with Git LFS)
BIN
blends/small_room.blend (Stored with Git LFS)
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,19 @@
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio 2012
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Hurrmmm", "Hurrmmm.csproj", "{BD45A87E-5242-45B0-9A55-8B809F4BB443}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
ExportDebug|Any CPU = ExportDebug|Any CPU
|
||||||
|
ExportRelease|Any CPU = ExportRelease|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{BD45A87E-5242-45B0-9A55-8B809F4BB443}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{BD45A87E-5242-45B0-9A55-8B809F4BB443}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{BD45A87E-5242-45B0-9A55-8B809F4BB443}.ExportDebug|Any CPU.ActiveCfg = ExportDebug|Any CPU
|
||||||
|
{BD45A87E-5242-45B0-9A55-8B809F4BB443}.ExportDebug|Any CPU.Build.0 = ExportDebug|Any CPU
|
||||||
|
{BD45A87E-5242-45B0-9A55-8B809F4BB443}.ExportRelease|Any CPU.ActiveCfg = ExportRelease|Any CPU
|
||||||
|
{BD45A87E-5242-45B0-9A55-8B809F4BB443}.ExportRelease|Any CPU.Build.0 = ExportRelease|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
|
@ -0,0 +1,6 @@
|
||||||
|
<Project Sdk="Godot.NET.Sdk/4.1.3">
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net6.0</TargetFramework>
|
||||||
|
<EnableDynamicLoading>true</EnableDynamicLoading>
|
||||||
|
</PropertyGroup>
|
||||||
|
</Project>
|
|
@ -0,0 +1,28 @@
|
||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 17
|
||||||
|
VisualStudioVersion = 17.6.33815.320
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Hurrmmm", "Hurrmmm.csproj", "{BD45A87E-5242-45B0-9A55-8B809F4BB443}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
ExportDebug|Any CPU = ExportDebug|Any CPU
|
||||||
|
ExportRelease|Any CPU = ExportRelease|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{BD45A87E-5242-45B0-9A55-8B809F4BB443}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{BD45A87E-5242-45B0-9A55-8B809F4BB443}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{BD45A87E-5242-45B0-9A55-8B809F4BB443}.ExportDebug|Any CPU.ActiveCfg = ExportDebug|Any CPU
|
||||||
|
{BD45A87E-5242-45B0-9A55-8B809F4BB443}.ExportDebug|Any CPU.Build.0 = ExportDebug|Any CPU
|
||||||
|
{BD45A87E-5242-45B0-9A55-8B809F4BB443}.ExportRelease|Any CPU.ActiveCfg = ExportRelease|Any CPU
|
||||||
|
{BD45A87E-5242-45B0-9A55-8B809F4BB443}.ExportRelease|Any CPU.Build.0 = ExportRelease|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {87544EC1-9C6D-4DF7-891E-89088A6D794E}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
|
@ -0,0 +1,129 @@
|
||||||
|
using Godot;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
public partial class TAS_System : Node
|
||||||
|
{
|
||||||
|
private double _frameLength = 0.1;
|
||||||
|
private bool _isIncrementingFrames = false;
|
||||||
|
private double _timeSinceLastFrame;
|
||||||
|
private int _currentFrame = 0;
|
||||||
|
private int _lastAdvancedFrame = 0;
|
||||||
|
|
||||||
|
public double FrameLength
|
||||||
|
{
|
||||||
|
get { return this._frameLength; }
|
||||||
|
set { this._frameLength = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool IsIncrementingFrames
|
||||||
|
{
|
||||||
|
get { return this._isIncrementingFrames; }
|
||||||
|
private set { this._isIncrementingFrames = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
private double TimeSinceLastFrame
|
||||||
|
{
|
||||||
|
get { return this._timeSinceLastFrame; }
|
||||||
|
set { this._timeSinceLastFrame = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public int CurrentFrame
|
||||||
|
{
|
||||||
|
get { return this._currentFrame; }
|
||||||
|
private set { this._currentFrame = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The last frame that can be advanced to. This will
|
||||||
|
/// only be greater than CurrentFrame after the player
|
||||||
|
/// regresses frames, and will be equal to CurrentFrame
|
||||||
|
/// when the player has just done an action.
|
||||||
|
/// </summary>
|
||||||
|
/// <value></value>
|
||||||
|
public int LastAdvancedFrame
|
||||||
|
{
|
||||||
|
get { return this._lastAdvancedFrame; }
|
||||||
|
private set { this._lastAdvancedFrame = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Signal is emitted whenever the current frame is incremented.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="newFrame"></param>
|
||||||
|
[Signal]
|
||||||
|
public delegate void FrameIncrementedEventHandler(int newFrame);
|
||||||
|
|
||||||
|
[Signal]
|
||||||
|
public delegate void FramesAdvancedEventHandler(int startFrame, int endFrame);
|
||||||
|
|
||||||
|
[Signal]
|
||||||
|
public delegate void FramesRegressedEventHandler(int startFrame, int endFrame);
|
||||||
|
|
||||||
|
|
||||||
|
public void StartIncrementingFrames()
|
||||||
|
{
|
||||||
|
this.IsIncrementingFrames = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void StopIncrementingFrames()
|
||||||
|
{
|
||||||
|
this.IsIncrementingFrames = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ResetFrameCount()
|
||||||
|
{
|
||||||
|
this.CurrentFrame = 0;
|
||||||
|
this.LastAdvancedFrame = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns how many frames it could successfully advance
|
||||||
|
public int Advance(int numFrames)
|
||||||
|
{
|
||||||
|
int newFrame = Math.Min(this.CurrentFrame + numFrames, this.LastAdvancedFrame);
|
||||||
|
int framesAdvanced = newFrame - this.CurrentFrame;
|
||||||
|
EmitSignal(SignalName.FramesAdvanced, this.CurrentFrame, newFrame);
|
||||||
|
this.CurrentFrame = newFrame;
|
||||||
|
return framesAdvanced;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns how many frames it could successfully regress
|
||||||
|
public int Regress(int numFrames)
|
||||||
|
{
|
||||||
|
int newFrame = Math.Max(this.CurrentFrame - numFrames, 0);
|
||||||
|
int framesRegressed = newFrame - this.CurrentFrame;
|
||||||
|
EmitSignal(SignalName.FramesRegressed, this.CurrentFrame, newFrame);
|
||||||
|
this.CurrentFrame = newFrame;
|
||||||
|
return framesRegressed;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets rid of advanced frames.
|
||||||
|
/// </summary>
|
||||||
|
public void DiscardAdvancedFrames()
|
||||||
|
{
|
||||||
|
this.LastAdvancedFrame = this.CurrentFrame;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void _PhysicsProcess(double delta)
|
||||||
|
{
|
||||||
|
if (this.IsIncrementingFrames)
|
||||||
|
{
|
||||||
|
this.TimeSinceLastFrame += delta;
|
||||||
|
if (this.TimeSinceLastFrame >= this.FrameLength)
|
||||||
|
{
|
||||||
|
this.CurrentFrame++;
|
||||||
|
EmitSignal(SignalName.FrameIncremented, this.CurrentFrame);
|
||||||
|
this.TimeSinceLastFrame = 0 + (this.TimeSinceLastFrame - this.FrameLength);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// GD.Print(CurrentFrame);
|
||||||
|
}
|
||||||
|
|
||||||
|
// public void Test()
|
||||||
|
// {
|
||||||
|
// GD.Print("test123");
|
||||||
|
|
||||||
|
// // EmitSignal(SignalName.TestSignal, "test456");
|
||||||
|
// }
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
[gd_scene load_steps=2 format=3 uid="uid://x6yhkj1f7yg1"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" path="res://TAS_system/TAS_System.cs" id="1_4s6ry"]
|
||||||
|
|
||||||
|
[node name="TAS_System" type="Node"]
|
||||||
|
script = ExtResource("1_4s6ry")
|
|
@ -0,0 +1,33 @@
|
||||||
|
using Godot;
|
||||||
|
using System;
|
||||||
|
using System.Globalization;
|
||||||
|
|
||||||
|
public partial class TASable : Node
|
||||||
|
{
|
||||||
|
Node3D _parent;
|
||||||
|
|
||||||
|
public override void _Ready()
|
||||||
|
{
|
||||||
|
this._parent = this.GetParent<Node3D>();
|
||||||
|
TAS_System TAS = GetNode<TAS_System>("/root/TAS_System");
|
||||||
|
|
||||||
|
TAS.FrameIncremented += this.OnFrameIncremented;
|
||||||
|
TAS.FramesAdvanced += this.OnFramesAdvanced;
|
||||||
|
TAS.FramesRegressed += this.OnFramesRegressed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual void OnFrameIncremented(int newFrame)
|
||||||
|
{
|
||||||
|
GD.Print($"Frame advanced to {newFrame}, called from node {_parent.Name}");
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual void OnFramesAdvanced(int startFrame, int endFrame)
|
||||||
|
{
|
||||||
|
GD.Print($"Frames advanced from {startFrame} to {endFrame}, called from node {_parent.Name}");
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual void OnFramesRegressed(int startFrame, int endFrame)
|
||||||
|
{
|
||||||
|
GD.Print($"Frames regressed from {startFrame} to {endFrame}, called from node {_parent.Name}");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
[gd_scene load_steps=2 format=3 uid="uid://bjhii55pagkb5"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" path="res://TAS_system/TASable.cs" id="1_uqel0"]
|
||||||
|
|
||||||
|
[node name="is_TASable" type="Node"]
|
||||||
|
script = ExtResource("1_uqel0")
|
|
@ -0,0 +1,275 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<!-- saved from url=(0014)about:internet -->
|
||||||
|
<html xmlns:msxsl="urn:schemas-microsoft-com:xslt"><head><meta content="en-us" http-equiv="Content-Language" /><meta content="text/html; charset=utf-16" http-equiv="Content-Type" /><title _locID="ConversionReport0">
|
||||||
|
Migration Report
|
||||||
|
</title><style>
|
||||||
|
/* Body style, for the entire document */
|
||||||
|
body
|
||||||
|
{
|
||||||
|
background: #F3F3F4;
|
||||||
|
color: #1E1E1F;
|
||||||
|
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Header1 style, used for the main title */
|
||||||
|
h1
|
||||||
|
{
|
||||||
|
padding: 10px 0px 10px 10px;
|
||||||
|
font-size: 21pt;
|
||||||
|
background-color: #E2E2E2;
|
||||||
|
border-bottom: 1px #C1C1C2 solid;
|
||||||
|
color: #201F20;
|
||||||
|
margin: 0;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Header2 style, used for "Overview" and other sections */
|
||||||
|
h2
|
||||||
|
{
|
||||||
|
font-size: 18pt;
|
||||||
|
font-weight: normal;
|
||||||
|
padding: 15px 0 5px 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Header3 style, used for sub-sections, such as project name */
|
||||||
|
h3
|
||||||
|
{
|
||||||
|
font-weight: normal;
|
||||||
|
font-size: 15pt;
|
||||||
|
margin: 0;
|
||||||
|
padding: 15px 0 5px 0;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Color all hyperlinks one color */
|
||||||
|
a
|
||||||
|
{
|
||||||
|
color: #1382CE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Table styles */
|
||||||
|
table
|
||||||
|
{
|
||||||
|
border-spacing: 0 0;
|
||||||
|
border-collapse: collapse;
|
||||||
|
font-size: 10pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
table th
|
||||||
|
{
|
||||||
|
background: #E7E7E8;
|
||||||
|
text-align: left;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: normal;
|
||||||
|
padding: 3px 6px 3px 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table td
|
||||||
|
{
|
||||||
|
vertical-align: top;
|
||||||
|
padding: 3px 6px 5px 5px;
|
||||||
|
margin: 0px;
|
||||||
|
border: 1px solid #E7E7E8;
|
||||||
|
background: #F7F7F8;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Local link is a style for hyperlinks that link to file:/// content, there are lots so color them as 'normal' text until the user mouse overs */
|
||||||
|
.localLink
|
||||||
|
{
|
||||||
|
color: #1E1E1F;
|
||||||
|
background: #EEEEED;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.localLink:hover
|
||||||
|
{
|
||||||
|
color: #1382CE;
|
||||||
|
background: #FFFF99;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Center text, used in the over views cells that contain message level counts */
|
||||||
|
.textCentered
|
||||||
|
{
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The message cells in message tables should take up all avaliable space */
|
||||||
|
.messageCell
|
||||||
|
{
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Padding around the content after the h1 */
|
||||||
|
#content
|
||||||
|
{
|
||||||
|
padding: 0px 12px 12px 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The overview table expands to width, with a max width of 97% */
|
||||||
|
#overview table
|
||||||
|
{
|
||||||
|
width: auto;
|
||||||
|
max-width: 75%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The messages tables are always 97% width */
|
||||||
|
#messages table
|
||||||
|
{
|
||||||
|
width: 97%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* All Icons */
|
||||||
|
.IconSuccessEncoded, .IconInfoEncoded, .IconWarningEncoded, .IconErrorEncoded
|
||||||
|
{
|
||||||
|
min-width:18px;
|
||||||
|
min-height:18px;
|
||||||
|
background-repeat:no-repeat;
|
||||||
|
background-position:center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Success icon encoded */
|
||||||
|
.IconSuccessEncoded
|
||||||
|
{
|
||||||
|
/* Note: Do not delete the comment below. It is used to verify the correctness of the encoded image resource below before the product is released */
|
||||||
|
/* [---XsltValidateInternal-Base64EncodedImage:IconSuccess#Begin#background-image: url(data:image/png;base64,#Separator#);#End#] */
|
||||||
|
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABcElEQVR4Xq2TsUsCURzHv15g8ZJcBWlyiYYgCIWcb9DFRRwMW5TA2c0/QEFwFkxxUQdxVlBwCYWOi6IhWgQhBLHJUCkhLr/BW8S7gvrAg+N+v8/v+x68Z8MGy+XSCyABQAXgBgHGALoASkIIDWSLeLBetdHryMjd5IxQPWT4rn1c/P7+xxp72Cs9m5SZ0Bq2vPnbPFafK2zDvmNHypdC0BPkLlQhxJsCAhQoZwdZU5mwxh720qGo8MzTxTTKZDPCx2HoVzp6lz0Q9tKhyx0kGs8Ny+TkWRKk8lCROwEduhyg9l/6lunOPSfmH3NUH6uQ0KHLAe7JYvJjevm+DAMGJHToKtigE+vwvIidxLamb8IBY9e+C5LiXREkfho3TSd06HJA13/oh6T51MTsfQbHrsMynQ5dDihFjiK8JJAU9AKIWTp76dCVN7HWHrajmUEGvyF9nkbAE6gLIS7kTUyuf2gscLoJrElZo/Mvj+nPz/kLTmfnEwP3tB0AAAAASUVORK5CYII=);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Information icon encoded */
|
||||||
|
.IconInfoEncoded
|
||||||
|
{
|
||||||
|
/* Note: Do not delete the comment below. It is used to verify the correctness of the encoded image resource below before the product is released */
|
||||||
|
/* [---XsltValidateInternal-Base64EncodedImage:IconInformation#Begin#background-image: url(data:image/png;base64,#Separator#);#End#] */
|
||||||
|
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABHElEQVR4Xs2TsUoDQRRF7wwoziokjZUKadInhdhukR9YP8DMX1hYW+QvdsXa/QHBbcXC7W0CamWTQnclFutceIQJwwaWNLlwm5k5d94M76mmaeCrrmsLYOocY12FcxZFUeozCqKqqgYA8uevv1H6VuPxcwlfk5N92KHBxfFeCSAxxswlYAW/Xr989x/mv9gkhtyMDhcAxgzRsp7flj8B/HF1RsMXq+NZMkopaHe7lbKxQUEIGbKsYNoGn969060hZBkQex/W8oRQwsQaW2o3Ago2SVcJUzAgY3N0lTCZZm+zPS8HB51gMmS1DEYyOz9acKO1D8JWTlafKIMxdhvlfdyT94Vv5h7P8Ky7nQzACmhvKq3zk3PjW9asz9D/1oigecsioooAAAAASUVORK5CYII=);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Warning icon encoded */
|
||||||
|
.IconWarningEncoded
|
||||||
|
{
|
||||||
|
/* Note: Do not delete the comment below. It is used to verify the correctness of the encoded image resource below before the product is released */
|
||||||
|
/* [---XsltValidateInternal-Base64EncodedImage:IconWarning#Begin#background-image: url(data:image/png;base64,#Separator#);#End#] */
|
||||||
|
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAx0lEQVR4XpWSMQ7CMAxFf4xAyBMLCxMrO8dhaBcuwdCJS3RJBw7SA/QGTCxdWJgiQYWKXJWKIXHIlyw5lqr34tQgEOdcBsCOx5yZK3hCCKdYXneQkh4pEfqzLfu+wVDSyyzFoJjfz9NB+pAF+eizx2Vruts0k15mPgvS6GYvpVtQhB61IB/dk6AF6fS4Ben0uIX5odtFe8Q/eW1KvFeH4e8khT6+gm5B+t3juyDt7n0jpe+CANTd+oTUjN/U3yVaABnSUjFz/gFq44JaVSCXeQAAAABJRU5ErkJggg==);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Error icon encoded */
|
||||||
|
.IconErrorEncoded
|
||||||
|
{
|
||||||
|
/* Note: Do not delete the comment below. It is used to verify the correctness of the encoded image resource below before the product is released */
|
||||||
|
/* [---XsltValidateInternal-Base64EncodedImage:IconError#Begin#background-image: url(data:image/png;base64,#Separator#);#End#] */
|
||||||
|
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABQElEQVR4XqWTvUoEQRCE6wYPZUA80AfwAQz23uCMjA7MDRQEIzPBVEyNTQUFIw00vcQTTMzuAh/AxEQQT8HF/3G/oGGnEUGuoNnd6qoZuqltyKEsyzVJq5I6rnUp6SjGeGhESikzzlc1eL7opfuVbrqbU1Zw9NCgtQMaZpY0eNnaaL2fHusvTK5vKu7sjSS1Y4y3QUA6K3e3Mau5UFDyMP7tYF9o8cAHZv68vipoIJg971PZIZ5HiwdvYGGvFVFHmGmZ2MxwmQYPXubPl9Up0tfoMQGetXd6mRbvhBw+boZ6WF7Mbv1+GsHRk0fQmPAH1GfmZirbCfDJ61tw3Px8/8pZsPAG4jlVhcPgZ7adwNWBB68lkRQWFiTgFlbnLY3DGGM7izIJIyT/jjIvEJw6fdJTc6krDzh6aMwMP9bvDH4ADSsa9uSWVJkAAAAASUVORK5CYII=);
|
||||||
|
}
|
||||||
|
</style><script type="text/javascript" language="javascript">
|
||||||
|
|
||||||
|
// Startup
|
||||||
|
// Hook up the the loaded event for the document/window, to linkify the document content
|
||||||
|
var startupFunction = function() { linkifyElement("messages"); };
|
||||||
|
|
||||||
|
if(window.attachEvent)
|
||||||
|
{
|
||||||
|
window.attachEvent('onload', startupFunction);
|
||||||
|
}
|
||||||
|
else if (window.addEventListener)
|
||||||
|
{
|
||||||
|
window.addEventListener('load', startupFunction, false);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
document.addEventListener('load', startupFunction, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Toggles the visibility of table rows with the specified name
|
||||||
|
function toggleTableRowsByName(name)
|
||||||
|
{
|
||||||
|
var allRows = document.getElementsByTagName('tr');
|
||||||
|
for (i=0; i < allRows.length; i++)
|
||||||
|
{
|
||||||
|
var currentName = allRows[i].getAttribute('name');
|
||||||
|
if(!!currentName && currentName.indexOf(name) == 0)
|
||||||
|
{
|
||||||
|
var isVisible = allRows[i].style.display == '';
|
||||||
|
isVisible ? allRows[i].style.display = 'none' : allRows[i].style.display = '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function scrollToFirstVisibleRow(name)
|
||||||
|
{
|
||||||
|
var allRows = document.getElementsByTagName('tr');
|
||||||
|
for (i=0; i < allRows.length; i++)
|
||||||
|
{
|
||||||
|
var currentName = allRows[i].getAttribute('name');
|
||||||
|
var isVisible = allRows[i].style.display == '';
|
||||||
|
if(!!currentName && currentName.indexOf(name) == 0 && isVisible)
|
||||||
|
{
|
||||||
|
allRows[i].scrollIntoView(true);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Linkifies the specified text content, replaces candidate links with html links
|
||||||
|
function linkify(text)
|
||||||
|
{
|
||||||
|
if(!text || 0 === text.length)
|
||||||
|
{
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Find http, https and ftp links and replace them with hyper links
|
||||||
|
var urlLink = /(http|https|ftp)\:\/\/[a-zA-Z0-9\-\.]+(:[a-zA-Z0-9]*)?\/?([a-zA-Z0-9\-\._\?\,\/\\\+&%\$#\=~;\{\}])*/gi;
|
||||||
|
|
||||||
|
return text.replace(urlLink, '<a href="$&">$&</a>') ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Linkifies the specified element by ID
|
||||||
|
function linkifyElement(id)
|
||||||
|
{
|
||||||
|
var element = document.getElementById(id);
|
||||||
|
if(!!element)
|
||||||
|
{
|
||||||
|
element.innerHTML = linkify(element.innerHTML);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function ToggleMessageVisibility(projectName)
|
||||||
|
{
|
||||||
|
if(!projectName || 0 === projectName.length)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
toggleTableRowsByName("MessageRowClass" + projectName);
|
||||||
|
toggleTableRowsByName('MessageRowHeaderShow' + projectName);
|
||||||
|
toggleTableRowsByName('MessageRowHeaderHide' + projectName);
|
||||||
|
}
|
||||||
|
|
||||||
|
function ScrollToFirstVisibleMessage(projectName)
|
||||||
|
{
|
||||||
|
if(!projectName || 0 === projectName.length)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// First try the 'Show messages' row
|
||||||
|
if(!scrollToFirstVisibleRow('MessageRowHeaderShow' + projectName))
|
||||||
|
{
|
||||||
|
// Failed to find a visible row for 'Show messages', try an actual message row
|
||||||
|
scrollToFirstVisibleRow('MessageRowClass' + projectName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script></head><body><h1 _locID="ConversionReport">
|
||||||
|
Migration Report - Hurrmmm</h1><div id="content"><h2 _locID="OverviewTitle">Overview</h2><div id="overview"><table><tr><th></th><th _locID="ProjectTableHeader">Project</th><th _locID="PathTableHeader">Path</th><th _locID="ErrorsTableHeader">Errors</th><th _locID="WarningsTableHeader">Warnings</th><th _locID="MessagesTableHeader">Messages</th></tr><tr><td class="IconWarningEncoded" /><td><strong><a href="#Solution"><span _locID="OverviewSolutionSpan">Solution</span></a></strong></td><td>Hurrmmm.sln</td><td class="textCentered"><a>0</a></td><td class="textCentered"><a href="#SolutionWarning">1</a></td><td class="textCentered"><a href="#" onclick="ScrollToFirstVisibleMessage('Solution'); return false;">2</a></td></tr><tr><td class="IconSuccessEncoded" /><td><strong><a href="#Hurrmmm">Hurrmmm</a></strong></td><td>Hurrmmm.csproj</td><td class="textCentered"><a>0</a></td><td class="textCentered"><a>0</a></td><td class="textCentered"><a href="#">0</a></td></tr></table></div><h2 _locID="SolutionAndProjectsTitle">Solution and projects</h2><div id="messages"><a name="Solution" /><h3 _locID="ProjectDisplayNameHeader">Solution</h3><table><tr id="SolutionHeaderRow"><th></th><th class="messageCell" _locID="MessageTableHeader">Message</th></tr><tr name="WarningRowClassSolution"><td class="IconWarningEncoded"><a name="SolutionWarning" /></td><td class="messageCell"><strong>Hurrmmm.sln:
|
||||||
|
</strong><span>Visual Studio needs to make non-functional changes to this project in order to enable the project to open in released versions of Visual Studio newer than Visual Studio 2010 SP1 without impacting project behavior.</span></td></tr><tr name="MessageRowHeaderShowSolution"><td class="IconInfoEncoded" /><td class="messageCell"><a _locID="ShowAdditionalMessages" href="#" name="SolutionMessage" onclick="ToggleMessageVisibility('Solution'); return false;">
|
||||||
|
Show 2 additional messages
|
||||||
|
</a></td></tr><tr name="MessageRowClassSolution" style="display: none"><td class="IconInfoEncoded"><a name="SolutionMessage" /></td><td class="messageCell"><strong>Hurrmmm.sln:
|
||||||
|
</strong><span>File successfully backed up as C:\Repos\Hurrmmm\hurrmmm\godot\Backup\Hurrmmm.sln</span></td></tr><tr name="MessageRowClassSolution" style="display: none"><td class="IconInfoEncoded"><a name="SolutionMessage" /></td><td class="messageCell"><strong>Hurrmmm.sln:
|
||||||
|
</strong><span>Solution migrated successfully</span></td></tr><tr style="display: none" name="MessageRowHeaderHideSolution"><td class="IconInfoEncoded" /><td class="messageCell"><a _locID="HideAdditionalMessages" href="#" name="SolutionMessage" onclick="ToggleMessageVisibility('Solution'); return false;">
|
||||||
|
Hide 2 additional messages
|
||||||
|
</a></td></tr></table><a name="Hurrmmm" /><h3>Hurrmmm</h3><table><tr id="HurrmmmHeaderRow"><th></th><th class="messageCell" _locID="MessageTableHeader">Message</th></tr><tr><td class="IconInfoEncoded" /><td class="messageCell" _locID="NoMessagesRow">Hurrmmm logged no messages.
|
||||||
|
</td></tr></table></div></div></body></html>
|
Binary file not shown.
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://ckhf7ksthi053"
|
||||||
|
path="res://.godot/imported/charge.wav-9ea0e7ab134da578b6f69151780ec24f.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://audio/charge.wav"
|
||||||
|
dest_files=["res://.godot/imported/charge.wav-9ea0e7ab134da578b6f69151780ec24f.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
|
@ -4,13 +4,16 @@ extends Node3D
|
||||||
@export var initial_target: Node3D
|
@export var initial_target: Node3D
|
||||||
var target: Targetable = null
|
var target: Targetable = null
|
||||||
@export var sensitivity := 0.01
|
@export var sensitivity := 0.01
|
||||||
@export var charge_time := 3
|
@export var charge_time := 2
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
set_target(initial_target)
|
set_target(initial_target)
|
||||||
|
|
||||||
|
func get_charge():
|
||||||
|
return %radial_ui.charge_amount
|
||||||
|
|
||||||
func _input(event):
|
func _input(event):
|
||||||
if event is InputEventMouseMotion:
|
if event is InputEventMouseMotion and MouseControl.mouse_is_locked() and get_charge() == 0.0:
|
||||||
rotate_view(event.relative*sensitivity)
|
rotate_view(event.relative*sensitivity)
|
||||||
if event.is_action("charge"):
|
if event.is_action("charge"):
|
||||||
charge(event.get_action_strength("charge"))
|
charge(event.get_action_strength("charge"))
|
||||||
|
@ -25,9 +28,11 @@ func charge(amount: float):
|
||||||
charge_tween.kill()
|
charge_tween.kill()
|
||||||
if amount == 0.0:
|
if amount == 0.0:
|
||||||
%radial_ui.set_charge(0.0)
|
%radial_ui.set_charge(0.0)
|
||||||
|
$AudioStreamPlayer.stop()
|
||||||
return
|
return
|
||||||
charge_tween = create_tween()
|
charge_tween = create_tween()
|
||||||
charge_tween.tween_method(%radial_ui.set_charge, 0.0, 1.0, charge_time)
|
charge_tween.tween_method(%radial_ui.set_charge, 0.0, 1.0, charge_time)
|
||||||
|
$AudioStreamPlayer.play()
|
||||||
|
|
||||||
func rotate_view(amount: Vector2):
|
func rotate_view(amount: Vector2):
|
||||||
rotate_y(-amount.x)
|
rotate_y(-amount.x)
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
[gd_scene load_steps=3 format=3 uid="uid://drmb4sitb74fx"]
|
[gd_scene load_steps=4 format=3 uid="uid://drmb4sitb74fx"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://control_scheme/controller.gd" id="1_h3pjb"]
|
[ext_resource type="Script" path="res://control_scheme/controller.gd" id="1_h3pjb"]
|
||||||
[ext_resource type="PackedScene" uid="uid://p2n48c8st55d" path="res://control_scheme/radial_ui.tscn" id="2_qidcb"]
|
[ext_resource type="PackedScene" uid="uid://p2n48c8st55d" path="res://control_scheme/radial_ui.tscn" id="2_qidcb"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://ckhf7ksthi053" path="res://audio/charge.wav" id="3_exgm6"]
|
||||||
|
|
||||||
[node name="controller" type="Node3D"]
|
[node name="controller" type="Node3D"]
|
||||||
top_level = true
|
top_level = true
|
||||||
|
@ -16,3 +17,6 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0)
|
||||||
|
|
||||||
[node name="radial_ui" parent="." instance=ExtResource("2_qidcb")]
|
[node name="radial_ui" parent="." instance=ExtResource("2_qidcb")]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
|
||||||
|
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
|
||||||
|
stream = ExtResource("3_exgm6")
|
||||||
|
|
|
@ -12,7 +12,7 @@ func make_target():
|
||||||
func unmake_target():
|
func unmake_target():
|
||||||
walk_meshes_post_order(self.get_parent(), unchange_all_materials)
|
walk_meshes_post_order(self.get_parent(), unchange_all_materials)
|
||||||
|
|
||||||
func walk_meshes_post_order(parent: Node3D, f: Callable):
|
func walk_meshes_post_order(parent: Node, f: Callable):
|
||||||
for child in parent.get_children():
|
for child in parent.get_children():
|
||||||
walk_meshes_post_order(child, f)
|
walk_meshes_post_order(child, f)
|
||||||
if parent is MeshInstance3D:
|
if parent is MeshInstance3D:
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[gd_scene load_steps=2 format=3 uid="uid://w6cldokq87k0"]
|
[gd_scene load_steps=2 format=3 uid="uid://cbp8c4kpmr0hk"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://control_scheme/is_targetable.gd" id="1_108lw"]
|
[ext_resource type="Script" path="res://control_scheme/is_targetable.gd" id="1_108lw"]
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,10 @@ extends Node3D
|
||||||
func _ready():
|
func _ready():
|
||||||
set_charge(0.0)
|
set_charge(0.0)
|
||||||
|
|
||||||
|
var charge_amount: float = 0.0
|
||||||
|
|
||||||
func set_charge(amount: float):
|
func set_charge(amount: float):
|
||||||
|
charge_amount = amount
|
||||||
var mat: ShaderMaterial = $MeshInstance3D.get_active_material(0)
|
var mat: ShaderMaterial = $MeshInstance3D.get_active_material(0)
|
||||||
mat.set_shader_parameter("charge", amount)
|
mat.set_shader_parameter("charge", amount)
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -0,0 +1,40 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://bsge8trc5uwb0"
|
||||||
|
path="res://.godot/imported/grape.glb-590b932d26d4103b5968cc4125e7a03e.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://grape.glb"
|
||||||
|
dest_files=["res://.godot/imported/grape.glb-590b932d26d4103b5968cc4125e7a03e.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type="Node3D"
|
||||||
|
nodes/root_name="Scene Root"
|
||||||
|
nodes/apply_root_scale=true
|
||||||
|
nodes/root_scale=1.0
|
||||||
|
meshes/ensure_tangents=true
|
||||||
|
meshes/generate_lods=true
|
||||||
|
meshes/create_shadow_meshes=true
|
||||||
|
meshes/light_baking=1
|
||||||
|
meshes/lightmap_texel_size=0.2
|
||||||
|
skins/use_named_skins=true
|
||||||
|
animation/import=true
|
||||||
|
animation/fps=30
|
||||||
|
animation/trimming=false
|
||||||
|
animation/remove_immutable_tracks=true
|
||||||
|
import_script/path="res://physics/import_billiard.gd"
|
||||||
|
_subresources={
|
||||||
|
"nodes": {
|
||||||
|
"PATH:grape2": {
|
||||||
|
"generate/physics": true,
|
||||||
|
"physics/body_type": 1,
|
||||||
|
"physics/shape_type": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
gltf/embedded_image_handling=1
|
|
@ -0,0 +1,23 @@
|
||||||
|
extends Node
|
||||||
|
|
||||||
|
func lock_mouse():
|
||||||
|
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
|
||||||
|
|
||||||
|
func unlock_mouse():
|
||||||
|
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
|
||||||
|
|
||||||
|
func toggle_mouse_lock():
|
||||||
|
if mouse_is_locked():
|
||||||
|
unlock_mouse()
|
||||||
|
else:
|
||||||
|
lock_mouse()
|
||||||
|
|
||||||
|
func mouse_is_locked():
|
||||||
|
return Input.mouse_mode == Input.MOUSE_MODE_CAPTURED
|
||||||
|
|
||||||
|
func _input(event):
|
||||||
|
if event.is_action("charge") and Input.mouse_mode != Input.MOUSE_MODE_CAPTURED:
|
||||||
|
lock_mouse()
|
||||||
|
get_viewport().set_input_as_handled()
|
||||||
|
if event.is_action("ui_cancel"):
|
||||||
|
unlock_mouse()
|
|
@ -0,0 +1 @@
|
||||||
|
extends RigidBody3D
|
|
@ -0,0 +1,9 @@
|
||||||
|
[gd_scene load_steps=3 format=3 uid="uid://cpj2gefpjwogk"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" path="res://physics/billiard.gd" id="1_a0fke"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://cbp8c4kpmr0hk" path="res://control_scheme/is_targetable.tscn" id="2_yrk4o"]
|
||||||
|
|
||||||
|
[node name="billiard" type="RigidBody3D"]
|
||||||
|
script = ExtResource("1_a0fke")
|
||||||
|
|
||||||
|
[node name="is_targetable" parent="." instance=ExtResource("2_yrk4o")]
|
|
@ -0,0 +1,5 @@
|
||||||
|
[gd_scene load_steps=2 format=3 uid="uid://c43pr474qofhl"]
|
||||||
|
|
||||||
|
[ext_resource type="PackedScene" uid="uid://bsge8trc5uwb0" path="res://grape.glb" id="1_jlfas"]
|
||||||
|
|
||||||
|
[node name="grape" instance=ExtResource("1_jlfas")]
|
|
@ -0,0 +1,24 @@
|
||||||
|
@tool
|
||||||
|
extends EditorScenePostImport
|
||||||
|
|
||||||
|
|
||||||
|
func _post_import(scene: Node) -> Object:
|
||||||
|
if scene.get_child_count(true) != 1:
|
||||||
|
push_error("Ruh oh! 342808")
|
||||||
|
return null
|
||||||
|
var new_root: Node = scene.get_child(0)
|
||||||
|
var billiard: Node = preload("billiard.tscn").instantiate()
|
||||||
|
billiard.name = scene.name
|
||||||
|
take_children(new_root, billiard)
|
||||||
|
take_ownership(billiard, billiard)
|
||||||
|
return billiard
|
||||||
|
|
||||||
|
func take_children(src: Node, dest: Node):
|
||||||
|
for child in src.get_children(true):
|
||||||
|
src.remove_child(child)
|
||||||
|
dest.add_child(child)
|
||||||
|
|
||||||
|
func take_ownership(node: Node, owner: Node):
|
||||||
|
for child in node.get_children(true):
|
||||||
|
child.owner = owner
|
||||||
|
take_ownership(child, owner)
|
|
@ -11,12 +11,15 @@ config_version=5
|
||||||
[application]
|
[application]
|
||||||
|
|
||||||
config/name="Hurrmmm"
|
config/name="Hurrmmm"
|
||||||
config/features=PackedStringArray("4.1", "Forward Plus")
|
run/main_scene="res://tests/TAS_system/TAS_test_001.tscn"
|
||||||
|
config/features=PackedStringArray("4.1", "C#", "Forward Plus")
|
||||||
config/icon="res://icon.svg"
|
config/icon="res://icon.svg"
|
||||||
|
|
||||||
[autoload]
|
[autoload]
|
||||||
|
|
||||||
ControllerEventBus="*res://controller_event_bus.gd"
|
ControllerEventBus="*res://controller_event_bus.gd"
|
||||||
|
TAS_System="*res://TAS_system/TAS_System.tscn"
|
||||||
|
MouseControl="*res://mouse_control.gd"
|
||||||
|
|
||||||
[dotnet]
|
[dotnet]
|
||||||
|
|
||||||
|
@ -28,6 +31,12 @@ import/blender/enabled=false
|
||||||
|
|
||||||
[input]
|
[input]
|
||||||
|
|
||||||
|
ui_cancel={
|
||||||
|
"deadzone": 0.5,
|
||||||
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194305,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null)
|
||||||
|
, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":2,"canceled":false,"pressed":false,"double_click":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
charge={
|
charge={
|
||||||
"deadzone": 0.0,
|
"deadzone": 0.0,
|
||||||
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":1,"canceled":false,"pressed":false,"double_click":false,"script":null)
|
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":1,"canceled":false,"pressed":false,"double_click":false,"script":null)
|
||||||
|
|
BIN
godot/small_room.glb (Stored with Git LFS)
BIN
godot/small_room.glb (Stored with Git LFS)
Binary file not shown.
|
@ -28,5 +28,16 @@ animation/fps=30
|
||||||
animation/trimming=false
|
animation/trimming=false
|
||||||
animation/remove_immutable_tracks=true
|
animation/remove_immutable_tracks=true
|
||||||
import_script/path=""
|
import_script/path=""
|
||||||
_subresources={}
|
_subresources={
|
||||||
|
"nodes": {
|
||||||
|
"PATH:room": {
|
||||||
|
"generate/physics": true,
|
||||||
|
"physics/shape_type": 2
|
||||||
|
},
|
||||||
|
"PATH:table": {
|
||||||
|
"generate/physics": true,
|
||||||
|
"physics/shape_type": 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
gltf/embedded_image_handling=1
|
gltf/embedded_image_handling=1
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
using Godot;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
public partial class TAS_test_001 : Node
|
||||||
|
{
|
||||||
|
|
||||||
|
public override void _Ready()
|
||||||
|
{
|
||||||
|
// Called every time the node is added to the scene.
|
||||||
|
// Initialization here.
|
||||||
|
GD.Print("Hello from C# to Godot :)");
|
||||||
|
|
||||||
|
TAS_System TAS = GetNode<TAS_System>("/root/TAS_System");
|
||||||
|
|
||||||
|
TAS.FrameLength = 1.5;
|
||||||
|
|
||||||
|
TAS.StartIncrementingFrames();
|
||||||
|
|
||||||
|
// TAS.FrameIncremented += (x) => GD.Print(x);
|
||||||
|
|
||||||
|
// TAS.Test();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Test2(string testStr2)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
[gd_scene load_steps=2 format=3 uid="uid://bbml0d2v4lf78"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" path="res://tests/TAS_system/TAS_test_001.cs" id="1_0ap5j"]
|
||||||
|
|
||||||
|
[node name="TAS_test_001" type="Node3D"]
|
||||||
|
script = ExtResource("1_0ap5j")
|
|
@ -0,0 +1,36 @@
|
||||||
|
[gd_scene load_steps=7 format=3 uid="uid://by3rnp88l4plx"]
|
||||||
|
|
||||||
|
[ext_resource type="PackedScene" uid="uid://bua7f25rpewkp" path="res://small_room.glb" id="1_bo0jp"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://cbp8c4kpmr0hk" path="res://control_scheme/is_targetable.tscn" id="2_d7v5s"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://drmb4sitb74fx" path="res://control_scheme/controller.tscn" id="3_0hshv"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://bjhii55pagkb5" path="res://TAS_system/is_TASable.tscn" id="3_srlbt"]
|
||||||
|
[ext_resource type="Script" path="res://tests/TAS_system/TAS_test_001.cs" id="5_0ber1"]
|
||||||
|
|
||||||
|
[sub_resource type="Environment" id="Environment_f0m14"]
|
||||||
|
ambient_light_source = 2
|
||||||
|
ambient_light_color = Color(1, 1, 1, 1)
|
||||||
|
ambient_light_energy = 0.5
|
||||||
|
|
||||||
|
[node name="small_room" instance=ExtResource("1_bo0jp")]
|
||||||
|
|
||||||
|
[node name="is_TASable" parent="table" index="0" instance=ExtResource("3_srlbt")]
|
||||||
|
|
||||||
|
[node name="is_targetable" parent="grape" index="0" node_paths=PackedStringArray("attached_to") instance=ExtResource("2_d7v5s")]
|
||||||
|
attached_to = NodePath("..")
|
||||||
|
|
||||||
|
[node name="is_TASable" parent="grape" index="1" instance=ExtResource("3_srlbt")]
|
||||||
|
|
||||||
|
[node name="WorldEnvironment" type="WorldEnvironment" parent="." index="3"]
|
||||||
|
environment = SubResource("Environment_f0m14")
|
||||||
|
|
||||||
|
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="WorldEnvironment" index="0"]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 0.933762, 0.357895, 0, -0.357895, 0.933762, 0, 1.43864, 1.81738)
|
||||||
|
|
||||||
|
[node name="controller" parent="." index="4" node_paths=PackedStringArray("camera", "initial_target") instance=ExtResource("3_0hshv")]
|
||||||
|
camera = NodePath("Camera3D")
|
||||||
|
initial_target = NodePath("../grape")
|
||||||
|
|
||||||
|
[node name="Camera3D" type="Camera3D" parent="controller" index="1"]
|
||||||
|
|
||||||
|
[node name="TAS_test_001" type="Node" parent="." index="6"]
|
||||||
|
script = ExtResource("5_0ber1")
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://bua7f25rpewkp" path="res://small_room.glb" id="1_2ticn"]
|
[ext_resource type="PackedScene" uid="uid://bua7f25rpewkp" path="res://small_room.glb" id="1_2ticn"]
|
||||||
[ext_resource type="PackedScene" uid="uid://drmb4sitb74fx" path="res://control_scheme/controller.tscn" id="2_dcvuq"]
|
[ext_resource type="PackedScene" uid="uid://drmb4sitb74fx" path="res://control_scheme/controller.tscn" id="2_dcvuq"]
|
||||||
[ext_resource type="PackedScene" uid="uid://w6cldokq87k0" path="res://control_scheme/is_targetable.tscn" id="2_y2131"]
|
[ext_resource type="PackedScene" uid="uid://c43pr474qofhl" path="res://physics/grape.tscn" id="3_gijly"]
|
||||||
|
|
||||||
[sub_resource type="Environment" id="Environment_f0m14"]
|
[sub_resource type="Environment" id="Environment_f0m14"]
|
||||||
ambient_light_source = 2
|
ambient_light_source = 2
|
||||||
|
@ -11,16 +11,22 @@ ambient_light_energy = 0.5
|
||||||
|
|
||||||
[node name="small_room" instance=ExtResource("1_2ticn")]
|
[node name="small_room" instance=ExtResource("1_2ticn")]
|
||||||
|
|
||||||
[node name="is_targetable" parent="grape" index="0" instance=ExtResource("2_y2131")]
|
[node name="WorldEnvironment" type="WorldEnvironment" parent="." index="2"]
|
||||||
|
|
||||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="." index="3"]
|
|
||||||
environment = SubResource("Environment_f0m14")
|
environment = SubResource("Environment_f0m14")
|
||||||
|
|
||||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="WorldEnvironment" index="0"]
|
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="WorldEnvironment" index="0"]
|
||||||
transform = Transform3D(1, 0, 0, 0, 0.933762, 0.357895, 0, -0.357895, 0.933762, 0, 1.43864, 1.81738)
|
transform = Transform3D(1, 0, 0, 0, 0.933762, 0.357895, 0, -0.357895, 0.933762, 0, 1.43864, 1.81738)
|
||||||
|
|
||||||
[node name="controller" parent="." index="4" node_paths=PackedStringArray("camera", "initial_target") instance=ExtResource("2_dcvuq")]
|
[node name="controller" parent="." index="3" node_paths=PackedStringArray("camera", "initial_target") instance=ExtResource("2_dcvuq")]
|
||||||
camera = NodePath("Camera3D")
|
camera = NodePath("Camera3D")
|
||||||
initial_target = NodePath("../grape")
|
initial_target = NodePath("../grape")
|
||||||
|
|
||||||
[node name="Camera3D" type="Camera3D" parent="controller" index="1"]
|
[node name="Camera3D" type="Camera3D" parent="controller" index="1"]
|
||||||
|
|
||||||
|
[node name="billiard" parent="." index="4" instance=ExtResource("3_gijly")]
|
||||||
|
|
||||||
|
[node name="grape" parent="." index="5" instance=ExtResource("3_gijly")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.56762, 0.385236)
|
||||||
|
|
||||||
|
[node name="grape2" parent="." index="6" instance=ExtResource("3_gijly")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.60495, 0)
|
||||||
|
|
Loading…
Reference in New Issue