|
|
|
@ -128,64 +128,78 @@ export class RectAreaLight extends Light
|
|
|
|
|
}
|
|
|
|
|
MoveStretchPoints(ids: number[], vec: Vector3)
|
|
|
|
|
{
|
|
|
|
|
if (ids.length === 4 || ids.length === 3)
|
|
|
|
|
if (ids.length === 4)
|
|
|
|
|
{
|
|
|
|
|
this.Move(vec);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
else if (ids.length === 1)
|
|
|
|
|
|
|
|
|
|
const MoveOneGrip = () =>
|
|
|
|
|
{
|
|
|
|
|
let i = ids[0];
|
|
|
|
|
if (i < 4)
|
|
|
|
|
this.MoveGripPoints(ids, vec);
|
|
|
|
|
else
|
|
|
|
|
this.MoveGripPoints([5], vec);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
if (ids.length === 1)
|
|
|
|
|
{
|
|
|
|
|
MoveOneGrip();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
else//===2
|
|
|
|
|
|
|
|
|
|
//ids.length === 2,3
|
|
|
|
|
ids = ids.filter(i => i !== 4);//移除中心
|
|
|
|
|
if (ids.length === 1)
|
|
|
|
|
{
|
|
|
|
|
ids.sort((a1, a2) => a1 - a2);
|
|
|
|
|
let inv = this.OCSInv.setPosition(0, 0, 0);
|
|
|
|
|
vec = vec.clone().applyMatrix4(inv);
|
|
|
|
|
let ocs = inv.copy(this._Matrix).setPosition(0, 0, 0);
|
|
|
|
|
MoveOneGrip();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (ids[0] === 0)
|
|
|
|
|
//ids.length === 2
|
|
|
|
|
ids.sort((a1, a2) => a1 - a2);
|
|
|
|
|
let inv = this.OCSInv.setPosition(0, 0, 0);
|
|
|
|
|
vec = vec.clone().applyMatrix4(inv);
|
|
|
|
|
let ocs = inv.copy(this._Matrix).setPosition(0, 0, 0);
|
|
|
|
|
|
|
|
|
|
if (ids[0] === 0)
|
|
|
|
|
{
|
|
|
|
|
if (ids[1] === 1)//下
|
|
|
|
|
{
|
|
|
|
|
if (ids[1] === 1)//下
|
|
|
|
|
{
|
|
|
|
|
vec.x = 0;
|
|
|
|
|
vec.z = 0;
|
|
|
|
|
vec.applyMatrix4(ocs);
|
|
|
|
|
|
|
|
|
|
this.MoveGripPoints([0], vec);
|
|
|
|
|
}
|
|
|
|
|
else if (ids[1] === 3)//左
|
|
|
|
|
{
|
|
|
|
|
vec.y = 0;
|
|
|
|
|
vec.z = 0;
|
|
|
|
|
vec.applyMatrix4(ocs);
|
|
|
|
|
this.MoveGripPoints([0], vec);
|
|
|
|
|
}
|
|
|
|
|
vec.x = 0;
|
|
|
|
|
vec.z = 0;
|
|
|
|
|
vec.applyMatrix4(ocs);
|
|
|
|
|
|
|
|
|
|
this.MoveGripPoints([0], vec);
|
|
|
|
|
}
|
|
|
|
|
else if (ids[1] === 3)//左
|
|
|
|
|
{
|
|
|
|
|
vec.y = 0;
|
|
|
|
|
vec.z = 0;
|
|
|
|
|
vec.applyMatrix4(ocs);
|
|
|
|
|
this.MoveGripPoints([0], vec);
|
|
|
|
|
}
|
|
|
|
|
else if (ids[0] === 1)
|
|
|
|
|
}
|
|
|
|
|
else if (ids[0] === 1)
|
|
|
|
|
{
|
|
|
|
|
if (ids[1] === 2)//右
|
|
|
|
|
{
|
|
|
|
|
if (ids[1] === 2)//右
|
|
|
|
|
{
|
|
|
|
|
vec.y = 0;
|
|
|
|
|
vec.z = 0;
|
|
|
|
|
vec.applyMatrix4(ocs);
|
|
|
|
|
this.MoveGripPoints([1], vec);
|
|
|
|
|
}
|
|
|
|
|
vec.y = 0;
|
|
|
|
|
vec.z = 0;
|
|
|
|
|
vec.applyMatrix4(ocs);
|
|
|
|
|
this.MoveGripPoints([1], vec);
|
|
|
|
|
}
|
|
|
|
|
else if (ids[0] === 2)
|
|
|
|
|
}
|
|
|
|
|
else if (ids[0] === 2)
|
|
|
|
|
{
|
|
|
|
|
if (ids[1] === 3)//上
|
|
|
|
|
{
|
|
|
|
|
if (ids[1] === 3)//上
|
|
|
|
|
{
|
|
|
|
|
vec.x = 0;
|
|
|
|
|
vec.z = 0;
|
|
|
|
|
vec.applyMatrix4(ocs);
|
|
|
|
|
|
|
|
|
|
this.MoveGripPoints([2], vec);
|
|
|
|
|
}
|
|
|
|
|
vec.x = 0;
|
|
|
|
|
vec.z = 0;
|
|
|
|
|
vec.applyMatrix4(ocs);
|
|
|
|
|
|
|
|
|
|
this.MoveGripPoints([2], vec);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|