示例#1
0
    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);
    }
示例#2
0
    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 + ")");
    }
示例#3
0
    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;
        }
        }
    }
示例#4
0
    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;
        }
        }
    }