示例#1
0
        public virtual void UpdateProp(PropFrame propFrame)
        {
            propName = propFrame.name;

            if (positionSpace == Space.World)
            {
                this.transform.position = propFrame.position.ToVector3();
            }
            else
            {
                this.transform.localPosition = propFrame.position.ToVector3();
            }

            Quaternion worldRotation = propFrame.rotation.ToQuaternion();

            if (rotationSpace == Space.World)
            {
                this.transform.rotation = worldRotation;
            }
            else
            {
                if (transform.parent != null)
                {
                    this.transform.rotation = Quaternion.Inverse(transform.parent.rotation) * worldRotation;
                }
                else
                {
                    this.transform.rotation = worldRotation;
                }
            }
        }
示例#2
0
        public override void UpdateProp(PropFrame propFrame)
        {
            base.UpdateProp(propFrame);

            if (meshRenderer != null)
            {
                meshRenderer.material.color = propFrame.color.ToColor();
            }
        }
示例#3
0
        public void UpdateRow(PropFrame propFrame)
        {
            actorPanel.SetActive(false);
            propPanel.SetActive(true);

            profileName     = propFrame.name;
            propImage.color = propFrame.color.ToColor();
            propText.text   = propFrame.name;
        }
示例#4
0
    /// <summary>
    /// Main process logic of live data
    /// </summary>
    private void ProcessLiveFrame(LiveFrame_v4 frame)
    {
        // Update each actor from live data
        for (int i = 0; i < frame.scene.actors.Length; i++)
        {
            ActorFrame actorFrame = frame.scene.actors[i];

            List <Actor> actorOverrides = GetActorOverride(actorFrame.name);
            // Update custom actors if any
            if (actorOverrides.Count > 0)
            {
                for (int a = 0; a < actorOverrides.Count; a++)
                {
                    actorOverrides[a].UpdateActor(actorFrame);
                }
            }
            // Update default actor
            else if (autoGenerateInputsWhenNoOverridesFound && actors != null)
            {
                actors[actorFrame.name].UpdateActor(actorFrame);
            }
        }

        // Update each prop from live data
        for (int i = 0; i < frame.scene.props.Length; i++)
        {
            PropFrame propFrame = frame.scene.props[i];

            List <Prop> propOverrides = GetPropOverride(propFrame.name);
            // Update custom props if any
            if (propOverrides.Count > 0)
            {
                for (int a = 0; a < propOverrides.Count; a++)
                {
                    propOverrides[a].UpdateProp(propFrame);
                }
            }
            // Update default prop
            else if (autoGenerateInputsWhenNoOverridesFound && props != null)
            {
                props[propFrame.name].UpdateProp(propFrame);
            }
        }

        // Remove all default Actors that doesn't exist in data
        ClearUnusedDefaultInputs(frame);

        // Show default character
        UpdateDefaultActorWhenIdle();

        // Update Hierarchy UI
        uiManager?.UpdateHierarchy(frame);
    }
示例#5
0
        public void UpdateHierarchy(LiveFrame_v4 dataFrame)
        {
            // Check if UI needs rebuild
            bool forceLayoutUpdate = false;

            // Update each actor from live data
            for (int i = 0; i < dataFrame.scene.actors.Length; i++)
            {
                ActorFrame actorFrame  = dataFrame.scene.actors[i];
                string     profileName = actorFrame.name;

                // If profile doesn't exist, mark for rebuild
                if (forceLayoutUpdate == false && !rows.ContainsKey(profileName))
                {
                    forceLayoutUpdate = true;
                }

                rows[profileName].UpdateRow(actorFrame);
            }

            // Update each prop from live data
            for (int i = 0; i < dataFrame.scene.props.Length; i++)
            {
                PropFrame propFrame   = dataFrame.scene.props[i];
                string    profileName = propFrame.name;

                // If profile doesn't exist, mark for rebuild
                if (forceLayoutUpdate == false && !rows.ContainsKey(profileName))
                {
                    forceLayoutUpdate = true;
                }

                rows[profileName].UpdateRow(propFrame);
            }

            ClearUnusedInputRows(dataFrame);

            if (forceLayoutUpdate)
            {
                LayoutRebuilder.ForceRebuildLayoutImmediate(prefabContainer as RectTransform);
            }
        }