1// tSelection.cpp 
2// 
3// This file implements scene selection sets. A selection is simply a collection of scene instances referenced by ID. 
4// 
5// Copyright (c) 2006, 2017 Tristan Grimmer. 
6// Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby 
7// granted, provided that the above copyright notice and this permission notice appear in all copies. 
8// 
9// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL 
10// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 
11// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN 
12// AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 
13// PERFORMANCE OF THIS SOFTWARE. 
14 
15#include "Scene/tSelection.h" 
16namespace tScene 
17{ 
18 
19 
20void tSelection::Save(tChunkWriter& chunk) const 
21{ 
22 chunk.Begin(tChunkID::Scene_Selection); 
23 { 
24 tObject::Save(chunk); 
25 
26 chunk.Begin(tChunkID::Scene_SelectionInstanceIDs); 
27 { 
28 for (tItList<uint32>::Iter instIDIter = InstanceIDs.First(); instIDIter; ++instIDIter) 
29 { 
30 uint32* instID = instIDIter.GetObject(); 
31 chunk.Write(*instID); 
32 } 
33 } 
34 chunk.End(); 
35 } 
36 chunk.End(); 
37} 
38 
39 
40void tSelection::Load(const tChunk& selSetChunk) 
41{ 
42 tAssert(selSetChunk.ID() == tChunkID::Scene_Selection); 
43 Clear(); 
44 
45 for (tChunk chunk = selSetChunk.First(); chunk.Valid(); chunk = chunk.Next()) 
46 { 
47 switch (chunk.ID()) 
48 { 
49 case tChunkID::Scene::Scene_Object: 
50 tObject::Load(chunk); 
51 break; 
52 
53 case tChunkID::Scene_SelectionInstanceIDs: 
54 { 
55 int numInstances = chunk.GetDataSize() / sizeof(uint32); 
56 for (int i = 0; i < numInstances; i++) 
57 { 
58 uint32 instID; 
59 chunk.GetItem(instID); 
60 InstanceIDs.Append(new uint32(instID)); 
61 } 
62 break; 
63 } 
64 } 
65 } 
66} 
67 
68 
69} 
70