I've just spent the past 30 minutes or so investigating whether or not this would work. I am glad to say that it would... It would just be a long, drawn out process, and, yes, a dirty hack.
For those of you who really want to know, I'll walk you through the theoretical (and very untested) process of building one.
First, you will need the object that you want to "zoom in" on. In Blender, you will need to make a fixed camera that will show the object correctly (I can't be of any assistance there... You'll have to figure that out). You will want to make that object clickable and add a plActivatorConditionalObject modifier to it which is a toggle (the activator can be added in PRPExplorer). The ActivatorConditionalObject must reference a plLogicModifier, which is a big junction point. It needs to reference a plPythonFileMod and the original ActivatorConditionalObject.
Now, you'll want to get out a hex editor and somehow write a plResponderModifier that will activate the camera. I'm not too certain what that would look like, and it's been awhile since I've written a RespMod, so no help there (until I get around to trying this mess myself).
Back to our plPythonFileMod, the arguments should look something like this:
Name: xCameraGUIHack
1: Our ActivatorConditionalObject
2: Our ResponderModifier that does the magic
Now for the python file:
- Code: Select all
from Plasma import *
from PlasmaTypes import *
actClickable = ptAttribActivator(1, "Clickable object", netForce=0)
respCamera = ptAttribResponder(2, "Camera Responder", netForce=0)
class xCameraGUIHack(ptModifier,):
def __init__(self):
self.id = 66606660666 #A big number that no one else would use
self.version = 1
def OnNotify(self, state, id, events):
if PtWasLocallyNotified(self.key):
if (id == actClickable.id):
PtDebugPrint("xCameraGUIHack.OnNotify():\tReceived local activator notify... Running Responder")
cam = ptCamera()
cam.undoFirstPerson()
cam.disableFirstPersonOverride()
respCamera.run(self.key)
else:
PtDebugPrint("xCameraGUIHack.OnNotify():\tReceived remote notify... Ignoring.")
Now that I'm done... Errr, I noticed that this won't handle a user wanting to actually *leave* the GUI. Ooops
I suppose you could make a few changes in the script and maybe a ptCamera().restore(theCorrentCameraKey)...