mirror of
https://github.com/WolfangT/pixel-crusade.git
synced 2026-02-16 15:21:15 -05:00
add model base
This commit is contained in:
78
src/models/base_model.gd
Normal file
78
src/models/base_model.gd
Normal file
@@ -0,0 +1,78 @@
|
||||
extends Node
|
||||
|
||||
const PIXEL_SIZE := 0.0048
|
||||
const HEROIC_SCALE := 57.2
|
||||
const W_H_RATIO := 1.4
|
||||
|
||||
# Basic Variables
|
||||
@export var ModelName: String
|
||||
@export var CustomName: String
|
||||
@export var MovementDistance: int
|
||||
@export var BaseSize: String # In mm
|
||||
@export var MovementType: String
|
||||
@export var RangeCharacteristic: DiceModifier
|
||||
@export var MeleeCharacteristic: DiceModifier
|
||||
@export var ArmorCharacteristic: DiceModifier
|
||||
@export var KeywordsList: Array[String]
|
||||
@export var CharacterSprite2D: CompressedTexture2D
|
||||
|
||||
|
||||
func _init() -> void:
|
||||
pass
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
var base_model := _get_base_model(BaseSize)
|
||||
var base_size = _get_base_size(BaseSize)
|
||||
if $Pivot/Base.mesh == null and base_model != null:
|
||||
$Pivot/Base.mesh = load(base_model)
|
||||
$Pivot/Base.scale.x = HEROIC_SCALE / 1000
|
||||
$Pivot/Base.scale.y = HEROIC_SCALE / 1000
|
||||
$Pivot/Base.scale.z = HEROIC_SCALE / 1000
|
||||
if $Pivot/Sprite2D.texture == null and CharacterSprite2D != null:
|
||||
$Pivot/Sprite2D.texture = CharacterSprite2D
|
||||
$Pivot/Sprite2D.pixel_size = PIXEL_SIZE
|
||||
$Pivot/Sprite2D.position.y = base_size * W_H_RATIO * HEROIC_SCALE / 2
|
||||
$CollisionShape3D.shape.radius = base_size / 2 * HEROIC_SCALE
|
||||
$CollisionShape3D.shape.height = base_size * 1.4 * HEROIC_SCALE
|
||||
$CollisionShape3D.position.y = base_size * 0.7 * HEROIC_SCALE * W_H_RATIO / 2
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(_delta: float) -> void:
|
||||
pass
|
||||
|
||||
|
||||
# Utility functions
|
||||
func _get_base_model(size: String) -> String:
|
||||
match size:
|
||||
"25":
|
||||
return "res://assets/bases/base_25.glb"
|
||||
"32":
|
||||
return "res://assets/bases/base_32.obj"
|
||||
"40":
|
||||
return "res://assets/bases/base_40.glb"
|
||||
"50":
|
||||
return "res://assets/bases/base_50.glb"
|
||||
"50":
|
||||
return "res://assets/bases/base_60.glb"
|
||||
"30x60":
|
||||
return "res://assets/bases/base_30x60.glb"
|
||||
return ""
|
||||
|
||||
func _get_base_size(size: String) -> float:
|
||||
match size:
|
||||
"25":
|
||||
return 25.0 / 1000
|
||||
"32":
|
||||
return 32.0 / 1000
|
||||
"40":
|
||||
return 40.0 / 1000
|
||||
"50":
|
||||
return 50.0 / 1000
|
||||
"50":
|
||||
return 60.0 / 1000
|
||||
"30x60":
|
||||
return 60.0 / 1000
|
||||
push_error("Not valid size of %s" % size)
|
||||
return 0
|
||||
1
src/models/base_model.gd.uid
Normal file
1
src/models/base_model.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://di5g5x80wtaw7
|
||||
22
src/models/base_model.tscn
Normal file
22
src/models/base_model.tscn
Normal file
@@ -0,0 +1,22 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://c26jufswfi2bh"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://di5g5x80wtaw7" path="res://src/models/base_model.gd" id="1_ni6nx"]
|
||||
|
||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_wfmmx"]
|
||||
|
||||
[node name="BaseModel" type="CharacterBody3D"]
|
||||
script = ExtResource("1_ni6nx")
|
||||
|
||||
[node name="Pivot" type="Node3D" parent="."]
|
||||
|
||||
[node name="Sprite2D" type="Sprite3D" parent="Pivot"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.30011, 0)
|
||||
pixel_size = 0.0048
|
||||
billboard = 2
|
||||
|
||||
[node name="Base" type="MeshInstance3D" parent="Pivot"]
|
||||
transform = Transform3D(57.2, 0, 0, 0, 57.2, 0, 0, 0, 57.2, 0, 0, 0)
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
shape = SubResource("CylinderShape3D_wfmmx")
|
||||
@@ -1,22 +1,43 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://c26jufswfi2bh"]
|
||||
[gd_scene load_steps=7 format=3 uid="uid://ds20afeq5fbty"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://dn2uhj5jnbcj1" path="res://assets/cartas/combat_priest.png" id="1_iwweb"]
|
||||
[ext_resource type="PackedScene" uid="uid://jcm4ger3ns40" path="res://assets/bases/Bases Papel-base_32.glb" id="2_ni6nx"]
|
||||
[ext_resource type="PackedScene" uid="uid://c26jufswfi2bh" path="res://src/models/base_model.tscn" id="1_t6p38"]
|
||||
[ext_resource type="Script" uid="uid://4h1cvticrj7u" path="res://src/utils/dice_modifier.gd" id="2_ni6nx"]
|
||||
[ext_resource type="Texture2D" uid="uid://cc85nihxm3set" path="res://assets/cartas/combat_priest_pixel.png" id="3_ni6nx"]
|
||||
|
||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_wfmmx"]
|
||||
[sub_resource type="Resource" id="Resource_wfmmx"]
|
||||
script = ExtResource("2_ni6nx")
|
||||
extra = 0
|
||||
dice = 2
|
||||
fixed = 0
|
||||
metadata/_custom_type_script = "uid://4h1cvticrj7u"
|
||||
|
||||
[node name="Model" type="CharacterBody3D"]
|
||||
[sub_resource type="Resource" id="Resource_s0nyo"]
|
||||
script = ExtResource("2_ni6nx")
|
||||
extra = 0
|
||||
dice = 2
|
||||
fixed = 0
|
||||
metadata/_custom_type_script = "uid://4h1cvticrj7u"
|
||||
|
||||
[node name="Pivot" type="Node3D" parent="."]
|
||||
[sub_resource type="Resource" id="Resource_l764g"]
|
||||
script = ExtResource("2_ni6nx")
|
||||
extra = 0
|
||||
dice = 0
|
||||
fixed = 0
|
||||
metadata/_custom_type_script = "uid://4h1cvticrj7u"
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D" parent="Pivot"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.30011, 0)
|
||||
pixel_size = 0.0048
|
||||
billboard = 2
|
||||
texture = ExtResource("1_iwweb")
|
||||
[node name="BaseModel" instance=ExtResource("1_t6p38")]
|
||||
ModelName = " Heretic Priest "
|
||||
MovementDistance = 6
|
||||
BaseSize = "32"
|
||||
MovementType = "Infantry"
|
||||
RangeCharacteristic = SubResource("Resource_wfmmx")
|
||||
MeleeCharacteristic = SubResource("Resource_s0nyo")
|
||||
ArmorCharacteristic = SubResource("Resource_l764g")
|
||||
KeywordsList = Array[String](["HERETIC", "ELITE", "TOUGH", "LEADER"])
|
||||
CharacterSprite2D = ExtResource("3_ni6nx")
|
||||
|
||||
[node name="Base" parent="Pivot" instance=ExtResource("2_ni6nx")]
|
||||
transform = Transform3D(57.2, 0, 0, 0, 57.2, 0, 0, 0, 57.2, 0, 0, 0)
|
||||
[node name="Sprite2D" parent="Pivot" index="0"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
shape = SubResource("CylinderShape3D_wfmmx")
|
||||
[node name="Base" parent="Pivot" index="1"]
|
||||
transform = Transform3D(0.057, 0, 0, 0, -2.49155e-09, 0.057, 0, -0.057, -2.49155e-09, 0, 0, 0)
|
||||
|
||||
Reference in New Issue
Block a user