Fix frontend input release and vegetation proxies
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -847,6 +847,50 @@ def add_leaf_card(vertices, faces, center, width, height, yaw_degrees, lean_degr
|
||||
faces.append((base + 0, base + 1, base + 2, base + 3))
|
||||
|
||||
|
||||
def add_irregular_leaf_card(vertices, faces, center, width, height, yaw_degrees, lean_degrees=0.0, pinch=0.18):
|
||||
yaw = math.radians(yaw_degrees)
|
||||
lean = math.radians(lean_degrees)
|
||||
right = (math.cos(yaw) * width * 0.5, math.sin(yaw) * width * 0.5, 0.0)
|
||||
up_offset = (math.sin(lean) * height * 0.35, 0.0, math.cos(lean) * height)
|
||||
cx, cy, cz = center
|
||||
base = len(vertices)
|
||||
vertices.extend(
|
||||
[
|
||||
(cx - right[0] * 0.86, cy - right[1] * 0.86, cz),
|
||||
(cx + right[0] * 0.92, cy + right[1] * 0.92, cz + height * 0.08),
|
||||
(cx + right[0] * pinch + up_offset[0], cy + right[1] * pinch + up_offset[1], cz + up_offset[2]),
|
||||
(cx - right[0] * 0.68 + up_offset[0] * 0.55, cy - right[1] * 0.68 + up_offset[1] * 0.55, cz + up_offset[2] * 0.58),
|
||||
]
|
||||
)
|
||||
faces.append((base + 0, base + 1, base + 2, base + 3))
|
||||
|
||||
|
||||
def add_tapered_cylinder(vertices, faces, base_center, height, base_radius, top_radius, segments=9, yaw_offset_degrees=0.0, top_offset=(0.0, 0.0)):
|
||||
bx, by, bz = base_center
|
||||
yaw_offset = math.radians(yaw_offset_degrees)
|
||||
base_indices = []
|
||||
top_indices = []
|
||||
for index in range(segments):
|
||||
angle = yaw_offset + (math.tau * index) / segments
|
||||
cos_a = math.cos(angle)
|
||||
sin_a = math.sin(angle)
|
||||
base_indices.append(len(vertices))
|
||||
vertices.append((bx + cos_a * base_radius, by + sin_a * base_radius, bz))
|
||||
top_indices.append(len(vertices))
|
||||
vertices.append((bx + top_offset[0] + cos_a * top_radius, by + top_offset[1] + sin_a * top_radius, bz + height))
|
||||
|
||||
base_center_index = len(vertices)
|
||||
vertices.append((bx, by, bz))
|
||||
top_center_index = len(vertices)
|
||||
vertices.append((bx + top_offset[0], by + top_offset[1], bz + height))
|
||||
|
||||
for index in range(segments):
|
||||
next_index = (index + 1) % segments
|
||||
faces.append((base_indices[index], base_indices[next_index], top_indices[next_index], top_indices[index]))
|
||||
faces.append((base_center_index, base_indices[index], base_indices[next_index]))
|
||||
faces.append((top_center_index, top_indices[next_index], top_indices[index]))
|
||||
|
||||
|
||||
def add_low_poly_ellipsoid(vertices, faces, center, radius_x, radius_y, radius_z, segments=10):
|
||||
cx, cy, cz = center
|
||||
top_index = len(vertices)
|
||||
@@ -876,33 +920,44 @@ def add_low_poly_ellipsoid(vertices, faces, center, radius_x, radius_y, radius_z
|
||||
def coastal_oak_mesh():
|
||||
vertices = []
|
||||
faces = []
|
||||
add_box(vertices, faces, (0.0, 0.0, 140.0), (36.0, 30.0, 280.0))
|
||||
add_box(vertices, faces, (-34.0, 14.0, 250.0), (18.0, 16.0, 125.0))
|
||||
add_box(vertices, faces, (42.0, -12.0, 275.0), (18.0, 16.0, 115.0))
|
||||
add_low_poly_ellipsoid(vertices, faces, (0.0, 0.0, 350.0), 150.0, 125.0, 105.0)
|
||||
add_low_poly_ellipsoid(vertices, faces, (-95.0, 30.0, 320.0), 105.0, 82.0, 78.0)
|
||||
add_low_poly_ellipsoid(vertices, faces, (95.0, -20.0, 330.0), 112.0, 88.0, 82.0)
|
||||
add_tapered_cylinder(vertices, faces, (0.0, 0.0, 0.0), 275.0, 23.0, 12.0, 11, 8.0, (18.0, -10.0))
|
||||
add_tapered_cylinder(vertices, faces, (-8.0, 2.0, 180.0), 145.0, 12.0, 6.0, 8, 21.0, (-86.0, 36.0))
|
||||
add_tapered_cylinder(vertices, faces, (12.0, -4.0, 205.0), 150.0, 11.0, 5.5, 8, 12.0, (92.0, -42.0))
|
||||
add_tapered_cylinder(vertices, faces, (5.0, 0.0, 235.0), 120.0, 9.0, 5.0, 8, 44.0, (22.0, 90.0))
|
||||
for center, rx, ry, rz, segments in (
|
||||
((0.0, 4.0, 362.0), 165.0, 126.0, 86.0, 13),
|
||||
((-108.0, 38.0, 330.0), 116.0, 82.0, 66.0, 11),
|
||||
((105.0, -34.0, 342.0), 122.0, 88.0, 70.0, 11),
|
||||
((24.0, 106.0, 330.0), 88.0, 70.0, 58.0, 9),
|
||||
):
|
||||
add_low_poly_ellipsoid(vertices, faces, center, rx, ry, rz, segments)
|
||||
for yaw in (8.0, 52.0, 96.0, 141.0):
|
||||
add_irregular_leaf_card(vertices, faces, (0.0, 0.0, 285.0), 235.0, 150.0, yaw, 6.0, 0.3)
|
||||
return vertices, faces
|
||||
|
||||
|
||||
def coyote_brush_mesh():
|
||||
vertices = []
|
||||
faces = []
|
||||
for yaw in (0.0, 35.0, 82.0, 128.0, 171.0):
|
||||
add_leaf_card(vertices, faces, (0.0, 0.0, 0.0), 190.0, 145.0, yaw, 8.0)
|
||||
add_low_poly_ellipsoid(vertices, faces, (-32.0, 18.0, 78.0), 92.0, 68.0, 56.0, 8)
|
||||
add_low_poly_ellipsoid(vertices, faces, (48.0, -16.0, 70.0), 86.0, 70.0, 50.0, 8)
|
||||
add_low_poly_ellipsoid(vertices, faces, (0.0, 42.0, 62.0), 78.0, 52.0, 45.0, 8)
|
||||
for yaw in (0.0, 27.0, 55.0, 88.0, 122.0, 156.0):
|
||||
add_irregular_leaf_card(vertices, faces, (0.0, 0.0, 0.0), 170.0, 132.0, yaw, 10.0, 0.24)
|
||||
for center, rx, ry, rz in (
|
||||
((-38.0, 18.0, 72.0), 88.0, 62.0, 45.0),
|
||||
((45.0, -22.0, 68.0), 82.0, 66.0, 42.0),
|
||||
((0.0, 45.0, 62.0), 72.0, 48.0, 37.0),
|
||||
((18.0, -56.0, 58.0), 62.0, 44.0, 32.0),
|
||||
):
|
||||
add_low_poly_ellipsoid(vertices, faces, center, rx, ry, rz, 9)
|
||||
return vertices, faces
|
||||
|
||||
|
||||
def dry_grass_clump_mesh():
|
||||
vertices = []
|
||||
faces = []
|
||||
for index, yaw in enumerate((0.0, 22.0, 47.0, 76.0, 111.0, 146.0, 178.0)):
|
||||
for index, yaw in enumerate((0.0, 16.0, 31.0, 49.0, 73.0, 97.0, 121.0, 148.0, 172.0)):
|
||||
width = 18.0 + (index % 3) * 4.0
|
||||
height = 95.0 + (index % 4) * 14.0
|
||||
add_leaf_card(vertices, faces, (0.0, 0.0, 0.0), width, height, yaw, -5.0 + (index % 3) * 5.0)
|
||||
add_irregular_leaf_card(vertices, faces, (0.0, 0.0, 0.0), width, height, yaw, -8.0 + (index % 3) * 6.0, 0.08)
|
||||
return vertices, faces
|
||||
|
||||
|
||||
|
||||
@@ -24,8 +24,11 @@ EXPECTED = {
|
||||
"Saving World",
|
||||
"ConsoleCommand(TEXT(\"AgrarianSaveWorld\"))",
|
||||
"ConsoleCommand(TEXT(\"quit\"))",
|
||||
"PlayerController->SetIgnoreMoveInput(false)",
|
||||
"PlayerController->SetIgnoreLookInput(false)",
|
||||
"AAgrarianGamePlayerController* AgrarianPlayerController",
|
||||
"AgrarianPlayerController->AgrarianSelectCharacter",
|
||||
"AgrarianPlayerController->AgrarianCompleteFrontend",
|
||||
"PlayerController->ResetIgnoreMoveInput()",
|
||||
"PlayerController->ResetIgnoreLookInput()",
|
||||
],
|
||||
"AgrarianGamePlayerController.h": [
|
||||
"ShowMvpPauseMenu",
|
||||
@@ -40,10 +43,19 @@ EXPECTED = {
|
||||
"InputComponent->BindKey(EKeys::Escape",
|
||||
"MvpFrontendWidget->IsInViewport()",
|
||||
"ShowMvpPauseMenu();",
|
||||
"ResetIgnoreMoveInput();",
|
||||
"ResetIgnoreLookInput();",
|
||||
"ApplyDefaultInputMappingContexts();",
|
||||
],
|
||||
}
|
||||
|
||||
FORBIDDEN = {
|
||||
"AgrarianMvpFrontendWidget.cpp": [
|
||||
"ConsoleCommand(TEXT(\"AgrarianSelectCharacter",
|
||||
"ConsoleCommand(TEXT(\"AgrarianCompleteFrontend\"))",
|
||||
"PlayerController->SetIgnoreMoveInput(false)",
|
||||
"PlayerController->SetIgnoreLookInput(false)",
|
||||
],
|
||||
"AgrarianGamePlayerController.cpp": [
|
||||
"BindKey(EKeys::LeftMouseButton",
|
||||
],
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
#include "AgrarianMvpFrontendWidget.h"
|
||||
|
||||
#include "AgrarianGamePlayerController.h"
|
||||
#include "Blueprint/WidgetTree.h"
|
||||
#include "Components/Border.h"
|
||||
#include "Components/Button.h"
|
||||
@@ -204,19 +205,25 @@ void UAgrarianMvpFrontendWidget::ReturnFromActiveScreen()
|
||||
void UAgrarianMvpFrontendWidget::CompleteFrontendFlow()
|
||||
{
|
||||
if (APlayerController* PlayerController = GetOwningPlayer())
|
||||
{
|
||||
if (AAgrarianGamePlayerController* AgrarianPlayerController = Cast<AAgrarianGamePlayerController>(PlayerController))
|
||||
{
|
||||
if (ActiveScreen == EAgrarianMvpFrontendScreen::CharacterSelection || ActiveScreen == EAgrarianMvpFrontendScreen::Loading)
|
||||
{
|
||||
PlayerController->ConsoleCommand(SelectedCharacterArchetype == EAgrarianMvpCharacterArchetype::YoungAdultFemale
|
||||
? TEXT("AgrarianSelectCharacter female")
|
||||
: TEXT("AgrarianSelectCharacter male"));
|
||||
AgrarianPlayerController->AgrarianSelectCharacter(SelectedCharacterArchetype == EAgrarianMvpCharacterArchetype::YoungAdultFemale
|
||||
? TEXT("female")
|
||||
: TEXT("male"));
|
||||
}
|
||||
|
||||
PlayerController->ConsoleCommand(TEXT("AgrarianCompleteFrontend"));
|
||||
AgrarianPlayerController->AgrarianCompleteFrontend();
|
||||
}
|
||||
else
|
||||
{
|
||||
PlayerController->SetInputMode(FInputModeGameOnly());
|
||||
PlayerController->bShowMouseCursor = false;
|
||||
PlayerController->SetIgnoreMoveInput(false);
|
||||
PlayerController->SetIgnoreLookInput(false);
|
||||
PlayerController->ResetIgnoreMoveInput();
|
||||
PlayerController->ResetIgnoreLookInput();
|
||||
}
|
||||
}
|
||||
|
||||
RemoveFromParent();
|
||||
|
||||
Reference in New Issue
Block a user