From b703bb93dd4b32c797e68ad9b04f06f63d2fb71c Mon Sep 17 00:00:00 2001 From: GoaLitiuM Date: Sun, 15 Aug 2021 20:22:25 +0300 Subject: [PATCH] almost, rotation shit still --- Assets/Maps/cube.map | 54 ++++++++++++++++++++++++++---- Content/Settings/TimeSettings.json | 6 ++-- Source/Game/Q3MapImporter.cs | 45 ++++++++++++------------- 3 files changed, 72 insertions(+), 33 deletions(-) diff --git a/Assets/Maps/cube.map b/Assets/Maps/cube.map index 516fe2d..193534e 100644 --- a/Assets/Maps/cube.map +++ b/Assets/Maps/cube.map @@ -24,18 +24,60 @@ } // brush 2 { +( -32 -32 112 ) ( -32 32 112 ) ( 0 0 144 ) common/slick 0 0 0 1 1 0 0 0 +( 0 0 144 ) ( 32 -32 112 ) ( -32 -32 112 ) common/slick 0 0 0 1 1 0 0 0 +( 32 32 112 ) ( -32 32 112 ) ( -32 -32 112 ) common/slick 0 0 0 1 1 0 0 0 +( 0 0 144 ) ( -32 32 112 ) ( 32 32 112 ) common/slick 0 0 0 1 1 0 0 0 +( 0 0 144 ) ( 32 32 112 ) ( 32 -32 112 ) common/slick 0 0 0 1 1 0 0 0 +} +// brush 3 +{ +( 0 0 144 ) ( -32 32 176 ) ( -32 -32 176 ) common/slick 0 0 0 1 1 0 0 0 +( 0 0 144 ) ( -32 -32 176 ) ( 32 -32 176 ) common/slick 0 0 0 1 1 0 0 0 +( -32 32 176 ) ( 32 32 176 ) ( 32 -32 176 ) common/slick 0 0 0 1 1 0 0 0 +( 0 0 144 ) ( 32 32 176 ) ( -32 32 176 ) common/slick 0 0 0 1 1 0 0 0 +( 32 -32 176 ) ( 32 32 176 ) ( 0 0 144 ) common/slick 0 0 0 1 1 0 0 0 +} +// brush 4 +{ +( -32 176 112 ) ( -32 176 176 ) ( 0 144 144 ) common/slick 0 0 0 1 1 0 0 0 +( 0 144 144 ) ( 32 176 112 ) ( -32 176 112 ) common/slick 0 0 0 1 1 0 0 0 +( 0 144 144 ) ( -32 176 176 ) ( 32 176 176 ) common/slick 0 0 0 1 1 0 0 0 +( 32 176 176 ) ( -32 176 176 ) ( -32 176 112 ) common/slick 0 0 0 1 1 0 0 0 +( 0 144 144 ) ( 32 176 176 ) ( 32 176 112 ) common/slick 0 0 0 1 1 0 0 0 +} +// brush 5 +{ +( 0 144 144 ) ( -32 112 176 ) ( -32 112 112 ) common/slick 0 0 0 1 1 0 0 0 +( -32 112 176 ) ( 32 112 176 ) ( 32 112 112 ) common/slick 0 0 0 1 1 0 0 0 +( 0 144 144 ) ( -32 112 112 ) ( 32 112 112 ) common/slick 0 0 0 1 1 0 0 0 +( 0 144 144 ) ( 32 112 176 ) ( -32 112 176 ) common/slick 0 0 0 1 1 0 0 0 +( 32 112 112 ) ( 32 112 176 ) ( 0 144 144 ) common/slick 0 0 0 1 1 0 0 0 +} +// brush 6 +{ ( -32 -32 48 ) ( -32 32 48 ) ( 0 0 80 ) common/slick 0 0 0 1 1 0 0 0 ( 0 0 80 ) ( 32 -32 48 ) ( -32 -32 48 ) common/slick 0 0 0 1 1 0 0 0 ( 32 32 48 ) ( -32 32 48 ) ( -32 -32 48 ) common/slick 0 0 0 1 1 0 0 0 ( 0 0 80 ) ( -32 32 48 ) ( 32 32 48 ) common/slick 0 0 0 1 1 0 0 0 ( 0 0 80 ) ( 32 32 48 ) ( 32 -32 48 ) common/slick 0 0 0 1 1 0 0 0 } -// brush 3 +// brush 7 { -( 0 0 80 ) ( -32 32 112 ) ( -32 -32 112 ) common/slick 0 0 0 1 1 0 0 0 -( 0 0 80 ) ( -32 -32 112 ) ( 32 -32 112 ) common/slick 0 0 0 1 1 0 0 0 -( -32 32 112 ) ( 32 32 112 ) ( 32 -32 112 ) common/slick 0 0 0 1 1 0 0 0 -( 0 0 80 ) ( 32 32 112 ) ( -32 32 112 ) common/slick 0 0 0 1 1 0 0 0 -( 32 -32 112 ) ( 32 32 112 ) ( 0 0 80 ) common/slick 0 0 0 1 1 0 0 0 +( 128 352 128 ) ( 128 353 128 ) ( 128 352 129 ) common/slick 64 32 90 -1 1 0 0 0 +( 112 352 128 ) ( 112 352 129 ) ( 113 352 128 ) common/slick 0 0 90 1 1 0 0 0 +( 112 352 128 ) ( 113 352 128 ) ( 112 353 128 ) common/slick -32 64 90 -1 1 0 0 0 +( 192 432 192 ) ( 192 433 192 ) ( 193 432 192 ) common/slick -32 64 90 1 1 0 0 0 +( 192 416 136 ) ( 193 416 136 ) ( 192 416 137 ) common/slick 0 0 90 -1 1 0 0 0 +( 192 432 136 ) ( 192 432 137 ) ( 192 433 136 ) common/slick 64 32 90 1 1 0 0 0 +} +// brush 8 +{ +( 256 352 128 ) ( 256 353 128 ) ( 256 352 129 ) common/slick 32 0 0 -1 1 0 0 0 +( 240 352 128 ) ( 240 352 129 ) ( 241 352 128 ) common/slick 0 0 0 1 1 0 0 0 +( 240 352 128 ) ( 241 352 128 ) ( 240 353 128 ) common/slick 0 32 0 -1 1 0 0 0 +( 320 432 192 ) ( 320 433 192 ) ( 321 432 192 ) common/slick 0 32 0 1 1 0 0 0 +( 320 416 136 ) ( 321 416 136 ) ( 320 416 137 ) common/slick 0 0 0 -1 1 0 0 0 +( 320 432 136 ) ( 320 432 137 ) ( 320 433 136 ) common/slick 32 0 0 1 1 0 0 0 } } diff --git a/Content/Settings/TimeSettings.json b/Content/Settings/TimeSettings.json index 62df3b4..910b4e2 100644 --- a/Content/Settings/TimeSettings.json +++ b/Content/Settings/TimeSettings.json @@ -1,11 +1,11 @@ { "ID": "a55dc3c04da4ea3744b7f1994565beac", "TypeName": "FlaxEditor.Content.Settings.TimeSettings", - "EngineBuild": 6221, + "EngineBuild": 6223, "Data": { - "UpdateFPS": 120.0, + "UpdateFPS": 0.0, "PhysicsFPS": 60.0, - "DrawFPS": 120.0, + "DrawFPS": 0.0, "TimeScale": 1.0, "MaxUpdateDeltaTime": 0.1 } diff --git a/Source/Game/Q3MapImporter.cs b/Source/Game/Q3MapImporter.cs index aee667f..66070ed 100644 --- a/Source/Game/Q3MapImporter.cs +++ b/Source/Game/Q3MapImporter.cs @@ -1735,61 +1735,58 @@ namespace Game Vector3 v2 = brushVertices[i+1]; Vector3 v3 = brushVertices[i+2]; - Vector3 normal = Vector3.Cross(v3 - v1, v2 - v1).Normalized; - Vector3 normal2 = normal;//new Vector3(normal.X, normal.Z, normal.Y); + Vector3 normal = -Vector3.Cross(v3 - v1, v2 - v1).Normalized; + Vector3 normal2 = new Vector3(-normal.X, -normal.Y, -normal.Z); // texture is projected to the surface from the closest axis var dotX = Mathf.Abs(Vector3.Dot(normal2, Vector3.Right)); var dotY = Mathf.Abs(Vector3.Dot(normal2, Vector3.Up)); var dotZ = Mathf.Abs(Vector3.Dot(normal2, Vector3.Forward)); - Vector3 theUp = Vector3.Up; - + Vector3 theUp; if (dotX > dotY && dotX > dotZ) theUp = Vector3.Right; else if (dotZ > dotX && dotZ > dotY) theUp = -Vector3.Forward; else if (dotY > dotX && dotY > dotZ) theUp = -Vector3.Up; + else + theUp = -Vector3.Up; - - //rot = Quaternion.LookRotation(theUp, Vector3.Dot(normal, Vector3.Forward) < -0.01f ? Vector3.Forward : Vector3.Up); - - //theUp = Vector3.Right; - //theUp = new Vector3(theUp.X, theUp.Z, theUp.Y); var up1 = Vector3.Up; var up2 = -Vector3.Forward; - //theUp = Vector3.Forward; - Quaternion rot = Quaternion.LookRotation(theUp, Mathf.Abs(Vector3.Dot(theUp, up1)) > 0.01f ? up2 : up1); - rot = rot * Quaternion.RotationAxis(Vector3.Forward, 180f * Mathf.DegreesToRadians); - //rot.Invert(); - Vector2 uvScale = new Vector2(1f / 1f / 64f); + Vector2 uvScale = new Vector2(0f); float uvRotation = 0f; + Vector2 uvOffset = new Vector2(0f); bool found = false; foreach (var brushPlane in brush.planes) { Plane plane = brushPlane.plane; if ((plane.Normal - normal).Length < 0.01f) { - uvScale = 1f / brushPlane.scale / 64f; - //uvScale = brushPlane.scale; + uvScale = 1f / brushPlane.scale / 64f; // texture size? uvRotation = brushPlane.rotation; - //uvScale = 1f / 512f; + uvOffset = brushPlane.offset; found = true; break; } } if (!found) - Console.Print("no found:/"); + Console.Print("no found, hidden surface?"); - /*v1 = new Vector3(v1.X, v1.Z, v1.Y); - v2 = new Vector3(v2.X, v2.Z, v2.Y); - v3 = new Vector3(v3.X, v3.Z, v3.Y);*/ + var finalUp = Mathf.Abs(Vector3.Dot(theUp, up1)) > 0.01f ? up2 : up1; + var finalUp2 = Mathf.Abs(Vector3.Dot(theUp, up1)) > 0.01f ? up1 : up2; + Quaternion rot = Quaternion.Identity; + rot = rot * Quaternion.LookRotation(theUp, finalUp); + rot = rot * Quaternion.RotationAxis(Vector3.Forward, 180f * Mathf.DegreesToRadians); + rot = rot * Quaternion.RotationAxis(theUp, uvRotation * Mathf.DegreesToRadians); - brushUvs[i + 0] = (Vector2)(v1 * rot) * uvScale; - brushUvs[i + 1] = (Vector2)(v2 * rot) * uvScale; - brushUvs[i + 2] = (Vector2)(v3 * rot) * uvScale; + + + brushUvs[i + 0] = ((Vector2)(v1 * rot) * uvScale) + uvOffset / 64f; + brushUvs[i + 1] = ((Vector2)(v2 * rot) * uvScale) + uvOffset / 64f; + brushUvs[i + 2] = ((Vector2)(v3 * rot) * uvScale) + uvOffset / 64f; brushNormals[i + 0] = normal; brushNormals[i + 1] = normal;