Beispiel #1
0
    internal void RegisterCamera(EasyflowCamera camera)
    {
        if (((camera.camera.cullingMask & (((int)1) << base.gameObject.layer)) != 0) && !this.m_states.ContainsKey(camera.camera))
        {
            MotionState state = null;
            switch (this.m_type)
            {
            case EasyflowObjectType.Solid:
                state = new SolidState(camera, this);
                break;

            case EasyflowObjectType.Skinned:
                state = new SkinnedState(camera, this);
                break;

            case EasyflowObjectType.Cloth:
                state = new ClothState(camera, this);
                break;

            default:
                throw new Exception("[Easyflow] Invalid object type.");
            }
            camera.OnUpdateTransform += new EasyflowCamera.OnUpdateTransformDelegate(this.OnUpdateTransform);
            if (this.m_type == EasyflowObjectType.Cloth)
            {
                camera.OnCameraPostRender += new EasyflowCamera.OnCameraPostRenderDelegate(this.OnCameraPostRender);
            }
            this.m_states.Add(camera.camera, state);
            this.m_debugStates.Add(state);
        }
    }
Beispiel #2
0
 internal static void UnregisterCamera(EasyflowCamera cam)
 {
     foreach (EasyflowObject obj2 in m_activeObjects.Values)
     {
         obj2.UnregisterCamera(cam);
     }
     m_activeCameras.Remove(cam.camera);
 }
Beispiel #3
0
 internal static void RegisterCamera(EasyflowCamera cam)
 {
     m_activeCameras.Add(cam.camera, cam);
     foreach (EasyflowObject obj2 in m_activeObjects.Values)
     {
         obj2.RegisterCamera(cam);
     }
 }
Beispiel #4
0
    private void OnUpdateTransform(EasyflowCamera owner, bool starting)
    {
        MotionState state;

        if (this.m_states.TryGetValue(owner.camera, out state))
        {
            state.OnUpdateTransform(starting);
        }
    }
Beispiel #5
0
    internal void UnregisterCamera(EasyflowCamera camera)
    {
        MotionState state;

        if (this.m_states.TryGetValue(camera.camera, out state))
        {
            this.m_debugStates.Remove(state);
            camera.OnUpdateTransform -= new EasyflowCamera.OnUpdateTransformDelegate(this.OnUpdateTransform);
            if (this.m_type == EasyflowObjectType.Cloth)
            {
                camera.OnCameraPostRender -= new EasyflowCamera.OnCameraPostRenderDelegate(this.OnCameraPostRender);
            }
            this.m_states.Remove(camera.camera);
        }
    }
Beispiel #6
0
 private void InitializeCameras()
 {
     Camera[] cameraArray = new Camera[this.OverlayCameras.Length + 1];
     cameraArray[0] = base.camera;
     for (int i = 0; i < this.OverlayCameras.Length; i++)
     {
         cameraArray[i + 1] = this.OverlayCameras[i];
     }
     this.m_linkedCameras.Clear();
     for (int j = 0; j < cameraArray.Length; j++)
     {
         Camera key = cameraArray[j];
         if (!this.m_linkedCameras.ContainsKey(key))
         {
             EasyflowCamera camera2 = this.AddMotionCamera(key);
             this.m_linkedCameras.Add(key, camera2);
         }
     }
 }
Beispiel #7
0
    private EasyflowCamera AddMotionCamera(Camera reference)
    {
        CurrentInstance  = this;
        CurrentReference = reference;
        string         auxCameraName = "Easyflow+" + reference.name;
        GameObject     obj2          = this.RecursiveFindCamera(base.gameObject, auxCameraName);
        EasyflowCamera component     = null;

        if (obj2 == null)
        {
            obj2 = new GameObject {
                name      = auxCameraName,
                hideFlags = HideFlags.HideAndDontSave
            };
        }
        else
        {
            component = obj2.GetComponent <EasyflowCamera>();
        }
        if (component == null)
        {
            component = obj2.AddComponent <EasyflowCamera>();
            component.camera.CopyFrom(reference);
            component.camera.depth            = reference.depth - 1f;
            component.camera.renderingPath    = RenderingPath.VertexLit;
            component.camera.hdr              = false;
            component.camera.cullingMask      = reference.cullingMask;
            component.camera.depthTextureMode = DepthTextureMode.Depth;
            component.camera.enabled          = true;
            component.camera.clearFlags       = CameraClearFlags.Depth;
            component.camera.SetReplacementShader(this.m_motionMaterial.shader, "RenderType");
        }
        CurrentReference = null;
        CurrentInstance  = null;
        return(component);
    }
Beispiel #8
0
 public SkinnedState(EasyflowCamera owner, EasyflowObject obj) : base(owner, obj)
 {
 }
Beispiel #9
0
 public ClothState(EasyflowCamera owner, EasyflowObject obj) : base(owner, obj)
 {
 }
Beispiel #10
0
 public MotionState(EasyflowCamera owner, EasyflowObject obj)
 {
     this.m_owner       = owner;
     this.m_obj         = obj;
     this.m_initialized = false;
 }