Basic universe management, generation and simulation flow
This commit is contained in:
parent
4c078dbede
commit
78fceeb95e
29 changed files with 664 additions and 29 deletions
5
scripts/GameObjects/Nodes/StarNode.cs
Normal file
5
scripts/GameObjects/Nodes/StarNode.cs
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
using Godot;
|
||||
|
||||
public partial class StarNode : Node
|
||||
{
|
||||
}
|
||||
1
scripts/GameObjects/Nodes/StarNode.cs.uid
Normal file
1
scripts/GameObjects/Nodes/StarNode.cs.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://cbt6p1bhh4o8q
|
||||
41
scripts/GameObjects/Nodes/VesselNode.cs
Normal file
41
scripts/GameObjects/Nodes/VesselNode.cs
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
using System.Collections.Generic;
|
||||
using Godot;
|
||||
|
||||
public partial class VesselNode : RigidBody3D
|
||||
{
|
||||
public Vessel VesselData;
|
||||
public List<VesselModuleNode> Modules = [];
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
VesselModuleNode moduleBridge = InstantiateModule("test_module_bridge");
|
||||
VesselModuleNode moduleCombined = InstantiateModule("test_module_combined");
|
||||
VesselModuleNode moduleEngine1 = InstantiateModule("test_module_engine");
|
||||
VesselModuleNode moduleEngine2 = InstantiateModule("test_module_engine");
|
||||
|
||||
CallDeferred(nameof(AttachModule), moduleBridge, moduleCombined, "TestModuleBridge_AnchorBack", "TestModuleCombined_AnchorFront");
|
||||
CallDeferred(nameof(AttachModule), moduleBridge, moduleEngine1, "TestModuleBridge_AnchorLeft", "TestModuleEngine_AnchorRight");
|
||||
CallDeferred(nameof(AttachModule), moduleBridge, moduleEngine2, "TestModuleBridge_AnchorRight", "TestModuleEngine_AnchorLeft");
|
||||
}
|
||||
|
||||
private VesselModuleNode InstantiateModule(string moduleName)
|
||||
{
|
||||
PackedScene modulePrefab = ResourceLoader.Load<PackedScene>($"res://prefabs/modules/{moduleName}.tscn");
|
||||
VesselModuleNode moduleInstance = modulePrefab.Instantiate<VesselModuleNode>();
|
||||
|
||||
CallDeferred("add_child", moduleInstance);
|
||||
|
||||
VesselData.Modules.Add(moduleInstance.ModuleData);
|
||||
Modules.Add(moduleInstance);
|
||||
|
||||
return moduleInstance;
|
||||
}
|
||||
|
||||
private void AttachModule(VesselModuleNode attachToModule, VesselModuleNode newModule, string existingAnchorName, string newAnchorName)
|
||||
{
|
||||
Node3D existingAnchor = attachToModule.GetAnchor(existingAnchorName);
|
||||
Node3D newAnchor = newModule.GetAnchor(newAnchorName);
|
||||
|
||||
newModule.GlobalTransform = existingAnchor.GlobalTransform * newAnchor.Transform.AffineInverse();
|
||||
}
|
||||
}
|
||||
1
scripts/GameObjects/Nodes/VesselNode.cs.uid
Normal file
1
scripts/GameObjects/Nodes/VesselNode.cs.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://dvd8i36joinsc
|
||||
9
scripts/GameObjects/Star.cs
Normal file
9
scripts/GameObjects/Star.cs
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
using Godot;
|
||||
|
||||
public class Star(Sector sector, Vector3 localCoordinates) : GameObject(sector, localCoordinates)
|
||||
{
|
||||
public override void Simulate(double delta)
|
||||
{
|
||||
base.Simulate(delta);
|
||||
}
|
||||
}
|
||||
1
scripts/GameObjects/Star.cs.uid
Normal file
1
scripts/GameObjects/Star.cs.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://b8lixjwfffn6o
|
||||
|
|
@ -1,14 +1,17 @@
|
|||
using System.Collections.Generic;
|
||||
using Godot;
|
||||
|
||||
public class Vessel : GameObject
|
||||
public class Vessel(Sector sector, Vector3 localCoordinates) : GameObject(sector, localCoordinates)
|
||||
{
|
||||
public List<VesselModule> Modules = [];
|
||||
public List<VesselModule> Modules = [];
|
||||
|
||||
public override void Simulate(double delta)
|
||||
{
|
||||
Modules.ForEach(module =>
|
||||
{
|
||||
module.Simulate(delta);
|
||||
});
|
||||
}
|
||||
public override void Simulate(double delta)
|
||||
{
|
||||
base.Simulate(delta);
|
||||
|
||||
Modules.ForEach(module =>
|
||||
{
|
||||
module.Simulate(delta);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue