コード例 #1
0
        protected void SetVisibility(SessionId id, bool visible, bool isJoin)
        {
            try
            {
                bool IsVisible = VisibleToSessions.Contains(id);
                if (visible != IsVisible || isJoin)
                {
                    if (visible)
                    {
                        VisibleToSessions.Add(id);
                    }
                    else
                    {
                        VisibleToSessions.Remove(id);
                    }

                    foreach (var mesh in ScriptableShowMeshes)
                    {
                        mesh.SetIsVisible(id, visible);
                    }

                    foreach (var mesh in ScriptableHideMeshes)
                    {
                        mesh.SetIsVisible(id, !visible);
                    }

                    if (ToggleCollisions)
                    {
                        AgentPrivate agent = ScenePrivate.FindAgent(id);
                        if (agent != null && agent.IsValid)
                        {
                            foreach (var rb in ShowColliders)
                            {
                                agent.IgnoreCollisionWith(rb, !visible);
                            }

                            foreach (var rb in HideColliders)
                            {
                                agent.IgnoreCollisionWith(rb, visible);
                            }
                        }
                    }
                }
            }
            catch (Exception)
            {
                Log.Write(LogLevel.Warning, "Error setting mesh visibility for quest");
            }
        }
コード例 #2
0
ファイル: access-control.cs プロジェクト: io360/sansar-script
    private void SetAccess(AgentPrivate agent)
    {
        bool isBanned = IsBanned(agent);

        if (DebugLogging)
        {
            Log.Write("Setting Access: " + !isBanned);
        }
        agent.IgnoreCollisionWith(_rb, !isBanned);
    }