RobOsageTest: Root Edit

This commit is contained in:
korenkonder
2024-06-02 15:21:39 +03:00
parent f1d0dcd565
commit dcb7f0fcd9
2 changed files with 157 additions and 23 deletions
-1
View File
@@ -1086,7 +1086,6 @@ bool DtmMot::ctrl() {
for (pv_data_set_motion& i : set_motion)
vec.push_back({ rob_chr, pv->id, i.motion_id, "", (int32_t)prj::roundf(i.frame_stage_index.first) });
}
skin_param_manager_add_task(chara_id, vec);
+157 -22
View File
@@ -5,6 +5,7 @@
#include "rob_osage_test.hpp"
#include "../../CRE/Glitter/glitter.hpp"
#include "../../CRE/rob/rob.hpp"
#include "../../CRE/data.hpp"
#include "../../CRE/render_context.hpp"
#include "../../CRE/resolution_mode.hpp"
@@ -66,6 +67,8 @@ public:
void SetValue(float_t value);
void Update(bool value);
static void Callback(dw::Widget* data);
};
class Gain : public dw::SelectionAdapter {
@@ -81,6 +84,8 @@ public:
void SetValue(float_t value);
void Update(bool value);
static void Callback(dw::Widget* data);
};
class AirRes : public dw::SelectionAdapter {
@@ -96,6 +101,8 @@ public:
void SetValue(float_t value);
void Update(bool value);
static void Callback(dw::Widget* data);
};
class RootYRot : public dw::SelectionAdapter {
@@ -111,6 +118,8 @@ public:
void SetValue(float_t value);
void Update(bool value);
static void Callback(dw::Widget* data);
};
class RootZRot : public dw::SelectionAdapter {
@@ -126,6 +135,8 @@ public:
void SetValue(float_t value);
void Update(bool value);
static void Callback(dw::Widget* data);
};
class Fric : public dw::SelectionAdapter {
@@ -141,6 +152,8 @@ public:
void SetValue(float_t value);
void Update(bool value);
static void Callback(dw::Widget* data);
};
class WindAfc : public dw::SelectionAdapter {
@@ -156,6 +169,8 @@ public:
void SetValue(float_t value);
void Update(bool value);
static void Callback(dw::Widget* data);
};
class ColiType : public dw::SelectionAdapter {
@@ -172,7 +187,7 @@ public:
void SetItemIndex(size_t value);
void Update(bool value);
static void ColiTypeCallback(dw::Widget* data);
static void Callback(dw::Widget* data);
};
class InitYRot : public dw::SelectionAdapter {
@@ -188,6 +203,8 @@ public:
void SetValue(float_t value);
void Update(bool value);
static void Callback(dw::Widget* data);
};
class InitZRot : public dw::SelectionAdapter {
@@ -203,6 +220,8 @@ public:
void SetValue(float_t value);
void Update(bool value);
static void Callback(dw::Widget* data);
};
dw::ListBox* list_box;
@@ -245,6 +264,8 @@ public:
void SetValue(float_t value);
void Update(bool value);
static void Callback(dw::Widget* data);
};
class Hinge : public dw::SelectionAdapter {
@@ -283,6 +304,8 @@ public:
void SetValue(float_t value);
void Update(bool value);
static void Callback(dw::Widget* data);
};
class Weight : public dw::SelectionAdapter {
@@ -298,6 +321,8 @@ public:
void SetValue(float_t value);
void Update(bool value);
static void Callback(dw::Widget* data);
};
dw::Group* group;
@@ -893,18 +918,34 @@ void RobOsageTest::basic() {
rob_osage_test_dw->UpdateLayout();
}
skin_param* skp = get_skin_param();
if (skp) {
rob_chara_item_equip_object* itm_eq_obj = get_item_equip_object();
if (!itm_eq_obj)
return;
ExOsageBlock* osg = get_osage_block(itm_eq_obj);
if (osg) {
osg->rob.SetForce(root.force, root.gain);
osg->rob.SetAirRes(root.air_res);
osg->rob.SetRot(root.root_y_rot, root.root_z_rot);
osg->rob.skin_param_ptr->friction = root.fric;
osg->rob.skin_param_ptr->wind_afc = root.wind_afc;
osg->rob.skin_param_ptr->coli_type = root.coli_type;
osg->rob.SetInitRot(root.init_y_rot, root.init_z_rot);
}
ExClothBlock* cls = get_cloth_block(itm_eq_obj);
if (cls) {
skin_param* skp = cls->rob.skin_param_ptr;
skp->force = root.force;
skp->force_gain = root.gain;
skp->air_res = root.air_res;
skp->rot.y = root.root_y_rot;
skp->rot.z = root.root_z_rot;
skp->rot.y = root.root_y_rot * DEG_TO_RAD_FLOAT;
skp->rot.z = root.root_z_rot * DEG_TO_RAD_FLOAT;
skp->friction = root.fric;
skp->wind_afc = root.wind_afc;
skp->coli_type = root.coli_type;
skp->init_rot.y = root.init_y_rot;
skp->init_rot.z = root.init_z_rot;
skp->init_rot.y = root.init_y_rot * DEG_TO_RAD_FLOAT;
skp->init_rot.z = root.init_z_rot * DEG_TO_RAD_FLOAT;
}
}
@@ -1147,13 +1188,13 @@ void RobOsageTest::set_root(skin_param* skp) {
root.force = skp->force;
root.gain = skp->force_gain;
root.air_res = skp->air_res;
root.root_y_rot = skp->rot.y;
root.root_z_rot = skp->rot.z;
root.root_y_rot = skp->rot.y * RAD_TO_DEG_FLOAT;
root.root_z_rot = skp->rot.z * RAD_TO_DEG_FLOAT;
root.fric = skp->friction;
root.wind_afc = skp->wind_afc;
root.coli_type = skp->coli_type;
root.init_y_rot = skp->init_rot.y;
root.init_z_rot = skp->init_rot.z;
root.init_y_rot = skp->init_rot.y * RAD_TO_DEG_FLOAT;
root.init_z_rot = skp->init_rot.z * RAD_TO_DEG_FLOAT;
}
void rob_osage_test_init() {
@@ -1359,6 +1400,8 @@ void RobOsageTestDw::Root::Force::Update(bool value) {
slider->SetText("");
slider->format = "% 2.3f";
slider->SetParams(rob_osage_test->root.force, 0.0f, 0.1f, 0.01f, 0.001f, 0.01f);
slider->AddSelectionListener(new dw::SelectionListenerOnHook(
RobOsageTestDw::Root::Force::Callback));
}
else {
if (!slider)
@@ -1370,6 +1413,12 @@ void RobOsageTestDw::Root::Force::Update(bool value) {
}
}
void RobOsageTestDw::Root::Force::Callback(dw::Widget* data) {
dw::Slider* slider = dynamic_cast<dw::Slider*>(data);
if (slider)
rob_osage_test->root.force = slider->scroll_bar->value;
}
RobOsageTestDw::Root::Gain::Gain(dw::Composite* parent) : slider() {
comp = new dw::Composite(parent);
comp->SetLayout(new dw::RowLayout(dw::HORIZONTAL));
@@ -1408,6 +1457,8 @@ void RobOsageTestDw::Root::Gain::Update(bool value) {
slider->SetText("");
slider->format = "% 2.3f";
slider->SetParams(rob_osage_test->root.gain, 0.0f, 1.0f, 0.1f, 0.01f, 0.1f);
slider->AddSelectionListener(new dw::SelectionListenerOnHook(
RobOsageTestDw::Root::Gain::Callback));
}
else {
if (!slider)
@@ -1419,6 +1470,12 @@ void RobOsageTestDw::Root::Gain::Update(bool value) {
}
}
void RobOsageTestDw::Root::Gain::Callback(dw::Widget* data) {
dw::Slider* slider = dynamic_cast<dw::Slider*>(data);
if (slider)
rob_osage_test->root.gain = slider->scroll_bar->value;
}
RobOsageTestDw::Root::AirRes::AirRes(dw::Composite* parent) : slider() {
comp = new dw::Composite(parent);
comp->SetLayout(new dw::RowLayout(dw::HORIZONTAL));
@@ -1457,6 +1514,8 @@ void RobOsageTestDw::Root::AirRes::Update(bool value) {
slider->SetText("");
slider->format = "% 2.3f";
slider->SetParams(rob_osage_test->root.air_res, 0.0f, 1.0f, 0.1f, 0.01f, 0.1f);
slider->AddSelectionListener(new dw::SelectionListenerOnHook(
RobOsageTestDw::Root::AirRes::Callback));
}
else {
if (!slider)
@@ -1468,6 +1527,12 @@ void RobOsageTestDw::Root::AirRes::Update(bool value) {
}
}
void RobOsageTestDw::Root::AirRes::Callback(dw::Widget* data) {
dw::Slider* slider = dynamic_cast<dw::Slider*>(data);
if (slider)
rob_osage_test->root.air_res = slider->scroll_bar->value;
}
RobOsageTestDw::Root::RootYRot::RootYRot(dw::Composite* parent) : slider() {
comp = new dw::Composite(parent);
comp->SetLayout(new dw::RowLayout(dw::HORIZONTAL));
@@ -1505,7 +1570,10 @@ void RobOsageTestDw::Root::RootYRot::Update(bool value) {
slider = dw::Slider::Create(comp);
slider->SetText("");
slider->format = "% 6.0f";
slider->SetParams(rob_osage_test->root.root_y_rot, -180.0f, 180.0f, 90.0f, 1.0f, 10.0f);
slider->SetParams(rob_osage_test->root.root_y_rot,
-180.0f, 180.0f, 90.0f, 1.0f, 10.0f);
slider->AddSelectionListener(new dw::SelectionListenerOnHook(
RobOsageTestDw::Root::RootYRot::Callback));
}
else {
if (!slider)
@@ -1517,6 +1585,12 @@ void RobOsageTestDw::Root::RootYRot::Update(bool value) {
}
}
void RobOsageTestDw::Root::RootYRot::Callback(dw::Widget* data) {
dw::Slider* slider = dynamic_cast<dw::Slider*>(data);
if (slider)
rob_osage_test->root.root_y_rot = slider->scroll_bar->value;
}
RobOsageTestDw::Root::RootZRot::RootZRot(dw::Composite* parent) : slider() {
comp = new dw::Composite(parent);
comp->SetLayout(new dw::RowLayout(dw::HORIZONTAL));
@@ -1554,7 +1628,10 @@ void RobOsageTestDw::Root::RootZRot::Update(bool value) {
slider = dw::Slider::Create(comp);
slider->SetText("");
slider->format = "% 6.0f";
slider->SetParams(rob_osage_test->root.root_z_rot, -180.0f, 180.0f, 90.0f, 1.0f, 10.0f);
slider->SetParams(rob_osage_test->root.root_z_rot,
-180.0f, 180.0f, 90.0f, 1.0f, 10.0f);
slider->AddSelectionListener(new dw::SelectionListenerOnHook(
RobOsageTestDw::Root::RootZRot::Callback));
}
else {
if (!slider)
@@ -1566,6 +1643,12 @@ void RobOsageTestDw::Root::RootZRot::Update(bool value) {
}
}
void RobOsageTestDw::Root::RootZRot::Callback(dw::Widget* data) {
dw::Slider* slider = dynamic_cast<dw::Slider*>(data);
if (slider)
rob_osage_test->root.root_z_rot = slider->scroll_bar->value;
}
RobOsageTestDw::Root::Fric::Fric(dw::Composite* parent) : slider() {
comp = new dw::Composite(parent);
comp->SetLayout(new dw::RowLayout(dw::HORIZONTAL));
@@ -1604,6 +1687,8 @@ void RobOsageTestDw::Root::Fric::Update(bool value) {
slider->SetText("");
slider->format = "% 2.3f";
slider->SetParams(rob_osage_test->root.fric, 0.0f, 1.0f, 0.1f, 0.01f, 0.1f);
slider->AddSelectionListener(new dw::SelectionListenerOnHook(
RobOsageTestDw::Root::Fric::Callback));
}
else {
if (!slider)
@@ -1615,6 +1700,12 @@ void RobOsageTestDw::Root::Fric::Update(bool value) {
}
}
void RobOsageTestDw::Root::Fric::Callback(dw::Widget* data) {
dw::Slider* slider = dynamic_cast<dw::Slider*>(data);
if (slider)
rob_osage_test->root.fric = slider->scroll_bar->value;
}
RobOsageTestDw::Root::WindAfc::WindAfc(dw::Composite* parent) : slider() {
comp = new dw::Composite(parent);
comp->SetLayout(new dw::RowLayout(dw::HORIZONTAL));
@@ -1653,6 +1744,8 @@ void RobOsageTestDw::Root::WindAfc::Update(bool value) {
slider->SetText("");
slider->format = "% 2.3f";
slider->SetParams(rob_osage_test->root.wind_afc, 0.0f, 1.0f, 0.1f, 0.01f, 0.1f);
slider->AddSelectionListener(new dw::SelectionListenerOnHook(
RobOsageTestDw::Root::WindAfc::Callback));
}
else {
if (!slider)
@@ -1664,6 +1757,12 @@ void RobOsageTestDw::Root::WindAfc::Update(bool value) {
}
}
void RobOsageTestDw::Root::WindAfc::Callback(dw::Widget* data) {
dw::Slider* slider = dynamic_cast<dw::Slider*>(data);
if (slider)
rob_osage_test->root.wind_afc = slider->scroll_bar->value;
}
RobOsageTestDw::Root::ColiType::ColiType(dw::Composite* parent) : list_box() {
comp = new dw::Composite(parent);
comp->SetLayout(new dw::RowLayout(dw::HORIZONTAL));
@@ -1704,7 +1803,7 @@ void RobOsageTestDw::Root::ColiType::Update(bool value) {
list_box->AddItem("coli_type: Capsule(+root)");
list_box->SetItemIndex(rob_osage_test->root.coli_type);
list_box->AddSelectionListener(new dw::SelectionListenerOnHook(
RobOsageTestDw::Root::ColiType::ColiTypeCallback));
RobOsageTestDw::Root::ColiType::Callback));
}
else {
if (!list_box)
@@ -1716,13 +1815,10 @@ void RobOsageTestDw::Root::ColiType::Update(bool value) {
}
}
void RobOsageTestDw::Root::ColiType::ColiTypeCallback(dw::Widget* data) {
void RobOsageTestDw::Root::ColiType::Callback(dw::Widget* data) {
dw::ListBox* list_box = dynamic_cast<dw::ListBox*>(data);
if (list_box) {
skin_param* skp = rob_osage_test->get_skin_param();
if (skp)
skp->coli_type = (SkinParam::RootCollisionType)(int32_t)list_box->list->selected_item;
}
if (list_box)
rob_osage_test->root.coli_type = (SkinParam::RootCollisionType)(int32_t)list_box->list->selected_item;
}
RobOsageTestDw::Root::InitYRot::InitYRot(dw::Composite* parent) : slider() {
@@ -1762,7 +1858,10 @@ void RobOsageTestDw::Root::InitYRot::Update(bool value) {
slider = dw::Slider::Create(comp);
slider->SetText("");
slider->format = "% 6.0f";
slider->SetParams(rob_osage_test->root.init_y_rot, -180.0f, 180.0f, 90.0f, 1.0f, 10.0f);
slider->SetParams(rob_osage_test->root.init_y_rot,
-180.0f, 180.0f, 90.0f, 1.0f, 10.0f);
slider->AddSelectionListener(new dw::SelectionListenerOnHook(
RobOsageTestDw::Root::InitYRot::Callback));
}
else {
if (!slider)
@@ -1774,6 +1873,12 @@ void RobOsageTestDw::Root::InitYRot::Update(bool value) {
}
}
void RobOsageTestDw::Root::InitYRot::Callback(dw::Widget* data) {
dw::Slider* slider = dynamic_cast<dw::Slider*>(data);
if (slider)
rob_osage_test->root.init_y_rot = slider->scroll_bar->value;
}
RobOsageTestDw::Root::InitZRot::InitZRot(dw::Composite* parent) : slider() {
comp = new dw::Composite(parent);
comp->SetLayout(new dw::RowLayout(dw::HORIZONTAL));
@@ -1811,7 +1916,10 @@ void RobOsageTestDw::Root::InitZRot::Update(bool value) {
slider = dw::Slider::Create(comp);
slider->SetText("");
slider->format = "% 6.0f";
slider->SetParams(rob_osage_test->root.init_z_rot, -180.0f, 180.0f, 90.0f, 1.0f, 10.0f);
slider->SetParams(rob_osage_test->root.init_z_rot,
-180.0f, 180.0f, 90.0f, 1.0f, 10.0f);
slider->AddSelectionListener(new dw::SelectionListenerOnHook(
RobOsageTestDw::Root::InitZRot::Callback));
}
else {
if (!slider)
@@ -1823,6 +1931,12 @@ void RobOsageTestDw::Root::InitZRot::Update(bool value) {
}
}
void RobOsageTestDw::Root::InitZRot::Callback(dw::Widget* data) {
dw::Slider* slider = dynamic_cast<dw::Slider*>(data);
if (slider)
rob_osage_test->root.init_z_rot = slider->scroll_bar->value;
}
void RobOsageTestDw::Root::Init(dw::Composite* parent) {
dw::Composite* comp = new dw::Composite(parent);
@@ -1961,6 +2075,13 @@ void RobOsageTestDw::Node::CollisionRadius::Update(bool value) {
}
}
void RobOsageTestDw::Node::CollisionRadius::Callback(dw::Widget* data) {
dw::Slider* slider = dynamic_cast<dw::Slider*>(data);
if (slider) {
}
}
RobOsageTestDw::Node::Hinge::Hinge(dw::Composite* parent)
: y_min_slider(), y_max_slider(), z_min_slider(), z_max_slider() {
comp = new dw::Composite(parent);
@@ -2115,6 +2236,13 @@ void RobOsageTestDw::Node::InertialCancel::Update(bool value) {
}
}
void RobOsageTestDw::Node::InertialCancel::Callback(dw::Widget* data) {
dw::Slider* slider = dynamic_cast<dw::Slider*>(data);
if (slider) {
}
}
RobOsageTestDw::Node::Weight::Weight(dw::Composite* parent) : slider() {
comp = new dw::Composite(parent);
comp->SetLayout(new dw::RowLayout(dw::HORIZONTAL));
@@ -2157,6 +2285,13 @@ void RobOsageTestDw::Node::Weight::Update(bool value) {
}
}
void RobOsageTestDw::Node::Weight::Callback(dw::Widget* data) {
dw::Slider* slider = dynamic_cast<dw::Slider*>(data);
if (slider) {
}
}
void RobOsageTestDw::Node::Init(dw::Composite* parent) {
group = new dw::Group(parent);
group->SetText("Node Param");