退回一部分修改,重新匹配 rapier 的 ColliderBuilder
This commit is contained in:
parent
0a1a6adce1
commit
bb542224a5
13
mods/dr_game/Difficult_Rocket_rs/src/Cargo.lock
generated
13
mods/dr_game/Difficult_Rocket_rs/src/Cargo.lock
generated
@ -131,11 +131,24 @@ dependencies = [
|
|||||||
"cfg-if",
|
"cfg-if",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "dict_derive"
|
||||||
|
version = "0.5.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b46bc7c421493b2f684e78cee446c4537ad816ee452e7b0f2edb36ef4f29d5d6"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn 1.0.109",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "difficult_rocket_rs"
|
name = "difficult_rocket_rs"
|
||||||
version = "0.3.0"
|
version = "0.3.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"dict_derive",
|
||||||
"fs-err",
|
"fs-err",
|
||||||
|
"nalgebra",
|
||||||
"pyo3",
|
"pyo3",
|
||||||
"quick-xml",
|
"quick-xml",
|
||||||
"rapier2d-f64",
|
"rapier2d-f64",
|
||||||
|
@ -11,23 +11,29 @@ authors = ["shenjackyuanjie <3695888@qq.com>"]
|
|||||||
name = 'difficult_rocket_rs'
|
name = 'difficult_rocket_rs'
|
||||||
crate-type = ["cdylib"]
|
crate-type = ["cdylib"]
|
||||||
|
|
||||||
[profile.dev.package.rapier2d-f64]
|
#[profile.dev.package.rapier2d-f64]
|
||||||
opt-level = 2
|
#opt-level = 2
|
||||||
|
|
||||||
[profile.dev]
|
[profile.dev]
|
||||||
opt-level = 1
|
opt-level = 0
|
||||||
|
|
||||||
[profile.release]
|
[profile.release]
|
||||||
lto = "fat"
|
lto = "fat"
|
||||||
# Abort panic info to rapidly terminate program instead of unwinding call stacks.
|
# Abort panic info to rapidly terminate program instead of unwinding call stacks.
|
||||||
# To check panic info, compile the program in dev mode.
|
# To check panic info, compile the program in dev mode.
|
||||||
panic = "abort"
|
panic = "abort"
|
||||||
|
opt-level = 2
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
fs-err = "2.11.0"
|
fs-err = "2.11.0"
|
||||||
quick-xml = { version = "0.31.0", features = ["serialize"] }
|
quick-xml = { version = "0.31.0", features = ["serialize"] }
|
||||||
serde = { version = "1.0.193", features = ["derive"] }
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
|
|
||||||
xml-rs = "0.8.19"
|
xml-rs = "0.8.19"
|
||||||
serde-xml-rs = "0.6.0"
|
serde-xml-rs = "0.6.0"
|
||||||
|
|
||||||
|
nalgebra = "0.32.3"
|
||||||
rapier2d-f64 = { version = "0.17.2", features = ["simd-stable"] }
|
rapier2d-f64 = { version = "0.17.2", features = ["simd-stable"] }
|
||||||
|
|
||||||
pyo3 = { version = "0.20.0", features = ["extension-module", "macros"] }
|
pyo3 = { version = "0.20.0", features = ["extension-module", "macros"] }
|
||||||
|
dict_derive = "0.5"
|
||||||
|
@ -31,37 +31,39 @@ pub struct DRObjectProps<'a> {
|
|||||||
pub flip_y: bool,
|
pub flip_y: bool,
|
||||||
pub connections: Option<Vec<usize>>,
|
pub connections: Option<Vec<usize>>,
|
||||||
pub box_collider_type: bool,
|
pub box_collider_type: bool,
|
||||||
pub box_collider_data: BoxColliderType,
|
pub box_collider_data: BoxColliderEnum,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 为了保证能使用到 所有类型的 碰撞体
|
/// 为了保证能使用到 所有类型的 碰撞体
|
||||||
/// 写了这么长一个玩意
|
/// 写了这么长一个玩意
|
||||||
pub enum BoxColliderType {
|
#[cfg(disable)]
|
||||||
|
use rapier2d_f64::geometry::ColliderBuilder;
|
||||||
|
pub enum BoxColliderEnum {
|
||||||
// rapier2d_f64::geometry::ColliderBuilder
|
// rapier2d_f64::geometry::ColliderBuilder
|
||||||
/// 球
|
/// 球
|
||||||
/// 半径
|
/// 半径
|
||||||
Sphere(Real),
|
Ball(Real),
|
||||||
/// 矩形
|
/// 矩形
|
||||||
/// 宽 高
|
/// 宽 高
|
||||||
Rectangle(Real, Real),
|
Cuboid(Real, Real),
|
||||||
/// 圆角矩形
|
/// 圆角矩形
|
||||||
/// 宽 高 圆角半径
|
/// 宽 高 圆角半径
|
||||||
CornerRoundedRectangle(Real, Real, Real),
|
RoundCuboid(Real, Real, Real),
|
||||||
/// 三角形
|
/// 三角形
|
||||||
/// 三个点坐标
|
/// 三个点坐标
|
||||||
Triangle(Point<Real>, Point<Real>, Point<Real>),
|
Triangle(Point<Real>, Point<Real>, Point<Real>),
|
||||||
/// 圆角三角形
|
/// 圆角三角形
|
||||||
/// 三个点坐标 圆角半径
|
/// 三个点坐标 圆角半径
|
||||||
CornerRoundedTriangle(Point<Real>, Point<Real>, Point<Real>, Real),
|
RoundTriangle(Point<Real>, Point<Real>, Point<Real>, Real),
|
||||||
/// 圆柱体 ( 横向 )
|
/// 圆柱体 ( 横向 )
|
||||||
/// 半径 高
|
/// 半径 高
|
||||||
HorizontalCylinder(Real, Real),
|
CapsuleX(Real, Real),
|
||||||
/// 圆柱体 ( 纵向 )
|
/// 圆柱体 ( 纵向 )
|
||||||
/// 半径 高
|
/// 半径 高
|
||||||
VerticalCylinder(Real, Real),
|
CapsuleY(Real, Real),
|
||||||
/// 复合形状
|
/// 复合形状
|
||||||
/// 给一堆坐标
|
/// 给一堆坐标
|
||||||
CompoundedShape(Point<Real>, Point<Real>),
|
Segment(Point<Real>, Point<Real>),
|
||||||
/// 三角形面定义的几何体(有限元?)
|
/// 三角形面定义的几何体(有限元?)
|
||||||
/// 使用由顶点和索引缓冲区定义的三角形网格形状
|
/// 使用由顶点和索引缓冲区定义的三角形网格形状
|
||||||
TriMesh(Vec<Point<Real>>, Vec<[u32; 3]>),
|
TriMesh(Vec<Point<Real>>, Vec<[u32; 3]>),
|
||||||
@ -71,30 +73,30 @@ pub enum BoxColliderType {
|
|||||||
/// 给定一个多边形几何体,此方法将其分解为一系列凸多边形
|
/// 给定一个多边形几何体,此方法将其分解为一系列凸多边形
|
||||||
ConvexDecomposition(Vec<Point<Real>>, Vec<[u32; 2]>),
|
ConvexDecomposition(Vec<Point<Real>>, Vec<[u32; 2]>),
|
||||||
/// 给定一个圆角的多边形几何体,此方法将其分解为一系列圆角的凸多边形,虽然不知道怎么分
|
/// 给定一个圆角的多边形几何体,此方法将其分解为一系列圆角的凸多边形,虽然不知道怎么分
|
||||||
CornerRoundedConvexDecomposition(Vec<Point<Real>>, Vec<[u32; 2]>, Real),
|
RoundConvexDecomposition(Vec<Point<Real>>, Vec<[u32; 2]>, Real),
|
||||||
/// 给定一个多边形几何体,此方法将其分解为一系列凸多边形
|
/// 给定一个多边形几何体,此方法将其分解为一系列凸多边形
|
||||||
/// 由VHACDParameters指定算法的参数,这将影响分解的结果或质量
|
/// 由VHACDParameters指定算法的参数,这将影响分解的结果或质量
|
||||||
ConvexDecompositionWithParams(Vec<Point<Real>>, Vec<[u32; 2]>, VHACDParameters),
|
ConvexDecompositionWithParams(Vec<Point<Real>>, Vec<[u32; 2]>, VHACDParameters),
|
||||||
/// 给定一个圆角的多边形几何体,此方法将其分解为一系列圆角的凸多边形,虽然不知道怎么分
|
/// 给定一个圆角的多边形几何体,此方法将其分解为一系列圆角的凸多边形,虽然不知道怎么分
|
||||||
/// 由VHACDParameters指定算法的参数,这将影响分解的结果或质量
|
/// 由VHACDParameters指定算法的参数,这将影响分解的结果或质量
|
||||||
CornerRoundedConvexDecompositionWithParams(Vec<Point<Real>>, Vec<[u32; 2]>, VHACDParameters, Real),
|
RoundConvexDecompositionWithParams(Vec<Point<Real>>, Vec<[u32; 2]>, VHACDParameters, Real),
|
||||||
/// 给定一系列点,计算出对应的凸包络的多边形
|
/// 给定一系列点,计算出对应的凸包络的多边形
|
||||||
ConvexHull(Vec<Point<Real>>),
|
ConvexHull(Vec<Point<Real>>),
|
||||||
/// 给定一系列点,计算出对应的凸包络的多边形,然后加上圆角
|
/// 给定一系列点,计算出对应的凸包络的多边形,然后加上圆角
|
||||||
CornerRoundedConvexHull(Vec<Point<Real>>, Real),
|
RoundConvexHull(Vec<Point<Real>>, Real),
|
||||||
/// 给定一系列点,按照凸多边形来计算碰撞箱,但不会算出这个凸多边形
|
/// 给定一系列点,按照凸多边形来计算碰撞箱,但不会算出这个凸多边形
|
||||||
/// 如果实际上这些点并没有定义一个凸多边形,在计算过程可能导致bug
|
/// 如果实际上这些点并没有定义一个凸多边形,在计算过程可能导致bug
|
||||||
ConvexPolyline(Vec<Point<Real>>),
|
ConvexPolyline(Vec<Point<Real>>),
|
||||||
/// 给定一系列点,按照凸多边形加上圆角来计算碰撞箱,但不会算出这个凸多边形
|
/// 给定一系列点,按照凸多边形加上圆角来计算碰撞箱,但不会算出这个凸多边形
|
||||||
/// 如果实际上这些点并没有定义一个凸多边形,在计算过程可能导致bug
|
/// 如果实际上这些点并没有定义一个凸多边形,在计算过程可能导致bug
|
||||||
CornerRoundedConvexPolyline(Vec<Point<Real>>, Real),
|
RoundConvexPolyline(Vec<Point<Real>>, Real),
|
||||||
/// 由顶点定义的多边形
|
/// 由顶点定义的多边形
|
||||||
Polyline(Vec<(Real, Real)>),
|
Polyline(Vec<(Real, Real)>),
|
||||||
/// 由一系列高度定义的某种东西,大概是地面之类的
|
/// 由一系列高度定义的某种东西,大概是地面之类的
|
||||||
HeightDefined(Vec<(Real, Real)>),
|
Heightfield(Vec<(Real, Real)>),
|
||||||
/// 凸分解的复合形状
|
/// 凸分解的复合形状
|
||||||
/// 就是不知道能不能真用上
|
/// 就是不知道能不能真用上
|
||||||
ConvexCompoundedShape(Vec<(Isometry<Real>, SharedShape)>), //凸分解,好像可以略微提升复杂刚体碰撞的性能
|
Compound(Vec<(Isometry<Real>, SharedShape)>), //凸分解,好像可以略微提升复杂刚体碰撞的性能
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct TankProps {
|
pub struct TankProps {
|
||||||
@ -137,7 +139,7 @@ pub struct DRComponentProps<'a, T> {
|
|||||||
/// shenjack: 折磨我的时候到了
|
/// shenjack: 折磨我的时候到了
|
||||||
pub shape_can_be_customized: bool,
|
pub shape_can_be_customized: bool,
|
||||||
/// 所有 raiper2d 支持的碰撞箱类型
|
/// 所有 raiper2d 支持的碰撞箱类型
|
||||||
pub box_collider_data: BoxColliderType,
|
pub box_collider_data: BoxColliderEnum,
|
||||||
// 基本属性
|
// 基本属性
|
||||||
/// 名称
|
/// 名称
|
||||||
pub name: &'a str,
|
pub name: &'a str,
|
||||||
|
@ -51,6 +51,7 @@ fn module_init(_py: Python<'_>, m: &PyModule) -> PyResult<()> {
|
|||||||
m.add_class::<python::data::PySR1PartData>()?;
|
m.add_class::<python::data::PySR1PartData>()?;
|
||||||
m.add_class::<python::data::PySaveStatus>()?;
|
m.add_class::<python::data::PySaveStatus>()?;
|
||||||
m.add_class::<python::console::PyConsole>()?;
|
m.add_class::<python::console::PyConsole>()?;
|
||||||
|
// m.add_class::<python::editor::EditorArea>()?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,3 +8,4 @@
|
|||||||
|
|
||||||
pub mod console;
|
pub mod console;
|
||||||
pub mod data;
|
pub mod data;
|
||||||
|
pub mod editor;
|
||||||
|
19
mods/dr_game/Difficult_Rocket_rs/src/src/python/editor.rs
Normal file
19
mods/dr_game/Difficult_Rocket_rs/src/src/python/editor.rs
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
* -------------------------------
|
||||||
|
* Difficult Rocket
|
||||||
|
* Copyright © 2020-2023 by shenjackyuanjie 3695888@qq.com
|
||||||
|
* All rights reserved
|
||||||
|
* -------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
use nalgebra::Vector2;
|
||||||
|
use pyo3::prelude::*;
|
||||||
|
|
||||||
|
use crate::data_type::dr::BoxColliderEnum;
|
||||||
|
|
||||||
|
// #[pyclass]
|
||||||
|
pub struct EditorArea {
|
||||||
|
/// 存储所有碰撞箱信息
|
||||||
|
pub collision_box: Vec<BoxColliderEnum>,
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user