protected override void _OnLoad(ActorInstance.ActorBase actor) { base._OnLoad(actor); ActorInstance.Room roomInst = actor as ActorInstance.Room; if (roomInst != null) { roomInst.mono = roomInst.actorTrans.GetComponent <RoomMono>(); } else { Debug.LogErrorFormat("Room {0} OnLoad an actor which is NOT a room instance!", name); } int index = 0; //init connectors foreach (ConnectorSocket socket in ConnectorSockets) { ActorInstance.Trigger trig = socket.GenerateTrigger(); ActorInstance.Connector connector = trig as ActorInstance.Connector; if (roomInst.ConnectorList == null) { roomInst.ConnectorList = new List <ActorInstance.Connector>(); } if (connector == null) { Debug.LogErrorFormat("{0} connector {1} is null!", roomName, index); } else { roomInst.ConnectorList.Add(connector); connector.parentRoom = roomInst; connector.SetParent(roomInst.actorTrans, socket.LocalPosition, Quaternion.Euler(socket.LocalEulerRotation)); } index++; } //init triggers foreach (TriggerSocket socket in TriggerSockets) { ActorInstance.Trigger trigger = socket.GenerateTrigger(); trigger.parentRoom = roomInst; trigger.SetParent(roomInst.actorTrans, socket.LocalPosition, Quaternion.Euler(socket.LocalEulerRotation)); } }