public static AnimationParameterInfoMessage getSyncAnimationMessage(string fieldName, object fieldValue) { AnimationParameterInfoMessage message = new AnimationParameterInfoMessage(); if (fieldValue.GetType() == typeof(int)) { message = new AnimationParameterInfoIntMessage(); ((AnimationParameterInfoIntMessage)message).value = (int)fieldValue; message.syncedValueType = AnimationParameterInfoMessage.syncType.INT; } else if (fieldValue.GetType() == typeof(float)) { message = new AnimationParameterInfoFloatMessage(); ((AnimationParameterInfoFloatMessage)message).value = (float)fieldValue; message.syncedValueType = AnimationParameterInfoMessage.syncType.FLOAT; } else if (fieldValue.GetType() == typeof(bool)) { message = new AnimationParameterInfoBoolMessage(); ((AnimationParameterInfoBoolMessage)message).value = (bool)fieldValue; message.syncedValueType = AnimationParameterInfoMessage.syncType.BOOL; } else { QTDebugger.instance.debugWarning(QTDebugger.debugType.NETWORK, "Unknown animator parameter type -> " + fieldName + " of " + fieldValue.GetType().Name); return(null); } message.fieldName = fieldName; return(message); }
public void onParameterChanged(string parameterName, object parameterValue) { if (parameterValue == null) { QTDebugger.instance.debugWarning(QTDebugger.debugType.NETWORK, "Setting to null -> " + parameterName); return; } AnimationParameterInfoMessage message = QTUtils.getSyncAnimationMessage(parameterName, parameterValue); message.objectID = obj.objectID; message.index = index; WorkerServerManager.instance.sendMessageToAllReady(message); QTDebugger.instance.debug(QTDebugger.debugType.NETWORK, "Sending sync of value(" + parameterName + "=" + parameterValue + ")"); }
public static void applySyncAnimationMessageToAnimator(Animator animator, AnimationParameterInfoMessage message) { switch (message.syncedValueType) { case AnimationParameterInfoMessage.syncType.INT: { AnimationParameterInfoIntMessage syncMessageDetailed = (AnimationParameterInfoIntMessage)message; animator.SetInteger(syncMessageDetailed.fieldName, syncMessageDetailed.value); break; } case AnimationParameterInfoMessage.syncType.FLOAT: { AnimationParameterInfoFloatMessage syncMessageDetailed = (AnimationParameterInfoFloatMessage)message; animator.SetFloat(syncMessageDetailed.fieldName, syncMessageDetailed.value); break; } case AnimationParameterInfoMessage.syncType.BOOL: { AnimationParameterInfoBoolMessage syncMessageDetailed = (AnimationParameterInfoBoolMessage)message; animator.SetBool(syncMessageDetailed.fieldName, syncMessageDetailed.value); break; } } }
public override void handleMessage(QTMessage message) { switch (message.messageType) { case QTMessage.type.SYNC_POSITION: { SyncPositionMessage syncMessage = (SyncPositionMessage)message; if (ClientManager.instance.spawnManager.spawnedObjects.ContainsKey(syncMessage.objectID) == false) { return; } ClientQTObject clientObject = (ClientQTObject)ClientManager.instance.spawnManager.spawnedObjects[syncMessage.objectID]; SyncGameobject syncComponent = (SyncGameobject)clientObject.objectComponents[syncMessage.index]; syncComponent.syncedPosition = new Vector3(syncMessage.posX, syncMessage.posY, syncMessage.posZ); break; } case QTMessage.type.SYNC_ROTATION: { SyncRotationMessage syncMessage = (SyncRotationMessage)message; if (ClientManager.instance.spawnManager.spawnedObjects.ContainsKey(syncMessage.objectID) == false) { return; } ClientQTObject clientObject = (ClientQTObject)ClientManager.instance.spawnManager.spawnedObjects[syncMessage.objectID]; SyncGameobject syncComponent = (SyncGameobject)clientObject.objectComponents[syncMessage.index]; syncComponent.syncedRotation = new Vector3(syncMessage.rotX, syncMessage.rotY, syncMessage.rotZ); break; } case QTMessage.type.SYNC_ACTIVE: { SyncActiveMessage syncMessage = (SyncActiveMessage)message; if (ClientManager.instance.spawnManager.spawnedObjects.ContainsKey(syncMessage.objectID) == false) { return; } ClientQTObject clientObject = (ClientQTObject)ClientManager.instance.spawnManager.spawnedObjects[syncMessage.objectID]; SyncGameobject syncComponent = (SyncGameobject)clientObject.objectComponents[syncMessage.index]; syncComponent.gameObject.SetActive(syncMessage.value); break; } case QTMessage.type.SYNC_FIELD: { FieldInfoMessage syncMessage = (FieldInfoMessage)message; if (ClientManager.instance.spawnManager.spawnedObjects.ContainsKey(syncMessage.objectID) == false) { return; } ClientQTObject clientObject = (ClientQTObject)ClientManager.instance.spawnManager.spawnedObjects[syncMessage.objectID]; BaseQTObjectComponent component = clientObject.objectComponents[syncMessage.index]; component.clientComponent.setSyncedField(syncMessage.fieldName, QTUtils.getValueFromSyncFieldMessage(syncMessage)); break; } case QTMessage.type.SYNC_ANIMATION: { AnimationParameterInfoMessage syncMessage = (AnimationParameterInfoMessage)message; if (ClientManager.instance.spawnManager.spawnedObjects.ContainsKey(syncMessage.objectID) == false) { return; } ClientQTObject clientObject = (ClientQTObject)ClientManager.instance.spawnManager.spawnedObjects[syncMessage.objectID]; SyncAnimation component = (SyncAnimation)clientObject.objectComponents[syncMessage.index]; QTUtils.applySyncAnimationMessageToAnimator(component.animator, syncMessage); break; } case QTMessage.type.CALL_FUNCTION: { try { CallFunctionMessage callMessage = (CallFunctionMessage)message; if (ClientManager.instance.spawnManager.spawnedObjects.ContainsKey(callMessage.objectID) == false) { return; } ClientQTObject clientObject = (ClientQTObject)ClientManager.instance.spawnManager.spawnedObjects[callMessage.objectID]; BaseQTObjectComponent component = clientObject.objectComponents[callMessage.index]; List <object> parameters = new List <object>(); if (callMessage.parameters != null) { foreach (FieldInfoMessage fieldMessage in callMessage.parameters) { parameters.Add(QTUtils.getValueFromSyncFieldMessage(fieldMessage)); } } component.callFunction(callMessage.functionName, parameters.ToArray()); } catch (Exception e) { Debug.LogError(e); } break; } } }