devtools
Some checks failed
studiorailgun/Renderer/pipeline/head There was a failure building this commit
Some checks failed
studiorailgun/Renderer/pipeline/head There was a failure building this commit
This commit is contained in:
parent
58c5ac0512
commit
56ed405aea
@ -256,7 +256,8 @@
|
|||||||
"bone" : "Hand.R",
|
"bone" : "Hand.R",
|
||||||
"firstPersonBone" : "hand.R",
|
"firstPersonBone" : "hand.R",
|
||||||
"offsetVector" : [0,0,0],
|
"offsetVector" : [0,0,0],
|
||||||
"offsetRotation" : [-0.334,0.145,-0.28,0.89],
|
"offsetRotationThirdPerson" : [-0.334,0.145,-0.28,0.89],
|
||||||
|
"offsetRotationFirstPerson" : [0.923,-0.143,-0.232,0.24],
|
||||||
"canBlock" : true,
|
"canBlock" : true,
|
||||||
"equipClassWhitelist" : [
|
"equipClassWhitelist" : [
|
||||||
"tool",
|
"tool",
|
||||||
|
|||||||
@ -450,6 +450,7 @@ Attacker ai tree
|
|||||||
(07/24/2024)
|
(07/24/2024)
|
||||||
2 Hand katana
|
2 Hand katana
|
||||||
Switching between first and third person
|
Switching between first and third person
|
||||||
|
Devtools for updating first person attachment rotations
|
||||||
|
|
||||||
|
|
||||||
# TODO
|
# TODO
|
||||||
|
|||||||
@ -131,7 +131,7 @@ public class ClientEquipState implements BehaviorTree {
|
|||||||
meshMask.queueMesh(modelName, toDraw);
|
meshMask.queueMesh(modelName, toDraw);
|
||||||
}
|
}
|
||||||
//attach to parent bone
|
//attach to parent bone
|
||||||
AttachUtils.clientAttachEntityToEntityAtBone(parent, toEquip, point.getBone(), AttachUtils.getEquipPointRotationOffset(point.getOffsetRotation()));
|
AttachUtils.clientAttachEntityToEntityAtBone(parent, toEquip, point.getBone(), AttachUtils.getEquipPointRotationOffset(point.getOffsetRotationThirdPerson()));
|
||||||
//make uncollidable
|
//make uncollidable
|
||||||
if(toEquip.containsKey(EntityDataStrings.PHYSICS_COLLISION_BODY) && toEquip.containsKey(EntityDataStrings.PHYSICS_COLLIDABLE)){
|
if(toEquip.containsKey(EntityDataStrings.PHYSICS_COLLISION_BODY) && toEquip.containsKey(EntityDataStrings.PHYSICS_COLLIDABLE)){
|
||||||
DBody rigidBody = (DBody)toEquip.getData(EntityDataStrings.PHYSICS_COLLISION_BODY);
|
DBody rigidBody = (DBody)toEquip.getData(EntityDataStrings.PHYSICS_COLLISION_BODY);
|
||||||
@ -148,9 +148,9 @@ public class ClientEquipState implements BehaviorTree {
|
|||||||
//does not depend on the type of creature, must be attaching to a bone
|
//does not depend on the type of creature, must be attaching to a bone
|
||||||
equipMap.put(point.getEquipPointId(),toEquip);
|
equipMap.put(point.getEquipPointId(),toEquip);
|
||||||
if(Globals.controlHandler.cameraIsThirdPerson()){
|
if(Globals.controlHandler.cameraIsThirdPerson()){
|
||||||
AttachUtils.clientAttachEntityToEntityAtBone(parent, toEquip, point.getBone(), AttachUtils.getEquipPointRotationOffset(point.getOffsetRotation()));
|
AttachUtils.clientAttachEntityToEntityAtBone(parent, toEquip, point.getBone(), AttachUtils.getEquipPointRotationOffset(point.getOffsetRotationThirdPerson()));
|
||||||
} else {
|
} else {
|
||||||
AttachUtils.clientAttachEntityToEntityAtBone(Globals.firstPersonEntity, toEquip, point.getFirstPersonBone(), AttachUtils.getEquipPointRotationOffset(point.getOffsetRotation()));
|
AttachUtils.clientAttachEntityToEntityAtBone(Globals.firstPersonEntity, toEquip, point.getFirstPersonBone(), AttachUtils.getEquipPointRotationOffset(point.getOffsetRotationFirstPerson()));
|
||||||
}
|
}
|
||||||
if(toEquip.containsKey(EntityDataStrings.PHYSICS_COLLISION_BODY) && toEquip.containsKey(EntityDataStrings.PHYSICS_COLLIDABLE)){
|
if(toEquip.containsKey(EntityDataStrings.PHYSICS_COLLISION_BODY) && toEquip.containsKey(EntityDataStrings.PHYSICS_COLLIDABLE)){
|
||||||
DBody rigidBody = (DBody)toEquip.getData(EntityDataStrings.PHYSICS_COLLISION_BODY);
|
DBody rigidBody = (DBody)toEquip.getData(EntityDataStrings.PHYSICS_COLLISION_BODY);
|
||||||
@ -341,14 +341,14 @@ public class ClientEquipState implements BehaviorTree {
|
|||||||
EquipPoint point = this.getEquipPoint(occupiedPoint);
|
EquipPoint point = this.getEquipPoint(occupiedPoint);
|
||||||
Entity toEquip = this.equipMap.get(point.getEquipPointId());
|
Entity toEquip = this.equipMap.get(point.getEquipPointId());
|
||||||
AttachUtils.clientDetatchEntityFromEntityAtBone(Globals.firstPersonEntity, toEquip);
|
AttachUtils.clientDetatchEntityFromEntityAtBone(Globals.firstPersonEntity, toEquip);
|
||||||
AttachUtils.clientAttachEntityToEntityAtBone(Globals.playerEntity, toEquip, point.getBone(), AttachUtils.getEquipPointRotationOffset(point.getOffsetRotation()));
|
AttachUtils.clientAttachEntityToEntityAtBone(Globals.playerEntity, toEquip, point.getBone(), AttachUtils.getEquipPointRotationOffset(point.getOffsetRotationThirdPerson()));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for(String occupiedPoint : this.getEquippedPoints()){
|
for(String occupiedPoint : this.getEquippedPoints()){
|
||||||
EquipPoint point = this.getEquipPoint(occupiedPoint);
|
EquipPoint point = this.getEquipPoint(occupiedPoint);
|
||||||
Entity toEquip = this.equipMap.get(point.getEquipPointId());
|
Entity toEquip = this.equipMap.get(point.getEquipPointId());
|
||||||
AttachUtils.clientDetatchEntityFromEntityAtBone(Globals.playerEntity, toEquip);
|
AttachUtils.clientDetatchEntityFromEntityAtBone(Globals.playerEntity, toEquip);
|
||||||
AttachUtils.clientAttachEntityToEntityAtBone(Globals.firstPersonEntity, toEquip, point.getFirstPersonBone(), AttachUtils.getEquipPointRotationOffset(point.getOffsetRotation()));
|
AttachUtils.clientAttachEntityToEntityAtBone(Globals.firstPersonEntity, toEquip, point.getFirstPersonBone(), AttachUtils.getEquipPointRotationOffset(point.getOffsetRotationFirstPerson()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -114,7 +114,7 @@ public class ServerEquipState implements BehaviorTree {
|
|||||||
String modelName = whitelistItem.getModel();
|
String modelName = whitelistItem.getModel();
|
||||||
Globals.assetManager.addModelPathToQueue(modelName);
|
Globals.assetManager.addModelPathToQueue(modelName);
|
||||||
//attach to parent bone
|
//attach to parent bone
|
||||||
AttachUtils.serverAttachEntityToEntityAtBone(parent, inWorldItem, point.getBone(), AttachUtils.getEquipPointRotationOffset(point.getOffsetRotation()));
|
AttachUtils.serverAttachEntityToEntityAtBone(parent, inWorldItem, point.getBone(), AttachUtils.getEquipPointRotationOffset(point.getOffsetRotationThirdPerson()));
|
||||||
//make uncollidable
|
//make uncollidable
|
||||||
if(inWorldItem.containsKey(EntityDataStrings.PHYSICS_COLLISION_BODY) && inWorldItem.containsKey(EntityDataStrings.PHYSICS_COLLIDABLE)){
|
if(inWorldItem.containsKey(EntityDataStrings.PHYSICS_COLLISION_BODY) && inWorldItem.containsKey(EntityDataStrings.PHYSICS_COLLIDABLE)){
|
||||||
DBody rigidBody = (DBody)inWorldItem.getData(EntityDataStrings.PHYSICS_COLLISION_BODY);
|
DBody rigidBody = (DBody)inWorldItem.getData(EntityDataStrings.PHYSICS_COLLISION_BODY);
|
||||||
@ -131,7 +131,7 @@ public class ServerEquipState implements BehaviorTree {
|
|||||||
} else {
|
} else {
|
||||||
//does not depend on the type of creature
|
//does not depend on the type of creature
|
||||||
equipMap.put(point.getEquipPointId(),inWorldItem);
|
equipMap.put(point.getEquipPointId(),inWorldItem);
|
||||||
AttachUtils.serverAttachEntityToEntityAtBone(parent, inWorldItem, point.getBone(), AttachUtils.getEquipPointRotationOffset(point.getOffsetRotation()));
|
AttachUtils.serverAttachEntityToEntityAtBone(parent, inWorldItem, point.getBone(), AttachUtils.getEquipPointRotationOffset(point.getOffsetRotationThirdPerson()));
|
||||||
if(inWorldItem.containsKey(EntityDataStrings.PHYSICS_COLLISION_BODY) && inWorldItem.containsKey(EntityDataStrings.PHYSICS_COLLIDABLE)){
|
if(inWorldItem.containsKey(EntityDataStrings.PHYSICS_COLLISION_BODY) && inWorldItem.containsKey(EntityDataStrings.PHYSICS_COLLIDABLE)){
|
||||||
DBody rigidBody = (DBody)inWorldItem.getData(EntityDataStrings.PHYSICS_COLLISION_BODY);
|
DBody rigidBody = (DBody)inWorldItem.getData(EntityDataStrings.PHYSICS_COLLISION_BODY);
|
||||||
Realm inWorldRealm = Globals.realmManager.getEntityRealm(inWorldItem);
|
Realm inWorldRealm = Globals.realmManager.getEntityRealm(inWorldItem);
|
||||||
|
|||||||
@ -572,8 +572,9 @@ public class AttachUtils {
|
|||||||
* @param parentEntity
|
* @param parentEntity
|
||||||
* @return The list of entities that are attached to this parent entity, or null if undefined
|
* @return The list of entities that are attached to this parent entity, or null if undefined
|
||||||
*/
|
*/
|
||||||
public static LinkedList<Entity> getChildrenList(Entity parentEntity){
|
@SuppressWarnings("unchecked") //as long as we only ever access this value via the getters and setters in this class, this assumption should always be correct
|
||||||
return (LinkedList<Entity>)parentEntity.getData(EntityDataStrings.ATTACH_CHILDREN_LIST);
|
public static List<Entity> getChildrenList(Entity parentEntity){
|
||||||
|
return (List<Entity>)parentEntity.getData(EntityDataStrings.ATTACH_CHILDREN_LIST);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -16,7 +16,9 @@ public class EquipPoint {
|
|||||||
//the offset to apply to items that are attached to the bone
|
//the offset to apply to items that are attached to the bone
|
||||||
List<Float> offsetVector;
|
List<Float> offsetVector;
|
||||||
//the rotation to apply to the items that are attached to the bone
|
//the rotation to apply to the items that are attached to the bone
|
||||||
List<Float> offsetRotation;
|
List<Float> offsetRotationThirdPerson;
|
||||||
|
//the rotation to apply to the items that are attached to the view model's bone
|
||||||
|
List<Float> offsetRotationFirstPerson;
|
||||||
//signals that this equip point can block
|
//signals that this equip point can block
|
||||||
boolean canBlock;
|
boolean canBlock;
|
||||||
//the equip classes that are whitelisted for this equip point
|
//the equip classes that are whitelisted for this equip point
|
||||||
@ -55,19 +57,37 @@ public class EquipPoint {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the rotation to apply to the items that are attached to the bone
|
* [Third Person]
|
||||||
|
* Gets the rotation to apply to the items that are attached to the third person model's bone
|
||||||
* @return the rotation
|
* @return the rotation
|
||||||
*/
|
*/
|
||||||
public List<Float> getOffsetRotation(){
|
public List<Float> getOffsetRotationThirdPerson(){
|
||||||
return offsetRotation;
|
return offsetRotationThirdPerson;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the offset rotation (used primarily for debug and engine testing)
|
* Sets the offset rotation (used primarily for debug and engine testing)
|
||||||
* @param offsetRotation The new offset rotation
|
* @param offsetRotation The new offset rotation
|
||||||
*/
|
*/
|
||||||
public void setOffsetRotation(List<Float> offsetRotation){
|
public void setOffsetRotationThirdPerson(List<Float> offsetRotation){
|
||||||
this.offsetRotation = offsetRotation;
|
this.offsetRotationThirdPerson = offsetRotation;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* [First Person]
|
||||||
|
* Gets the rotation to apply to the items that are attached to the view model's bone
|
||||||
|
* @return the rotation
|
||||||
|
*/
|
||||||
|
public List<Float> getOffsetRotationFirstPerson(){
|
||||||
|
return offsetRotationFirstPerson;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the offset rotation (used primarily for debug and engine testing)
|
||||||
|
* @param offsetRotation The new offset rotation
|
||||||
|
*/
|
||||||
|
public void setOffsetRotationFirstPerson(List<Float> offsetRotation){
|
||||||
|
this.offsetRotationFirstPerson = offsetRotation;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -161,7 +161,10 @@ public class ImGuiEntityMacros {
|
|||||||
equipStateView.setCallback(new ImGuiWindowCallback() {
|
equipStateView.setCallback(new ImGuiWindowCallback() {
|
||||||
|
|
||||||
//stores the edited rotation values
|
//stores the edited rotation values
|
||||||
float[] rotationValues = new float[]{
|
float[] rotationValuesFirstPerson = new float[]{
|
||||||
|
0,0,0
|
||||||
|
};
|
||||||
|
float[] rotationValuesThirdPerson = new float[]{
|
||||||
0,0,0
|
0,0,0
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -176,18 +179,32 @@ public class ImGuiEntityMacros {
|
|||||||
ImGui.text("Has item equipped: " + (clientEquipState.getEquippedItemAtPoint(point.getEquipPointId()) != null));
|
ImGui.text("Has item equipped: " + (clientEquipState.getEquippedItemAtPoint(point.getEquipPointId()) != null));
|
||||||
ImGui.text("Bone (Third Person): " + point.getBone());
|
ImGui.text("Bone (Third Person): " + point.getBone());
|
||||||
ImGui.text("Bone (First Person): " + point.getFirstPersonBone());
|
ImGui.text("Bone (First Person): " + point.getFirstPersonBone());
|
||||||
ImGui.text("Rotation: " + AttachUtils.getEquipPointRotationOffset(point.getOffsetRotation()));
|
ImGui.text("[Third Person] Rotation: " + AttachUtils.getEquipPointRotationOffset(point.getOffsetRotationThirdPerson()));
|
||||||
if(ImGui.sliderFloat3("Rotation (In Euler along x,y,z)", rotationValues, 0, (float)(Math.PI * 2))){
|
if(ImGui.sliderFloat3("[Third Person] Rotation (In Euler along x,y,z)", rotationValuesThirdPerson, 0, (float)(Math.PI * 2))){
|
||||||
Quaterniond rotation = new Quaterniond().rotateXYZ(rotationValues[0], rotationValues[1], rotationValues[2]);
|
Quaterniond rotation = new Quaterniond().rotateXYZ(rotationValuesThirdPerson[0], rotationValuesThirdPerson[1], rotationValuesThirdPerson[2]);
|
||||||
List<Float> newValues = new LinkedList<Float>();
|
List<Float> newValues = new LinkedList<Float>();
|
||||||
newValues.add((float)rotation.x);
|
newValues.add((float)rotation.x);
|
||||||
newValues.add((float)rotation.y);
|
newValues.add((float)rotation.y);
|
||||||
newValues.add((float)rotation.z);
|
newValues.add((float)rotation.z);
|
||||||
newValues.add((float)rotation.w);
|
newValues.add((float)rotation.w);
|
||||||
point.setOffsetRotation(newValues);
|
point.setOffsetRotationThirdPerson(newValues);
|
||||||
Entity equippedEntity = clientEquipState.getEquippedItemAtPoint(point.getEquipPointId());
|
Entity equippedEntity = clientEquipState.getEquippedItemAtPoint(point.getEquipPointId());
|
||||||
if(equippedEntity != null){
|
if(equippedEntity != null){
|
||||||
AttachUtils.setRotationOffset(equippedEntity, AttachUtils.getEquipPointRotationOffset(point.getOffsetRotation()));
|
AttachUtils.setRotationOffset(equippedEntity, AttachUtils.getEquipPointRotationOffset(point.getOffsetRotationThirdPerson()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ImGui.text("[First Person] Rotation: " + AttachUtils.getEquipPointRotationOffset(point.getOffsetRotationFirstPerson()));
|
||||||
|
if(ImGui.sliderFloat3("[First Person] Rotation (In Euler along x,y,z)", rotationValuesFirstPerson, 0, (float)(Math.PI * 2))){
|
||||||
|
Quaterniond rotation = new Quaterniond().rotateXYZ(rotationValuesFirstPerson[0], rotationValuesFirstPerson[1], rotationValuesFirstPerson[2]);
|
||||||
|
List<Float> newValues = new LinkedList<Float>();
|
||||||
|
newValues.add((float)rotation.x);
|
||||||
|
newValues.add((float)rotation.y);
|
||||||
|
newValues.add((float)rotation.z);
|
||||||
|
newValues.add((float)rotation.w);
|
||||||
|
point.setOffsetRotationFirstPerson(newValues);
|
||||||
|
Entity equippedEntity = clientEquipState.getEquippedItemAtPoint(point.getEquipPointId());
|
||||||
|
if(equippedEntity != null){
|
||||||
|
AttachUtils.setRotationOffset(equippedEntity, AttachUtils.getEquipPointRotationOffset(point.getOffsetRotationFirstPerson()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user