Ensures that if no client camera is defined when attempting to swap into an editor camera mode, it makes one so that the normal editor camera modes can work as expected

Adds sanity check to default onNewDatablock function on the GameDatablock namespace in case the onAdd or onRemove functions aren't defined, we don't spam the console
This commit is contained in:
Areloch 2023-02-18 00:40:55 -06:00
parent 6c8dfdbe4c
commit 0e0cc0b83a
2 changed files with 13 additions and 2 deletions

View file

@ -80,8 +80,10 @@ function spawnGameObject(%name, %addToScene)
function GameBaseData::onNewDataBlock(%this, %obj)
{
%this.onRemove(%obj);
%this.onAdd(%obj);
if(%this.isMethod("onRemove"))
%this.onRemove(%obj);
if(%this.isMethod("onAdd"))
%this.onAdd(%obj);
}
function saveGameObject(%name, %tamlPath, %scriptPath)

View file

@ -47,6 +47,15 @@ function serverCmdToggleCamera(%client)
{
if (%client.getControlObject() == %client.player)
{
if (!isObject(%client.camera))
{
%client.camera = spawnObject("Camera", Observer);
MissionCleanup.add( %client.camera );
%client.camera.scopeToClient(%client);
%client.camera.setPosition(%client.player.getPosition());
}
%client.camera.setVelocity("0 0 0");
%control = %client.camera;
}