diff --git a/go.mod b/go.mod index 64e37e4a..a66108db 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ go 1.25.6 // https://github.com/googleapis/go-genproto/issues/1015 require ( - cogentcore.org/core v0.3.23 + cogentcore.org/core v0.3.25 github.com/cogentcore/readline v0.1.3 github.com/cogentcore/yaegi v0.0.0-20260116172027-700fbf8949f3 github.com/mitchellh/go-homedir v1.1.0 @@ -58,7 +58,6 @@ require ( github.com/pelletier/go-toml/v2 v2.2.4 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/rivo/uniseg v0.4.7 // indirect - github.com/rogpeppe/go-internal v1.13.1 // indirect github.com/tdewolff/parse/v2 v2.8.5 // indirect golang.org/x/crypto v0.49.0 // indirect golang.org/x/image v0.39.0 // indirect @@ -67,8 +66,8 @@ require ( golang.org/x/sync v0.20.0 // indirect golang.org/x/sys v0.42.0 // indirect golang.org/x/text v0.36.0 // indirect - google.golang.org/genproto v0.0.0-20260414002931-afd174a4e478 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d // indirect + google.golang.org/genproto v0.0.0-20260420184626-e10c466a9529 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect modernc.org/knuth v0.5.4 // indirect modernc.org/token v1.1.0 // indirect diff --git a/go.sum b/go.sum index 8a18b786..c333e856 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,7 @@ codeberg.org/go-pdf/fpdf v0.11.0 h1:n3I8WISQ1cr0S2rvx9DOlE/GypbcimMWqLpel3slHmY= codeberg.org/go-pdf/fpdf v0.11.0/go.mod h1:Y0DGRAdZ0OmnZPvjbMp/1bYxmIPxm0ws4tfoPOc4LjU= -cogentcore.org/core v0.3.23 h1:50dQPFWNeJ9hI45rDCjRkvleJXdtfQjXfMIMOZgfC1M= -cogentcore.org/core v0.3.23/go.mod h1:JUM27+rY4+89M1vJ4xA50re76RHF3PqxRqfgDfLj8Us= +cogentcore.org/core v0.3.25 h1:nrECnVQIl/JvyGFae5c/KystUAlLwSmIsjW1MkpkpiU= +cogentcore.org/core v0.3.25/go.mod h1:+5R2kihBnWrFmRlYd8yJ8JmRuLsGgCXXgvcgLk/YDEI= git.sr.ht/~sbinet/cmpimg v0.1.0 h1:E0zPRk2muWuCqSKSVZIWsgtU9pjsw3eKHi8VmQeScxo= git.sr.ht/~sbinet/cmpimg v0.1.0/go.mod h1:FU12psLbF4TfNXkKH2ZZQ29crIqoiqTZmeQ7dkp/pxE= github.com/Bios-Marcel/wastebasket/v2 v2.0.3 h1:TkoDPcSqluhLGE+EssHu7UGmLgUEkWg7kNyHyyJ3Q9g= @@ -167,10 +167,10 @@ golang.org/x/tools v0.43.0/go.mod h1:uHkMso649BX2cZK6+RpuIPXS3ho2hZo4FVwfoy1vIk0 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= -google.golang.org/genproto v0.0.0-20260414002931-afd174a4e478 h1:aLsVTW0lZ8+IY5u/ERjZSCvAmhuR7slKzyha3YikDNA= -google.golang.org/genproto v0.0.0-20260414002931-afd174a4e478/go.mod h1:YJAzKjfHIUHb9T+bfu8L7mthAp7VVXQBUs1PLdBWS7M= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d h1:wT2n40TBqFY6wiwazVK9/iTWbsQrgk5ZfCSVFLO9LQA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= +google.golang.org/genproto v0.0.0-20260420184626-e10c466a9529 h1:QoMBg0moLIlB/eucPzc+ID5SgPZWuirtjAn3l8nW2Dg= +google.golang.org/genproto v0.0.0-20260420184626-e10c466a9529/go.mod h1:EjLmDZ8liSLBrCTK5vP+bGIxRQHE3ovGvOI0CzGk1PI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 h1:RmoJA1ujG+/lRGNfUnOMfhCy5EipVMyvUE+KNbPbTlw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/physics/builder/joint.go b/physics/builder/joint.go index 9f7797d2..820a0e29 100644 --- a/physics/builder/joint.go +++ b/physics/builder/joint.go @@ -352,7 +352,7 @@ func (jd *Joint) PoseFromPhysics() { // this joint in the physics model. Records into [DoF.Current]. func (jd *Joint) SetTargetVel(dof int32, vel, damp float32) { d := jd.DoF(int(dof)) - d.Current.Vel = vel + d.Current.Vel = d.Limit.ClampValue(vel) d.Current.Damp = damp physics.SetJointTargetVel(jd.JointIndex, dof, vel, damp) } @@ -361,7 +361,7 @@ func (jd *Joint) SetTargetVel(dof int32, vel, damp float32) { // this joint in the physics model. Records into [DoF.Current]. func (jd *Joint) SetTargetPos(dof int32, pos, stiff float32) { d := jd.DoF(int(dof)) - d.Current.Pos = pos + d.Current.Pos = d.Limit.ClampValue(pos) d.Current.Stiff = stiff physics.SetJointTargetPos(jd.JointIndex, dof, pos, stiff) } @@ -370,7 +370,7 @@ func (jd *Joint) SetTargetPos(dof int32, pos, stiff float32) { // this joint in the physics model, setting stiffness. func (jd *Joint) AddTargetPos(dof int32, pos, stiff float32) { d := jd.DoF(int(dof)) - d.Current.Pos += pos + d.Current.Pos = d.Limit.ClampValue(d.Current.Pos + pos) d.Current.Stiff = stiff physics.SetJointTargetPos(jd.JointIndex, dof, d.Current.Pos, stiff) } @@ -383,12 +383,10 @@ func (jd *Joint) AddTargetPos(dof int32, pos, stiff float32) { // which is enforced, and values near the edge can be unstable at higher // stiffness levels. func (jd *Joint) SetTargetAngle(dof int32, angDeg, stiff float32) { - pos := math32.WrapPi(math32.DegToRad(angDeg)) - // pos := math32.DegToRad(angDeg) d := jd.DoF(int(dof)) - d.Current.Pos = pos + d.Current.Pos = math32.WrapPi(d.Limit.ClampValue(math32.DegToRad(angDeg))) d.Current.Stiff = stiff - physics.SetJointTargetPos(jd.JointIndex, dof, pos, stiff) + physics.SetJointTargetPos(jd.JointIndex, dof, d.Current.Pos, stiff) } // AddTargetAngle adds to the Current target angular position, @@ -400,8 +398,7 @@ func (jd *Joint) SetTargetAngle(dof int32, angDeg, stiff float32) { // stiffness levels. func (jd *Joint) AddTargetAngle(dof int32, angDeg, stiff float32) { d := jd.DoF(int(dof)) - d.Current.Pos = math32.WrapPi(d.Current.Pos + math32.DegToRad(angDeg)) - // d.Current.Pos = d.Current.Pos + math32.DegToRad(angDeg) + d.Current.Pos = math32.WrapPi(d.Limit.ClampValue(d.Current.Pos + math32.DegToRad(angDeg))) d.Current.Stiff = stiff physics.SetJointTargetPos(jd.JointIndex, dof, d.Current.Pos, stiff) }