コード例 #1
0
    private void CheckForCollisions(CollisionEventType trackedEvents)
    {
        while (true)
        {
            // This will block the coroutine until a collision happens
            CollisionData data = (CollisionData)WaitFor(RigidBody.Subscribe, trackedEvents, Sansar.Script.ComponentId.Invalid);
            if (data.EventType == CollisionEventType.CharacterContact)
            {
                //Log.Write("I hit an avatar");
            }
            else
            {
                //Log.Write("I hit an object");
                //Log.Write("CollisionEventType: " + data.EventType);
                goodhit = false;
                if (!hitDetected)
                {
                    //Log.Write("BeatBlock: BeatBlockName: " + BeatBlockName);
                    //Log.Write("Position: " + RigidBody.GetPosition());
                    pos  = GetXPosition(RigidBody.GetPosition().ToString4());
                    ypos = GetYPosition(RigidBody.GetPosition().ToString4());
                    if ((ypos == "-0") || (ypos == "0."))
                    {
                        goodhit = true;
                    }

                    if (goodhit)
                    {
                        SendBlockNames sendBlocks = new SendBlockNames();
                        sendBlocks.BlockNameArray = new List <string>();
                        sendBlocks.BlockNameArray.Add(BeatBlockName);
                        //sendBlocks.BlockNameArray.Add(pos);
                        sendBlocks.BlockNameArray.Add(newpos);
                        sendBlocks.BlockNameArray.Add(beats);
                        PostScriptEvent(ScriptId.AllScripts, "BeatBlock", sendBlocks);
                        BuildSampleLibrary();
                        Wait(TimeSpan.FromSeconds(1.5));
                        DisplayBeatBlock();
                        Wait(TimeSpan.FromSeconds(0.5));
                        //ReturnBeatBlock();
                        //Wait(TimeSpan.FromSeconds(1));
                        LightSplash();
                        SubscribeToScriptEvent("ReturnBeatBlock", getBin);
                        //Log.Write("Here");
                        hitDetected = true;
                    }
                    else
                    {
                        //ScenePrivate.Chat.MessageAllUsers("Drop the Beat Block in a Loop Bin");
                        //send it back
                        ReturnBeatBlock();
                    }
                }
            }
        }
    }
コード例 #2
0
    private void CheckForCollisions(CollisionEventType trackedEvents)
    {
        while (true)
        {
            // This will block the coroutine until a collision happens
            CollisionData data = (CollisionData)WaitFor(RigidBody.Subscribe, trackedEvents, Sansar.Script.ComponentId.Invalid);
            if (data.EventType == CollisionEventType.CharacterContact)
            {
                //Log.Write("I hit an avatar");
            }
            else
            {
                //Log.Write("I hit an object");
                //Log.Write("CollisionEventType: " + data.EventType);
                goodhit = false;
                if (!hitDetected)
                {
                    //Log.Write("VolumeBlock");
                    //Log.Write("Position: " + RigidBody.GetPosition());
                    pos  = GetXPosition(RigidBody.GetPosition().ToString4());
                    ypos = GetYPosition(RigidBody.GetPosition().ToString4());
                    if ((ypos == "-0") || (ypos == "0."))
                    {
                        goodhit = true;
                    }

                    SendBlockNames sendBlocks = new SendBlockNames();
                    sendBlocks.BlockNameArray = new List <string>();
                    sendBlocks.BlockNameArray.Add("volume");
                    sendBlocks.BlockNameArray.Add(pos);
                    sendBlocks.BlockNameArray.Add(change);
                    if (goodhit)
                    {
                        PostScriptEvent(ScriptId.AllScripts, "VolumeBlock", sendBlocks);
                        Wait(TimeSpan.FromSeconds(2));
                        ReturnBeatBlock();
                    }
                    else
                    {
                        ScenePrivate.Chat.MessageAllUsers("Drop the Beat Block in a Loop Bin");
                        ReturnBeatBlock();
                    }
                }
            }
        }
    }
コード例 #3
0
    private void CheckForCollisions(CollisionEventType trackedEvents)
    {
        while (true)
        {
            // This will block the coroutine until a collision happens
            CollisionData data = (CollisionData)WaitFor(RigidBody.Subscribe, trackedEvents, Sansar.Script.ComponentId.Invalid);
            if (data.EventType == CollisionEventType.CharacterContact)
            {
                //Log.Write("I hit an avatar");
            }
            else
            {
                //Log.Write("I hit an object");
                //Log.Write("CollisionEventType: " + data.EventType);
                goodhit = false;
                if (!hitDetected)
                {
                    //Log.Write("BPMBlock");
                    //Log.Write("BPMBlock: Position: " + RigidBody.GetPosition());
                    pos  = GetXPosition(RigidBody.GetPosition().ToString4());
                    ypos = GetYPosition(RigidBody.GetPosition().ToString4());
                    if ((ypos == "-0") || (ypos == "0."))
                    {
                        goodhit = true;
                    }

                    SendBPM sendBPM = new SendBPM();
                    sendBPM.BPMArray = new List <string>();
                    sendBPM.BPMArray.Add("bpm");
                    sendBPM.BPMArray.Add(pos);
                    sendBPM.BPMArray.Add(bpm);
                    SendBlockNames sendBlocks = new SendBlockNames();
                    sendBlocks.BlockNameArray = new List <string>();
                    sendBlocks.BlockNameArray.Add(BeatBlockName);
                    sendBlocks.BlockNameArray.Add("0");
                    sendBlocks.BlockNameArray.Add(beats);
                    SendSamples sendSamples = new SendSamples();
                    sendSamples.SampleLibrary = new List <SoundResource>();
                    if (Sample1 != null)
                    {
                        //Log.Write("BPMBlock: sample being sent from BPM: " + Sample1.GetName());
                        sendSamples.SampleLibrary.Add(Sample1);
                    }

                    if (goodhit)
                    {
                        //Log.Write("BPMBlock: goodhit");
                        PostScriptEvent(ScriptId.AllScripts, "BPMBlock", sendBPM);
                        PostScriptEvent(ScriptId.AllScripts, "BeatBlock", sendBlocks);
                        PostScriptEvent(ScriptId.AllScripts, "BeatBlockSample", sendSamples);
                        Wait(TimeSpan.FromSeconds(1.5));
                        DisplayBPMBlock();
                        Wait(TimeSpan.FromSeconds(1.0));
                        SubscribeToScriptEvent("ReturnBeatBlock", getBin);
                        subscribe   = true;
                        hitDetected = true;
                    }
                    else
                    {
                        //ScenePrivate.Chat.MessageAllUsers("Drop the BPM Block in a Loop Bin");
                        ReturnBPMBlock();
                    }
                }
            }
        }
    }