protected Component() { GlobalPos.Subscribe(x => { if (Parent.Value != null) { LocalPos.Value = x - Parent.Value.GlobalPos.Value; } else { LocalPos.Value = x; } foreach (Component child in Children) { child.GlobalPos.Value = x + child.LocalPos.Value; } }); LocalPos.Subscribe(x => { if (Parent.Value != null) { GlobalPos.Value = Parent.Value.GlobalPos.Value + x; } else { GlobalPos.Value = x; } }); }
public TerrainQuadTree(int parentLodLevel, LocalPos sonPos, int2 parentPos, double worldSize) { this.worldSize = worldSize; distOffset = MTerrain.current.terrainData.lodDeferredOffset; isRendering = false; lodLevel = parentLodLevel + 1; leftDown = null; leftUp = null; rightDown = null; rightUp = null; localPosition = parentPos * 2; switch (sonPos) { case LocalPos.LeftUp: localPosition += int2(0, 1); break; case LocalPos.RightDown: localPosition += int2(1, 0); break; case LocalPos.RightUp: localPosition += 1; break; } }
public TerrainQuadTree(int parentLodLevel, TerrainQuadTreeSettings *setting, LocalPos sonPos, int2 parentPos, int2 rootPosition) { this.setting = setting; this.rootPosition = rootPosition; isCreated = true; isRendering = false; lodLevel = parentLodLevel + 1; leftDown = null; leftUp = null; rightDown = null; rightUp = null; localPosition = parentPos * 2; switch (sonPos) { case LocalPos.LeftUp: localPosition += int2(0, 1); break; case LocalPos.RightDown: localPosition += int2(1, 0); break; case LocalPos.RightUp: localPosition += 1; break; } }
void CmdStart(Vector3 rp) { rubiGo = Instantiate(Ruby, rp, Quaternion.identity) as GameObject; NetworkServer.Spawn(rubiGo); LocalPos rubipos = rubiGo.GetComponent <LocalPos>(); rubipos.InstantPosition(rp); RpcStart(); }
public override byte GetSymbol(byte x, byte y) { if (x >= Width || y >= Height) { return(BasicChunk.NoOwner); } var pos = new LocalPos(x, y); return(!_symbols.ContainsKey(pos) ? BasicChunk.NoOwner : _symbols[pos]); }
public ListChunk(BasicChunk init) : this((byte)init.Width, (byte)init.Height) { for (var y = 0; y < Height; ++y) { for (var x = 0; x < Width; ++x) { var owner = init.GetSymbol((byte)x, (byte)y); if (owner != BasicChunk.NoOwner) { var pos = new LocalPos((byte)x, (byte)y); _symbols[pos] = owner; } } } Next = init.Next; }
public override bool SetSymbol(byte x, byte y, byte owner, bool overwrite = false) { if (x >= Width || y >= Height) { return(false); } var pos = new LocalPos(x, y); if (!overwrite && _symbols.ContainsKey(pos)) { return(false); } _symbols[pos] = owner; return(true); }
public AbsolutePos(SectorPos secPos, LocalPos locPos) { X = secPos.X * SEC_FACTOR + locPos.X; Y = secPos.Y * SEC_FACTOR + locPos.Y; Z = secPos.Z * SEC_FACTOR + locPos.Z; }
public bool SetSymbol(LocalPos pos, byte owner, bool overwrite = false) { return(SetSymbol(pos.X, pos.Y, owner, overwrite)); }
public byte GetSymbol(LocalPos pos) { return(GetSymbol(pos.X, pos.Y)); }
protected BasicChunk(LocalPos size) { _size = size; }
public ListChunk(LocalPos size) : this(size.X, size.Y) { }
public TerrainQuadTree(TerrainQuadTree *parent, int parentLodLevel, ref TerrainQuadTreeSettings setting, LocalPos sonPos, int2 parentPos, int2 rootPosition) { this.setting = setting.Ptr(); this.rootPosition = rootPosition; lodLevel = parentLodLevel + 1; this.parent = parent; leftDown = null; leftUp = null; rightDown = null; rightUp = null; localPosition = parentPos * 2; switch (sonPos) { case LocalPos.LeftUp: localPosition += int2(0, 1); break; case LocalPos.RightDown: localPosition += int2(1, 0); break; case LocalPos.RightUp: localPosition += 1; break; } }
public TerrainQuadTree(int parentLodLevel, LocalPos sonPos, int2 parentPos, int2 parentRenderingPos, double worldSize, double3 maskScaleOffset, int2 rootPos) { toPoint = 0; initializing = true; separate = false; dist = 0; isInRange = false; this.worldSize = worldSize; distOffset = MTerrain.current.terrainData.lodDeferredOffset; m_isRendering = false; lodLevel = parentLodLevel + 1; leftDown = null; leftUp = null; rightDown = null; rightUp = null; localPosition = parentPos * 2; switch (sonPos) { case LocalPos.LeftUp: localPosition += int2(0, 1); break; case LocalPos.RightDown: localPosition += int2(1, 0); break; case LocalPos.RightUp: localPosition += 1; break; } int decalLayer = lodLevel - MTerrain.current.decalLayerOffset; decalMask = decalLayer < 0 ? (LayerMask)0 : MTerrain.current.terrainData.allDecalLayers[decalLayer]; if (lodLevel >= MTerrain.current.lodOffset) { //Larger if (lodLevel > MTerrain.current.lodOffset) { double subScale = maskScaleOffset.x * 0.5; renderingLocalPosition = parentRenderingPos * 2; double2 offset = maskScaleOffset.yz; switch (sonPos) { case LocalPos.LeftUp: offset += double2(0, subScale); renderingLocalPosition += int2(0, 1); break; case LocalPos.RightDown: offset += double2(subScale, 0); renderingLocalPosition += int2(1, 0); break; case LocalPos.RightUp: offset += subScale; renderingLocalPosition += 1; break; } this.maskScaleOffset = double3(subScale, offset); this.rootPos = rootPos; } //Equal else { this.rootPos = localPosition; this.maskScaleOffset = maskScaleOffset; renderingLocalPosition = 0; var loadCommand = new MTerrain.MaskLoadCommand { load = true, pos = this.rootPos }; MTerrain.current.maskLoadList.Add(loadCommand); lock (MTerrain.current) { MTerrain.current.boundBoxLoadList.Add(loadCommand); } } } else { this.rootPos = localPosition; renderingLocalPosition = parentRenderingPos; this.maskScaleOffset = maskScaleOffset; } }
public ChunkIterator(BasicChunk chunk, LocalPos pos) { this._chunk = _startChunk = chunk; this._pos = _startPos = pos; }
public byte Reset() { _chunk = _startChunk; _pos = _startPos; return(Here()); }
public ArrayChunk(LocalPos size) : this(size.X, size.Y) { }