Skip to content

Commit

Permalink
change parentRelativeThirdpartyCameraPosition/Rotation to default to …
Browse files Browse the repository at this point in the history
…world coords if null parent

rather than returning null if no parent object, the parentRelativeThirdPartyCameraPosition and parentRelativeThirdPartyCameraRotation now default to world coordinates since za warudo is the parent now
  • Loading branch information
winthos committed Sep 19, 2024
1 parent 12d8e05 commit b93fc06
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 17 deletions.
11 changes: 7 additions & 4 deletions unity/Assets/Scripts/AgentManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1317,9 +1317,10 @@ bool shouldRenderImageSynthesis
cMetadata.parentRelativeThirdPartyCameraRotation =
camera.transform.localEulerAngles;
} else {
//if not parented, default position and rotation to world coordinate space
cMetadata.parentObjectName = "";
cMetadata.parentRelativeThirdPartyCameraPosition = null;
cMetadata.parentRelativeThirdPartyCameraRotation = null;
cMetadata.parentRelativeThirdPartyCameraPosition = camera.transform.position;
cMetadata.parentRelativeThirdPartyCameraRotation = camera.transform.rotation.eulerAngles;
}

//if this camera is part of the agent's hierarchy at all, get agent relative info
Expand All @@ -1336,6 +1337,8 @@ bool shouldRenderImageSynthesis
agentSpaceCameraRotationAsQuaternion.eulerAngles;
} else {
//if this third party camera is not a child of the agent, we don't need agent-relative coordinates
//Note: We don't default this to world space because in the case of a multi-agent scenario, the agent
//to be relative to is ambiguous and UHHHHH
cMetadata.agentRelativeThirdPartyCameraPosition = null;
cMetadata.agentRelativeThirdPartyCameraRotation = null;
}
Expand Down Expand Up @@ -1876,8 +1879,8 @@ public class ThirdPartyCameraMetadata {
public Vector3? agentRelativeThirdPartyCameraRotation;

//return the local space coordinates if this third party camera has a parent object, this may be the same as agentPositionRelative depending on how things are parented
public Vector3? parentRelativeThirdPartyCameraPosition;
public Vector3? parentRelativeThirdPartyCameraRotation;
public Vector3 parentRelativeThirdPartyCameraPosition;
public Vector3 parentRelativeThirdPartyCameraRotation;
public string parentObjectName; //if this third party camera is in a hierarchy, return the name of the parent object
}

Expand Down
46 changes: 33 additions & 13 deletions unity/Assets/UnitTests/TestThirdPartyCameraAndMainCamera.cs
Original file line number Diff line number Diff line change
Expand Up @@ -448,6 +448,7 @@ public IEnumerator TestThirdPartyCameraMetadataReturn()

MetadataWrapper metadata = getLastActionMetadata();

// World Relative Position
result = Mathf.Approximately(
metadata.thirdPartyCameras[0].worldRelativeThirdPartyCameraPosition.x,
3.0000000000f
Expand All @@ -463,6 +464,7 @@ public IEnumerator TestThirdPartyCameraMetadataReturn()
1.0000000000f
);
Assert.AreEqual(result, true);
// World Relative Rotation
result = Mathf.Approximately(
metadata.thirdPartyCameras[0].worldRelativeThirdPartyCameraRotation.x,
10.0000000000f
Expand All @@ -478,6 +480,7 @@ public IEnumerator TestThirdPartyCameraMetadataReturn()
30.0000000000f
);
Assert.AreEqual(result, true);
//Agent Relative Position
Assert.AreEqual(
metadata.thirdPartyCameras[0].agentRelativeThirdPartyCameraPosition,
null
Expand All @@ -486,16 +489,39 @@ public IEnumerator TestThirdPartyCameraMetadataReturn()
metadata.thirdPartyCameras[0].agentRelativeThirdPartyCameraRotation,
null
);
Assert.AreEqual(
metadata.thirdPartyCameras[0].parentRelativeThirdPartyCameraPosition,
null
//Parent Relative Position
result = Mathf.Approximately(
metadata.thirdPartyCameras[0].parentRelativeThirdPartyCameraPosition.x,
3.0000000000f
);
Assert.AreEqual(
metadata.thirdPartyCameras[0].parentRelativeThirdPartyCameraRotation,
null
Assert.AreEqual(result, true);
result = Mathf.Approximately(
metadata.thirdPartyCameras[0].parentRelativeThirdPartyCameraPosition.y,
2.0000000000f
);
Assert.AreEqual(result, true);
result = Mathf.Approximately(
metadata.thirdPartyCameras[0].parentRelativeThirdPartyCameraPosition.z,
1.0000000000f
);
Assert.AreEqual(result, true);
//Parent Relative Rotation
result = Mathf.Approximately(
metadata.thirdPartyCameras[0].parentRelativeThirdPartyCameraRotation.x,
10.0000000000f
);
Assert.AreEqual(result, true);
result = Mathf.Approximately(
metadata.thirdPartyCameras[0].parentRelativeThirdPartyCameraRotation.y,
20.0000000000f
);
Assert.AreEqual(result, true);
result = Mathf.Approximately(
metadata.thirdPartyCameras[0].parentRelativeThirdPartyCameraRotation.z,
30.0000000000f
);
Assert.AreEqual(result, true);
Assert.AreEqual(metadata.thirdPartyCameras[0].parentObjectName, "");

action.Clear();

//use update third party camera to change camera to be attached to agent
Expand Down Expand Up @@ -584,7 +610,6 @@ public IEnumerator TestThirdPartyCameraMetadataReturn()
metadata
.thirdPartyCameras[0]
.parentRelativeThirdPartyCameraPosition
.Value
.x,
1.0000000000f
);
Expand All @@ -593,7 +618,6 @@ public IEnumerator TestThirdPartyCameraMetadataReturn()
metadata
.thirdPartyCameras[0]
.parentRelativeThirdPartyCameraPosition
.Value
.y,
2.0000000000f
);
Expand All @@ -602,7 +626,6 @@ public IEnumerator TestThirdPartyCameraMetadataReturn()
metadata
.thirdPartyCameras[0]
.parentRelativeThirdPartyCameraPosition
.Value
.z,
3.0000020000f
);
Expand All @@ -611,7 +634,6 @@ public IEnumerator TestThirdPartyCameraMetadataReturn()
metadata
.thirdPartyCameras[0]
.parentRelativeThirdPartyCameraRotation
.Value
.x,
20.0000000000f
);
Expand All @@ -620,7 +642,6 @@ public IEnumerator TestThirdPartyCameraMetadataReturn()
metadata
.thirdPartyCameras[0]
.parentRelativeThirdPartyCameraRotation
.Value
.y,
20.0000000000f
);
Expand All @@ -629,7 +650,6 @@ public IEnumerator TestThirdPartyCameraMetadataReturn()
metadata
.thirdPartyCameras[0]
.parentRelativeThirdPartyCameraRotation
.Value
.z,
20.0000000000f
);
Expand Down

0 comments on commit b93fc06

Please sign in to comment.