[v0.0.1.2] consider the -1 area of triangles
This commit is contained in:
parent
16b64d7945
commit
2ae48aafda
4 changed files with 26 additions and 9 deletions
|
@ -1,4 +1,10 @@
|
||||||
# CHANGELOG
|
# CHANGELOG
|
||||||
|
## \[v0.0.1.2] consider the -1 area of triangles (2022/07/20)
|
||||||
|
- WFC
|
||||||
|
- consider the -1 area of triangles to improve the precision of WFC plot
|
||||||
|
- SMSDolphin
|
||||||
|
- add `*args` and `**kwargs` to `hook()`
|
||||||
|
- use sup-dolphin-memory-lib >= 0.1.2 to solve pid problem
|
||||||
## \[v0.0.1.1] improve performance by using PolyCollection (2022/07/19)
|
## \[v0.0.1.1] improve performance by using PolyCollection (2022/07/19)
|
||||||
- WFC
|
- WFC
|
||||||
- improve process speed of `make_geo_plot()` by using PolyCollection
|
- improve process speed of `make_geo_plot()` by using PolyCollection
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[metadata]
|
[metadata]
|
||||||
name = supSMSTAS
|
name = supSMSTAS
|
||||||
version = 0.0.1.1
|
version = 0.0.1.2
|
||||||
author = sup39
|
author = sup39
|
||||||
author_email = sms@sup39.dev
|
author_email = sms@sup39.dev
|
||||||
description = A tool to support Super Mario Sunshine Tool Assisted Speedrun/Superplay
|
description = A tool to support Super Mario Sunshine Tool Assisted Speedrun/Superplay
|
||||||
|
@ -23,7 +23,7 @@ packages = find_namespace:
|
||||||
include_package_data = True
|
include_package_data = True
|
||||||
python_requires = >=3.8
|
python_requires = >=3.8
|
||||||
install_requires =
|
install_requires =
|
||||||
sup-dolphin-memory-lib >= 0.1.1
|
sup-dolphin-memory-lib >= 0.1.2
|
||||||
matplotlib >= 3.5
|
matplotlib >= 3.5
|
||||||
PyQt5 >= 5.15
|
PyQt5 >= 5.15
|
||||||
|
|
||||||
|
|
|
@ -69,9 +69,9 @@ class SMSDolphin(Dolphin):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.hooked = False
|
self.hooked = False
|
||||||
def hook(self):
|
def hook(self, *args, **kwargs):
|
||||||
self.hooked = False
|
self.hooked = False
|
||||||
if Dolphin.hook(self) is None:
|
if super().hook(*args, **kwargs) is None:
|
||||||
return 'SMS is not running'
|
return 'SMS is not running'
|
||||||
# found pid -> check game
|
# found pid -> check game
|
||||||
verID = self.memory.buf[:8].tobytes()
|
verID = self.memory.buf[:8].tobytes()
|
||||||
|
|
|
@ -30,14 +30,23 @@ makeTriPrism = lambda tri0, tri1: Polyhedron([
|
||||||
(3, 4), (4, 5), (5, 3),
|
(3, 4), (4, 5), (5, 3),
|
||||||
])
|
])
|
||||||
|
|
||||||
|
def extendTriangle(tri, axis):
|
||||||
|
ans = np.array(tri, 'd')
|
||||||
|
tri = tri[:, axis]
|
||||||
|
for i in [-1, 0, 1]:
|
||||||
|
l1, l2 = tri[i]-tri[i+1], tri[i]-tri[i-1]
|
||||||
|
ans[i, axis] += (l1+l2)/np.abs(np.cross(l1, l2).item())
|
||||||
|
return ans
|
||||||
|
|
||||||
def makeGround(tri, hG=0):
|
def makeGround(tri, hG=0):
|
||||||
vertsLow = tri.verts-(0,108,0)
|
vertsE = extendTriangle(tri.verts, [0, 2])
|
||||||
|
vertsLow = vertsE-(0,108,0)
|
||||||
ySlice = tri.minY-30
|
ySlice = tri.minY-30
|
||||||
v = array(vertsLow)
|
v = array(vertsLow)
|
||||||
vertsLow[:,1] = np.clip(vertsLow[:,1], a_min=ySlice, a_max=None)
|
vertsLow[:,1] = np.clip(vertsLow[:,1], a_min=ySlice, a_max=None)
|
||||||
verts = [
|
verts = [
|
||||||
*vertsLow,
|
*vertsLow,
|
||||||
*(tri.verts+(0,hG,0)),
|
*(vertsE+(0,hG,0)),
|
||||||
]
|
]
|
||||||
edges = [
|
edges = [
|
||||||
# top face
|
# top face
|
||||||
|
@ -70,12 +79,14 @@ def makeGround(tri, hG=0):
|
||||||
poly = Polyhedron(verts, edges)
|
poly = Polyhedron(verts, edges)
|
||||||
return poly
|
return poly
|
||||||
def makeRoof(tri, hR=82):
|
def makeRoof(tri, hR=82):
|
||||||
poly = makeTriPrism(tri.verts-(0,hR,0), tri.verts-(0,160,0))
|
verts = extendTriangle(tri.verts, [0, 2])
|
||||||
|
poly = makeTriPrism(verts-(0,hR,0), verts-(0,160,0))
|
||||||
return poly
|
return poly
|
||||||
def makeWall(tri, rW=50, dy=30):
|
def makeWall(tri, rW=50, dy=30):
|
||||||
verts = tri.verts - (0, dy, 0)
|
|
||||||
n = tri.n
|
n = tri.n
|
||||||
off = (np.abs(rW/n[0]),0,0) if np.abs(n[0])>0.707 else (0,0,np.abs(rW/n[2]))
|
isXWall = np.abs(n[0])>0.707
|
||||||
|
verts = extendTriangle(tri.verts, [2 if isXWall else 0, 1]) - (0, dy, 0)
|
||||||
|
off = (np.abs(rW/n[0]),0,0) if isXWall else (0,0,np.abs(rW/n[2]))
|
||||||
poly = makeTriPrism(verts-off, verts+off)
|
poly = makeTriPrism(verts-off, verts+off)
|
||||||
return poly
|
return poly
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue